├── .gitignore ├── dist ├── util.spec.d.ts ├── types.js.map ├── util.spec.d.ts.map ├── types.js ├── util.d.ts.map ├── util.d.ts ├── tracking_number_data │ └── couriers │ │ ├── amazon.json │ │ ├── dhl.json │ │ ├── ontrac.json │ │ ├── usps.json │ │ ├── ups.json │ │ └── fedex.json ├── util.spec.js.map ├── types.d.ts.map ├── types.d.ts ├── util.spec.js ├── util.js.map └── util.js ├── .gitmodules ├── .github └── workflows │ ├── lint.yml │ └── codeql-analysis.yml ├── tsconfig.json ├── .eslintrc.js ├── package.json ├── src ├── util.spec.ts ├── types.ts └── util.ts ├── README.md └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | yarn-error.log 3 | .eslintcache -------------------------------------------------------------------------------- /dist/util.spec.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | //# sourceMappingURL=util.spec.d.ts.map -------------------------------------------------------------------------------- /dist/types.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,8BAA8B"} -------------------------------------------------------------------------------- /dist/util.spec.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"util.spec.d.ts","sourceRoot":"","sources":["../src/util.spec.ts"],"names":[],"mappings":""} -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "data/tracking_number_data"] 2 | path = src/tracking_number_data 3 | url = https://github.com/jkeen/tracking_number_data.git 4 | -------------------------------------------------------------------------------- /dist/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | /* eslint-disable camelcase */ 3 | Object.defineProperty(exports, "__esModule", { value: true }); 4 | //# sourceMappingURL=types.js.map -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: push 3 | jobs: 4 | build: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - uses: actions/checkout@v2 8 | with: 9 | submodules: recursive 10 | - name: Install modules 11 | run: yarn install 12 | - name: Run ESLint 13 | run: yarn lint 14 | - name: Run tests 15 | run: yarn test 16 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2018", 4 | "module": "commonjs", 5 | "declaration": true, 6 | "declarationMap": true, 7 | "sourceMap": true, 8 | "esModuleInterop": true, 9 | "outDir": "./dist", 10 | "rootDir": "./src", 11 | "strict": true, 12 | "strictNullChecks": true, 13 | "skipLibCheck": true, 14 | "resolveJsonModule": true, 15 | "lib": [ 16 | "es2019", 17 | "dom" 18 | ], 19 | }, 20 | "include": ["src/**/*.ts"], 21 | "exclude": [ 22 | "node_modules", 23 | ] 24 | } -------------------------------------------------------------------------------- /dist/util.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,6CAA6C,CAAC;AACtE,OAAO,KAAK,GAAG,MAAM,0CAA0C,CAAC;AAChE,OAAO,KAAK,KAAK,MAAM,4CAA4C,CAAC;AACpE,OAAO,KAAK,MAAM,MAAM,6CAA6C,CAAC;AACtE,OAAO,KAAK,GAAG,MAAM,0CAA0C,CAAC;AAChE,OAAO,KAAK,GAAG,MAAM,0CAA0C,CAAC;AAChE,OAAO,KAAK,IAAI,MAAM,2CAA2C,CAAC;AAKlE,OAAO,EACL,eAAe,EAAE,YAAY,EAC7B,OAAO,EAAE,cAAc,EACxB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAE9G,eAAO,MAAM,WAAW,EAAE,SAAS,eAAe,EAAiD,CAAC;AA+MpG,eAAO,MAAM,WAAW,mBACN,MAAM,aACZ,SAAS,eAAe,EAAE,KACnC,cAAc,GAAG,SAEnB,CAAC;AAEF,eAAO,MAAM,YAAY,eAAgB,MAAM,wDAA0C,SAAS,cAAc,EAGrD,CAAC"} -------------------------------------------------------------------------------- /dist/util.d.ts: -------------------------------------------------------------------------------- 1 | import * as amazon from './tracking_number_data/couriers/amazon.json'; 2 | import * as dhl from './tracking_number_data/couriers/dhl.json'; 3 | import * as fedex from './tracking_number_data/couriers/fedex.json'; 4 | import * as ontrac from './tracking_number_data/couriers/ontrac.json'; 5 | import * as s10 from './tracking_number_data/couriers/s10.json'; 6 | import * as ups from './tracking_number_data/couriers/ups.json'; 7 | import * as usps from './tracking_number_data/couriers/usps.json'; 8 | import { TrackingCourier, TrackingData, Courier, TrackingNumber } from './types'; 9 | export { amazon, dhl, fedex, ontrac, s10, ups, usps, TrackingCourier, TrackingData, Courier, TrackingNumber }; 10 | export declare const allCouriers: readonly TrackingCourier[]; 11 | export declare const getTracking: (trackingNumber: string, couriers?: readonly TrackingCourier[]) => TrackingNumber | undefined; 12 | export declare const findTracking: (searchText: string, couriers?: readonly TrackingCourier[] | undefined) => readonly TrackingNumber[]; 13 | //# sourceMappingURL=util.d.ts.map -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es2020: true, 5 | }, 6 | extends: [ 7 | 'eslint:recommended', 8 | 'plugin:@typescript-eslint/eslint-recommended', 9 | 'plugin:@typescript-eslint/recommended', 10 | 'plugin:@typescript-eslint/recommended-requiring-type-checking', 11 | 'prettier/@typescript-eslint', 12 | "plugin:functional/external-recommended", 13 | "plugin:functional/recommended" 14 | ], 15 | parser: '@typescript-eslint/parser', 16 | parserOptions: { 17 | ecmaVersion: 11, 18 | sourceType: 'module', 19 | project: './tsconfig.json' 20 | }, 21 | plugins: [ 22 | '@typescript-eslint', 23 | 'functional', 24 | ], 25 | rules: { 26 | '@typescript-eslint/ban-ts-comment': 0, 27 | camelcase: ['error', { properties: 'never' }], 28 | 'comma-style': ['error', 'last'], 29 | 'eol-last': ['error', 'always'], 30 | 'max-len': ['error', { code: 120, tabWidth: 2 }], 31 | 'no-explicit-any': 0, 32 | quotes: ['error', 'single'], 33 | semi: ['error', 'always'], 34 | '@typescript-eslint/no-non-null-assertion': 0, 35 | '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }], 36 | }, 37 | }; 38 | -------------------------------------------------------------------------------- /dist/tracking_number_data/couriers/amazon.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Amazon", 3 | "courier_code": "amazon", 4 | "tracking_numbers": [ 5 | { 6 | "name": "Amazon Logistics", 7 | "id": "amazon_logistics", 8 | "regex": [ 9 | "\\s*T\\s*B\\s*A\\s*(?([0-9]\\s*){12,12})\\s*" 10 | ], 11 | "validation": {}, 12 | "test_numbers": { 13 | "valid": [ 14 | "TBA000000000000", 15 | "TBA010000000000", 16 | "TBA 000000000000", 17 | "TBA502887274000" 18 | ], 19 | "invalid": [ 20 | "TBA50288727400A", 21 | "000000000000000", 22 | "000000000000", 23 | "TBB000000000000" 24 | ] 25 | } 26 | }, 27 | { 28 | "name": "Amazon International", 29 | "id": "amazon_international", 30 | "regex": [ 31 | "\\s*[AFC]\\s*(?([0-9]\\s*){10,10})\\s*" 32 | ], 33 | "validation": {}, 34 | "test_numbers": { 35 | "valid": [ 36 | "C1004444443", 37 | "C1004444444" 38 | ], 39 | "invalid": [ 40 | "D1234567890" 41 | ] 42 | } 43 | } 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ts-tracking-number", 3 | "version": "1.0.17", 4 | "description": "Detect and validate tracking numbers for USPS, UPS, FedEx, and other major couriers.", 5 | "keywords": [ 6 | "tracking number", 7 | "track package", 8 | "usps", 9 | "ups", 10 | "fedex", 11 | "amazon", 12 | "dhl", 13 | "ontrac", 14 | "s10" 15 | ], 16 | "main": "./dist/util.js", 17 | "module": "./dist/util.js", 18 | "types": "./dist/util.d.ts", 19 | "scripts": { 20 | "build": "rm -rf ./dist && yarn test && tsc -p ./tsconfig.json", 21 | "lint": "yarn eslint --cache --ext .ts src/", 22 | "test": "mocha --exit -r ts-node/register src/**/*.spec.ts" 23 | }, 24 | "repository": { 25 | "type": "git", 26 | "url": "git+https://github.com/rjbrooksjr/ts-tracking-number.git" 27 | }, 28 | "author": { 29 | "name": "Rich Brooks", 30 | "email": "rbrooks@gmail.com" 31 | }, 32 | "license": "ISC", 33 | "bugs": { 34 | "url": "https://github.com/rjbrooksjr/ts-tracking-number/issues" 35 | }, 36 | "homepage": "https://github.com/rjbrooksjr/ts-tracking-number#readme", 37 | "devDependencies": { 38 | "@types/chai": "^4.2.12", 39 | "@types/mocha": "^8.0.3", 40 | "@types/ramda": "^0.27.11", 41 | "@typescript-eslint/eslint-plugin": "^3.7.0", 42 | "@typescript-eslint/parser": "^3.7.0", 43 | "chai": "^4.2.0", 44 | "eslint": "^7.5.0", 45 | "eslint-config-prettier": "^6.11.0", 46 | "eslint-plugin-functional": "^3.0.1", 47 | "eslint-plugin-import": "^2.22.0", 48 | "mocha": "^8.1.2", 49 | "prettier": "^2.0.5", 50 | "ts-node": "^8.10.2", 51 | "typescript": "^3.9.7" 52 | }, 53 | "dependencies": { 54 | "ramda": "^0.27.0" 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /dist/util.spec.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"util.spec.js","sourceRoot":"","sources":["../src/util.spec.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /src/util.spec.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable functional/functional-parameters */ 2 | /* eslint-disable functional/no-expression-statement */ 3 | import { TrackingCourier } from './types'; 4 | import { allCouriers, getTracking, findTracking, fedex } from './util'; 5 | import { expect } from 'chai'; 6 | 7 | allCouriers.map((courier: TrackingCourier) => { 8 | describe(courier.name, () => { 9 | courier.tracking_numbers.map(trackingNumber => { 10 | describe(trackingNumber.name, () => { 11 | it('Choses the correct courier', done => { 12 | trackingNumber.test_numbers.valid.map(n => { 13 | expect(getTracking(n)!.courier.code).to.eq(courier.courier_code); 14 | }); 15 | done(); 16 | }); 17 | it('Does not find a courier for invalid tracking numbers', done => { 18 | trackingNumber.test_numbers.invalid.map(n => { 19 | const tracking = getTracking(n); 20 | tracking 21 | ? expect(tracking.courier.code).to.not.eq(courier.courier_code) 22 | : expect(tracking).to.be.undefined; 23 | }); 24 | done(); 25 | }); 26 | }); 27 | }); 28 | }); 29 | }); 30 | 31 | describe('getTracking', () => { 32 | it('Uses all couriers when none are specified', done => { 33 | expect(getTracking('9400111202555842332669')).to.not.be.undefined; 34 | done(); 35 | }); 36 | it('Uses only supplied couriers when specified', done => { 37 | expect(getTracking('9400111202555842332669', [fedex])).to.be.undefined; 38 | done(); 39 | }); 40 | }); 41 | 42 | describe('Tracking Search', () => { 43 | it('Finds valid tracking codes in text', done => { 44 | const text = 'USPS tracking number: 9400111202555842332669, but 9261292700768711948020 is bad and ' 45 | + '7112 3456 7891 2345 6787 is good and this is a dupe 94001 11202 55584 2332669'; 46 | expect(findTracking(text)).to.have.length(2); 47 | done(); 48 | }); 49 | 50 | it('Treats new lines correctly', done => { 51 | expect(findTracking('254899580324\n254899580324')).to.have.length(1); 52 | expect(findTracking('254899580324\r254899580324')).to.have.length(1); 53 | expect(findTracking('254899580324\r\n254899580324')).to.have.length(1); 54 | expect(findTracking('254899580324\n\n254899580324')).to.have.length(1); 55 | done(); 56 | }); 57 | }); 58 | -------------------------------------------------------------------------------- /dist/types.d.ts.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable camelcase */ 2 | 3 | export type SerialNumberFormat = { 4 | readonly prepend_if: { 5 | readonly matches_regex: string; 6 | readonly content: string; 7 | }; 8 | }; 9 | 10 | type Checksum = { 11 | readonly name: string; 12 | readonly evens_multiplier?: number; 13 | readonly odds_multiplier?: number; 14 | readonly weightings?: readonly number[]; 15 | readonly modulo1?: number; 16 | readonly modulo2?: number; 17 | }; 18 | 19 | export type LookupServiceType = { 20 | readonly name: string; 21 | readonly matches_regex: string; 22 | readonly description?: string; 23 | }; 24 | 25 | export type MatchServiceType = { 26 | readonly name: string; 27 | readonly matches: string; 28 | }; 29 | 30 | export type MatchCourier = { 31 | readonly matches: string; 32 | readonly country: string; 33 | readonly courier: string; 34 | readonly courier_url: string | null; 35 | readonly upu_reference_url: string; 36 | }; 37 | 38 | export type Lookup = LookupServiceType | MatchServiceType | MatchCourier; 39 | 40 | export type Additional = { 41 | readonly name: string; 42 | readonly regex_group_name: string; 43 | readonly lookup: readonly Lookup[]; 44 | }; 45 | 46 | export type TrackingData = { 47 | readonly tracking_url?: string | null; 48 | readonly name: string; 49 | readonly description?: string; 50 | readonly regex: string | readonly string[]; 51 | readonly validation: { 52 | readonly checksum?: Checksum; 53 | readonly serial_number_format?: SerialNumberFormat; 54 | }; 55 | readonly test_numbers: { readonly valid: readonly string[], readonly invalid: readonly string[] }; 56 | readonly additional?: readonly Additional[]; 57 | }; 58 | 59 | export type TrackingCourier = { 60 | readonly name: string; 61 | readonly courier_code: string; 62 | readonly tracking_numbers: readonly TrackingData[]; 63 | }; 64 | 65 | export type SerialData = { 66 | readonly serial: string; 67 | readonly checkDigit: string; 68 | readonly checksum: Checksum; 69 | readonly groups?: { readonly [key: string]: string }; 70 | }; 71 | 72 | export type Courier = { 73 | readonly name: string; 74 | readonly code: string; 75 | } 76 | 77 | export type TrackingNumber = { 78 | readonly name: string; 79 | readonly trackingNumber: string; 80 | readonly trackingUrl: string | null; 81 | readonly description: string | null; 82 | readonly courier: Courier; 83 | } 84 | -------------------------------------------------------------------------------- /dist/tracking_number_data/couriers/dhl.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DHL", 3 | "courier_code": "dhl", 4 | "tracking_numbers": [ 5 | { 6 | "name": "DHL Express", 7 | "id": "dhl_express", 8 | "regex": "\\s*(?([0-9]\\s*){9,10})(?([0-9]\\s*))", 9 | "validation": { 10 | "checksum": { 11 | "name": "mod7" 12 | } 13 | }, 14 | "tracking_url": "http://www.dhl.com/en/express/tracking.html?brand=DHL&AWB=%s", 15 | "test_numbers": { 16 | "valid": [ 17 | "3318810025", 18 | "73891051146", 19 | "8487135506", 20 | "1099255990", 21 | "3821724944", 22 | "3318810036", 23 | "3318810014" 24 | ], 25 | "invalid": [ 26 | "3318810010", 27 | "3318810034", 28 | "3318810011" 29 | ] 30 | } 31 | }, 32 | { 33 | "name": "DHL Express (Piece ID)", 34 | "id": "dhl_express_piece_id", 35 | "regex": "\\s*(J[A-Z]{2,3})(?([0-9]\\s*){9,10})", 36 | "validation": {}, 37 | "tracking_url": "http://www.dhl.com/en/express/tracking.html?brand=DHL&AWB=%s", 38 | "test_numbers": { 39 | "valid": [ 40 | "JJD0099999999", 41 | "JVGL0999999990" 42 | ], 43 | "invalid": [ 44 | "XJD0099999998" 45 | ] 46 | } 47 | }, 48 | { 49 | "name": "DHL E-Commerce", 50 | "id": "dhl_ecommerce", 51 | "regex": "\\s*((GM)|(LX)|(RX)|(UV)|(CN)|(SG)|(TH)|(IN)|(HK)|(MY))\\s*(?([0-9]\\s*){10,39})", 52 | "validation": {}, 53 | "tracking_url": "http://www.dhl.com/en/express/tracking.html?brand=DHL&AWB=%s", 54 | "test_numbers": { 55 | "valid": [ 56 | "GM2951173225174494", 57 | "GM 2 9 5 117 32 25 1 7 44 9 4", 58 | "GM295117494011169042" 59 | ], 60 | "invalid": [ 61 | "GS295117494011169041", 62 | "GR295117494011169045" 63 | ] 64 | } 65 | } 66 | ] 67 | } 68 | -------------------------------------------------------------------------------- /dist/tracking_number_data/couriers/ontrac.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OnTrac", 3 | "courier_code": "ontrac", 4 | "tracking_numbers": [ 5 | { 6 | "name": "OnTrac", 7 | "id": "ontrac_c", 8 | "regex": "\\s*C\\s*(?([0-9]\\s*){13})(?[0-9]\\s*)", 9 | "validation": { 10 | "checksum": { 11 | "name": "mod10", 12 | "evens_multiplier": 1, 13 | "odds_multiplier": 2 14 | }, 15 | "serial_number_format": { 16 | "prepend_if": { 17 | "matches_regex": "^(?!4).+$", 18 | "content": "4" 19 | } 20 | } 21 | }, 22 | "tracking_url": "http://www.ontrac.com/tracking/?number=%s", 23 | "test_numbers": { 24 | "valid": [ 25 | "C11031500001879", 26 | "C 110 31 500 00187 9", 27 | "C10999911320231", 28 | "C11121552953069", 29 | "C11121553156000", 30 | "C11121552829468" 31 | ], 32 | "invalid": [ 33 | "C10000000000000", 34 | "C11031500001889" 35 | ] 36 | } 37 | }, 38 | { 39 | "name": "OnTrac D", 40 | "id": "ontrac_d", 41 | "regex": "\\s*D\\s*(?([0-9]\\s*){13})(?[0-9]\\s*)", 42 | "validation": { 43 | "checksum": { 44 | "name": "mod10", 45 | "evens_multiplier": 1, 46 | "odds_multiplier": 2 47 | }, 48 | "serial_number_format": { 49 | "prepend_if": { 50 | "matches_regex": "^(?!5).+$", 51 | "content": "5" 52 | } 53 | } 54 | }, 55 | "tracking_url": "http://www.ontrac.com/tracking/?number=%s", 56 | "test_numbers": { 57 | "valid": [ 58 | "D10011354453707", 59 | "D10011345983010", 60 | "D 100 113 459 830 10", 61 | "D10011342332145" 62 | ], 63 | "invalid": [ 64 | "D10011345983012", 65 | "D10011342332144" 66 | ] 67 | } 68 | } 69 | ] 70 | } 71 | -------------------------------------------------------------------------------- /dist/types.d.ts: -------------------------------------------------------------------------------- 1 | export declare type SerialNumberFormat = { 2 | readonly prepend_if: { 3 | readonly matches_regex: string; 4 | readonly content: string; 5 | }; 6 | }; 7 | declare type Checksum = { 8 | readonly name: string; 9 | readonly evens_multiplier?: number; 10 | readonly odds_multiplier?: number; 11 | readonly weightings?: readonly number[]; 12 | readonly modulo1?: number; 13 | readonly modulo2?: number; 14 | }; 15 | export declare type LookupServiceType = { 16 | readonly name: string; 17 | readonly matches_regex: string; 18 | readonly description?: string; 19 | }; 20 | export declare type MatchServiceType = { 21 | readonly name: string; 22 | readonly matches: string; 23 | }; 24 | export declare type MatchCourier = { 25 | readonly matches: string; 26 | readonly country: string; 27 | readonly courier: string; 28 | readonly courier_url: string | null; 29 | readonly upu_reference_url: string; 30 | }; 31 | export declare type Lookup = LookupServiceType | MatchServiceType | MatchCourier; 32 | export declare type Additional = { 33 | readonly name: string; 34 | readonly regex_group_name: string; 35 | readonly lookup: readonly Lookup[]; 36 | }; 37 | export declare type TrackingData = { 38 | readonly tracking_url?: string | null; 39 | readonly name: string; 40 | readonly description?: string; 41 | readonly regex: string | readonly string[]; 42 | readonly validation: { 43 | readonly checksum?: Checksum; 44 | readonly serial_number_format?: SerialNumberFormat; 45 | }; 46 | readonly test_numbers: { 47 | readonly valid: readonly string[]; 48 | readonly invalid: readonly string[]; 49 | }; 50 | readonly additional?: readonly Additional[]; 51 | }; 52 | export declare type TrackingCourier = { 53 | readonly name: string; 54 | readonly courier_code: string; 55 | readonly tracking_numbers: readonly TrackingData[]; 56 | }; 57 | export declare type SerialData = { 58 | readonly serial: string; 59 | readonly checkDigit: string; 60 | readonly checksum: Checksum; 61 | readonly groups?: { 62 | readonly [key: string]: string; 63 | }; 64 | }; 65 | export declare type Courier = { 66 | readonly name: string; 67 | readonly code: string; 68 | }; 69 | export declare type TrackingNumber = { 70 | readonly name: string; 71 | readonly trackingNumber: string; 72 | readonly trackingUrl: string | null; 73 | readonly description: string | null; 74 | readonly courier: Courier; 75 | }; 76 | export {}; 77 | //# sourceMappingURL=types.d.ts.map -------------------------------------------------------------------------------- /dist/util.spec.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const util_1 = require("./util"); 4 | const chai_1 = require("chai"); 5 | util_1.allCouriers.map((courier) => { 6 | describe(courier.name, () => { 7 | courier.tracking_numbers.map(trackingNumber => { 8 | describe(trackingNumber.name, () => { 9 | it('Choses the correct courier', done => { 10 | trackingNumber.test_numbers.valid.map(n => { 11 | chai_1.expect(util_1.getTracking(n).courier.code).to.eq(courier.courier_code); 12 | }); 13 | done(); 14 | }); 15 | it('Does not find a courier for invalid tracking numbers', done => { 16 | trackingNumber.test_numbers.invalid.map(n => { 17 | const tracking = util_1.getTracking(n); 18 | tracking 19 | ? chai_1.expect(tracking.courier.code).to.not.eq(courier.courier_code) 20 | : chai_1.expect(tracking).to.be.undefined; 21 | }); 22 | done(); 23 | }); 24 | }); 25 | }); 26 | }); 27 | }); 28 | describe('getTracking', () => { 29 | it('Uses all couriers when none are specified', done => { 30 | chai_1.expect(util_1.getTracking('9400111202555842332669')).to.not.be.undefined; 31 | done(); 32 | }); 33 | it('Uses only supplied couriers when specified', done => { 34 | chai_1.expect(util_1.getTracking('9400111202555842332669', [util_1.fedex])).to.be.undefined; 35 | done(); 36 | }); 37 | }); 38 | describe('Tracking Search', () => { 39 | it('Finds valid tracking codes in text', done => { 40 | const text = 'USPS tracking number: 9400111202555842332669, but 9261292700768711948020 is bad and ' 41 | + '7112 3456 7891 2345 6787 is good and this is a dupe 94001 11202 55584 2332669'; 42 | chai_1.expect(util_1.findTracking(text)).to.have.length(2); 43 | done(); 44 | }); 45 | it('Treats new lines correctly', done => { 46 | chai_1.expect(util_1.findTracking('254899580324\n254899580324')).to.have.length(1); 47 | chai_1.expect(util_1.findTracking('254899580324\r254899580324')).to.have.length(1); 48 | chai_1.expect(util_1.findTracking('254899580324\r\n254899580324')).to.have.length(1); 49 | chai_1.expect(util_1.findTracking('254899580324\n\n254899580324')).to.have.length(1); 50 | done(); 51 | }); 52 | }); 53 | //# sourceMappingURL=util.spec.js.map -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: "CodeQL" 13 | 14 | on: 15 | push: 16 | branches: [ master, (.*)+ ] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [ master ] 20 | schedule: 21 | - cron: '25 12 * * 5' 22 | 23 | jobs: 24 | analyze: 25 | name: Analyze 26 | runs-on: ubuntu-latest 27 | permissions: 28 | actions: read 29 | contents: read 30 | security-events: write 31 | 32 | strategy: 33 | fail-fast: false 34 | matrix: 35 | language: [ 'javascript' ] 36 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] 37 | # Learn more: 38 | # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed 39 | 40 | steps: 41 | - name: Checkout repository 42 | uses: actions/checkout@v2 43 | 44 | # Initializes the CodeQL tools for scanning. 45 | - name: Initialize CodeQL 46 | uses: github/codeql-action/init@v1 47 | with: 48 | languages: ${{ matrix.language }} 49 | # If you wish to specify custom queries, you can do so here or in a config file. 50 | # By default, queries listed here will override any specified in a config file. 51 | # Prefix the list here with "+" to use these queries and those in the config file. 52 | # queries: ./path/to/local/query, your-org/your-repo/queries@main 53 | 54 | # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). 55 | # If this step fails, then you should remove it and run the build manually (see below) 56 | - name: Autobuild 57 | uses: github/codeql-action/autobuild@v1 58 | 59 | # ℹ️ Command-line programs to run using the OS shell. 60 | # 📚 https://git.io/JvXDl 61 | 62 | # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines 63 | # and modify them (or add more) to build your code if your project 64 | # uses a compiled language 65 | 66 | #- run: | 67 | # make bootstrap 68 | # make release 69 | 70 | - name: Perform CodeQL Analysis 71 | uses: github/codeql-action/analyze@v1 72 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TS Tracking Number 2 | This package will validate individual tracking numbers or search for valid tracking numbers within given text. It is based off the specifcations in the [jkeen/tracking_number_data](https://github.com/jkeen/tracking_number_data) repository. 3 | 4 | Current supported Couriers are USPS, UPS, FedEx, DHL, OnTrac, Amazon Logistics, and national postal services using the S10 standard. 5 | 6 | ## Install 7 | `npm install ts-tracking-number` 8 | 9 | or 10 | 11 | `yarn add ts-tracking-number` 12 | 13 | ## Usage 14 | 15 | ### Check an invididual tracking number 16 | ``` 17 | import { getTracking } from 'ts-tracking-number'; 18 | 19 | // Good tracking number 20 | const tracking = getTracking('9400111202555842332669'); 21 | 22 | /* 23 | { 24 | "name":"USPS 91", 25 | "trackingUrl":"https://tools.usps.com/go/TrackConfirmAction?tLabels=%s", 26 | "description":"USPS now calls this the IMpd barcode format", 27 | "trackingNumber":"9400111202555842332669", 28 | "courier":{ 29 | "name":"United States Postal Service", 30 | "code":"usps" 31 | } 32 | } 33 | */ 34 | 35 | // Invalid tracking number 36 | const tracking = getTracking('9261292700768711948020'); // undefined 37 | 38 | ``` 39 | 40 | ### Search text for tracking numbers 41 | ``` 42 | import { findTracking } from 'ts-tracking-number'; 43 | 44 | const text = `A good number is 9400111202555842332669, but 9261292700768711948020 is bad and 45 | 7112 3456 7891 2345 6787 is also good`; 46 | 47 | const tracking = findTracking(text); 48 | 49 | /* 50 | [ 51 | { 52 | name: 'FedEx Express (12)', 53 | trackingUrl: 'https://www.fedex.com/apps/fedextrack/?tracknumbers=%s', 54 | description: null, 55 | trackingNumber: '986578788855', 56 | courier: { name: 'FedEx', code: 'fedex' } 57 | }, 58 | { 59 | name: 'USPS 20', 60 | trackingUrl: 'https://tools.usps.com/go/TrackConfirmAction?tLabels=%s', 61 | description: '20 digit USPS numbers', 62 | trackingNumber: '71123456789123456787', 63 | courier: { name: 'United States Postal Service', code: 'usps' } 64 | } 65 | ] 66 | */ 67 | 68 | ``` 69 | 70 | ### Specifying Desired Courier 71 | Optionally you may specify which carrier(s) to retrieve in either `getTracking` or `findTracking` by passing an array of couriers to the function. 72 | 73 | Filterable couriers are `amazon`, `dhl`, `fedex`, `ontrac`, `s10`, `ups`, `usps` 74 | 75 | ``` 76 | import { getTracking, findTracking, ups, fedex } from 'ts-tracking-number'; 77 | 78 | const fedexNumber = '986578788855'; 79 | 80 | // This will ensure we're verifying for FedEx only 81 | getTracking(fedexNumber, [fedex]); 82 | 83 | // This will be undefined 84 | getTracking(fedexNumber, [ups]); 85 | 86 | // Search text for only fedex or ups numbers 87 | findTracking('A bunch of text...', [fedex, ups]); 88 | ``` 89 | -------------------------------------------------------------------------------- /dist/util.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"} -------------------------------------------------------------------------------- /dist/tracking_number_data/couriers/usps.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "United States Postal Service", 3 | "courier_code": "usps", 4 | "tracking_numbers": [ 5 | { 6 | "tracking_url": "https://tools.usps.com/go/TrackConfirmAction?tLabels=%s", 7 | "name": "USPS 20", 8 | "id": "usps_20", 9 | "description": "20 digit USPS numbers", 10 | "regex": [ 11 | "\\s*(?", 12 | "(?([0-9]\\s*){2})", 13 | "(?([0-9]\\s*){9})", 14 | "(?([0-9]\\s*){8})", 15 | ")", 16 | "(?[0-9]\\s*)" 17 | ], 18 | "validation": { 19 | "checksum": { 20 | "name": "mod10", 21 | "evens_multiplier": 3, 22 | "odds_multiplier": 1 23 | } 24 | }, 25 | "test_numbers": { 26 | "valid": [ 27 | "0307 1790 0005 2348 3741", 28 | " 0 3 0 7 1 7 9 0 0 0 0 5 2 3 4 8 3 7 4 1 ", 29 | "7112 3456 7891 2345 6787" 30 | ], 31 | "invalid": [ 32 | "0307 1790 0005 2348 3742" 33 | ] 34 | }, 35 | "additional": [ 36 | { 37 | "name": "Service Type", 38 | "regex_group_name": "ServiceType", 39 | "lookup": [ 40 | { 41 | "matches": "71", 42 | "name": "Certified Mail" 43 | }, 44 | { 45 | "matches": "73", 46 | "name": "Insured Mail" 47 | }, 48 | { 49 | "matches": "77", 50 | "name": "Registered Mail" 51 | }, 52 | { 53 | "matches": "81", 54 | "name": "Return Receipt For Merchanise" 55 | } 56 | ] 57 | } 58 | ] 59 | }, 60 | { 61 | "name": "USPS 34v2", 62 | "id": "usps_32V2", 63 | "description": "variation on 34 digit USPS IMpd numbers", 64 | "regex": [ 65 | "\\s*(?4\\s*2\\s*0\\s*)(?([0-9]\\s*){5})", 66 | "(?([0-9]\\s*){4})", 67 | "(?", 68 | "(?9\\s*[2345]\\s*)?", 69 | "(?([0-9]\\s*){8})", 70 | "(?([0-9]\\s*){11})", 71 | ")", 72 | "(?[0-9]\\s*)" 73 | ], 74 | "validation": { 75 | "checksum": { 76 | "name": "mod10", 77 | "evens_multiplier": 3, 78 | "odds_multiplier": 1 79 | } 80 | }, 81 | "tracking_url": "https://tools.usps.com/go/TrackConfirmAction?tLabels=%s", 82 | "test_numbers": { 83 | "valid": [ 84 | "4201002334249200190132607600833457", 85 | "4201028200009261290113185417468510", 86 | " 4 2 0 1 0 2 8 2 0 0 0 0 9 2 6 1 2 9 0 1 1 3 1 8 5 4 1 7 4 6 8 5 1 0 " 87 | ], 88 | "invalid": [ 89 | "4201028200009261290113185417468511" 90 | ] 91 | } 92 | }, 93 | { 94 | "name": "USPS 91", 95 | "id": "usps_91", 96 | "description": "USPS now calls this the IMpd barcode format", 97 | "regex": [ 98 | "\\s*(?:(?4\\s*2\\s*0\\s*)(?([0-9]\\s*){5}))?", 99 | "(?", 100 | "(?9\\s*[12345]\\s*)?", 101 | "(?([0-9]\\s*){2})", 102 | "(?([0-9]\\s*){2})", 103 | "(?([0-9]\\s*){8})", 104 | "(?([0-9]\\s*){11}|([0-9]\\s*){7})", 105 | ")", 106 | "(?[0-9]\\s*)" 107 | ], 108 | "validation": { 109 | "checksum": { 110 | "name": "mod10", 111 | "evens_multiplier": 3, 112 | "odds_multiplier": 1 113 | }, 114 | "serial_number_format": { 115 | "prepend_if": { 116 | "matches_regex": "^(?!9[1-5]).+", 117 | "content": "91" 118 | } 119 | } 120 | }, 121 | "partners": [{ 122 | "description": "FedEx SmartPost uses USPS for last mile delivery, but not all USPS91 numbers are SmartPosts", 123 | "partner_type": "shipper", 124 | "partner_id": "fedex_smartpost", 125 | "validation": { 126 | "matches_all": [ 127 | { 128 | "regex_group_name": "ServiceType", 129 | "matches": "29" 130 | }, 131 | { 132 | "matches": "61", 133 | "regex_group_name": "SCNC" 134 | } 135 | ] 136 | } 137 | }], 138 | "tracking_url": "https://tools.usps.com/go/TrackConfirmAction?tLabels=%s", 139 | "test_numbers": { 140 | "valid": [ 141 | "420 22153 9101026837331000039521", 142 | "7196 9010 7560 0307 7385", 143 | "9505 5110 6960 5048 6006 24", 144 | "9101 1234 5678 9000 0000 13", 145 | "92748931507708513018050063", 146 | "92001903060085300042901077", 147 | "9400 1112 0108 0805 4830 16", 148 | "9361 2898 7870 0317 6337 95", 149 | "9405803699300124287899" 150 | ], 151 | "invalid": [ 152 | "61299998820821171811", 153 | "9200000000000000000000", 154 | "420000000000000000000000000000", 155 | "420000009200000000000000000000" 156 | ] 157 | }, 158 | "additional": [ 159 | { 160 | "name": "Service Type", 161 | "regex_group_name": "ServiceType", 162 | "lookup": [ 163 | { 164 | "matches": "11", 165 | "name": "First Class (R)" 166 | }, 167 | { 168 | "matches": "29", 169 | "name": "Fedex Smart Post" 170 | } 171 | ] 172 | } 173 | ] 174 | } 175 | ] 176 | } 177 | -------------------------------------------------------------------------------- /dist/tracking_number_data/couriers/ups.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "UPS", 3 | "courier_code": "ups", 4 | "tracking_numbers": [ 5 | { 6 | "name": "UPS", 7 | "id": "ups", 8 | "regex": [ 9 | "\\s*1\\s*Z\\s*(?", 10 | "(?(?:[A-Z0-9]\\s*){6,6})", 11 | "(?(?:[A-Z0-9]\\s*){2,2})", 12 | "(?(?:[A-Z0-9]\\s*){7,7}))", 13 | "(?[0-9]\\s*)" 14 | ], 15 | "validation": { 16 | "checksum": { 17 | "name": "mod10", 18 | "evens_multiplier": 1, 19 | "odds_multiplier": 2 20 | } 21 | }, 22 | "tracking_url": "https://wwwapps.ups.com/WebTracking/track?track=yes&trackNums=%s", 23 | "additional": [ 24 | { 25 | "name": "Service Type", 26 | "regex_group_name": "ServiceType", 27 | "lookup": [ 28 | { 29 | "matches": "01", 30 | "name": "UPS United States Next Day Air (Red)" 31 | }, 32 | { 33 | "matches": "02", 34 | "name": "UPS United States Second Day Air (Blue)" 35 | }, 36 | { 37 | "matches": "03", 38 | "name": "UPS United States Ground" 39 | }, 40 | { 41 | "matches": "12", 42 | "name": "UPS United States Third Day Select" 43 | }, 44 | { 45 | "matches": "13", 46 | "name": "UPS United States Next Day Air Saver (Red Saver)" 47 | }, 48 | { 49 | "matches": "15", 50 | "name": "UPS United States Next Day Air Early A.M." 51 | }, 52 | { 53 | "matches": "22", 54 | "name": "UPS United States Ground - Returns Plus - Three Pickup Attempts" 55 | }, 56 | { 57 | "matches": "32", 58 | "name": "UPS United States Next Day Air Early A.M. - COD" 59 | }, 60 | { 61 | "matches": "33", 62 | "name": "UPS United States Next Day Air Early A.M. - Saturday Delivery, COD" 63 | }, 64 | { 65 | "matches": "41", 66 | "name": "UPS United States Next Day Air Early A.M. - Saturday Delivery" 67 | }, 68 | { 69 | "matches": "42", 70 | "name": "UPS United States Ground - Signature Required" 71 | }, 72 | { 73 | "matches": "44", 74 | "name": "UPS United States Next Day Air - Saturday Delivery" 75 | }, 76 | { 77 | "matches": "66", 78 | "name": "UPS United States Worldwide Express" 79 | }, 80 | { 81 | "matches": "72", 82 | "name": "UPS United States Ground - Collect on Delivery" 83 | }, 84 | { 85 | "matches": "78", 86 | "name": "UPS United States Ground - Returns Plus - One Pickup Attempt" 87 | }, 88 | { 89 | "matches": "90", 90 | "name": "UPS United States Ground - Returns - UPS Prints and Mails Label" 91 | }, 92 | { 93 | "matches": "A0", 94 | "name": "UPS United States Next Day Air Early A.M. - Adult Signature Required" 95 | }, 96 | { 97 | "matches": "A1", 98 | "name": "UPS United States Next Day Air Early A.M. - Saturday Delivery, Adult Signature Required" 99 | }, 100 | { 101 | "matches": "A2", 102 | "name": "UPS United States Next Day Air - Adult Signature Required" 103 | }, 104 | { 105 | "matches": "A8", 106 | "name": "UPS United States Ground - Adult Signature Required" 107 | }, 108 | { 109 | "matches": "A9", 110 | "name": "UPS United States Next Day Air Early A.M. - Adult Signature Required, COD" 111 | }, 112 | { 113 | "matches": "AA", 114 | "name": "UPS United States Next Day Air Early A.M. - Saturday Delivery, Adult Signature Required, COD" 115 | }, 116 | { 117 | "matches": "YW", 118 | "name": "UPS SurePost - Delivered by the USPS" 119 | } 120 | ] 121 | } 122 | ], 123 | "test_numbers": { 124 | "valid": [ 125 | "1Z5R89390357567127", 126 | "1Z879E930346834440", 127 | "1Z410E7W0392751591", 128 | "1Z8V92A70367203024", 129 | " 1 Z 8 V 9 2 A 7 0 3 6 7 2 0 3 0 2 4 ", 130 | "1ZXX3150YW44070023" 131 | ], 132 | "invalid": [ 133 | "2Z5R89390357567127", 134 | "1A5R89390357567127", 135 | "1Z1111111111111111" 136 | ] 137 | } 138 | }, 139 | { 140 | "name": "UPS Waybill", 141 | "regex": [ 142 | "\\s*(?([AHJKTV]\\s*){1})", 143 | "(?(?:[0-9]\\s*){9})", 144 | "(?[0-9]\\s*){1}" 145 | ], 146 | "validation": { 147 | "checksum": { 148 | "name": "mod10", 149 | "evens_multiplier": 1, 150 | "odds_multiplier": 2 151 | } 152 | }, 153 | "additional": [ 154 | { 155 | "name": "Service Type", 156 | "regex_group_name": "ServiceType", 157 | "lookup": [ 158 | { 159 | "matches": "J", 160 | "name": "UPS Next Day Express" 161 | }, 162 | { 163 | "matches": "K", 164 | "name": "UPS Ground" 165 | }, 166 | { 167 | "matches": "V", 168 | "name": "UPS WorldWide Express Saver" 169 | } 170 | ] 171 | } 172 | ], 173 | "tracking_url": "https://wwwapps.ups.com/WebTracking/track?track=yes&trackNums=%s", 174 | "test_numbers": { 175 | "valid": [ 176 | "K1506235620", 177 | "K 150 623 562 0", 178 | "K2479825491", 179 | "J4603636537", 180 | "V0490119172", 181 | "V0431105627" 182 | ], 183 | "invalid": [ 184 | "K1506235622", 185 | "K2479825492", 186 | "J4603636538", 187 | "V0411335627", 188 | "V0423305841" 189 | ] 190 | } 191 | } 192 | ] 193 | } 194 | -------------------------------------------------------------------------------- /dist/util.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); 5 | }) : (function(o, m, k, k2) { 6 | if (k2 === undefined) k2 = k; 7 | o[k2] = m[k]; 8 | })); 9 | var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { 10 | Object.defineProperty(o, "default", { enumerable: true, value: v }); 11 | }) : function(o, v) { 12 | o["default"] = v; 13 | }); 14 | var __importStar = (this && this.__importStar) || function (mod) { 15 | if (mod && mod.__esModule) return mod; 16 | var result = {}; 17 | if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); 18 | __setModuleDefault(result, mod); 19 | return result; 20 | }; 21 | Object.defineProperty(exports, "__esModule", { value: true }); 22 | exports.findTracking = exports.getTracking = exports.allCouriers = exports.usps = exports.ups = exports.s10 = exports.ontrac = exports.fedex = exports.dhl = exports.amazon = void 0; 23 | const amazon = __importStar(require("./tracking_number_data/couriers/amazon.json")); 24 | exports.amazon = amazon; 25 | const dhl = __importStar(require("./tracking_number_data/couriers/dhl.json")); 26 | exports.dhl = dhl; 27 | const fedex = __importStar(require("./tracking_number_data/couriers/fedex.json")); 28 | exports.fedex = fedex; 29 | const ontrac = __importStar(require("./tracking_number_data/couriers/ontrac.json")); 30 | exports.ontrac = ontrac; 31 | const s10 = __importStar(require("./tracking_number_data/couriers/s10.json")); 32 | exports.s10 = s10; 33 | const ups = __importStar(require("./tracking_number_data/couriers/ups.json")); 34 | exports.ups = ups; 35 | const usps = __importStar(require("./tracking_number_data/couriers/usps.json")); 36 | exports.usps = usps; 37 | const ramda_1 = require("ramda"); 38 | exports.allCouriers = [amazon, dhl, fedex, ontrac, s10, ups, usps]; 39 | const additionalCheck = (match) => (a) => a.regex_group_name === 'ServiceType' 40 | ? a.lookup.some((x) => x.matches_regex 41 | ? new RegExp(x.matches_regex).test(match.groups[a.regex_group_name]) 42 | // seems not required to be true? https://github.com/jkeen/tracking_number_data/issues/43 43 | // : a.lookup.some((x: MatchServiceType) => x.matches === match.groups[a.regex_group_name]); 44 | : true) 45 | : a.regex_group_name === 'CountryCode' || a.regex_group_name === 'ShippingContainerType' 46 | ? a.lookup.some(x => x.matches === match.groups[a.regex_group_name]) 47 | : true; 48 | const matchTrackingData = (trackingNumber, regex) => { 49 | const r = ramda_1.is(String, regex) 50 | ? regex 51 | : regex.join(''); 52 | const match = new RegExp(`\\b${r}\\b`).exec(trackingNumber.replace(/[^a-zA-Z\d]/g, '')); 53 | return match && { 54 | serial: match.groups.SerialNumber.replace(/\s/g, ''), 55 | checkDigit: match.groups.CheckDigit, 56 | groups: match.groups, 57 | } || {}; 58 | }; 59 | const additional = (t, tracking) => tracking.additional 60 | ? tracking.additional.every(additionalCheck(matchTrackingData(t, tracking.regex))) 61 | : true; 62 | const dummy = (_serialData) => true; 63 | const formatList = (tracking) => ramda_1.pipe(ramda_1.split(''), ramda_1.map((x) => isNaN(x) 64 | ? (x.charCodeAt(0) - 3) % 10 65 | : parseInt(x)))(tracking); 66 | const toObj = (list) => Object.assign({}, list); 67 | const evenKeys = (_v, k) => k % 2 === 0; 68 | const oddKeys = ramda_1.complement(evenKeys); 69 | const getSum = (parityFn, tracking) => ramda_1.pipe(toObj, 70 | // @ts-ignore Bad Ramda types 71 | ramda_1.pickBy(parityFn), ramda_1.values, ramda_1.sum)(tracking); 72 | const mod10 = ({ serial, checkDigit, checksum }) => { 73 | const t = formatList(serial.replace(/[^\da-zA-Z]/g, '')); 74 | const keySum = ramda_1.sum([ 75 | getSum(evenKeys, t) * (checksum.evens_multiplier || 1), 76 | getSum(oddKeys, t) * (checksum.odds_multiplier || 1), 77 | ]); 78 | return (10 - keySum % 10) % 10 === parseInt(checkDigit); 79 | }; 80 | const mod7 = ({ serial, checkDigit }) => parseInt(serial) % 7 === parseInt(checkDigit); 81 | const addWeight = (weightings, serial) => ramda_1.sum(ramda_1.zip(serial.split('').map(s => parseInt(s)), weightings || []).map(x => x.reduce(ramda_1.multiply))); 82 | const validateS10 = ({ serial, checkDigit }) => { 83 | const remainder = addWeight([8, 6, 4, 2, 3, 5, 9, 7], serial) % 11; 84 | const check = remainder === 1 85 | ? 0 86 | : remainder === 0 87 | ? 5 88 | : 11 - remainder; 89 | return check === parseInt(checkDigit); 90 | }; 91 | const sumProductWithWeightingsAndModulo = ({ serial, checkDigit, checksum }) => addWeight(checksum.weightings, serial) % checksum.modulo1 % checksum.modulo2 === parseInt(checkDigit); 92 | const validator = ({ validation: { checksum } }) => (checksum === null || checksum === void 0 ? void 0 : checksum.name) === 'mod10' 93 | ? mod10 94 | : (checksum === null || checksum === void 0 ? void 0 : checksum.name) === 'sum_product_with_weightings_and_modulo' 95 | ? sumProductWithWeightingsAndModulo 96 | : (checksum === null || checksum === void 0 ? void 0 : checksum.name) === 'mod7' 97 | ? mod7 98 | : (checksum === null || checksum === void 0 ? void 0 : checksum.name) === 's10' 99 | ? validateS10 100 | : dummy; 101 | const formatSerial = (serial, numberFormat) => numberFormat.prepend_if && new RegExp(numberFormat.prepend_if.matches_regex).test(serial) 102 | ? `${numberFormat.prepend_if.content}${serial}` 103 | : serial; 104 | const getSerialData = (trackingNumber, 105 | // eslint-disable-next-line camelcase 106 | { regex, validation: { serial_number_format, checksum } }) => { 107 | const trackingData = matchTrackingData(trackingNumber, regex); 108 | return trackingData && trackingData.serial 109 | ? { 110 | // eslint-disable-next-line camelcase 111 | serial: serial_number_format 112 | ? formatSerial(trackingData.serial, serial_number_format) 113 | : trackingData.serial, 114 | checkDigit: trackingData.checkDigit, 115 | checksum: checksum, 116 | } 117 | : null; 118 | }; 119 | const toTrackingNumber = (t, c, trackingNumber) => ({ 120 | name: t.name, 121 | trackingUrl: t.tracking_url || null, 122 | description: t.description || null, 123 | trackingNumber: trackingNumber.replace(/[^a-zA-Z\d]/g, ''), 124 | // @todo add lookups 125 | courier: { 126 | name: c.name, 127 | code: c.courier_code, 128 | }, 129 | }); 130 | const getTrackingList = (searchText) => (trackingData) => ramda_1.pipe(ramda_1.prop('regex'), ramda_1.ifElse(ramda_1.is(String), ramda_1.identity, ramda_1.join('')), (r) => new RegExp(r, 'g'), ramda_1.flip(ramda_1.match)(searchText), ramda_1.map(ramda_1.replace(/[^a-zA-Z\d\n\r]/g, '')), ramda_1.uniq)(trackingData); 131 | const getCourierList = (searchText, couriers) => couriers.map(ramda_1.pipe(ramda_1.prop('tracking_numbers'), ramda_1.chain(ramda_1.pipe(getTrackingList(searchText), ramda_1.flatten)))); 132 | const findTrackingMatches = (searchText, couriers) => ramda_1.pipe(ramda_1.flatten, ramda_1.uniq, (a) => ramda_1.filter((t) => ramda_1.none(ramda_1.test(new RegExp(`([a-zA-Z0-9 ]+)${t}$`)), a) 133 | // @ts-ignore Bad Dictionary Type 134 | )(a), (a) => ramda_1.filter((t) => ramda_1.none(ramda_1.test(new RegExp(`^${t}([a-zA-Z0-9 ]+)`)), a) 135 | // @ts-ignore Bad Dictionary Type 136 | )(a))(getCourierList(searchText, couriers)); 137 | // eslint-disable-next-line @typescript-eslint/explicit-function-return-type 138 | const getTrackingInternal = (trackingNumber) => ramda_1.reduce((prev, courier) => (prev || ramda_1.reduce((_, tn) => { 139 | const serialData = getSerialData(trackingNumber, tn); 140 | return (serialData && validator(tn)(serialData) && additional(trackingNumber, tn)) 141 | ? ramda_1.reduced(toTrackingNumber(tn, courier, trackingNumber)) 142 | : undefined; 143 | }, undefined, courier.tracking_numbers)), undefined); 144 | exports.getTracking = (trackingNumber, couriers = exports.allCouriers) => (getTrackingInternal(trackingNumber)(couriers)); 145 | exports.findTracking = (searchText, couriers) => findTrackingMatches(searchText, couriers || exports.allCouriers) 146 | .map(t => exports.getTracking(t, couriers || exports.allCouriers)) 147 | .filter(ramda_1.complement(ramda_1.isNil)); 148 | //# sourceMappingURL=util.js.map -------------------------------------------------------------------------------- /src/util.ts: -------------------------------------------------------------------------------- 1 | import * as amazon from './tracking_number_data/couriers/amazon.json'; 2 | import * as dhl from './tracking_number_data/couriers/dhl.json'; 3 | import * as fedex from './tracking_number_data/couriers/fedex.json'; 4 | import * as ontrac from './tracking_number_data/couriers/ontrac.json'; 5 | import * as s10 from './tracking_number_data/couriers/s10.json'; 6 | import * as ups from './tracking_number_data/couriers/ups.json'; 7 | import * as usps from './tracking_number_data/couriers/usps.json'; 8 | import { 9 | is, pipe, split, map, sum, zip, multiply, complement, pickBy, values, prop, join, flip, match, uniq, 10 | identity, ifElse, filter, none, test, flatten, chain, isNil, replace, reduce, reduced 11 | } from 'ramda'; 12 | import { 13 | TrackingCourier, TrackingData, SerialData, Additional, Lookup, LookupServiceType, MatchCourier, SerialNumberFormat, 14 | Courier, TrackingNumber 15 | } from './types'; 16 | 17 | export { amazon, dhl, fedex, ontrac, s10, ups, usps, TrackingCourier, TrackingData, Courier, TrackingNumber }; 18 | 19 | export const allCouriers: readonly TrackingCourier[] = [amazon, dhl, fedex, ontrac, s10, ups, usps]; 20 | 21 | const additionalCheck = (match: Partial) => (a: Additional): boolean => 22 | a.regex_group_name === 'ServiceType' 23 | ? a.lookup.some((x: Lookup) => (x as LookupServiceType).matches_regex 24 | ? new RegExp((x as LookupServiceType).matches_regex).test(match.groups![a.regex_group_name]) 25 | // seems not required to be true? https://github.com/jkeen/tracking_number_data/issues/43 26 | // : a.lookup.some((x: MatchServiceType) => x.matches === match.groups[a.regex_group_name]); 27 | : true 28 | ) 29 | : a.regex_group_name === 'CountryCode' || a.regex_group_name === 'ShippingContainerType' 30 | ? a.lookup.some(x => (x as MatchCourier).matches === match.groups![a.regex_group_name]) 31 | : true; 32 | 33 | const matchTrackingData = (trackingNumber: string, regex: string | readonly string[]): Partial => { 34 | const r = is(String, regex) 35 | ? regex as string 36 | : (regex as readonly string[]).join(''); 37 | 38 | const match = new RegExp(`\\b${r}\\b`).exec(trackingNumber.replace(/[^a-zA-Z\d]/g, '')); 39 | 40 | return match && { 41 | serial: match.groups!.SerialNumber.replace(/\s/g, ''), 42 | checkDigit: match.groups!.CheckDigit, 43 | groups: match.groups, 44 | } || {}; 45 | }; 46 | 47 | const additional = (t: string, tracking: TrackingData): boolean => tracking.additional 48 | ? tracking.additional.every(additionalCheck(matchTrackingData(t, tracking.regex))) 49 | : true; 50 | 51 | const dummy = (_serialData: SerialData): boolean => true; 52 | 53 | const formatList = (tracking: string): readonly number[] => pipe( 54 | split(''), 55 | map( 56 | (x: string | number) => isNaN(x as number) 57 | ? ((x as string).charCodeAt(0) - 3) % 10 58 | : parseInt(x as string) 59 | ) 60 | )(tracking); 61 | 62 | const toObj = (list: readonly number[]): Record => 63 | Object.assign({}, list) as unknown as Record; 64 | 65 | const evenKeys = (_v: number, k: number): boolean => k % 2 === 0; 66 | 67 | const oddKeys = complement(evenKeys); 68 | 69 | const getSum = (parityFn: (v: number, k: number) => boolean, tracking: readonly number[]): number => pipe< 70 | readonly number[], 71 | Record, 72 | Record, 73 | readonly number[], 74 | number 75 | >( 76 | toObj, 77 | // @ts-ignore Bad Ramda types 78 | pickBy(parityFn), 79 | values, 80 | sum 81 | )(tracking); 82 | 83 | const mod10 = ({ serial, checkDigit, checksum }: SerialData): boolean => { 84 | const t = formatList(serial.replace(/[^\da-zA-Z]/g, '')); 85 | const keySum = sum([ 86 | getSum(evenKeys, t) * (checksum.evens_multiplier || 1), 87 | getSum(oddKeys, t) * (checksum.odds_multiplier || 1), 88 | ]); 89 | 90 | return (10 - keySum % 10) % 10 === parseInt(checkDigit); 91 | }; 92 | 93 | const mod7 = ({ serial, checkDigit }: SerialData): boolean => parseInt(serial) % 7 === parseInt(checkDigit); 94 | 95 | const addWeight = (weightings: readonly number[], serial: string): number => sum( 96 | zip( 97 | serial.split('').map(s => parseInt(s)), 98 | weightings || [] 99 | ).map(x => x.reduce(multiply)) 100 | ); 101 | 102 | const validateS10 = ({ serial, checkDigit }: SerialData): boolean => { 103 | const remainder = addWeight([8, 6, 4, 2, 3, 5, 9, 7], serial) % 11; 104 | 105 | const check = remainder === 1 106 | ? 0 107 | : remainder === 0 108 | ? 5 109 | : 11 - remainder; 110 | 111 | return check === parseInt(checkDigit); 112 | }; 113 | 114 | const sumProductWithWeightingsAndModulo = ({ serial, checkDigit, checksum }: SerialData): boolean => 115 | addWeight(checksum.weightings!, serial) % checksum.modulo1! % checksum.modulo2! === parseInt(checkDigit); 116 | 117 | const validator = ({ validation: { checksum } }: TrackingData): (x: SerialData) => boolean => 118 | checksum?.name === 'mod10' 119 | ? mod10 120 | : checksum?.name === 'sum_product_with_weightings_and_modulo' 121 | ? sumProductWithWeightingsAndModulo 122 | : checksum?.name === 'mod7' 123 | ? mod7 124 | : checksum?.name === 's10' 125 | ? validateS10 126 | : dummy; 127 | 128 | const formatSerial = (serial: string, numberFormat: SerialNumberFormat): string => 129 | numberFormat.prepend_if && new RegExp(numberFormat.prepend_if.matches_regex).test(serial) 130 | ? `${numberFormat.prepend_if.content}${serial}` 131 | : serial; 132 | 133 | const getSerialData = ( 134 | trackingNumber: string, 135 | // eslint-disable-next-line camelcase 136 | { regex, validation: { serial_number_format, checksum } }: TrackingData 137 | ): SerialData | null => { 138 | const trackingData = matchTrackingData(trackingNumber, regex); 139 | 140 | return trackingData && trackingData.serial 141 | ? { 142 | // eslint-disable-next-line camelcase 143 | serial: serial_number_format 144 | ? formatSerial(trackingData.serial, serial_number_format) 145 | : trackingData.serial, 146 | checkDigit: trackingData.checkDigit!, 147 | checksum: checksum!, 148 | } 149 | : null; 150 | }; 151 | 152 | const toTrackingNumber = (t: TrackingData, c: TrackingCourier, trackingNumber: string): TrackingNumber => ({ 153 | name: t.name, 154 | trackingUrl: t.tracking_url || null, 155 | description: t.description || null, 156 | trackingNumber: trackingNumber.replace(/[^a-zA-Z\d]/g, ''), 157 | // @todo add lookups 158 | courier: { 159 | name: c.name, 160 | code: c.courier_code, 161 | }, 162 | }); 163 | 164 | const getTrackingList = (searchText: string) => (trackingData: TrackingData): readonly string[] => pipe< 165 | TrackingData, 166 | string | readonly string[], 167 | string, 168 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 169 | any, 170 | readonly string[], 171 | readonly string[], 172 | readonly string[] 173 | >( 174 | prop('regex'), 175 | ifElse( 176 | is(String), 177 | identity, 178 | join(''), 179 | ), 180 | (r: string) => new RegExp(r, 'g'), 181 | flip(match)(searchText), 182 | map(replace(/[^a-zA-Z\d\n\r]/g, '')), 183 | uniq, 184 | )(trackingData); 185 | 186 | const getCourierList = (searchText: string, couriers: readonly TrackingCourier[]): readonly string[] => couriers.map( 187 | pipe( 188 | prop('tracking_numbers'), 189 | chain(pipe(getTrackingList(searchText), flatten)), 190 | ) 191 | ) as readonly string[]; 192 | 193 | const findTrackingMatches = (searchText: string, couriers: readonly TrackingCourier[]): readonly string[] => pipe< 194 | readonly string[], 195 | readonly string[], 196 | readonly string[], 197 | readonly string[], 198 | readonly string[] 199 | >( 200 | flatten, 201 | uniq, 202 | (a: readonly string[]) => filter((t: string) => 203 | none(test(new RegExp(`([a-zA-Z0-9 ]+)${t}$`)), a) 204 | // @ts-ignore Bad Dictionary Type 205 | )(a) as readonly string[], 206 | (a: readonly string[]) => filter((t: string) => 207 | none(test(new RegExp(`^${t}([a-zA-Z0-9 ]+)`)), a) 208 | // @ts-ignore Bad Dictionary Type 209 | )(a) as readonly string[] 210 | )(getCourierList(searchText, couriers)); 211 | 212 | // eslint-disable-next-line @typescript-eslint/explicit-function-return-type 213 | const getTrackingInternal = (trackingNumber: string) => reduce( 214 | (prev: unknown, courier: TrackingCourier) => ( 215 | prev || reduce((_: TrackingNumber | undefined, tn: TrackingData) => { 216 | const serialData = getSerialData(trackingNumber, tn); 217 | 218 | return (serialData && validator(tn)(serialData) && additional(trackingNumber, tn)) 219 | ? reduced(toTrackingNumber(tn, courier, trackingNumber)) 220 | : undefined; 221 | }, undefined, courier.tracking_numbers) 222 | ), 223 | undefined 224 | ) as (couriers: readonly TrackingCourier[]) => TrackingNumber | undefined; 225 | 226 | export const getTracking = ( 227 | trackingNumber: string, 228 | couriers: readonly TrackingCourier[] = allCouriers 229 | ): TrackingNumber | undefined => ( 230 | getTrackingInternal(trackingNumber)(couriers) 231 | ); 232 | 233 | export const findTracking = (searchText: string, couriers?: readonly TrackingCourier[]): readonly TrackingNumber[] => 234 | findTrackingMatches(searchText, couriers || allCouriers) 235 | .map(t => getTracking(t, couriers || allCouriers)) 236 | .filter(complement(isNil)) as readonly TrackingNumber[]; 237 | -------------------------------------------------------------------------------- /dist/tracking_number_data/couriers/fedex.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "FedEx", 3 | "courier_code": "fedex", 4 | "tracking_numbers": [ 5 | { 6 | "name": "FedEx Express (12)", 7 | "id": "fedex_12", 8 | "regex": "\\s*(?([0-9]\\s*){11})(?[0-9]\\s*)", 9 | "validation": { 10 | "checksum": { 11 | "name": "sum_product_with_weightings_and_modulo", 12 | "weightings": [ 13 | 3, 14 | 1, 15 | 7, 16 | 3, 17 | 1, 18 | 7, 19 | 3, 20 | 1, 21 | 7, 22 | 3, 23 | 1 24 | ], 25 | "modulo1": 11, 26 | "modulo2": 10 27 | } 28 | }, 29 | "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s", 30 | "test_numbers": { 31 | "valid": [ 32 | "986578788855", 33 | "477179081230", 34 | "799531274483", 35 | "790535312317", 36 | " 7 9 0 5 3 5 3 1 2 3 1 7 ", 37 | "974367662710" 38 | ], 39 | "invalid": [ 40 | "996578788855" 41 | ] 42 | } 43 | }, 44 | { 45 | "name": "FedEx Express (34)", 46 | "id": "fedex_34", 47 | "regex": [ 48 | "\\s*1\\s*0\\s*[0-9]\\s*[0-9]\\s*[0-9]\\s*", 49 | "([0-9]\\s*){10}", 50 | "(?([0-9]\\s*){5})", 51 | "(?([0-9]\\s*){13})", 52 | "(?[0-9]\\s*)" 53 | ], 54 | "validation": { 55 | "checksum": { 56 | "name": "sum_product_with_weightings_and_modulo", 57 | "weightings": [ 58 | 1, 59 | 7, 60 | 3, 61 | 1, 62 | 7, 63 | 3, 64 | 1, 65 | 7, 66 | 3, 67 | 1, 68 | 7, 69 | 3, 70 | 1 71 | ], 72 | "modulo1": 11, 73 | "modulo2": 10 74 | } 75 | }, 76 | "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s", 77 | "test_numbers": { 78 | "valid": [ 79 | "1001921334250001000300779017972697", 80 | "1001921380360001000300639585804382", 81 | "1001901781990001000300617767839437", 82 | " 1 0 0 1 9 0 1 7 8 1 9 9 0 0 0 1 0 0 0 3 0 0 6 1 7 7 6 7 8 3 9 4 3 7 ", 83 | "1002297871540001000300790695517286", 84 | "1027590111820004833500785458233610" 85 | ], 86 | "invalid": [ 87 | "1001901781990001000300617767839438" 88 | ] 89 | } 90 | }, 91 | { 92 | "name": "FedEx SmartPost", 93 | "id": "fedex_smartpost", 94 | "description": "Shipped by FedEx, Delivered by USPS", 95 | "regex": [ 96 | "\\s*(?:", 97 | "(?:(?4\\s*2\\s*0\\s*)(?([0-9]\\s*){5}))?", 98 | "(?9\\s*2\\s*)", 99 | ")?", 100 | "(?", 101 | "(?([0-9]\\s*){2})", 102 | "(?2\\s*9\\s*)", 103 | "(?([0-9]\\s*){8})", 104 | "(?([0-9]\\s*){11}|([0-9]\\s*){7})", 105 | ")", 106 | "(?([0-9]\\s*))" 107 | ], 108 | "additional": [ 109 | { 110 | "name": "Service Type", 111 | "regex_group_name": "ServiceType", 112 | "lookup": [ 113 | { 114 | "matches_regex": ".", 115 | "name": "Delivered by USPS" 116 | } 117 | ] 118 | } 119 | ], 120 | "partners": [{ 121 | "partner_id": "usps_91", 122 | "partner_type": "carrier", 123 | "description": "FedEx SmartPost is a shipping service that utilizes FedEx for the initial transport and the United States Postal Service for final delivery." 124 | }], 125 | "validation": { 126 | "checksum": { 127 | "name": "mod10", 128 | "evens_multiplier": 3, 129 | "odds_multiplier": 1 130 | }, 131 | "serial_number_format": { 132 | "prepend_if": { 133 | "matches_regex": "^(?!92).+", 134 | "content": "92" 135 | } 136 | } 137 | }, 138 | "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s", 139 | "test_numbers": { 140 | "valid": [ 141 | "61299998820821171811", 142 | "9261292700768711948021", 143 | "420 11213 92 6129098349792366623 8", 144 | "92 6129098349792366623 8", 145 | "6129098349792366623 8" 146 | ], 147 | "invalid": [ 148 | "9261292700768711948020", 149 | "92001903060085300042901077", 150 | "420 11213 61290983497923666231", 151 | "92 6129098349792366623 5", 152 | "9400 1112 0108 0805 4830 16", 153 | "9361 2898 7870 0317 6337 95" 154 | ] 155 | } 156 | }, 157 | { 158 | "name": "FedEx Ground", 159 | "id": "fedex_ground", 160 | "regex": "\\s*(?([0-9]\\s*){14})(?([0-9]\\s*))", 161 | "validation": { 162 | "checksum": { 163 | "name": "mod10", 164 | "evens_multiplier": 1, 165 | "odds_multiplier": 3 166 | } 167 | }, 168 | "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s", 169 | "test_numbers": { 170 | "valid": [ 171 | "0414 4176 0228 964", 172 | "5682 8361 0012 000", 173 | " 5 6 8 2 8 3 6 1 0 0 1 2 0 0 0 ", 174 | "5682 8361 0012 734" 175 | ], 176 | "invalid": [ 177 | "5682 8361 0012 732" 178 | ] 179 | } 180 | }, 181 | { 182 | "name": "FedEx Ground (SSCC-18)", 183 | "id": "fedex_ground_sscc_18", 184 | "regex": "\\s*(?([0-9]\\s*){2})(?([0-9]\\s*){15})(?[0-9]\\s*)", 185 | "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s", 186 | "validation": { 187 | "checksum": { 188 | "name": "mod10", 189 | "evens_multiplier": 3, 190 | "odds_multiplier": 1 191 | } 192 | }, 193 | "test_numbers": { 194 | "valid": [ 195 | "00 0123 4500 0000 0027", 196 | " 0 0 0 1 2 3 4 5 0 0 0 0 0 0 0 0 2 7 " 197 | ], 198 | "invalid": [ 199 | "000000000000000001" 200 | ] 201 | }, 202 | "additional": [ 203 | { 204 | "name": "Container Type", 205 | "regex_group_name": "ShippingContainerType", 206 | "lookup": [ 207 | { 208 | "matches": "00", 209 | "name": "case/carton" 210 | }, 211 | { 212 | "matches": "01", 213 | "name": "pallet" 214 | }, 215 | { 216 | "matches": "02", 217 | "name": "larger than a pallet" 218 | }, 219 | { 220 | "matches": "04", 221 | "name": "internally defined for intra-company use" 222 | } 223 | ] 224 | } 225 | ] 226 | }, 227 | { 228 | "name": "FedEx Ground 96 (22)", 229 | "id": "fedex_ground_96", 230 | "regex": [ 231 | "\\s*(?9\\s*6\\s*)", 232 | "(?([0-9]\\s*){2})", 233 | "(?([0-9]\\s*){3})", 234 | "(?(?([0-9]\\s*){7})(?([0-9]\\s*){7}))", 235 | "(?[0-9]\\s*)" 236 | ], 237 | "validation": { 238 | "checksum": { 239 | "name": "mod10", 240 | "evens_multiplier": 1, 241 | "odds_multiplier": 3 242 | } 243 | }, 244 | "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s", 245 | "test_numbers": { 246 | "valid": [ 247 | "9611020987654312345672", 248 | " 9 6 1 1 0 2 0 9 8 7 6 5 4 3 1 2 3 4 5 6 7 2 " 249 | ], 250 | "invalid": [ 251 | "9600000000000000000001" 252 | ] 253 | } 254 | }, 255 | { 256 | "name": "FedEx Ground GSN", 257 | "id": "fedex_ground_gsn", 258 | "regex": [ 259 | "\\s*(?9\\s*6\\s*)", 260 | "(?([0-9]\\s*){2})", 261 | "([0-9]\\s*){5}", 262 | "(?([0-9]\\s*){10})", 263 | "[0-9]\\s*", 264 | "(?([0-9]\\s*){13})", 265 | "(?[0-9]\\s*)" 266 | ], 267 | "validation": { 268 | "checksum": { 269 | "name": "sum_product_with_weightings_and_modulo", 270 | "weightings": [ 271 | 1, 272 | 7, 273 | 3, 274 | 1, 275 | 7, 276 | 3, 277 | 1, 278 | 7, 279 | 3, 280 | 1, 281 | 7, 282 | 3, 283 | 1 284 | ], 285 | "modulo1": 11, 286 | "modulo2": 10 287 | } 288 | }, 289 | "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s", 290 | "test_numbers": { 291 | "valid": [ 292 | "9622001900000000000000776632517510", 293 | "9622001560000000000000794808390594", 294 | "9622001560001234567100794808390594", 295 | " 9 6 2 2 0 0 1 5 6 0 0 0 1 2 3 4 5 6 7 1 0 0 7 9 4 8 0 8 3 9 0 5 9 4 ", 296 | "9632001560123456789900794808390594" 297 | ], 298 | "invalid": [ 299 | "9622001560001234567100794808390595", 300 | "9622001560001234567100794808390597" 301 | ] 302 | } 303 | } 304 | ] 305 | } 306 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.10.4" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" 8 | integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== 9 | dependencies: 10 | "@babel/highlight" "^7.10.4" 11 | 12 | "@babel/helper-validator-identifier@^7.10.4": 13 | version "7.10.4" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" 15 | integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== 16 | 17 | "@babel/highlight@^7.10.4": 18 | version "7.10.4" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" 20 | integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.10.4" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@types/chai@^4.2.12": 27 | version "4.2.12" 28 | resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.12.tgz#6160ae454cd89dae05adc3bb97997f488b608201" 29 | integrity sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ== 30 | 31 | "@types/color-name@^1.1.1": 32 | version "1.1.1" 33 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 34 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 35 | 36 | "@types/eslint-visitor-keys@^1.0.0": 37 | version "1.0.0" 38 | resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" 39 | integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== 40 | 41 | "@types/json-schema@^7.0.3": 42 | version "7.0.5" 43 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" 44 | integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== 45 | 46 | "@types/json5@^0.0.29": 47 | version "0.0.29" 48 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" 49 | integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= 50 | 51 | "@types/mocha@^8.0.3": 52 | version "8.0.3" 53 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.0.3.tgz#51b21b6acb6d1b923bbdc7725c38f9f455166402" 54 | integrity sha512-vyxR57nv8NfcU0GZu8EUXZLTbCMupIUwy95LJ6lllN+JRPG25CwMHoB1q5xKh8YKhQnHYRAn4yW2yuHbf/5xgg== 55 | 56 | "@types/ramda@^0.27.11": 57 | version "0.27.11" 58 | resolved "https://registry.yarnpkg.com/@types/ramda/-/ramda-0.27.11.tgz#a2efedc1fecc0faa2d3530eb53cf468e219f7c51" 59 | integrity sha512-pojA0+wBhjMWfwZ1tAea/OdUqZxaRQOi/vHldthrOIEPdRQdJb/hvU4yM1uHKGTT89ZZpxe43KM1sq5YGxS5lw== 60 | dependencies: 61 | ts-toolbelt "^6.3.3" 62 | 63 | "@typescript-eslint/eslint-plugin@^3.7.0": 64 | version "3.7.0" 65 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.7.0.tgz#0f91aa3c83d019591719e597fbdb73a59595a263" 66 | integrity sha512-4OEcPON3QIx0ntsuiuFP/TkldmBGXf0uKxPQlGtS/W2F3ndYm8Vgdpj/woPJkzUc65gd3iR+qi3K8SDQP/obFg== 67 | dependencies: 68 | "@typescript-eslint/experimental-utils" "3.7.0" 69 | debug "^4.1.1" 70 | functional-red-black-tree "^1.0.1" 71 | regexpp "^3.0.0" 72 | semver "^7.3.2" 73 | tsutils "^3.17.1" 74 | 75 | "@typescript-eslint/experimental-utils@3.7.0": 76 | version "3.7.0" 77 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.7.0.tgz#0ee21f6c48b2b30c63211da23827725078d5169a" 78 | integrity sha512-xpfXXAfZqhhqs5RPQBfAFrWDHoNxD5+sVB5A46TF58Bq1hRfVROrWHcQHHUM9aCBdy9+cwATcvCbRg8aIRbaHQ== 79 | dependencies: 80 | "@types/json-schema" "^7.0.3" 81 | "@typescript-eslint/types" "3.7.0" 82 | "@typescript-eslint/typescript-estree" "3.7.0" 83 | eslint-scope "^5.0.0" 84 | eslint-utils "^2.0.0" 85 | 86 | "@typescript-eslint/experimental-utils@^2.15.0": 87 | version "2.34.0" 88 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" 89 | integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== 90 | dependencies: 91 | "@types/json-schema" "^7.0.3" 92 | "@typescript-eslint/typescript-estree" "2.34.0" 93 | eslint-scope "^5.0.0" 94 | eslint-utils "^2.0.0" 95 | 96 | "@typescript-eslint/parser@^3.7.0": 97 | version "3.7.0" 98 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.7.0.tgz#3e9cd9df9ea644536feb6e5acdb8279ecff96ce9" 99 | integrity sha512-2LZauVUt7jAWkcIW7djUc3kyW+fSarNEuM3RF2JdLHR9BfX/nDEnyA4/uWz0wseoWVZbDXDF7iF9Jc342flNqQ== 100 | dependencies: 101 | "@types/eslint-visitor-keys" "^1.0.0" 102 | "@typescript-eslint/experimental-utils" "3.7.0" 103 | "@typescript-eslint/types" "3.7.0" 104 | "@typescript-eslint/typescript-estree" "3.7.0" 105 | eslint-visitor-keys "^1.1.0" 106 | 107 | "@typescript-eslint/types@3.7.0": 108 | version "3.7.0" 109 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.7.0.tgz#09897fab0cb95479c01166b10b2c03c224821077" 110 | integrity sha512-reCaK+hyKkKF+itoylAnLzFeNYAEktB0XVfSQvf0gcVgpz1l49Lt6Vo9x4MVCCxiDydA0iLAjTF/ODH0pbfnpg== 111 | 112 | "@typescript-eslint/typescript-estree@2.34.0": 113 | version "2.34.0" 114 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" 115 | integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== 116 | dependencies: 117 | debug "^4.1.1" 118 | eslint-visitor-keys "^1.1.0" 119 | glob "^7.1.6" 120 | is-glob "^4.0.1" 121 | lodash "^4.17.15" 122 | semver "^7.3.2" 123 | tsutils "^3.17.1" 124 | 125 | "@typescript-eslint/typescript-estree@3.7.0": 126 | version "3.7.0" 127 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.7.0.tgz#66872e6da120caa4b64e6b4ca5c8702afc74738d" 128 | integrity sha512-xr5oobkYRebejlACGr1TJ0Z/r0a2/HUf0SXqPvlgUMwiMqOCu/J+/Dr9U3T0IxpE5oLFSkqMx1FE/dKaZ8KsOQ== 129 | dependencies: 130 | "@typescript-eslint/types" "3.7.0" 131 | "@typescript-eslint/visitor-keys" "3.7.0" 132 | debug "^4.1.1" 133 | glob "^7.1.6" 134 | is-glob "^4.0.1" 135 | lodash "^4.17.15" 136 | semver "^7.3.2" 137 | tsutils "^3.17.1" 138 | 139 | "@typescript-eslint/visitor-keys@3.7.0": 140 | version "3.7.0" 141 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.7.0.tgz#ac0417d382a136e4571a0b0dcfe52088cb628177" 142 | integrity sha512-k5PiZdB4vklUpUX4NBncn5RBKty8G3ihTY+hqJsCdMuD0v4jofI5xuqwnVcWxfv6iTm2P/dfEa2wMUnsUY8ODw== 143 | dependencies: 144 | eslint-visitor-keys "^1.1.0" 145 | 146 | acorn-jsx@^5.2.0: 147 | version "5.2.0" 148 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" 149 | integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== 150 | 151 | acorn@^7.3.1: 152 | version "7.3.1" 153 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" 154 | integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== 155 | 156 | ajv@^6.10.0, ajv@^6.10.2: 157 | version "6.12.3" 158 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.3.tgz#18c5af38a111ddeb4f2697bd78d68abc1cabd706" 159 | integrity sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA== 160 | dependencies: 161 | fast-deep-equal "^3.1.1" 162 | fast-json-stable-stringify "^2.0.0" 163 | json-schema-traverse "^0.4.1" 164 | uri-js "^4.2.2" 165 | 166 | ansi-colors@4.1.1, ansi-colors@^4.1.1: 167 | version "4.1.1" 168 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 169 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 170 | 171 | ansi-regex@^3.0.0: 172 | version "3.0.1" 173 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" 174 | integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== 175 | 176 | ansi-regex@^4.1.0: 177 | version "4.1.0" 178 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 179 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 180 | 181 | ansi-regex@^5.0.0: 182 | version "5.0.0" 183 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 184 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 185 | 186 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 187 | version "3.2.1" 188 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 189 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 190 | dependencies: 191 | color-convert "^1.9.0" 192 | 193 | ansi-styles@^4.1.0: 194 | version "4.2.1" 195 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 196 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 197 | dependencies: 198 | "@types/color-name" "^1.1.1" 199 | color-convert "^2.0.1" 200 | 201 | anymatch@~3.1.1: 202 | version "3.1.1" 203 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 204 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 205 | dependencies: 206 | normalize-path "^3.0.0" 207 | picomatch "^2.0.4" 208 | 209 | arg@^4.1.0: 210 | version "4.1.3" 211 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 212 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 213 | 214 | argparse@^1.0.7: 215 | version "1.0.10" 216 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 217 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 218 | dependencies: 219 | sprintf-js "~1.0.2" 220 | 221 | array-includes@^3.1.1: 222 | version "3.1.1" 223 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" 224 | integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== 225 | dependencies: 226 | define-properties "^1.1.3" 227 | es-abstract "^1.17.0" 228 | is-string "^1.0.5" 229 | 230 | array.prototype.flat@^1.2.3: 231 | version "1.2.3" 232 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" 233 | integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== 234 | dependencies: 235 | define-properties "^1.1.3" 236 | es-abstract "^1.17.0-next.1" 237 | 238 | array.prototype.flatmap@^1.2.3: 239 | version "1.2.3" 240 | resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" 241 | integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg== 242 | dependencies: 243 | define-properties "^1.1.3" 244 | es-abstract "^1.17.0-next.1" 245 | function-bind "^1.1.1" 246 | 247 | array.prototype.map@^1.0.1: 248 | version "1.0.2" 249 | resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" 250 | integrity sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw== 251 | dependencies: 252 | define-properties "^1.1.3" 253 | es-abstract "^1.17.0-next.1" 254 | es-array-method-boxes-properly "^1.0.0" 255 | is-string "^1.0.4" 256 | 257 | assertion-error@^1.1.0: 258 | version "1.1.0" 259 | resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" 260 | integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 261 | 262 | astral-regex@^1.0.0: 263 | version "1.0.0" 264 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 265 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 266 | 267 | balanced-match@^1.0.0: 268 | version "1.0.0" 269 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 270 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 271 | 272 | binary-extensions@^2.0.0: 273 | version "2.1.0" 274 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" 275 | integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== 276 | 277 | brace-expansion@^1.1.7: 278 | version "1.1.11" 279 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 280 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 281 | dependencies: 282 | balanced-match "^1.0.0" 283 | concat-map "0.0.1" 284 | 285 | braces@~3.0.2: 286 | version "3.0.2" 287 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 288 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 289 | dependencies: 290 | fill-range "^7.0.1" 291 | 292 | browser-stdout@1.3.1: 293 | version "1.3.1" 294 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 295 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 296 | 297 | buffer-from@^1.0.0: 298 | version "1.1.1" 299 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 300 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 301 | 302 | callsites@^3.0.0: 303 | version "3.1.0" 304 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 305 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 306 | 307 | camelcase@^5.0.0, camelcase@^5.3.1: 308 | version "5.3.1" 309 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 310 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 311 | 312 | chai@^4.2.0: 313 | version "4.2.0" 314 | resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" 315 | integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== 316 | dependencies: 317 | assertion-error "^1.1.0" 318 | check-error "^1.0.2" 319 | deep-eql "^3.0.1" 320 | get-func-name "^2.0.0" 321 | pathval "^1.1.0" 322 | type-detect "^4.0.5" 323 | 324 | chalk@^2.0.0: 325 | version "2.4.2" 326 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 327 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 328 | dependencies: 329 | ansi-styles "^3.2.1" 330 | escape-string-regexp "^1.0.5" 331 | supports-color "^5.3.0" 332 | 333 | chalk@^4.0.0: 334 | version "4.1.0" 335 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 336 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 337 | dependencies: 338 | ansi-styles "^4.1.0" 339 | supports-color "^7.1.0" 340 | 341 | check-error@^1.0.2: 342 | version "1.0.2" 343 | resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" 344 | integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 345 | 346 | chokidar@3.4.2: 347 | version "3.4.2" 348 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" 349 | integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== 350 | dependencies: 351 | anymatch "~3.1.1" 352 | braces "~3.0.2" 353 | glob-parent "~5.1.0" 354 | is-binary-path "~2.1.0" 355 | is-glob "~4.0.1" 356 | normalize-path "~3.0.0" 357 | readdirp "~3.4.0" 358 | optionalDependencies: 359 | fsevents "~2.1.2" 360 | 361 | cliui@^5.0.0: 362 | version "5.0.0" 363 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 364 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 365 | dependencies: 366 | string-width "^3.1.0" 367 | strip-ansi "^5.2.0" 368 | wrap-ansi "^5.1.0" 369 | 370 | color-convert@^1.9.0: 371 | version "1.9.3" 372 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 373 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 374 | dependencies: 375 | color-name "1.1.3" 376 | 377 | color-convert@^2.0.1: 378 | version "2.0.1" 379 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 380 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 381 | dependencies: 382 | color-name "~1.1.4" 383 | 384 | color-name@1.1.3: 385 | version "1.1.3" 386 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 387 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 388 | 389 | color-name@~1.1.4: 390 | version "1.1.4" 391 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 392 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 393 | 394 | concat-map@0.0.1: 395 | version "0.0.1" 396 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 397 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 398 | 399 | contains-path@^0.1.0: 400 | version "0.1.0" 401 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 402 | integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= 403 | 404 | cross-spawn@^7.0.2: 405 | version "7.0.3" 406 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 407 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 408 | dependencies: 409 | path-key "^3.1.0" 410 | shebang-command "^2.0.0" 411 | which "^2.0.1" 412 | 413 | debug@4.1.1, debug@^4.0.1, debug@^4.1.1: 414 | version "4.1.1" 415 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 416 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 417 | dependencies: 418 | ms "^2.1.1" 419 | 420 | debug@^2.6.9: 421 | version "2.6.9" 422 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 423 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 424 | dependencies: 425 | ms "2.0.0" 426 | 427 | decamelize@^1.2.0: 428 | version "1.2.0" 429 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 430 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 431 | 432 | deep-eql@^3.0.1: 433 | version "3.0.1" 434 | resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" 435 | integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 436 | dependencies: 437 | type-detect "^4.0.0" 438 | 439 | deep-is@^0.1.3: 440 | version "0.1.3" 441 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 442 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 443 | 444 | deepmerge@^4.2.2: 445 | version "4.2.2" 446 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 447 | integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== 448 | 449 | define-properties@^1.1.2, define-properties@^1.1.3: 450 | version "1.1.3" 451 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 452 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 453 | dependencies: 454 | object-keys "^1.0.12" 455 | 456 | diff@4.0.2, diff@^4.0.1: 457 | version "4.0.2" 458 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 459 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 460 | 461 | doctrine@1.5.0: 462 | version "1.5.0" 463 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 464 | integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= 465 | dependencies: 466 | esutils "^2.0.2" 467 | isarray "^1.0.0" 468 | 469 | doctrine@^3.0.0: 470 | version "3.0.0" 471 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 472 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 473 | dependencies: 474 | esutils "^2.0.2" 475 | 476 | emoji-regex@^7.0.1: 477 | version "7.0.3" 478 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 479 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 480 | 481 | enquirer@^2.3.5: 482 | version "2.3.6" 483 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 484 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 485 | dependencies: 486 | ansi-colors "^4.1.1" 487 | 488 | error-ex@^1.2.0: 489 | version "1.3.2" 490 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 491 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 492 | dependencies: 493 | is-arrayish "^0.2.1" 494 | 495 | es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5: 496 | version "1.17.6" 497 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" 498 | integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== 499 | dependencies: 500 | es-to-primitive "^1.2.1" 501 | function-bind "^1.1.1" 502 | has "^1.0.3" 503 | has-symbols "^1.0.1" 504 | is-callable "^1.2.0" 505 | is-regex "^1.1.0" 506 | object-inspect "^1.7.0" 507 | object-keys "^1.1.1" 508 | object.assign "^4.1.0" 509 | string.prototype.trimend "^1.0.1" 510 | string.prototype.trimstart "^1.0.1" 511 | 512 | es-array-method-boxes-properly@^1.0.0: 513 | version "1.0.0" 514 | resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" 515 | integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== 516 | 517 | es-get-iterator@^1.0.2: 518 | version "1.1.0" 519 | resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" 520 | integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== 521 | dependencies: 522 | es-abstract "^1.17.4" 523 | has-symbols "^1.0.1" 524 | is-arguments "^1.0.4" 525 | is-map "^2.0.1" 526 | is-set "^2.0.1" 527 | is-string "^1.0.5" 528 | isarray "^2.0.5" 529 | 530 | es-to-primitive@^1.2.1: 531 | version "1.2.1" 532 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 533 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 534 | dependencies: 535 | is-callable "^1.1.4" 536 | is-date-object "^1.0.1" 537 | is-symbol "^1.0.2" 538 | 539 | escape-string-regexp@4.0.0: 540 | version "4.0.0" 541 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 542 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 543 | 544 | escape-string-regexp@^1.0.5: 545 | version "1.0.5" 546 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 547 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 548 | 549 | escape-string-regexp@^2.0.0: 550 | version "2.0.0" 551 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 552 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 553 | 554 | eslint-config-prettier@^6.11.0: 555 | version "6.11.0" 556 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" 557 | integrity sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA== 558 | dependencies: 559 | get-stdin "^6.0.0" 560 | 561 | eslint-import-resolver-node@^0.3.3: 562 | version "0.3.4" 563 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" 564 | integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== 565 | dependencies: 566 | debug "^2.6.9" 567 | resolve "^1.13.1" 568 | 569 | eslint-module-utils@^2.6.0: 570 | version "2.6.0" 571 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" 572 | integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== 573 | dependencies: 574 | debug "^2.6.9" 575 | pkg-dir "^2.0.0" 576 | 577 | eslint-plugin-functional@^3.0.1: 578 | version "3.0.1" 579 | resolved "https://registry.yarnpkg.com/eslint-plugin-functional/-/eslint-plugin-functional-3.0.1.tgz#c0b43f6416f91b1debfd7f6bd5be00be1de69121" 580 | integrity sha512-8IhtDsB8b+ungE0hVdd7Xp3u1YtL6SkTbtbpzbNBG8JrjPALKczZdbUazrYOJhVsjJJWgTEQTKM/1+ILzE/SDA== 581 | dependencies: 582 | "@typescript-eslint/experimental-utils" "^2.15.0" 583 | array.prototype.flatmap "^1.2.3" 584 | deepmerge "^4.2.2" 585 | escape-string-regexp "^2.0.0" 586 | 587 | eslint-plugin-import@^2.22.0: 588 | version "2.22.0" 589 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" 590 | integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== 591 | dependencies: 592 | array-includes "^3.1.1" 593 | array.prototype.flat "^1.2.3" 594 | contains-path "^0.1.0" 595 | debug "^2.6.9" 596 | doctrine "1.5.0" 597 | eslint-import-resolver-node "^0.3.3" 598 | eslint-module-utils "^2.6.0" 599 | has "^1.0.3" 600 | minimatch "^3.0.4" 601 | object.values "^1.1.1" 602 | read-pkg-up "^2.0.0" 603 | resolve "^1.17.0" 604 | tsconfig-paths "^3.9.0" 605 | 606 | eslint-scope@^5.0.0, eslint-scope@^5.1.0: 607 | version "5.1.0" 608 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" 609 | integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== 610 | dependencies: 611 | esrecurse "^4.1.0" 612 | estraverse "^4.1.1" 613 | 614 | eslint-utils@^2.0.0, eslint-utils@^2.1.0: 615 | version "2.1.0" 616 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 617 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 618 | dependencies: 619 | eslint-visitor-keys "^1.1.0" 620 | 621 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 622 | version "1.3.0" 623 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 624 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 625 | 626 | eslint@^7.5.0: 627 | version "7.5.0" 628 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.5.0.tgz#9ecbfad62216d223b82ac9ffea7ef3444671d135" 629 | integrity sha512-vlUP10xse9sWt9SGRtcr1LAC67BENcQMFeV+w5EvLEoFe3xJ8cF1Skd0msziRx/VMC+72B4DxreCE+OR12OA6Q== 630 | dependencies: 631 | "@babel/code-frame" "^7.0.0" 632 | ajv "^6.10.0" 633 | chalk "^4.0.0" 634 | cross-spawn "^7.0.2" 635 | debug "^4.0.1" 636 | doctrine "^3.0.0" 637 | enquirer "^2.3.5" 638 | eslint-scope "^5.1.0" 639 | eslint-utils "^2.1.0" 640 | eslint-visitor-keys "^1.3.0" 641 | espree "^7.2.0" 642 | esquery "^1.2.0" 643 | esutils "^2.0.2" 644 | file-entry-cache "^5.0.1" 645 | functional-red-black-tree "^1.0.1" 646 | glob-parent "^5.0.0" 647 | globals "^12.1.0" 648 | ignore "^4.0.6" 649 | import-fresh "^3.0.0" 650 | imurmurhash "^0.1.4" 651 | is-glob "^4.0.0" 652 | js-yaml "^3.13.1" 653 | json-stable-stringify-without-jsonify "^1.0.1" 654 | levn "^0.4.1" 655 | lodash "^4.17.19" 656 | minimatch "^3.0.4" 657 | natural-compare "^1.4.0" 658 | optionator "^0.9.1" 659 | progress "^2.0.0" 660 | regexpp "^3.1.0" 661 | semver "^7.2.1" 662 | strip-ansi "^6.0.0" 663 | strip-json-comments "^3.1.0" 664 | table "^5.2.3" 665 | text-table "^0.2.0" 666 | v8-compile-cache "^2.0.3" 667 | 668 | espree@^7.2.0: 669 | version "7.2.0" 670 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69" 671 | integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g== 672 | dependencies: 673 | acorn "^7.3.1" 674 | acorn-jsx "^5.2.0" 675 | eslint-visitor-keys "^1.3.0" 676 | 677 | esprima@^4.0.0: 678 | version "4.0.1" 679 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 680 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 681 | 682 | esquery@^1.2.0: 683 | version "1.3.1" 684 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" 685 | integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== 686 | dependencies: 687 | estraverse "^5.1.0" 688 | 689 | esrecurse@^4.1.0: 690 | version "4.2.1" 691 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 692 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 693 | dependencies: 694 | estraverse "^4.1.0" 695 | 696 | estraverse@^4.1.0, estraverse@^4.1.1: 697 | version "4.3.0" 698 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 699 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 700 | 701 | estraverse@^5.1.0: 702 | version "5.1.0" 703 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" 704 | integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== 705 | 706 | esutils@^2.0.2: 707 | version "2.0.3" 708 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 709 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 710 | 711 | fast-deep-equal@^3.1.1: 712 | version "3.1.3" 713 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 714 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 715 | 716 | fast-json-stable-stringify@^2.0.0: 717 | version "2.1.0" 718 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 719 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 720 | 721 | fast-levenshtein@^2.0.6: 722 | version "2.0.6" 723 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 724 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 725 | 726 | file-entry-cache@^5.0.1: 727 | version "5.0.1" 728 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 729 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 730 | dependencies: 731 | flat-cache "^2.0.1" 732 | 733 | fill-range@^7.0.1: 734 | version "7.0.1" 735 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 736 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 737 | dependencies: 738 | to-regex-range "^5.0.1" 739 | 740 | find-up@5.0.0: 741 | version "5.0.0" 742 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 743 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 744 | dependencies: 745 | locate-path "^6.0.0" 746 | path-exists "^4.0.0" 747 | 748 | find-up@^2.0.0, find-up@^2.1.0: 749 | version "2.1.0" 750 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 751 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 752 | dependencies: 753 | locate-path "^2.0.0" 754 | 755 | find-up@^3.0.0: 756 | version "3.0.0" 757 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 758 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 759 | dependencies: 760 | locate-path "^3.0.0" 761 | 762 | flat-cache@^2.0.1: 763 | version "2.0.1" 764 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 765 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 766 | dependencies: 767 | flatted "^2.0.0" 768 | rimraf "2.6.3" 769 | write "1.0.3" 770 | 771 | flat@^4.1.0: 772 | version "4.1.0" 773 | resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" 774 | integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== 775 | dependencies: 776 | is-buffer "~2.0.3" 777 | 778 | flatted@^2.0.0: 779 | version "2.0.2" 780 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" 781 | integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== 782 | 783 | fs.realpath@^1.0.0: 784 | version "1.0.0" 785 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 786 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 787 | 788 | fsevents@~2.1.2: 789 | version "2.1.3" 790 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 791 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 792 | 793 | function-bind@^1.1.1: 794 | version "1.1.1" 795 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 796 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 797 | 798 | functional-red-black-tree@^1.0.1: 799 | version "1.0.1" 800 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 801 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 802 | 803 | get-caller-file@^2.0.1: 804 | version "2.0.5" 805 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 806 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 807 | 808 | get-func-name@^2.0.0: 809 | version "2.0.0" 810 | resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" 811 | integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 812 | 813 | get-stdin@^6.0.0: 814 | version "6.0.0" 815 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" 816 | integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== 817 | 818 | glob-parent@^5.0.0, glob-parent@~5.1.0: 819 | version "5.1.2" 820 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 821 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 822 | dependencies: 823 | is-glob "^4.0.1" 824 | 825 | glob@7.1.6, glob@^7.1.3, glob@^7.1.6: 826 | version "7.1.6" 827 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 828 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 829 | dependencies: 830 | fs.realpath "^1.0.0" 831 | inflight "^1.0.4" 832 | inherits "2" 833 | minimatch "^3.0.4" 834 | once "^1.3.0" 835 | path-is-absolute "^1.0.0" 836 | 837 | globals@^12.1.0: 838 | version "12.4.0" 839 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 840 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 841 | dependencies: 842 | type-fest "^0.8.1" 843 | 844 | graceful-fs@^4.1.2: 845 | version "4.2.4" 846 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 847 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 848 | 849 | growl@1.10.5: 850 | version "1.10.5" 851 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 852 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 853 | 854 | has-flag@^3.0.0: 855 | version "3.0.0" 856 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 857 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 858 | 859 | has-flag@^4.0.0: 860 | version "4.0.0" 861 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 862 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 863 | 864 | has-symbols@^1.0.0, has-symbols@^1.0.1: 865 | version "1.0.1" 866 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 867 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 868 | 869 | has@^1.0.3: 870 | version "1.0.3" 871 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 872 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 873 | dependencies: 874 | function-bind "^1.1.1" 875 | 876 | he@1.2.0: 877 | version "1.2.0" 878 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 879 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 880 | 881 | hosted-git-info@^2.1.4: 882 | version "2.8.9" 883 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" 884 | integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== 885 | 886 | ignore@^4.0.6: 887 | version "4.0.6" 888 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 889 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 890 | 891 | import-fresh@^3.0.0: 892 | version "3.2.1" 893 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 894 | integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== 895 | dependencies: 896 | parent-module "^1.0.0" 897 | resolve-from "^4.0.0" 898 | 899 | imurmurhash@^0.1.4: 900 | version "0.1.4" 901 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 902 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 903 | 904 | inflight@^1.0.4: 905 | version "1.0.6" 906 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 907 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 908 | dependencies: 909 | once "^1.3.0" 910 | wrappy "1" 911 | 912 | inherits@2: 913 | version "2.0.4" 914 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 915 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 916 | 917 | is-arguments@^1.0.4: 918 | version "1.0.4" 919 | resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" 920 | integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== 921 | 922 | is-arrayish@^0.2.1: 923 | version "0.2.1" 924 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 925 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 926 | 927 | is-binary-path@~2.1.0: 928 | version "2.1.0" 929 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 930 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 931 | dependencies: 932 | binary-extensions "^2.0.0" 933 | 934 | is-buffer@~2.0.3: 935 | version "2.0.4" 936 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" 937 | integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== 938 | 939 | is-callable@^1.1.4, is-callable@^1.2.0: 940 | version "1.2.0" 941 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" 942 | integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== 943 | 944 | is-date-object@^1.0.1: 945 | version "1.0.2" 946 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 947 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 948 | 949 | is-extglob@^2.1.1: 950 | version "2.1.1" 951 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 952 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 953 | 954 | is-fullwidth-code-point@^2.0.0: 955 | version "2.0.0" 956 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 957 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 958 | 959 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: 960 | version "4.0.1" 961 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 962 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 963 | dependencies: 964 | is-extglob "^2.1.1" 965 | 966 | is-map@^2.0.1: 967 | version "2.0.1" 968 | resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" 969 | integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== 970 | 971 | is-number@^7.0.0: 972 | version "7.0.0" 973 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 974 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 975 | 976 | is-plain-obj@^1.1.0: 977 | version "1.1.0" 978 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 979 | integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= 980 | 981 | is-regex@^1.1.0: 982 | version "1.1.0" 983 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" 984 | integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== 985 | dependencies: 986 | has-symbols "^1.0.1" 987 | 988 | is-set@^2.0.1: 989 | version "2.0.1" 990 | resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" 991 | integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== 992 | 993 | is-string@^1.0.4, is-string@^1.0.5: 994 | version "1.0.5" 995 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" 996 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== 997 | 998 | is-symbol@^1.0.2: 999 | version "1.0.3" 1000 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 1001 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 1002 | dependencies: 1003 | has-symbols "^1.0.1" 1004 | 1005 | isarray@^1.0.0: 1006 | version "1.0.0" 1007 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1008 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1009 | 1010 | isarray@^2.0.5: 1011 | version "2.0.5" 1012 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" 1013 | integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== 1014 | 1015 | isexe@^2.0.0: 1016 | version "2.0.0" 1017 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1018 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1019 | 1020 | iterate-iterator@^1.0.1: 1021 | version "1.0.1" 1022 | resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.1.tgz#1693a768c1ddd79c969051459453f082fe82e9f6" 1023 | integrity sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw== 1024 | 1025 | iterate-value@^1.0.0: 1026 | version "1.0.2" 1027 | resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" 1028 | integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== 1029 | dependencies: 1030 | es-get-iterator "^1.0.2" 1031 | iterate-iterator "^1.0.1" 1032 | 1033 | js-tokens@^4.0.0: 1034 | version "4.0.0" 1035 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1036 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1037 | 1038 | js-yaml@3.14.0, js-yaml@^3.13.1: 1039 | version "3.14.0" 1040 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" 1041 | integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== 1042 | dependencies: 1043 | argparse "^1.0.7" 1044 | esprima "^4.0.0" 1045 | 1046 | json-schema-traverse@^0.4.1: 1047 | version "0.4.1" 1048 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1049 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1050 | 1051 | json-stable-stringify-without-jsonify@^1.0.1: 1052 | version "1.0.1" 1053 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1054 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1055 | 1056 | json5@^1.0.1: 1057 | version "1.0.2" 1058 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" 1059 | integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== 1060 | dependencies: 1061 | minimist "^1.2.0" 1062 | 1063 | levn@^0.4.1: 1064 | version "0.4.1" 1065 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1066 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1067 | dependencies: 1068 | prelude-ls "^1.2.1" 1069 | type-check "~0.4.0" 1070 | 1071 | load-json-file@^2.0.0: 1072 | version "2.0.0" 1073 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 1074 | integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= 1075 | dependencies: 1076 | graceful-fs "^4.1.2" 1077 | parse-json "^2.2.0" 1078 | pify "^2.0.0" 1079 | strip-bom "^3.0.0" 1080 | 1081 | locate-path@^2.0.0: 1082 | version "2.0.0" 1083 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1084 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= 1085 | dependencies: 1086 | p-locate "^2.0.0" 1087 | path-exists "^3.0.0" 1088 | 1089 | locate-path@^3.0.0: 1090 | version "3.0.0" 1091 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1092 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1093 | dependencies: 1094 | p-locate "^3.0.0" 1095 | path-exists "^3.0.0" 1096 | 1097 | locate-path@^6.0.0: 1098 | version "6.0.0" 1099 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1100 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1101 | dependencies: 1102 | p-locate "^5.0.0" 1103 | 1104 | lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: 1105 | version "4.17.21" 1106 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1107 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1108 | 1109 | log-symbols@4.0.0: 1110 | version "4.0.0" 1111 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" 1112 | integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== 1113 | dependencies: 1114 | chalk "^4.0.0" 1115 | 1116 | make-error@^1.1.1: 1117 | version "1.3.6" 1118 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 1119 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 1120 | 1121 | minimatch@3.0.4, minimatch@^3.0.4: 1122 | version "3.0.4" 1123 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1124 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1125 | dependencies: 1126 | brace-expansion "^1.1.7" 1127 | 1128 | minimist@^1.2.0, minimist@^1.2.5: 1129 | version "1.2.7" 1130 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" 1131 | integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== 1132 | 1133 | mkdirp@^0.5.1: 1134 | version "0.5.5" 1135 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 1136 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 1137 | dependencies: 1138 | minimist "^1.2.5" 1139 | 1140 | mocha@^8.1.2: 1141 | version "8.1.2" 1142 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.2.tgz#d67fad13300e4f5cd48135a935ea566f96caf827" 1143 | integrity sha512-I8FRAcuACNMLQn3lS4qeWLxXqLvGf6r2CaLstDpZmMUUSmvW6Cnm1AuHxgbc7ctZVRcfwspCRbDHymPsi3dkJw== 1144 | dependencies: 1145 | ansi-colors "4.1.1" 1146 | browser-stdout "1.3.1" 1147 | chokidar "3.4.2" 1148 | debug "4.1.1" 1149 | diff "4.0.2" 1150 | escape-string-regexp "4.0.0" 1151 | find-up "5.0.0" 1152 | glob "7.1.6" 1153 | growl "1.10.5" 1154 | he "1.2.0" 1155 | js-yaml "3.14.0" 1156 | log-symbols "4.0.0" 1157 | minimatch "3.0.4" 1158 | ms "2.1.2" 1159 | object.assign "4.1.0" 1160 | promise.allsettled "1.0.2" 1161 | serialize-javascript "4.0.0" 1162 | strip-json-comments "3.0.1" 1163 | supports-color "7.1.0" 1164 | which "2.0.2" 1165 | wide-align "1.1.3" 1166 | workerpool "6.0.0" 1167 | yargs "13.3.2" 1168 | yargs-parser "13.1.2" 1169 | yargs-unparser "1.6.1" 1170 | 1171 | ms@2.0.0: 1172 | version "2.0.0" 1173 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1174 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 1175 | 1176 | ms@2.1.2, ms@^2.1.1: 1177 | version "2.1.2" 1178 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1179 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1180 | 1181 | natural-compare@^1.4.0: 1182 | version "1.4.0" 1183 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1184 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1185 | 1186 | normalize-package-data@^2.3.2: 1187 | version "2.5.0" 1188 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" 1189 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== 1190 | dependencies: 1191 | hosted-git-info "^2.1.4" 1192 | resolve "^1.10.0" 1193 | semver "2 || 3 || 4 || 5" 1194 | validate-npm-package-license "^3.0.1" 1195 | 1196 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1197 | version "3.0.0" 1198 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1199 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1200 | 1201 | object-inspect@^1.7.0: 1202 | version "1.8.0" 1203 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" 1204 | integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== 1205 | 1206 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 1207 | version "1.1.1" 1208 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1209 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1210 | 1211 | object.assign@4.1.0, object.assign@^4.1.0: 1212 | version "4.1.0" 1213 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 1214 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 1215 | dependencies: 1216 | define-properties "^1.1.2" 1217 | function-bind "^1.1.1" 1218 | has-symbols "^1.0.0" 1219 | object-keys "^1.0.11" 1220 | 1221 | object.values@^1.1.1: 1222 | version "1.1.1" 1223 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" 1224 | integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== 1225 | dependencies: 1226 | define-properties "^1.1.3" 1227 | es-abstract "^1.17.0-next.1" 1228 | function-bind "^1.1.1" 1229 | has "^1.0.3" 1230 | 1231 | once@^1.3.0: 1232 | version "1.4.0" 1233 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1234 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1235 | dependencies: 1236 | wrappy "1" 1237 | 1238 | optionator@^0.9.1: 1239 | version "0.9.1" 1240 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1241 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1242 | dependencies: 1243 | deep-is "^0.1.3" 1244 | fast-levenshtein "^2.0.6" 1245 | levn "^0.4.1" 1246 | prelude-ls "^1.2.1" 1247 | type-check "^0.4.0" 1248 | word-wrap "^1.2.3" 1249 | 1250 | p-limit@^1.1.0: 1251 | version "1.3.0" 1252 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" 1253 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== 1254 | dependencies: 1255 | p-try "^1.0.0" 1256 | 1257 | p-limit@^2.0.0: 1258 | version "2.3.0" 1259 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1260 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1261 | dependencies: 1262 | p-try "^2.0.0" 1263 | 1264 | p-limit@^3.0.2: 1265 | version "3.0.2" 1266 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" 1267 | integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== 1268 | dependencies: 1269 | p-try "^2.0.0" 1270 | 1271 | p-locate@^2.0.0: 1272 | version "2.0.0" 1273 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1274 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= 1275 | dependencies: 1276 | p-limit "^1.1.0" 1277 | 1278 | p-locate@^3.0.0: 1279 | version "3.0.0" 1280 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1281 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1282 | dependencies: 1283 | p-limit "^2.0.0" 1284 | 1285 | p-locate@^5.0.0: 1286 | version "5.0.0" 1287 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1288 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1289 | dependencies: 1290 | p-limit "^3.0.2" 1291 | 1292 | p-try@^1.0.0: 1293 | version "1.0.0" 1294 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1295 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= 1296 | 1297 | p-try@^2.0.0: 1298 | version "2.2.0" 1299 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1300 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1301 | 1302 | parent-module@^1.0.0: 1303 | version "1.0.1" 1304 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1305 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1306 | dependencies: 1307 | callsites "^3.0.0" 1308 | 1309 | parse-json@^2.2.0: 1310 | version "2.2.0" 1311 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1312 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= 1313 | dependencies: 1314 | error-ex "^1.2.0" 1315 | 1316 | path-exists@^3.0.0: 1317 | version "3.0.0" 1318 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1319 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1320 | 1321 | path-exists@^4.0.0: 1322 | version "4.0.0" 1323 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1324 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1325 | 1326 | path-is-absolute@^1.0.0: 1327 | version "1.0.1" 1328 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1329 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1330 | 1331 | path-key@^3.1.0: 1332 | version "3.1.1" 1333 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1334 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1335 | 1336 | path-parse@^1.0.6: 1337 | version "1.0.7" 1338 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1339 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1340 | 1341 | path-type@^2.0.0: 1342 | version "2.0.0" 1343 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 1344 | integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= 1345 | dependencies: 1346 | pify "^2.0.0" 1347 | 1348 | pathval@^1.1.0: 1349 | version "1.1.1" 1350 | resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" 1351 | integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== 1352 | 1353 | picomatch@^2.0.4, picomatch@^2.2.1: 1354 | version "2.2.2" 1355 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1356 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1357 | 1358 | pify@^2.0.0: 1359 | version "2.3.0" 1360 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1361 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 1362 | 1363 | pkg-dir@^2.0.0: 1364 | version "2.0.0" 1365 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 1366 | integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= 1367 | dependencies: 1368 | find-up "^2.1.0" 1369 | 1370 | prelude-ls@^1.2.1: 1371 | version "1.2.1" 1372 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1373 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1374 | 1375 | prettier@^2.0.5: 1376 | version "2.0.5" 1377 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" 1378 | integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== 1379 | 1380 | progress@^2.0.0: 1381 | version "2.0.3" 1382 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1383 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1384 | 1385 | promise.allsettled@1.0.2: 1386 | version "1.0.2" 1387 | resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" 1388 | integrity sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg== 1389 | dependencies: 1390 | array.prototype.map "^1.0.1" 1391 | define-properties "^1.1.3" 1392 | es-abstract "^1.17.0-next.1" 1393 | function-bind "^1.1.1" 1394 | iterate-value "^1.0.0" 1395 | 1396 | punycode@^2.1.0: 1397 | version "2.1.1" 1398 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1399 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1400 | 1401 | ramda@^0.27.0: 1402 | version "0.27.0" 1403 | resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.0.tgz#915dc29865c0800bf3f69b8fd6c279898b59de43" 1404 | integrity sha512-pVzZdDpWwWqEVVLshWUHjNwuVP7SfcmPraYuqocJp1yo2U1R7P+5QAfDhdItkuoGqIBnBYrtPp7rEPqDn9HlZA== 1405 | 1406 | randombytes@^2.1.0: 1407 | version "2.1.0" 1408 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1409 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1410 | dependencies: 1411 | safe-buffer "^5.1.0" 1412 | 1413 | read-pkg-up@^2.0.0: 1414 | version "2.0.0" 1415 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 1416 | integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= 1417 | dependencies: 1418 | find-up "^2.0.0" 1419 | read-pkg "^2.0.0" 1420 | 1421 | read-pkg@^2.0.0: 1422 | version "2.0.0" 1423 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 1424 | integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= 1425 | dependencies: 1426 | load-json-file "^2.0.0" 1427 | normalize-package-data "^2.3.2" 1428 | path-type "^2.0.0" 1429 | 1430 | readdirp@~3.4.0: 1431 | version "3.4.0" 1432 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" 1433 | integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== 1434 | dependencies: 1435 | picomatch "^2.2.1" 1436 | 1437 | regexpp@^3.0.0, regexpp@^3.1.0: 1438 | version "3.1.0" 1439 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 1440 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 1441 | 1442 | require-directory@^2.1.1: 1443 | version "2.1.1" 1444 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1445 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1446 | 1447 | require-main-filename@^2.0.0: 1448 | version "2.0.0" 1449 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 1450 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 1451 | 1452 | resolve-from@^4.0.0: 1453 | version "4.0.0" 1454 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1455 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1456 | 1457 | resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0: 1458 | version "1.17.0" 1459 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" 1460 | integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== 1461 | dependencies: 1462 | path-parse "^1.0.6" 1463 | 1464 | rimraf@2.6.3: 1465 | version "2.6.3" 1466 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1467 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1468 | dependencies: 1469 | glob "^7.1.3" 1470 | 1471 | safe-buffer@^5.1.0: 1472 | version "5.2.1" 1473 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1474 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1475 | 1476 | "semver@2 || 3 || 4 || 5": 1477 | version "5.7.1" 1478 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 1479 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 1480 | 1481 | semver@^7.2.1, semver@^7.3.2: 1482 | version "7.3.2" 1483 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" 1484 | integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 1485 | 1486 | serialize-javascript@4.0.0: 1487 | version "4.0.0" 1488 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" 1489 | integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== 1490 | dependencies: 1491 | randombytes "^2.1.0" 1492 | 1493 | set-blocking@^2.0.0: 1494 | version "2.0.0" 1495 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1496 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1497 | 1498 | shebang-command@^2.0.0: 1499 | version "2.0.0" 1500 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1501 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1502 | dependencies: 1503 | shebang-regex "^3.0.0" 1504 | 1505 | shebang-regex@^3.0.0: 1506 | version "3.0.0" 1507 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1508 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1509 | 1510 | slice-ansi@^2.1.0: 1511 | version "2.1.0" 1512 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 1513 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 1514 | dependencies: 1515 | ansi-styles "^3.2.0" 1516 | astral-regex "^1.0.0" 1517 | is-fullwidth-code-point "^2.0.0" 1518 | 1519 | source-map-support@^0.5.17: 1520 | version "0.5.19" 1521 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 1522 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 1523 | dependencies: 1524 | buffer-from "^1.0.0" 1525 | source-map "^0.6.0" 1526 | 1527 | source-map@^0.6.0: 1528 | version "0.6.1" 1529 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1530 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1531 | 1532 | spdx-correct@^3.0.0: 1533 | version "3.1.1" 1534 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" 1535 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== 1536 | dependencies: 1537 | spdx-expression-parse "^3.0.0" 1538 | spdx-license-ids "^3.0.0" 1539 | 1540 | spdx-exceptions@^2.1.0: 1541 | version "2.3.0" 1542 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" 1543 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== 1544 | 1545 | spdx-expression-parse@^3.0.0: 1546 | version "3.0.1" 1547 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" 1548 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== 1549 | dependencies: 1550 | spdx-exceptions "^2.1.0" 1551 | spdx-license-ids "^3.0.0" 1552 | 1553 | spdx-license-ids@^3.0.0: 1554 | version "3.0.5" 1555 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" 1556 | integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== 1557 | 1558 | sprintf-js@~1.0.2: 1559 | version "1.0.3" 1560 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1561 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1562 | 1563 | "string-width@^1.0.2 || 2": 1564 | version "2.1.1" 1565 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1566 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1567 | dependencies: 1568 | is-fullwidth-code-point "^2.0.0" 1569 | strip-ansi "^4.0.0" 1570 | 1571 | string-width@^3.0.0, string-width@^3.1.0: 1572 | version "3.1.0" 1573 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1574 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1575 | dependencies: 1576 | emoji-regex "^7.0.1" 1577 | is-fullwidth-code-point "^2.0.0" 1578 | strip-ansi "^5.1.0" 1579 | 1580 | string.prototype.trimend@^1.0.1: 1581 | version "1.0.1" 1582 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" 1583 | integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== 1584 | dependencies: 1585 | define-properties "^1.1.3" 1586 | es-abstract "^1.17.5" 1587 | 1588 | string.prototype.trimstart@^1.0.1: 1589 | version "1.0.1" 1590 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" 1591 | integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== 1592 | dependencies: 1593 | define-properties "^1.1.3" 1594 | es-abstract "^1.17.5" 1595 | 1596 | strip-ansi@^4.0.0: 1597 | version "4.0.0" 1598 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1599 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1600 | dependencies: 1601 | ansi-regex "^3.0.0" 1602 | 1603 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1604 | version "5.2.0" 1605 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1606 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1607 | dependencies: 1608 | ansi-regex "^4.1.0" 1609 | 1610 | strip-ansi@^6.0.0: 1611 | version "6.0.0" 1612 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1613 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1614 | dependencies: 1615 | ansi-regex "^5.0.0" 1616 | 1617 | strip-bom@^3.0.0: 1618 | version "3.0.0" 1619 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1620 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 1621 | 1622 | strip-json-comments@3.0.1: 1623 | version "3.0.1" 1624 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" 1625 | integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== 1626 | 1627 | strip-json-comments@^3.1.0: 1628 | version "3.1.1" 1629 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1630 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1631 | 1632 | supports-color@7.1.0, supports-color@^7.1.0: 1633 | version "7.1.0" 1634 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 1635 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== 1636 | dependencies: 1637 | has-flag "^4.0.0" 1638 | 1639 | supports-color@^5.3.0: 1640 | version "5.5.0" 1641 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1642 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1643 | dependencies: 1644 | has-flag "^3.0.0" 1645 | 1646 | table@^5.2.3: 1647 | version "5.4.6" 1648 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 1649 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== 1650 | dependencies: 1651 | ajv "^6.10.2" 1652 | lodash "^4.17.14" 1653 | slice-ansi "^2.1.0" 1654 | string-width "^3.0.0" 1655 | 1656 | text-table@^0.2.0: 1657 | version "0.2.0" 1658 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1659 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1660 | 1661 | to-regex-range@^5.0.1: 1662 | version "5.0.1" 1663 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1664 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1665 | dependencies: 1666 | is-number "^7.0.0" 1667 | 1668 | ts-node@^8.10.2: 1669 | version "8.10.2" 1670 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d" 1671 | integrity sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA== 1672 | dependencies: 1673 | arg "^4.1.0" 1674 | diff "^4.0.1" 1675 | make-error "^1.1.1" 1676 | source-map-support "^0.5.17" 1677 | yn "3.1.1" 1678 | 1679 | ts-toolbelt@^6.3.3: 1680 | version "6.13.28" 1681 | resolved "https://registry.yarnpkg.com/ts-toolbelt/-/ts-toolbelt-6.13.28.tgz#7afbdd5b95ccb947085aec400fe59545d02de448" 1682 | integrity sha512-89amEuUFvgcErtKh0+8egz8I+DertVSSGYaFAtNK56H7DXx4czFDL+wApauD4xSq4NZrB12kM++ZYu9e/1l3lA== 1683 | 1684 | tsconfig-paths@^3.9.0: 1685 | version "3.9.0" 1686 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" 1687 | integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== 1688 | dependencies: 1689 | "@types/json5" "^0.0.29" 1690 | json5 "^1.0.1" 1691 | minimist "^1.2.0" 1692 | strip-bom "^3.0.0" 1693 | 1694 | tslib@^1.8.1: 1695 | version "1.13.0" 1696 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 1697 | integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== 1698 | 1699 | tsutils@^3.17.1: 1700 | version "3.17.1" 1701 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" 1702 | integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== 1703 | dependencies: 1704 | tslib "^1.8.1" 1705 | 1706 | type-check@^0.4.0, type-check@~0.4.0: 1707 | version "0.4.0" 1708 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1709 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1710 | dependencies: 1711 | prelude-ls "^1.2.1" 1712 | 1713 | type-detect@^4.0.0, type-detect@^4.0.5: 1714 | version "4.0.8" 1715 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 1716 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 1717 | 1718 | type-fest@^0.8.1: 1719 | version "0.8.1" 1720 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1721 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1722 | 1723 | typescript@^3.9.7: 1724 | version "3.9.7" 1725 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" 1726 | integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== 1727 | 1728 | uri-js@^4.2.2: 1729 | version "4.2.2" 1730 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1731 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1732 | dependencies: 1733 | punycode "^2.1.0" 1734 | 1735 | v8-compile-cache@^2.0.3: 1736 | version "2.1.1" 1737 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" 1738 | integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== 1739 | 1740 | validate-npm-package-license@^3.0.1: 1741 | version "3.0.4" 1742 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" 1743 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== 1744 | dependencies: 1745 | spdx-correct "^3.0.0" 1746 | spdx-expression-parse "^3.0.0" 1747 | 1748 | which-module@^2.0.0: 1749 | version "2.0.0" 1750 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 1751 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 1752 | 1753 | which@2.0.2, which@^2.0.1: 1754 | version "2.0.2" 1755 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1756 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1757 | dependencies: 1758 | isexe "^2.0.0" 1759 | 1760 | wide-align@1.1.3: 1761 | version "1.1.3" 1762 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1763 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 1764 | dependencies: 1765 | string-width "^1.0.2 || 2" 1766 | 1767 | word-wrap@^1.2.3: 1768 | version "1.2.3" 1769 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1770 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1771 | 1772 | workerpool@6.0.0: 1773 | version "6.0.0" 1774 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.0.tgz#85aad67fa1a2c8ef9386a1b43539900f61d03d58" 1775 | integrity sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== 1776 | 1777 | wrap-ansi@^5.1.0: 1778 | version "5.1.0" 1779 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 1780 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 1781 | dependencies: 1782 | ansi-styles "^3.2.0" 1783 | string-width "^3.0.0" 1784 | strip-ansi "^5.0.0" 1785 | 1786 | wrappy@1: 1787 | version "1.0.2" 1788 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1789 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1790 | 1791 | write@1.0.3: 1792 | version "1.0.3" 1793 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 1794 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 1795 | dependencies: 1796 | mkdirp "^0.5.1" 1797 | 1798 | y18n@^4.0.0: 1799 | version "4.0.3" 1800 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" 1801 | integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== 1802 | 1803 | yargs-parser@13.1.2, yargs-parser@^13.1.2: 1804 | version "13.1.2" 1805 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" 1806 | integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== 1807 | dependencies: 1808 | camelcase "^5.0.0" 1809 | decamelize "^1.2.0" 1810 | 1811 | yargs-parser@^15.0.1: 1812 | version "15.0.1" 1813 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" 1814 | integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== 1815 | dependencies: 1816 | camelcase "^5.0.0" 1817 | decamelize "^1.2.0" 1818 | 1819 | yargs-unparser@1.6.1: 1820 | version "1.6.1" 1821 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.1.tgz#bd4b0ee05b4c94d058929c32cb09e3fce71d3c5f" 1822 | integrity sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA== 1823 | dependencies: 1824 | camelcase "^5.3.1" 1825 | decamelize "^1.2.0" 1826 | flat "^4.1.0" 1827 | is-plain-obj "^1.1.0" 1828 | yargs "^14.2.3" 1829 | 1830 | yargs@13.3.2: 1831 | version "13.3.2" 1832 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" 1833 | integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== 1834 | dependencies: 1835 | cliui "^5.0.0" 1836 | find-up "^3.0.0" 1837 | get-caller-file "^2.0.1" 1838 | require-directory "^2.1.1" 1839 | require-main-filename "^2.0.0" 1840 | set-blocking "^2.0.0" 1841 | string-width "^3.0.0" 1842 | which-module "^2.0.0" 1843 | y18n "^4.0.0" 1844 | yargs-parser "^13.1.2" 1845 | 1846 | yargs@^14.2.3: 1847 | version "14.2.3" 1848 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" 1849 | integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== 1850 | dependencies: 1851 | cliui "^5.0.0" 1852 | decamelize "^1.2.0" 1853 | find-up "^3.0.0" 1854 | get-caller-file "^2.0.1" 1855 | require-directory "^2.1.1" 1856 | require-main-filename "^2.0.0" 1857 | set-blocking "^2.0.0" 1858 | string-width "^3.0.0" 1859 | which-module "^2.0.0" 1860 | y18n "^4.0.0" 1861 | yargs-parser "^15.0.1" 1862 | 1863 | yn@3.1.1: 1864 | version "3.1.1" 1865 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 1866 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 1867 | --------------------------------------------------------------------------------