├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── package.json ├── smoldash.svg ├── src ├── at.test.ts ├── clone.test.ts ├── cloneDeep.test.ts ├── compact.test.ts ├── every.test.ts ├── filter.test.ts ├── find.test.ts ├── findIndex.test.ts ├── flatten.test.ts ├── flow.test.ts ├── forEach.test.ts ├── get.test.ts ├── groupBy.test.ts ├── has.test.ts ├── head.test.ts ├── index.ts ├── indexOf.test.ts ├── isEmpty.test.ts ├── isEqual.test.ts ├── kebabCase.test.ts ├── keyBy.test.ts ├── map.test.ts ├── merge.test.ts ├── once.test.ts ├── pickBy.test.ts ├── range.test.ts ├── some.test.ts ├── sortBy.test.ts ├── take.test.ts ├── uniq.test.ts ├── uniqBy.test.ts └── uniqueid.test.ts ├── tools └── postbuild.ts ├── tsconfig.cjs.json ├── tsconfig.esm.json ├── tsconfig.json └── yarn.lock /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: 3 | push: 4 | branches: 5 | - master 6 | pull_request: 7 | types: [opened, synchronize, reopened, ready_for_review] 8 | 9 | jobs: 10 | test: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v1 14 | - uses: actions/setup-node@v1 15 | with: 16 | node-version: "14.x" 17 | - name: npm install, build, and test 18 | run: npm install 19 | - name: test + build 20 | run: | 21 | npm run lint 22 | npm run test 23 | npm run build 24 | env: 25 | CI: true 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # Snowpack dependency directory (https://snowpack.dev/) 45 | web_modules/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | .parcel-cache 78 | 79 | # Next.js build output 80 | .next 81 | out 82 | 83 | # Nuxt.js build / generate output 84 | .nuxt 85 | dist 86 | 87 | # Gatsby files 88 | .cache/ 89 | # Comment in the public line in if your project uses Gatsby and not Next.js 90 | # https://nextjs.org/blog/next-9-1#public-directory-support 91 | # public 92 | 93 | # vuepress build output 94 | .vuepress/dist 95 | 96 | # Serverless directories 97 | .serverless/ 98 | 99 | # FuseBox cache 100 | .fusebox/ 101 | 102 | # DynamoDB Local files 103 | .dynamodb/ 104 | 105 | # TernJS port file 106 | .tern-port 107 | 108 | # Stores VSCode versions used for testing VSCode extensions 109 | .vscode-test 110 | 111 | # yarn v2 112 | .yarn/cache 113 | .yarn/unplugged 114 | .yarn/build-state.yml 115 | .yarn/install-state.gz 116 | .pnp.* 117 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | src/ 2 | tsconfig* 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2020-present Marvin Hagemeister 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Smoldash logo](/smoldash.svg) 2 | 3 | ![Smoldash bundle size](https://img.badgesize.io/https:/cdn.jsdelivr.net/npm/smoldash@0.11.0/dist/esm/index.min.js?compression=gzip) 4 | 5 | # Smoldash - Tiny 2kb Lodash alternative 6 | 7 | _Note: This library hasn't been battle tested yet. There may be bugs, although none have been reported so far._ 8 | 9 | Lodash is an amazing utility library for JavaScript, but with recent additions to the ECMAScript much of it can be replaced with vanilla features. This library aims to be a thinner alternative with modern browsers in mind. 10 | 11 | Supported functions: 12 | 13 | - `_.at` 14 | - `_.clone` 15 | - `_.cloneDeep` 16 | - `_.compact` 17 | - `_.every` 18 | - `_.findIndex` 19 | - `_.find` 20 | - `_.filter` 21 | - `_.flatten` 22 | - `_.flow` 23 | - `_.forEach` 24 | - `_.get` 25 | - `_.groupBy` 26 | - `_.has` 27 | - `_.head` 28 | - `_.indexOf` 29 | - `_.isEmpty` 30 | - `_.isEqual` 31 | - `_.kebabCase` 32 | - `_.keyBy` 33 | - `_.map` - only maps arrays 34 | - `_.merge` 35 | - `_.once` 36 | - `_.pickBy` 37 | - `_.range` 38 | - `_.sortBy` 39 | - `_.some` 40 | - `_.take` 41 | - `_.uniqBy` 42 | - `_.uniqueId` 43 | 44 | ## Installation 45 | 46 | ```bash 47 | npm install smoldash 48 | # or via yarn 49 | yarn add smoldash 50 | ``` 51 | 52 | ## License 53 | 54 | MIT, see [the LICENSE file](./LICENSE) 55 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "smoldash", 3 | "version": "0.11.0", 4 | "description": "A modern lodash variant for modern browsers", 5 | "main": "dist/cjs/index.js", 6 | "module": "dist/esm/index.js", 7 | "types": "dist/types/index.d.ts", 8 | "exports": { 9 | ".": { 10 | "import": "./dist/esm/index.mjs", 11 | "require": "./dist/cjs/index.js" 12 | }, 13 | "./package.json": "./package.json", 14 | "./": "./" 15 | }, 16 | "files": [ 17 | "dist/", 18 | "smoldash.svg" 19 | ], 20 | "scripts": { 21 | "build": "rimraf dist/ && tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json && ts-node tools/postbuild.ts", 22 | "lint": "eslint src/", 23 | "test": "mocha -r ts-node/register --extensions ts,tsx --watch-files src 'src/*.test.ts' 'src/**/*.test.ts'", 24 | "prepublishOnly": "npm test && npm run build" 25 | }, 26 | "author": "Marvin Hagemeister ", 27 | "license": "MIT", 28 | "dependencies": {}, 29 | "devDependencies": { 30 | "@types/mocha": "^8.0.2", 31 | "@typescript-eslint/eslint-plugin": "^3.9.0", 32 | "@typescript-eslint/parser": "^3.9.0", 33 | "eslint": "^7.7.0", 34 | "expect": "^26.4.1", 35 | "husky": "^4.2.5", 36 | "lint-staged": "^10.2.11", 37 | "mocha": "^8.1.1", 38 | "prettier": "^2.0.5", 39 | "rimraf": "^3.0.2", 40 | "ts-node": "^8.10.2", 41 | "typescript": "^3.9.7" 42 | }, 43 | "prettier": { 44 | "useTabs": true, 45 | "arrowParens": "avoid", 46 | "trailingComma": "all" 47 | }, 48 | "lint-staged": { 49 | "**/*.{js,jsx,ts,tsx,json}": [ 50 | "prettier --write" 51 | ] 52 | }, 53 | "husky": { 54 | "hooks": { 55 | "pre-commit": "lint-staged" 56 | } 57 | }, 58 | "repository": { 59 | "type": "git", 60 | "url": "https://github.com/marvinhagemeister/smoldash" 61 | }, 62 | "eslintConfig": { 63 | "extends": [ 64 | "eslint:recommended", 65 | "plugin:@typescript-eslint/eslint-recommended", 66 | "plugin:@typescript-eslint/recommended" 67 | ], 68 | "parser": "@typescript-eslint/parser", 69 | "parserOptions": { 70 | "ecmaFeatures": { 71 | "jsx": true 72 | }, 73 | "ecmaVersion": 2018, 74 | "sourceType": "module" 75 | }, 76 | "env": { 77 | "browser": true, 78 | "node": true, 79 | "mocha": true 80 | }, 81 | "rules": { 82 | "@typescript-eslint/explicit-function-return-type": "off", 83 | "@typescript-eslint/explicit-module-boundary-types": "off", 84 | "@typescript-eslint/ban-ts-comment": "off", 85 | "@typescript-eslint/no-explicit-any": "off", 86 | "@typescript-eslint/no-non-null-assertion": "off", 87 | "@typescript-eslint/no-unused-vars": "error", 88 | "@typescript-eslint/no-var-requires": "off", 89 | "@typescript-eslint/camelcase": "off", 90 | "@typescript-eslint/ban-ts-ignore": "off", 91 | "no-console": "error", 92 | "no-mixed-spaces-and-tabs": "off" 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /smoldash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/at.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { at } from "."; 3 | 4 | describe("at", () => { 5 | it("should get object/array values by paths", () => { 6 | const obj = { a: [{ b: { c: 3 } }, 4] }; 7 | expect(at(obj, ["a[0].b.c", "a[1]"])).toEqual([3, 4]); 8 | }); 9 | 10 | it("should work with string arg", () => { 11 | const obj = { a: [{ b: { c: 3 } }, 4] }; 12 | expect(at(obj, "a[0].b.c")).toEqual([3]); 13 | }); 14 | 15 | it("should work with complex examples", () => { 16 | const data = { 17 | response: { data: { errors: [{ code: "notEmpty", key: "email" }] } }, 18 | }; 19 | expect(at(data, "response.data.errors")).toEqual([ 20 | [{ key: "email", code: "notEmpty" }], 21 | ]); 22 | 23 | const data2 = { response: { data: { code: "verificationNeeded" } } }; 24 | expect(at(data2, "response.data")).toEqual([ 25 | { code: "verificationNeeded" }, 26 | ]); 27 | }); 28 | }); 29 | -------------------------------------------------------------------------------- /src/clone.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { clone } from "."; 3 | 4 | describe("clone", () => { 5 | it("should work with primitives", () => { 6 | expect(clone(null)).toEqual(null); 7 | expect(clone(undefined)).toEqual(undefined); 8 | expect(clone(1)).toEqual(1); 9 | expect(clone("a")).toEqual("a"); 10 | expect(clone(true)).toEqual(true); 11 | expect(clone(false)).toEqual(false); 12 | }); 13 | 14 | it("should clone objects", () => { 15 | const obj = { foo: 123 }; 16 | const res = clone(obj); 17 | expect(res).toEqual(obj); 18 | expect(res).not.toBe(obj); 19 | }); 20 | 21 | it("should clone nested objects", () => { 22 | const obj = { foo: { bar: 123 } }; 23 | const res = clone(obj); 24 | expect(res).toEqual(obj); 25 | expect(res).not.toBe(obj); 26 | expect(res.foo).toBe(obj.foo); 27 | }); 28 | 29 | it("should clone arrays", () => { 30 | const arr = [1, 2]; 31 | const res = clone(arr); 32 | expect(res).toEqual(arr); 33 | expect(res).not.toBe(arr); 34 | }); 35 | 36 | it("should clone nested arrays", () => { 37 | const arr = [1, [2]]; 38 | const res = clone(arr); 39 | expect(res).toEqual(arr); 40 | expect(res).not.toBe(arr); 41 | expect(res[1]).toBe(arr[1]); 42 | }); 43 | 44 | it("should clone RegExp", () => { 45 | const regex = /foo/gm; 46 | const res = clone(regex); 47 | expect(res).toEqual(regex); 48 | expect(res).not.toBe(regex); 49 | }); 50 | 51 | it("should clone Date", () => { 52 | const date = new Date(); 53 | const res = clone(date); 54 | expect(res).toEqual(date); 55 | expect(res).not.toBe(date); 56 | }); 57 | 58 | it("should clone Sets", () => { 59 | const obj = { a: 1 }; 60 | const set = new Set([obj]); 61 | const res = clone(set); 62 | expect(res).toEqual(set); 63 | expect(res).not.toBe(set); 64 | expect(Array.from(res)[0]).toBe(obj); 65 | }); 66 | 67 | it("should clone Maps", () => { 68 | const key = { key: 1 }; 69 | const value = { value: 1 }; 70 | const map = new Map([[key, value]]); 71 | const res = clone(map); 72 | expect(res).toEqual(map); 73 | expect(res).not.toBe(map); 74 | 75 | expect(Array.from(res.entries())[0][0]).toBe(key); 76 | expect(Array.from(res.entries())[0][1]).toBe(value); 77 | }); 78 | }); 79 | -------------------------------------------------------------------------------- /src/cloneDeep.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { cloneDeep } from "."; 3 | 4 | describe("cloneDeep", () => { 5 | it("should work with primitives", () => { 6 | expect(cloneDeep(null)).toEqual(null); 7 | expect(cloneDeep(undefined)).toEqual(undefined); 8 | expect(cloneDeep(1)).toEqual(1); 9 | expect(cloneDeep("a")).toEqual("a"); 10 | expect(cloneDeep(true)).toEqual(true); 11 | expect(cloneDeep(false)).toEqual(false); 12 | }); 13 | 14 | it("should clone objects", () => { 15 | const obj = { foo: 123 }; 16 | const clone = cloneDeep(obj); 17 | expect(clone).toEqual(obj); 18 | expect(clone).not.toBe(obj); 19 | }); 20 | 21 | it("should clone nested objects", () => { 22 | const obj = { foo: { bar: 123 } }; 23 | const clone = cloneDeep(obj); 24 | expect(clone).toEqual(obj); 25 | expect(clone).not.toBe(obj); 26 | expect(clone.foo).not.toBe(obj.foo); 27 | }); 28 | 29 | it("should clone arrays", () => { 30 | const arr = [1, 2]; 31 | const clone = cloneDeep(arr); 32 | expect(clone).toEqual(arr); 33 | expect(clone).not.toBe(arr); 34 | }); 35 | 36 | it("should clone nested arrays", () => { 37 | const arr = [1, [2]]; 38 | const clone = cloneDeep(arr); 39 | expect(clone).toEqual(arr); 40 | expect(clone).not.toBe(arr); 41 | expect(clone[1]).not.toBe(arr[1]); 42 | }); 43 | 44 | it("should clone RegExp", () => { 45 | const regex = /foo/gm; 46 | const res = cloneDeep(regex); 47 | expect(res).toEqual(regex); 48 | expect(res).not.toBe(regex); 49 | }); 50 | 51 | it("should clone Date", () => { 52 | const date = new Date(); 53 | const res = cloneDeep(date); 54 | expect(res).toEqual(date); 55 | expect(res).not.toBe(date); 56 | }); 57 | 58 | it("should clone Sets", () => { 59 | const obj = { a: 1 }; 60 | const set = new Set([obj]); 61 | const res = cloneDeep(set); 62 | 63 | expect(res).toEqual(set); 64 | expect(res).not.toBe(set); 65 | 66 | expect(Array.from(res)[0]).not.toBe(obj); 67 | }); 68 | 69 | it("should clone Maps", () => { 70 | const key = { key: 1 }; 71 | const value = { value: 1 }; 72 | const map = new Map([[key, value]]); 73 | const res = cloneDeep(map); 74 | expect(res).toEqual(map); 75 | expect(res).not.toBe(map); 76 | 77 | expect(Array.from(res.entries())[0][0]).toBe(key); 78 | expect(Array.from(res.entries())[0][1]).not.toBe(value); 79 | }); 80 | }); 81 | -------------------------------------------------------------------------------- /src/compact.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { compact } from "."; 3 | 4 | describe("compact", () => { 5 | it("should remove falsy values", () => { 6 | expect(compact([0, 1, false, 2, "", 3])).toEqual([1, 2, 3]); 7 | }); 8 | }); 9 | -------------------------------------------------------------------------------- /src/every.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { every } from "."; 3 | 4 | const users = [ 5 | { user: "barney", age: 36, active: true }, 6 | { user: "pebbles", age: 40, active: true }, 7 | ]; 8 | 9 | const inactiveUsers = [ 10 | { user: "barney", age: 36, active: false }, 11 | { user: "pebbles", age: 40, active: false }, 12 | ]; 13 | 14 | describe("every", () => { 15 | it("should check in array", () => { 16 | expect(every(users, n => n.active)).toEqual(true); 17 | expect(every(users, n => !n.active)).toEqual(false); 18 | }); 19 | 20 | it("should not throw on non-array", () => { 21 | expect(every(null as any)).toEqual(true); 22 | expect(every(undefined as any)).toEqual(true); 23 | expect(every("test" as any)).toEqual(true); 24 | }); 25 | 26 | it("should use object predicate", () => { 27 | expect(every(users, { active: true })).toEqual(true); 28 | expect(every(users, { user: "barney" })).toEqual(false); 29 | expect(every(users, { user: "barney", active: true })).toEqual(false); 30 | expect(every(users, { active: false })).toEqual(false); 31 | }); 32 | 33 | it("should array predicate", () => { 34 | expect(every(users, ["active", true])).toEqual(true); 35 | expect(every(users, ["active", false])).toEqual(false); 36 | }); 37 | 38 | it("should property predicate", () => { 39 | expect(every(users, "active")).toEqual(true); 40 | expect(every(inactiveUsers, "active")).toEqual(false); 41 | }); 42 | }); 43 | -------------------------------------------------------------------------------- /src/filter.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { filter } from "."; 3 | 4 | const users = [ 5 | { user: "barney", age: 36, active: true }, 6 | { user: "fred", age: 40, active: false }, 7 | ]; 8 | 9 | describe("filter", () => { 10 | it("should filter array", () => { 11 | expect(filter(users, o => !o.active)).toEqual([ 12 | { user: "fred", age: 40, active: false }, 13 | ]); 14 | }); 15 | 16 | it("should not throw on non-array", () => { 17 | expect(filter(null as any)).toEqual([]); 18 | expect(filter(undefined as any)).toEqual([]); 19 | expect(filter("test" as any)).toEqual([]); 20 | }); 21 | 22 | it("should use object predicate", () => { 23 | expect(filter(users, { age: 36, active: true })).toEqual([ 24 | { user: "barney", age: 36, active: true }, 25 | ]); 26 | }); 27 | 28 | it("should use array predicate", () => { 29 | expect(filter(users, ["active", false])).toEqual([ 30 | { user: "fred", age: 40, active: false }, 31 | ]); 32 | }); 33 | 34 | it("should use property predicate", () => { 35 | expect(filter(users, "active")).toEqual([ 36 | { user: "barney", age: 36, active: true }, 37 | ]); 38 | }); 39 | }); 40 | -------------------------------------------------------------------------------- /src/find.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { find } from "."; 3 | 4 | const users = [ 5 | { user: "barney", age: 36, active: true }, 6 | { user: "fred", age: 40, active: false }, 7 | { user: "pebbles", age: 1, active: true }, 8 | ]; 9 | 10 | describe("find", () => { 11 | it("should find in array", () => { 12 | expect(find([1, 2, 3], n => n >= 2)).toEqual(2); 13 | }); 14 | 15 | it("should not throw on non-array", () => { 16 | expect(find(null as any)).toEqual(undefined); 17 | expect(find(undefined as any)).toEqual(undefined); 18 | expect(find("test" as any)).toEqual(undefined); 19 | }); 20 | 21 | it("should find from index", () => { 22 | expect(find([1, 3, 2], v => v < 3, 1)).toEqual(2); 23 | }); 24 | 25 | it("should use iteratee shorthand", () => { 26 | expect(find(users, { age: 1, active: true })).toEqual({ 27 | user: "pebbles", 28 | age: 1, 29 | active: true, 30 | }); 31 | }); 32 | 33 | it("should array predicate", () => { 34 | expect(find(users, ["active", false])).toEqual({ 35 | user: "fred", 36 | age: 40, 37 | active: false, 38 | }); 39 | }); 40 | 41 | it("should property predicate", () => { 42 | expect(find(users, "active")).toEqual({ 43 | user: "barney", 44 | age: 36, 45 | active: true, 46 | }); 47 | }); 48 | }); 49 | -------------------------------------------------------------------------------- /src/findIndex.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { findIndex } from "."; 3 | 4 | const users = [ 5 | { user: "barney", active: false }, 6 | { user: "fred", active: false }, 7 | { user: "pebbles", active: true }, 8 | ]; 9 | 10 | describe("findIndex", () => { 11 | it("should find in array", () => { 12 | expect(findIndex(users, o => o.user === "barney")).toEqual(0); 13 | }); 14 | 15 | it("should use object predicate", () => { 16 | expect(findIndex(users, { user: "fred", active: false })).toEqual(1); 17 | }); 18 | 19 | it("should use array predicate", () => { 20 | expect(findIndex(users, ["active", false])).toEqual(0); 21 | }); 22 | 23 | it("should use property predicate", () => { 24 | expect(findIndex(users, "active")).toEqual(2); 25 | }); 26 | 27 | it("should findIndex from index", () => { 28 | expect(findIndex([1, 3, 2], v => v < 3, 1)).toEqual(2); 29 | }); 30 | 31 | it("should not throw on non-array", () => { 32 | expect(findIndex(null as any)).toEqual(-1); 33 | expect(findIndex(undefined as any)).toEqual(-1); 34 | expect(findIndex("test" as any)).toEqual(-1); 35 | }); 36 | }); 37 | -------------------------------------------------------------------------------- /src/flatten.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { flatten } from "."; 3 | 4 | describe("flatten", () => { 5 | it("should flatten array", () => { 6 | expect(flatten([1, [2]])).toEqual([1, 2]); 7 | }); 8 | 9 | it("should flatten single depth", () => { 10 | expect(flatten([1, [2, [3]]])).toEqual([1, 2, [3]]); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /src/flow.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { flow } from "."; 3 | 4 | describe("flow", () => { 5 | const add = (a: number, b: number) => a + b; 6 | const square = (n: number) => n * n; 7 | it("should call next function", () => { 8 | const fn = flow(add, square); 9 | expect(fn(1, 2)).toEqual(9); 10 | }); 11 | }); 12 | -------------------------------------------------------------------------------- /src/forEach.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { forEach } from "."; 3 | 4 | function run(input: any) { 5 | const res: any[] = []; 6 | forEach(input, (...args) => res.push(args)); 7 | return res; 8 | } 9 | 10 | describe("forEach", () => { 11 | it("should work with empty array", () => { 12 | expect(run([])).toEqual([]); 13 | }); 14 | 15 | it("should loop over arrays", () => { 16 | const arr = [1, 2, 3]; 17 | expect(run(arr)).toEqual([ 18 | [1, 0, arr], 19 | [2, 1, arr], 20 | [3, 2, arr], 21 | ]); 22 | }); 23 | 24 | it("should loop over Sets", () => { 25 | const v = new Set([1, 2, 3]); 26 | expect(run(v)).toEqual([ 27 | [1, 1, v], 28 | [2, 2, v], 29 | [3, 3, v], 30 | ]); 31 | }); 32 | 33 | it("should loop over Maps", () => { 34 | const v = new Map([ 35 | [1, "1"], 36 | [2, "2"], 37 | [3, "3"], 38 | ]); 39 | expect(run(v)).toEqual([ 40 | ["1", 1, v], 41 | ["2", 2, v], 42 | ["3", 3, v], 43 | ]); 44 | }); 45 | 46 | it("should loop over objects", () => { 47 | const v = { a: "a1", b: "b1", c: "c1" }; 48 | expect(run(v)).toEqual([ 49 | ["a1", "a", v], 50 | ["b1", "b", v], 51 | ["c1", "c", v], 52 | ]); 53 | }); 54 | }); 55 | -------------------------------------------------------------------------------- /src/get.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { get } from "."; 3 | 4 | describe("get", () => { 5 | const obj = { a: [{ b: { c: 3 } }] }; 6 | 7 | it("should get item by path", () => { 8 | expect(get(obj, "a[0].b.c")).toEqual(3); 9 | }); 10 | 11 | it("should support array paths", () => { 12 | expect(get(obj, ["a", "0", "b", "c"])).toEqual(3); 13 | }); 14 | 15 | it("should return default value", () => { 16 | expect(get(obj, "a.b.c", "default")).toEqual("default"); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /src/groupBy.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { groupBy } from "."; 3 | 4 | describe("groupBy", () => { 5 | it("should no throw on non-array", () => { 6 | expect(groupBy(null as any, x => x as string)).toEqual({}); 7 | }); 8 | 9 | it("should use property iteratee", () => { 10 | expect(groupBy(["one", "two", "three"], "length")).toEqual({ 11 | "3": ["one", "two"], 12 | "5": ["three"], 13 | }); 14 | }); 15 | 16 | it("should use callback iteratee", () => { 17 | expect(groupBy([6.1, 4.2, 6.3], Math.floor)).toEqual({ 18 | "4": [4.2], 19 | "6": [6.1, 6.3], 20 | }); 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /src/has.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { has } from "."; 3 | 4 | describe("has", () => { 5 | const obj = { a: [{ b: { c: 3 } }] }; 6 | 7 | it("should return true if found", () => { 8 | expect(has(obj, "a[0].b.c")).toEqual(true); 9 | }); 10 | 11 | it("should return true if found #2", () => { 12 | expect(has(obj, ["a", "0", "b", "c"])).toEqual(true); 13 | }); 14 | 15 | it("should return false if not present", () => { 16 | expect(has(obj, "a.b.c.d.e")).toEqual(false); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /src/head.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { head } from "."; 3 | 4 | describe("head", () => { 5 | it("should take the first element of an array", () => { 6 | expect(head([1])).toEqual(1); 7 | }); 8 | 9 | it("should return undefined if array is empty", () => { 10 | expect(head([])).toEqual(undefined); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Sort objects by object properties 3 | */ 4 | export function sortBy(arr: T[], keys: Array): T[] { 5 | return arr.slice().sort((a, b) => { 6 | for (let i = 0; i < keys.length; i++) { 7 | const key = keys[i]; 8 | if (a[key] < b[key]) return -1; 9 | else if (a[key] > b[key]) return 1; 10 | } 11 | 12 | return 0; 13 | }); 14 | } 15 | 16 | /** 17 | * Take out the first N items of an array 18 | */ 19 | export function take(arr: T[], n: number): T[] { 20 | return arr.slice(0, n); 21 | } 22 | 23 | /** 24 | * Get the first element of an array 25 | */ 26 | export function head(arr: T[]): T | undefined { 27 | return arr[0]; 28 | } 29 | 30 | /** 31 | * Get multiple object or array value by paths. Example path: `a[0].b.c` 32 | */ 33 | export function at( 34 | source: Record | any[], 35 | paths: string[] | string, 36 | ) { 37 | const out = []; 38 | 39 | if (typeof paths === "string") { 40 | paths = [paths]; 41 | } 42 | 43 | for (let i = 0; i < paths.length; i++) { 44 | const path = paths[i]; 45 | const parts = path.split(/[.[\]]/g); 46 | let haystack: any = source; 47 | let found = true; 48 | for (let i = 0; i < parts.length; i++) { 49 | const part = parts[i]; 50 | if (part === "") continue; 51 | if (!(part in haystack)) { 52 | found = false; 53 | break; 54 | } 55 | haystack = haystack[part]; 56 | } 57 | 58 | if (found) { 59 | out.push(haystack); 60 | } 61 | } 62 | 63 | return out; 64 | } 65 | 66 | /** 67 | * Return item by path or default value if not present 68 | */ 69 | export function get( 70 | source: Record | any[], 71 | path: string | Array, 72 | defaultValue?: T, 73 | ): T | undefined { 74 | if (Array.isArray(path)) { 75 | path = path.join("."); 76 | } 77 | 78 | const parts = path.split(/[.[\]]/g); 79 | let haystack: any = source; 80 | for (let i = 0; i < parts.length; i++) { 81 | const part = parts[i]; 82 | if (part === "") continue; 83 | if (!(part in haystack)) return defaultValue; 84 | haystack = haystack[part]; 85 | } 86 | 87 | return haystack; 88 | } 89 | 90 | /** 91 | * Check if an item is in an object by path 92 | */ 93 | export function has( 94 | source: Record | any[], 95 | path: string | Array, 96 | ) { 97 | const empty = "__tlodash_not_found"; 98 | return get(source, path, empty) !== empty; 99 | } 100 | 101 | /** 102 | * Check if a collection (Array, Map, Set, Object) is empty 103 | */ 104 | export function isEmpty(v: any) { 105 | if (Array.isArray(v)) { 106 | return v.length === 0; 107 | } else if (v instanceof Set || v instanceof Map) { 108 | return v.size === 0; 109 | } else if (v !== null && typeof v === "object") { 110 | return Object.keys(v).length === 0; 111 | } 112 | 113 | return true; 114 | } 115 | 116 | /** 117 | * Pick values out of an object by predicate and return them in a new object 118 | */ 119 | export function pickBy>( 120 | obj: T, 121 | predicate: (value: T[K], key: K) => boolean, 122 | ) { 123 | const out: Partial = {}; 124 | Object.keys(obj).forEach(key => { 125 | if (predicate((obj as any)[key], key)) { 126 | (out as any)[key] = obj[key]; 127 | } 128 | }); 129 | 130 | return out; 131 | } 132 | 133 | /** 134 | * Loop over a collection and call the callback on each item 135 | */ 136 | export function forEach( 137 | value: T, 138 | callback: (value: any, index: number | string, collection: T) => void, 139 | ) { 140 | if (Array.isArray(value)) { 141 | value.forEach(callback as any); 142 | } else if (value instanceof Set || value instanceof Map) { 143 | value.forEach(callback as any); 144 | } else if (value !== null && typeof value === "object") { 145 | Object.keys(value).forEach(key => { 146 | callback((value as any)[key], key, value); 147 | }); 148 | } 149 | } 150 | 151 | /** 152 | * Convert string to kebab case 153 | */ 154 | export function kebabCase(input: string) { 155 | let out = input 156 | .replace(/[-._\s]+/g, "-") 157 | .replace(/[A-Z0-9]/, "-$&") 158 | .replace(/[-]{2,}/, ""); 159 | 160 | if (out[0] === "-") { 161 | out = out.slice(1); 162 | } 163 | if (out[out.length - 1] === "-") { 164 | out = out.slice(0, -1); 165 | } 166 | return out.toLowerCase(); 167 | } 168 | 169 | /** 170 | * Get index of an item in an array 171 | */ 172 | export function indexOf(arr: T[], value: T, startIndex = 0) { 173 | if (startIndex === 0) return arr.indexOf(value); 174 | 175 | for (let i = startIndex; i < arr.length; i++) { 176 | if (arr[i] === value) return i; 177 | } 178 | return -1; 179 | } 180 | 181 | /** 182 | * Flatten an array by a single level 183 | */ 184 | export function flatten(arr: any[]): any[] { 185 | return arr.reduce((acc, val) => acc.concat(val), []); 186 | } 187 | 188 | /** 189 | * Remove falsy values from array 190 | */ 191 | export function compact(arr: unknown[]) { 192 | return arr.filter(x => !!x); 193 | } 194 | 195 | /** Used to generate unique IDs. */ 196 | const idCounter: Record = {}; 197 | 198 | /** 199 | * Generates a unique ID 200 | */ 201 | export function uniqueId(prefix = "$smoldash$") { 202 | const id = (idCounter[prefix] = (idCounter[prefix] || 0) + 1); 203 | return "" + (prefix === "$smoldash$" ? "" : prefix) + id; 204 | } 205 | 206 | // eslint-disable-next-line @typescript-eslint/ban-types 207 | export function once any>(fn: T): T { 208 | let result: ReturnType; 209 | let called = false; 210 | return function once_wrapped(this: any, ...args: any[]) { 211 | if (!called) { 212 | called = true; 213 | result = fn.apply(this, args); 214 | } 215 | return result; 216 | } as any; 217 | } 218 | 219 | /** 220 | * Create a duplicate free version of an array 221 | */ 222 | export function uniq(arr: T[]): T[] { 223 | if (!Array.isArray(arr)) return []; 224 | return Array.from(new Set(arr).values()); 225 | } 226 | 227 | /** 228 | * Create a duplicate free version of an array by a user iteratee 229 | */ 230 | export function uniqBy(arr: T[], iteratee: R | ((v: T) => R)) { 231 | if (!Array.isArray(arr)) return []; 232 | const seen = new Map(); 233 | const type = typeof iteratee; 234 | 235 | arr.forEach(item => { 236 | let key: any = iteratee; 237 | if (type === "string" && item !== null && typeof item === "object") { 238 | key = (item as any)[iteratee]; 239 | } else if (type === "function") { 240 | key = (iteratee as any)(item); 241 | } 242 | if (!seen.has(key)) { 243 | seen.set(key, item); 244 | } 245 | }); 246 | 247 | return Array.from(seen.values()); 248 | } 249 | 250 | export type AnyFunction = (...args: any[]) => any; 251 | 252 | /** 253 | * Pass the result of the first function to the next one. 254 | */ 255 | export function flow(...fns: AnyFunction[]) { 256 | return function (this: any, ...args: any[]) { 257 | let result = fns[0].apply(this, args); 258 | for (let i = 1; i < fns.length; i++) { 259 | result = fns[i].call(this, result); 260 | } 261 | 262 | return result; 263 | }; 264 | } 265 | 266 | /** 267 | * Shallow clone of a value 268 | */ 269 | export function clone(value: T): T { 270 | if (Array.isArray(value)) { 271 | return value.slice() as any; 272 | } else if (value instanceof RegExp) { 273 | return new RegExp(value.source, value.flags) as any; 274 | } else if (value instanceof Set) { 275 | return new Set(value) as any; 276 | } else if (value instanceof Map) { 277 | return new Map(value) as any; 278 | } else if (value instanceof Date) { 279 | return new Date(value) as any; 280 | } else if (typeof value === "object" && value !== null) { 281 | return { ...value }; 282 | } 283 | return value; 284 | } 285 | 286 | /** 287 | * Deeply clone a value 288 | */ 289 | export function cloneDeep(value: T): T { 290 | if (Array.isArray(value)) { 291 | return value.slice().map(cloneDeep) as any; 292 | } else if (value instanceof RegExp) { 293 | return new RegExp(value.source, value.flags) as any; 294 | } else if (value instanceof Set) { 295 | const out = new Set(); 296 | value.forEach(v => out.add(cloneDeep(v))); 297 | return out as any; 298 | } else if (value instanceof Map) { 299 | const out = new Map(); 300 | value.forEach((v, k) => out.set(k, cloneDeep(v))); 301 | return out as any; 302 | } else if (value instanceof Date) { 303 | return new Date(value) as any; 304 | } else if (typeof value === "object" && value !== null) { 305 | const out: Record = {}; 306 | for (const k in value) { 307 | out[k] = cloneDeep(value[k]); 308 | } 309 | return out as any; 310 | } 311 | 312 | return value; 313 | } 314 | 315 | /** 316 | * Deeply merge multiple objects 317 | */ 318 | export function merge(...objs: Record[]): Record { 319 | const a = objs[0] as any; 320 | 321 | for (let i = 1; i < objs.length; i++) { 322 | const b = objs[i] as any; 323 | 324 | for (const k in b) { 325 | if ( 326 | a[k] !== null && 327 | b[k] !== null && 328 | typeof a[k] === "object" && 329 | typeof b[k] === "object" 330 | ) { 331 | merge(a[k], b[k]); 332 | } else { 333 | a[k] = b[k]; 334 | } 335 | } 336 | } 337 | 338 | return objs[0]; 339 | } 340 | 341 | const createPredicate = ( 342 | predicate: 343 | | string 344 | | [string, any] 345 | | Record 346 | | ((item: T) => boolean) = x => !!x, 347 | ): ((item: T) => boolean) | undefined => { 348 | let fn; 349 | if (typeof predicate === "string") { 350 | fn = (item: T) => !!(item as any)[predicate]; 351 | } else if (Array.isArray(predicate)) { 352 | fn = (item: T) => (item as any)[predicate[0]] === predicate[1]; 353 | } else if (typeof predicate === "object") { 354 | fn = (item: T) => { 355 | return Object.keys(predicate).every( 356 | v => !(v in predicate) || (item as any)[v] === predicate[v], 357 | ); 358 | }; 359 | } else if (typeof predicate === "function") { 360 | fn = predicate; 361 | } 362 | return fn; 363 | }; 364 | 365 | /** 366 | * Iterate the collection and return the index of the element where the predicate returns true 367 | */ 368 | export function findIndex( 369 | collection: T[], 370 | predicate: 371 | | string 372 | | [string, any] 373 | | Record 374 | | ((item: T) => boolean) = x => !!x, 375 | fromIndex = 0, 376 | ): number { 377 | if (!Array.isArray(collection)) return -1; 378 | const fn = createPredicate(predicate); 379 | for (let i = fromIndex; i < collection.length; i++) { 380 | if ((fn as any)(collection[i], i, collection)) { 381 | return i; 382 | } 383 | } 384 | return -1; 385 | } 386 | 387 | /** 388 | * Iterate the collection and return the element where the predicate returns true 389 | */ 390 | export function find( 391 | collection: T[], 392 | predicate: 393 | | string 394 | | [string, any] 395 | | Record 396 | | ((item: T) => boolean) = x => !!x, 397 | fromIndex = 0, 398 | ): T | undefined { 399 | const index = findIndex(collection, predicate, fromIndex); 400 | return index < 0 ? undefined : collection[index]; 401 | } 402 | 403 | /** 404 | * Iterate the collection and return the elements where the predicate returns true 405 | */ 406 | export function filter( 407 | collection: T[], 408 | predicate: 409 | | string 410 | | [string, any] 411 | | Record 412 | | ((item: T) => boolean) = x => !!x, 413 | ): T[] { 414 | if (!Array.isArray(collection)) return []; 415 | return collection.filter(createPredicate(predicate) as any); 416 | } 417 | 418 | /** 419 | * Iterate the collection and return true if predicate returns true for at least one element 420 | */ 421 | export function some( 422 | collection: T[], 423 | predicate: 424 | | string 425 | | [string, any] 426 | | Record 427 | | ((item: T) => boolean) = x => !!x, 428 | ): boolean { 429 | return findIndex(collection, predicate) > -1; 430 | } 431 | 432 | /** 433 | * Iterate the collection and return true if predicate returns true for all elements 434 | */ 435 | export function every( 436 | collection: T[], 437 | predicate: 438 | | string 439 | | [string, any] 440 | | Record 441 | | ((item: T) => boolean) = x => !!x, 442 | ): boolean { 443 | const fn = createPredicate(predicate); 444 | // if we find one element which does not satisfy predicate, then return false 445 | return findIndex(collection, item => !(fn as any)(item)) < 0; 446 | } 447 | 448 | /** 449 | * Returns new collection with each element as result of it being called on iteratee function 450 | */ 451 | 452 | // overloaded signatures 453 | export function map(collection: T[], iteratee: K): T[K][]; 454 | export function map( 455 | collection: T[], 456 | iteratee?: (item: T, index: number, collection: T[]) => Out, 457 | ): Out[]; 458 | 459 | export function map( 460 | collection: T[], 461 | iteratee: string | ((item: T, index: number, collection: T[]) => Out) = x => 462 | (x as unknown) as Out, 463 | ): Out[] { 464 | if (!Array.isArray(collection)) return []; 465 | 466 | let fn; 467 | if (typeof iteratee === "string") { 468 | fn = (item: T) => item[iteratee as keyof T]; 469 | } else if (typeof iteratee === "function") { 470 | fn = iteratee; 471 | } 472 | return collection.map(fn as any); 473 | } 474 | 475 | /** 476 | * Shallowly compare to values 477 | */ 478 | export function isEqual(a: T, b: T): boolean { 479 | if (a === null || b === null) { 480 | return a === b; 481 | } else if (Array.isArray(a) && Array.isArray(b)) { 482 | if (a.length !== b.length) { 483 | return false; 484 | } 485 | 486 | for (let i = 0; i < a.length; i++) { 487 | if (a[i] !== b[i]) { 488 | return false; 489 | } 490 | } 491 | 492 | return true; 493 | } else if (a instanceof RegExp && b instanceof RegExp) { 494 | return "" + a === "" + b; 495 | } else if (a instanceof Set && b instanceof Set) { 496 | if (a.size !== b.size) return false; 497 | 498 | for (const v of a.values()) { 499 | if (!b.has(v)) return false; 500 | } 501 | return true; 502 | } else if (a instanceof Map && b instanceof Map) { 503 | if (a.size !== b.size) return false; 504 | 505 | for (const [k, v] of a.entries()) { 506 | if (!b.has(k)) return false; 507 | if (b.get(k) !== v) return false; 508 | } 509 | return true; 510 | } else if (a instanceof Date && b instanceof Date) { 511 | return +a === +b; 512 | } else if (typeof a === "object" && typeof b === "object") { 513 | for (const i in a) if (!(i in b)) return false; 514 | for (const i in b) if (a[i] !== b[i]) return false; 515 | return true; 516 | } 517 | 518 | return a === b; 519 | } 520 | 521 | /** 522 | * Generate a range of numbers 523 | */ 524 | export function range(start: number, end?: number, step = 1) { 525 | if (typeof end === "undefined") { 526 | end = start; 527 | start = 0; 528 | } 529 | const result = []; 530 | for (let i = start; i < end; i += step) { 531 | result.push(i); 532 | } 533 | return result; 534 | } 535 | 536 | /** 537 | * Creates object to items in collection using keys from iteratee 538 | */ 539 | export function keyBy( 540 | collection: T[], 541 | iteratee: K | ((item: T, index: number, collection: T[]) => MapKey), 542 | ): { [key in MapKey]: T } { 543 | if (!Array.isArray(collection)) return {} as { [key in MapKey]: T }; 544 | 545 | let fn: (item: T, index: number, collection: T[]) => MapKey; 546 | if (typeof iteratee === "string") { 547 | fn = (item: T) => 548 | (item[(iteratee as unknown) as keyof T] as unknown) as MapKey; 549 | } else if (typeof iteratee === "function") { 550 | fn = iteratee; 551 | } 552 | return collection.reduce((accumulator, item, index) => { 553 | const key = fn(item, index, collection); 554 | accumulator[key] = item; 555 | return accumulator; 556 | }, {} as { [key in MapKey]: T }); 557 | } 558 | 559 | /** 560 | * Creates object to items in collection using keys from iteratee 561 | */ 562 | export function groupBy( 563 | collection: T[], 564 | iteratee: K | ((item: T, index: number, collection: T[]) => MapKey), 565 | ): { [key in MapKey]: T[] } { 566 | if (!Array.isArray(collection)) return {} as { [key in MapKey]: T[] }; 567 | 568 | let fn: (item: T, index: number, collection: T[]) => MapKey; 569 | if (typeof iteratee === "string") { 570 | fn = (item: T) => 571 | (item[(iteratee as unknown) as keyof T] as unknown) as MapKey; 572 | } else if (typeof iteratee === "function") { 573 | fn = iteratee; 574 | } 575 | return collection.reduce((accumulator, item, index) => { 576 | const key = fn(item, index, collection); 577 | if (!accumulator[key]) accumulator[key] = []; 578 | accumulator[key].push(item); 579 | return accumulator; 580 | }, {} as { [key in MapKey]: T[] }); 581 | } 582 | -------------------------------------------------------------------------------- /src/indexOf.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { indexOf } from "."; 3 | 4 | describe("indexOf", () => { 5 | it("should return -1 if not found", () => { 6 | expect(indexOf([1, 2], 3)).toEqual(-1); 7 | expect(indexOf([1, 2], 3, 10)).toEqual(-1); 8 | expect(indexOf([1, 2], 3, 1)).toEqual(-1); 9 | }); 10 | 11 | it("should get index of item in array", () => { 12 | expect(indexOf([1, 2], 2)).toEqual(1); 13 | expect(indexOf([1, 2], 2)).toEqual(1); 14 | }); 15 | 16 | it("should start from index", () => { 17 | expect(indexOf([1, 2], 1, 1)).toEqual(-1); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /src/isEmpty.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { isEmpty } from "."; 3 | 4 | describe("isEmpty", () => { 5 | it("should work with primitives", () => { 6 | expect(isEmpty(null)).toEqual(true); 7 | expect(isEmpty(true)).toEqual(true); 8 | expect(isEmpty(1)).toEqual(true); 9 | }); 10 | 11 | it("should work with arrays", () => { 12 | expect(isEmpty([])).toEqual(true); 13 | expect(isEmpty([1, 2, 3])).toEqual(false); 14 | }); 15 | 16 | it("should work with objects", () => { 17 | expect(isEmpty({})).toEqual(true); 18 | expect(isEmpty({ foo: 123 })).toEqual(false); 19 | }); 20 | 21 | it("should work with Sets", () => { 22 | expect(isEmpty(new Set())).toEqual(true); 23 | expect(isEmpty(new Set([1]))).toEqual(false); 24 | }); 25 | 26 | it("should work with Maps", () => { 27 | expect(isEmpty(new Map())).toEqual(true); 28 | expect(isEmpty(new Map([[1, 2]]))).toEqual(false); 29 | }); 30 | }); 31 | -------------------------------------------------------------------------------- /src/isEqual.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { isEqual } from "."; 3 | 4 | describe("isEqual", () => { 5 | it("should compare primitives", () => { 6 | expect(isEqual(1, 1)).toEqual(true); 7 | expect(isEqual("a", "a")).toEqual(true); 8 | expect(isEqual(null, null)).toEqual(true); 9 | expect(isEqual(true, true)).toEqual(true); 10 | expect(isEqual(false, false)).toEqual(true); 11 | 12 | expect(isEqual(true, false)).toEqual(false); 13 | expect(isEqual(false, true)).toEqual(false); 14 | expect(isEqual(1, 2)).toEqual(false); 15 | expect(isEqual(1, null)).toEqual(false); 16 | expect(isEqual(1, "1" as any)).toEqual(false); 17 | expect(isEqual(null, undefined)).toEqual(false); 18 | }); 19 | 20 | it("should compare objects", () => { 21 | expect(isEqual({ a: 1 }, { a: 1 })).toEqual(true); 22 | expect(isEqual({ a: 1 }, { a: 2 })).toEqual(false); 23 | 24 | expect(isEqual({ a: 1, b: 1 }, { a: 1, b: 1 })).toEqual(true); 25 | expect(isEqual({ a: 1, b: 1 }, { a: 1, b: 2 })).toEqual(false); 26 | 27 | expect(isEqual({ a: 1, b: 1 }, { a: 1 })).toEqual(false); 28 | expect(isEqual({ a: 1 }, { a: 1, b: 1 })).toEqual(false); 29 | }); 30 | 31 | it("should compare arrays", () => { 32 | expect(isEqual([1, 2], [1, 2])).toEqual(true); 33 | expect(isEqual([1, 2], [1, 3])).toEqual(false); 34 | 35 | expect(isEqual([1, 2], [1])).toEqual(false); 36 | expect(isEqual([1], [1, 3])).toEqual(false); 37 | }); 38 | 39 | it("should compare Dates", () => { 40 | expect(isEqual(new Date(2020, 11, 17), new Date(2020, 11, 17))).toEqual( 41 | true, 42 | ); 43 | expect(isEqual(new Date(2020, 11, 17), new Date(2020, 11, 16))).toEqual( 44 | false, 45 | ); 46 | }); 47 | 48 | it("should compare RegExp objects", () => { 49 | expect(isEqual(/foo/, /foo/)).toEqual(true); 50 | expect(isEqual(/foo/i, /foo/)).toEqual(false); 51 | expect(isEqual(/foo/i, /bar/i)).toEqual(false); 52 | }); 53 | 54 | it("should compare Set objects", () => { 55 | expect(isEqual(new Set([1, 2]), new Set([1, 2]))).toEqual(true); 56 | expect(isEqual(new Set([1, 2]), new Set([1, 3]))).toEqual(false); 57 | expect(isEqual(new Set([1, 2]), new Set([1]))).toEqual(false); 58 | }); 59 | 60 | it("should compare Map objects", () => { 61 | expect( 62 | isEqual( 63 | new Map([ 64 | [1, 1], 65 | [2, 2], 66 | ]), 67 | new Map([ 68 | [1, 1], 69 | [2, 2], 70 | ]), 71 | ), 72 | ).toEqual(true); 73 | expect(isEqual(new Map([[1, 1]]), new Map([]))).toEqual(false); 74 | expect(isEqual(new Map([[1, 1]]), new Map([[1, 2]]))).toEqual(false); 75 | expect(isEqual(new Map([[1, 1]]), new Map([[2, 1]]))).toEqual(false); 76 | }); 77 | }); 78 | -------------------------------------------------------------------------------- /src/kebabCase.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { kebabCase } from "."; 3 | 4 | describe("kebabCase", () => { 5 | it("should convert strings to kebab case", () => { 6 | expect(kebabCase("Foo Bar")).toEqual("foo-bar"); 7 | expect(kebabCase("fooBar")).toEqual("foo-bar"); 8 | expect(kebabCase("__FOO_BAR__")).toEqual("foo-bar"); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /src/keyBy.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { keyBy } from "."; 3 | 4 | describe("keyBy", () => { 5 | const array = [ 6 | { dir: "left", code: 97 }, 7 | { dir: "right", code: 100 }, 8 | ]; 9 | 10 | it("should no throw on non-array", () => { 11 | expect(keyBy(null as any, x => x as string)).toEqual({}); 12 | }); 13 | 14 | it("should use property iteratee", () => { 15 | expect(keyBy(array, "dir")).toEqual({ 16 | left: { dir: "left", code: 97 }, 17 | right: { dir: "right", code: 100 }, 18 | }); 19 | }); 20 | 21 | it("should use callback iteratee", () => { 22 | expect(keyBy(array, o => String.fromCharCode(o.code))).toEqual({ 23 | a: { dir: "left", code: 97 }, 24 | d: { dir: "right", code: 100 }, 25 | }); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /src/map.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { map } from "."; 3 | 4 | const square = (n: number) => n * n; 5 | 6 | const users = [ 7 | { user: "barney", age: 36, active: true }, 8 | { user: "pebbles", age: 1, active: true }, 9 | ]; 10 | 11 | describe("map", () => { 12 | it("should map array", () => { 13 | expect(map([4, 8], square)).toEqual([16, 64]); 14 | }); 15 | 16 | it("should not throw on non-array", () => { 17 | expect(map(null as any)).toEqual([]); 18 | expect(map(undefined as any)).toEqual([]); 19 | expect(map("test" as any)).toEqual([]); 20 | }); 21 | 22 | it("should use iteratee shorthand", () => { 23 | expect(map(users, "user")).toEqual(["barney", "pebbles"]); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/merge.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { merge } from "."; 3 | 4 | describe("merge", () => { 5 | it("should mutate first object", () => { 6 | const a = { foo: 123 }; 7 | const b = { bar: "b" }; 8 | expect(merge(a, b)).toStrictEqual(a); 9 | }); 10 | 11 | it("should merge objects", () => { 12 | const a = { foo: 123 }; 13 | const b = { bar: "b" }; 14 | expect(merge(a, b)).toEqual({ 15 | foo: 123, 16 | bar: "b", 17 | }); 18 | }); 19 | 20 | it("should deep merge objects", () => { 21 | const a = { foo: { bar: 123 } }; 22 | const b = { foo: { bar: 123, baz: 123 } }; 23 | expect(merge(a, b)).toEqual({ 24 | foo: { bar: 123, baz: 123 }, 25 | }); 26 | }); 27 | 28 | it("should overwrite properties", () => { 29 | const a = { foo: { bar: 123 } }; 30 | const b = { foo: { bar: 222 } }; 31 | expect(merge(a, b)).toEqual({ 32 | foo: { bar: 222 }, 33 | }); 34 | }); 35 | 36 | it("should merge multiple objects", () => { 37 | const a = { foo: { bar: 123 } }; 38 | const b = { foo: { bar: 222 } }; 39 | const c = { foo: { bar: 333 }, bob: 123 }; 40 | expect(merge(a, b, c)).toEqual({ 41 | foo: { bar: 333 }, 42 | bob: 123, 43 | }); 44 | }); 45 | }); 46 | -------------------------------------------------------------------------------- /src/once.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { once } from "."; 3 | 4 | describe("once", () => { 5 | it("should return same result", () => { 6 | let id = 0; 7 | const source = () => ++id; 8 | const fn = once(source); 9 | 10 | expect(fn()).toEqual(1); 11 | expect(fn()).toEqual(1); 12 | }); 13 | 14 | it("should return same result despite arguments", () => { 15 | let id = 0; 16 | const source = (n: number) => n + ++id; 17 | const fn = once(source); 18 | 19 | expect(fn(3)).toEqual(4); 20 | expect(fn(12)).toEqual(4); 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /src/pickBy.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { pickBy } from "."; 3 | 4 | describe("pickBy", () => { 5 | const obj = { a: 1, b: "2", c: 3 }; 6 | it("should filter values by callback", () => { 7 | expect(pickBy(obj, x => typeof x === "number")).toEqual({ a: 1, c: 3 }); 8 | }); 9 | }); 10 | -------------------------------------------------------------------------------- /src/range.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { range } from "."; 3 | 4 | describe("once", () => { 5 | it("with one argument", () => { 6 | expect(range(4)).toEqual([0, 1, 2, 3]); 7 | }); 8 | 9 | it("with start and end", () => { 10 | expect(range(2, 6)).toEqual([2, 3, 4, 5]); 11 | }); 12 | 13 | it("with start, end and step", () => { 14 | expect(range(3, 10, 2)).toEqual([3, 5, 7, 9]); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /src/some.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { some } from "."; 3 | 4 | const users = [ 5 | { user: "barney", age: 36, active: true }, 6 | { user: "pebbles", age: 40, active: true }, 7 | ]; 8 | 9 | const inactiveUsers = [ 10 | { user: "barney", age: 36, active: false }, 11 | { user: "pebbles", age: 40, active: false }, 12 | ]; 13 | 14 | describe("some", () => { 15 | it("should find in array", () => { 16 | expect(some(users, n => n.active)).toEqual(true); 17 | expect(some(users, n => !n.active)).toEqual(false); 18 | }); 19 | 20 | it("should not throw on non-array", () => { 21 | expect(some(null as any)).toEqual(false); 22 | expect(some(undefined as any)).toEqual(false); 23 | expect(some("test" as any)).toEqual(false); 24 | }); 25 | 26 | it("should use object predicate", () => { 27 | expect(some(users, { active: true })).toEqual(true); 28 | expect(some(users, { age: 40, active: true })).toEqual(true); 29 | expect(some(users, { age: 40, active: false })).toEqual(false); 30 | }); 31 | 32 | it("should array predicate", () => { 33 | expect(some(users, ["active", true])).toEqual(true); 34 | expect(some(users, ["active", false])).toEqual(false); 35 | }); 36 | 37 | it("should property predicate", () => { 38 | expect(some(users, "active")).toEqual(true); 39 | expect(some(inactiveUsers, "active")).toEqual(false); 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /src/sortBy.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { sortBy } from "."; 3 | 4 | describe("sortBy", () => { 5 | it("should do nothing if key array is empty", () => { 6 | const data = [{ foo: 2 }, { foo: 3 }, { foo: 1 }]; 7 | expect(sortBy(data, [])).toEqual([data[0], data[1], data[2]]); 8 | }); 9 | 10 | it("should sort by property", () => { 11 | const data = [{ foo: 2 }, { foo: 3 }, { foo: 1 }]; 12 | expect(sortBy(data, ["foo"])).toEqual([data[2], data[0], data[1]]); 13 | }); 14 | 15 | it("should sort by multiple properties", () => { 16 | const data = [ 17 | { foo: 2, bar: 3 }, 18 | { foo: 2, bar: 2 }, 19 | { foo: 3, bar: 1 }, 20 | { foo: 1, bar: 3 }, 21 | ]; 22 | expect(sortBy(data, ["foo", "bar"])).toEqual([ 23 | data[3], 24 | data[1], 25 | data[0], 26 | data[2], 27 | ]); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /src/take.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { take } from "."; 3 | 4 | describe("take", () => { 5 | it("should work with empty array", () => { 6 | expect(take([], 2)).toEqual([]); 7 | }); 8 | 9 | it("should take out elements", () => { 10 | expect(take([1, 2, 3], 2)).toEqual([1, 2]); 11 | }); 12 | 13 | it("should take out elements #2", () => { 14 | expect(take([1, 2, 3], 4)).toEqual([1, 2, 3]); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /src/uniq.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { uniq } from "."; 3 | 4 | describe("uniq", () => { 5 | it("should work with numbers", () => { 6 | expect(uniq([2, 1, 2])).toEqual([2, 1]); 7 | }); 8 | 9 | it("should work with objects", () => { 10 | const o1 = { x: 1 }; 11 | const o2 = { x: 2 }; 12 | expect(uniq([o1, o2, o1])).toEqual([o1, o2]); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /src/uniqBy.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { uniqBy } from "."; 3 | 4 | describe("uniqBy", () => { 5 | it("should work with numbers", () => { 6 | expect(uniqBy([2.1, 1.2, 2.3], Math.floor)).toEqual([2.1, 1.2]); 7 | }); 8 | 9 | it("should work with objects", () => { 10 | expect(uniqBy([{ x: 1 }, { x: 2 }, { x: 1 }], "x")).toEqual([ 11 | { x: 1 }, 12 | { x: 2 }, 13 | ]); 14 | }); 15 | }); 16 | -------------------------------------------------------------------------------- /src/uniqueid.test.ts: -------------------------------------------------------------------------------- 1 | import expect from "expect"; 2 | import { uniqueId } from "."; 3 | 4 | describe("uniqueId", () => { 5 | it("should return unique id", () => { 6 | expect(uniqueId()).toEqual("1"); 7 | expect(uniqueId()).toEqual("2"); 8 | }); 9 | 10 | it("should append a prefix", () => { 11 | expect(uniqueId("foo")).toEqual("foo1"); 12 | expect(uniqueId("foo")).toEqual("foo2"); 13 | 14 | // Should not leak 15 | uniqueId(); 16 | expect(uniqueId("foo")).toEqual("foo3"); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /tools/postbuild.ts: -------------------------------------------------------------------------------- 1 | import { promises as fs } from "fs"; 2 | import path from "path"; 3 | 4 | async function run() { 5 | const esm = path.join(__dirname, "..", "dist", "esm"); 6 | await fs.copyFile(path.join(esm, "index.js"), path.join(esm, "index.mjs")); 7 | } 8 | 9 | run(); 10 | -------------------------------------------------------------------------------- /tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/cjs/" 5 | }, 6 | "files": ["./src/index.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "dist/esm/", 5 | "declaration": true, 6 | "declarationDir": "dist/types/", 7 | "module": "ESNext" 8 | }, 9 | "files": ["./src/index.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "target": "ES2017", 5 | "module": "CommonJS", 6 | "moduleResolution": "node", 7 | "esModuleInterop": true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /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 | "@jest/types@^26.3.0": 27 | version "26.3.0" 28 | resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.3.0.tgz#97627bf4bdb72c55346eef98e3b3f7ddc4941f71" 29 | integrity sha512-BDPG23U0qDeAvU4f99haztXwdAg3hz4El95LkAM+tHAqqhiVzRpEGHHU8EDxT/AnxOrA65YjLBwDahdJ9pTLJQ== 30 | dependencies: 31 | "@types/istanbul-lib-coverage" "^2.0.0" 32 | "@types/istanbul-reports" "^3.0.0" 33 | "@types/node" "*" 34 | "@types/yargs" "^15.0.0" 35 | chalk "^4.0.0" 36 | 37 | "@types/color-name@^1.1.1": 38 | version "1.1.1" 39 | resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" 40 | integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== 41 | 42 | "@types/eslint-visitor-keys@^1.0.0": 43 | version "1.0.0" 44 | resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" 45 | integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== 46 | 47 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": 48 | version "2.0.3" 49 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" 50 | integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== 51 | 52 | "@types/istanbul-lib-report@*": 53 | version "3.0.0" 54 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" 55 | integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== 56 | dependencies: 57 | "@types/istanbul-lib-coverage" "*" 58 | 59 | "@types/istanbul-reports@^3.0.0": 60 | version "3.0.0" 61 | resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" 62 | integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== 63 | dependencies: 64 | "@types/istanbul-lib-report" "*" 65 | 66 | "@types/json-schema@^7.0.3": 67 | version "7.0.5" 68 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd" 69 | integrity sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ== 70 | 71 | "@types/mocha@^8.0.2": 72 | version "8.0.3" 73 | resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.0.3.tgz#51b21b6acb6d1b923bbdc7725c38f9f455166402" 74 | integrity sha512-vyxR57nv8NfcU0GZu8EUXZLTbCMupIUwy95LJ6lllN+JRPG25CwMHoB1q5xKh8YKhQnHYRAn4yW2yuHbf/5xgg== 75 | 76 | "@types/node@*": 77 | version "14.6.0" 78 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499" 79 | integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA== 80 | 81 | "@types/parse-json@^4.0.0": 82 | version "4.0.0" 83 | resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 84 | integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 85 | 86 | "@types/stack-utils@^1.0.1": 87 | version "1.0.1" 88 | resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" 89 | integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== 90 | 91 | "@types/yargs-parser@*": 92 | version "15.0.0" 93 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" 94 | integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== 95 | 96 | "@types/yargs@^15.0.0": 97 | version "15.0.5" 98 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" 99 | integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== 100 | dependencies: 101 | "@types/yargs-parser" "*" 102 | 103 | "@typescript-eslint/eslint-plugin@^3.9.0": 104 | version "3.9.1" 105 | resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.9.1.tgz#8cf27b6227d12d66dd8dc1f1a4b04d1daad51c2e" 106 | integrity sha512-XIr+Mfv7i4paEdBf0JFdIl9/tVxyj+rlilWIfZ97Be0lZ7hPvUbS5iHt9Glc8kRI53dsr0PcAEudbf8rO2wGgg== 107 | dependencies: 108 | "@typescript-eslint/experimental-utils" "3.9.1" 109 | debug "^4.1.1" 110 | functional-red-black-tree "^1.0.1" 111 | regexpp "^3.0.0" 112 | semver "^7.3.2" 113 | tsutils "^3.17.1" 114 | 115 | "@typescript-eslint/experimental-utils@3.9.1": 116 | version "3.9.1" 117 | resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.9.1.tgz#b140b2dc7a7554a44f8a86fb6fe7cbfe57ca059e" 118 | integrity sha512-lkiZ8iBBaYoyEKhCkkw4SAeatXyBq9Ece5bZXdLe1LWBUwTszGbmbiqmQbwWA8cSYDnjWXp9eDbXpf9Sn0hLAg== 119 | dependencies: 120 | "@types/json-schema" "^7.0.3" 121 | "@typescript-eslint/types" "3.9.1" 122 | "@typescript-eslint/typescript-estree" "3.9.1" 123 | eslint-scope "^5.0.0" 124 | eslint-utils "^2.0.0" 125 | 126 | "@typescript-eslint/parser@^3.9.0": 127 | version "3.9.1" 128 | resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-3.9.1.tgz#ab7983abaea0ae138ff5671c7c7739d8a191b181" 129 | integrity sha512-y5QvPFUn4Vl4qM40lI+pNWhTcOWtpZAJ8pOEQ21fTTW4xTJkRplMjMRje7LYTXqVKKX9GJhcyweMz2+W1J5bMg== 130 | dependencies: 131 | "@types/eslint-visitor-keys" "^1.0.0" 132 | "@typescript-eslint/experimental-utils" "3.9.1" 133 | "@typescript-eslint/types" "3.9.1" 134 | "@typescript-eslint/typescript-estree" "3.9.1" 135 | eslint-visitor-keys "^1.1.0" 136 | 137 | "@typescript-eslint/types@3.9.1": 138 | version "3.9.1" 139 | resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.9.1.tgz#b2a6eaac843cf2f2777b3f2464fb1fbce5111416" 140 | integrity sha512-15JcTlNQE1BsYy5NBhctnEhEoctjXOjOK+Q+rk8ugC+WXU9rAcS2BYhoh6X4rOaXJEpIYDl+p7ix+A5U0BqPTw== 141 | 142 | "@typescript-eslint/typescript-estree@3.9.1": 143 | version "3.9.1" 144 | resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.9.1.tgz#fd81cada74bc8a7f3a2345b00897acb087935779" 145 | integrity sha512-IqM0gfGxOmIKPhiHW/iyAEXwSVqMmR2wJ9uXHNdFpqVvPaQ3dWg302vW127sBpAiqM9SfHhyS40NKLsoMpN2KA== 146 | dependencies: 147 | "@typescript-eslint/types" "3.9.1" 148 | "@typescript-eslint/visitor-keys" "3.9.1" 149 | debug "^4.1.1" 150 | glob "^7.1.6" 151 | is-glob "^4.0.1" 152 | lodash "^4.17.15" 153 | semver "^7.3.2" 154 | tsutils "^3.17.1" 155 | 156 | "@typescript-eslint/visitor-keys@3.9.1": 157 | version "3.9.1" 158 | resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.9.1.tgz#92af3747cdb71509199a8f7a4f00b41d636551d1" 159 | integrity sha512-zxdtUjeoSh+prCpogswMwVUJfEFmCOjdzK9rpNjNBfm6EyPt99x3RrJoBOGZO23FCt0WPKUCOL5mb/9D5LjdwQ== 160 | dependencies: 161 | eslint-visitor-keys "^1.1.0" 162 | 163 | acorn-jsx@^5.2.0: 164 | version "5.2.0" 165 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" 166 | integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== 167 | 168 | acorn@^7.3.1: 169 | version "7.4.0" 170 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" 171 | integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== 172 | 173 | aggregate-error@^3.0.0: 174 | version "3.0.1" 175 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" 176 | integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== 177 | dependencies: 178 | clean-stack "^2.0.0" 179 | indent-string "^4.0.0" 180 | 181 | ajv@^6.10.0, ajv@^6.10.2: 182 | version "6.12.4" 183 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" 184 | integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== 185 | dependencies: 186 | fast-deep-equal "^3.1.1" 187 | fast-json-stable-stringify "^2.0.0" 188 | json-schema-traverse "^0.4.1" 189 | uri-js "^4.2.2" 190 | 191 | ansi-colors@4.1.1, ansi-colors@^4.1.1: 192 | version "4.1.1" 193 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 194 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 195 | 196 | ansi-escapes@^4.3.0: 197 | version "4.3.1" 198 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" 199 | integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== 200 | dependencies: 201 | type-fest "^0.11.0" 202 | 203 | ansi-regex@^3.0.0: 204 | version "3.0.0" 205 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 206 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= 207 | 208 | ansi-regex@^4.1.0: 209 | version "4.1.0" 210 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 211 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 212 | 213 | ansi-regex@^5.0.0: 214 | version "5.0.0" 215 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 216 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 217 | 218 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 219 | version "3.2.1" 220 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 221 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 222 | dependencies: 223 | color-convert "^1.9.0" 224 | 225 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 226 | version "4.2.1" 227 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" 228 | integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== 229 | dependencies: 230 | "@types/color-name" "^1.1.1" 231 | color-convert "^2.0.1" 232 | 233 | anymatch@~3.1.1: 234 | version "3.1.1" 235 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 236 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 237 | dependencies: 238 | normalize-path "^3.0.0" 239 | picomatch "^2.0.4" 240 | 241 | arg@^4.1.0: 242 | version "4.1.3" 243 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 244 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 245 | 246 | argparse@^1.0.7: 247 | version "1.0.10" 248 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 249 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 250 | dependencies: 251 | sprintf-js "~1.0.2" 252 | 253 | array.prototype.map@^1.0.1: 254 | version "1.0.2" 255 | resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" 256 | integrity sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw== 257 | dependencies: 258 | define-properties "^1.1.3" 259 | es-abstract "^1.17.0-next.1" 260 | es-array-method-boxes-properly "^1.0.0" 261 | is-string "^1.0.4" 262 | 263 | astral-regex@^1.0.0: 264 | version "1.0.0" 265 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 266 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 267 | 268 | astral-regex@^2.0.0: 269 | version "2.0.0" 270 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 271 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 272 | 273 | balanced-match@^1.0.0: 274 | version "1.0.0" 275 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 276 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 277 | 278 | binary-extensions@^2.0.0: 279 | version "2.1.0" 280 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" 281 | integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== 282 | 283 | brace-expansion@^1.1.7: 284 | version "1.1.11" 285 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 286 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 287 | dependencies: 288 | balanced-match "^1.0.0" 289 | concat-map "0.0.1" 290 | 291 | braces@^3.0.1, braces@~3.0.2: 292 | version "3.0.2" 293 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 294 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 295 | dependencies: 296 | fill-range "^7.0.1" 297 | 298 | browser-stdout@1.3.1: 299 | version "1.3.1" 300 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 301 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 302 | 303 | buffer-from@^1.0.0: 304 | version "1.1.1" 305 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 306 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 307 | 308 | callsites@^3.0.0: 309 | version "3.1.0" 310 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 311 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 312 | 313 | camelcase@^5.0.0, camelcase@^5.3.1: 314 | version "5.3.1" 315 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 316 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 317 | 318 | chalk@^2.0.0, chalk@^2.4.2: 319 | version "2.4.2" 320 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 321 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 322 | dependencies: 323 | ansi-styles "^3.2.1" 324 | escape-string-regexp "^1.0.5" 325 | supports-color "^5.3.0" 326 | 327 | chalk@^4.0.0, chalk@^4.1.0: 328 | version "4.1.0" 329 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 330 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 331 | dependencies: 332 | ansi-styles "^4.1.0" 333 | supports-color "^7.1.0" 334 | 335 | chokidar@3.3.1: 336 | version "3.3.1" 337 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" 338 | integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== 339 | dependencies: 340 | anymatch "~3.1.1" 341 | braces "~3.0.2" 342 | glob-parent "~5.1.0" 343 | is-binary-path "~2.1.0" 344 | is-glob "~4.0.1" 345 | normalize-path "~3.0.0" 346 | readdirp "~3.3.0" 347 | optionalDependencies: 348 | fsevents "~2.1.2" 349 | 350 | ci-info@^2.0.0: 351 | version "2.0.0" 352 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" 353 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== 354 | 355 | clean-stack@^2.0.0: 356 | version "2.2.0" 357 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" 358 | integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== 359 | 360 | cli-cursor@^3.1.0: 361 | version "3.1.0" 362 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 363 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 364 | dependencies: 365 | restore-cursor "^3.1.0" 366 | 367 | cli-truncate@2.1.0, cli-truncate@^2.1.0: 368 | version "2.1.0" 369 | resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" 370 | integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== 371 | dependencies: 372 | slice-ansi "^3.0.0" 373 | string-width "^4.2.0" 374 | 375 | cliui@^5.0.0: 376 | version "5.0.0" 377 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 378 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 379 | dependencies: 380 | string-width "^3.1.0" 381 | strip-ansi "^5.2.0" 382 | wrap-ansi "^5.1.0" 383 | 384 | color-convert@^1.9.0: 385 | version "1.9.3" 386 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 387 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 388 | dependencies: 389 | color-name "1.1.3" 390 | 391 | color-convert@^2.0.1: 392 | version "2.0.1" 393 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 394 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 395 | dependencies: 396 | color-name "~1.1.4" 397 | 398 | color-name@1.1.3: 399 | version "1.1.3" 400 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 401 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 402 | 403 | color-name@~1.1.4: 404 | version "1.1.4" 405 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 406 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 407 | 408 | commander@^5.1.0: 409 | version "5.1.0" 410 | resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" 411 | integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== 412 | 413 | compare-versions@^3.6.0: 414 | version "3.6.0" 415 | resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" 416 | integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== 417 | 418 | concat-map@0.0.1: 419 | version "0.0.1" 420 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 421 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 422 | 423 | cosmiconfig@^6.0.0: 424 | version "6.0.0" 425 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" 426 | integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== 427 | dependencies: 428 | "@types/parse-json" "^4.0.0" 429 | import-fresh "^3.1.0" 430 | parse-json "^5.0.0" 431 | path-type "^4.0.0" 432 | yaml "^1.7.2" 433 | 434 | cross-spawn@^7.0.0, cross-spawn@^7.0.2: 435 | version "7.0.3" 436 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 437 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 438 | dependencies: 439 | path-key "^3.1.0" 440 | shebang-command "^2.0.0" 441 | which "^2.0.1" 442 | 443 | debug@3.2.6: 444 | version "3.2.6" 445 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 446 | integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 447 | dependencies: 448 | ms "^2.1.1" 449 | 450 | debug@^4.0.1, debug@^4.1.1: 451 | version "4.1.1" 452 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 453 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 454 | dependencies: 455 | ms "^2.1.1" 456 | 457 | decamelize@^1.2.0: 458 | version "1.2.0" 459 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 460 | integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= 461 | 462 | dedent@^0.7.0: 463 | version "0.7.0" 464 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 465 | integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= 466 | 467 | deep-is@^0.1.3: 468 | version "0.1.3" 469 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 470 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= 471 | 472 | define-properties@^1.1.2, define-properties@^1.1.3: 473 | version "1.1.3" 474 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" 475 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== 476 | dependencies: 477 | object-keys "^1.0.12" 478 | 479 | diff-sequences@^26.3.0: 480 | version "26.3.0" 481 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.3.0.tgz#62a59b1b29ab7fd27cef2a33ae52abe73042d0a2" 482 | integrity sha512-5j5vdRcw3CNctePNYN0Wy2e/JbWT6cAYnXv5OuqPhDpyCGc0uLu2TK0zOCJWNB9kOIfYMSpIulRaDgIi4HJ6Ig== 483 | 484 | diff@4.0.2, diff@^4.0.1: 485 | version "4.0.2" 486 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 487 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 488 | 489 | doctrine@^3.0.0: 490 | version "3.0.0" 491 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 492 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 493 | dependencies: 494 | esutils "^2.0.2" 495 | 496 | emoji-regex@^7.0.1: 497 | version "7.0.3" 498 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 499 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 500 | 501 | emoji-regex@^8.0.0: 502 | version "8.0.0" 503 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 504 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 505 | 506 | end-of-stream@^1.1.0: 507 | version "1.4.4" 508 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 509 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 510 | dependencies: 511 | once "^1.4.0" 512 | 513 | enquirer@^2.3.5: 514 | version "2.3.6" 515 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 516 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 517 | dependencies: 518 | ansi-colors "^4.1.1" 519 | 520 | error-ex@^1.3.1: 521 | version "1.3.2" 522 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 523 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 524 | dependencies: 525 | is-arrayish "^0.2.1" 526 | 527 | es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5: 528 | version "1.17.6" 529 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" 530 | integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== 531 | dependencies: 532 | es-to-primitive "^1.2.1" 533 | function-bind "^1.1.1" 534 | has "^1.0.3" 535 | has-symbols "^1.0.1" 536 | is-callable "^1.2.0" 537 | is-regex "^1.1.0" 538 | object-inspect "^1.7.0" 539 | object-keys "^1.1.1" 540 | object.assign "^4.1.0" 541 | string.prototype.trimend "^1.0.1" 542 | string.prototype.trimstart "^1.0.1" 543 | 544 | es-array-method-boxes-properly@^1.0.0: 545 | version "1.0.0" 546 | resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" 547 | integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== 548 | 549 | es-get-iterator@^1.0.2: 550 | version "1.1.0" 551 | resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" 552 | integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== 553 | dependencies: 554 | es-abstract "^1.17.4" 555 | has-symbols "^1.0.1" 556 | is-arguments "^1.0.4" 557 | is-map "^2.0.1" 558 | is-set "^2.0.1" 559 | is-string "^1.0.5" 560 | isarray "^2.0.5" 561 | 562 | es-to-primitive@^1.2.1: 563 | version "1.2.1" 564 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" 565 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== 566 | dependencies: 567 | is-callable "^1.1.4" 568 | is-date-object "^1.0.1" 569 | is-symbol "^1.0.2" 570 | 571 | escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: 572 | version "1.0.5" 573 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 574 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 575 | 576 | escape-string-regexp@^2.0.0: 577 | version "2.0.0" 578 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 579 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 580 | 581 | eslint-scope@^5.0.0, eslint-scope@^5.1.0: 582 | version "5.1.0" 583 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" 584 | integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== 585 | dependencies: 586 | esrecurse "^4.1.0" 587 | estraverse "^4.1.1" 588 | 589 | eslint-utils@^2.0.0, eslint-utils@^2.1.0: 590 | version "2.1.0" 591 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 592 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 593 | dependencies: 594 | eslint-visitor-keys "^1.1.0" 595 | 596 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 597 | version "1.3.0" 598 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 599 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 600 | 601 | eslint@^7.7.0: 602 | version "7.7.0" 603 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.7.0.tgz#18beba51411927c4b64da0a8ceadefe4030d6073" 604 | integrity sha512-1KUxLzos0ZVsyL81PnRN335nDtQ8/vZUD6uMtWbF+5zDtjKcsklIi78XoE0MVL93QvWTu+E5y44VyyCsOMBrIg== 605 | dependencies: 606 | "@babel/code-frame" "^7.0.0" 607 | ajv "^6.10.0" 608 | chalk "^4.0.0" 609 | cross-spawn "^7.0.2" 610 | debug "^4.0.1" 611 | doctrine "^3.0.0" 612 | enquirer "^2.3.5" 613 | eslint-scope "^5.1.0" 614 | eslint-utils "^2.1.0" 615 | eslint-visitor-keys "^1.3.0" 616 | espree "^7.2.0" 617 | esquery "^1.2.0" 618 | esutils "^2.0.2" 619 | file-entry-cache "^5.0.1" 620 | functional-red-black-tree "^1.0.1" 621 | glob-parent "^5.0.0" 622 | globals "^12.1.0" 623 | ignore "^4.0.6" 624 | import-fresh "^3.0.0" 625 | imurmurhash "^0.1.4" 626 | is-glob "^4.0.0" 627 | js-yaml "^3.13.1" 628 | json-stable-stringify-without-jsonify "^1.0.1" 629 | levn "^0.4.1" 630 | lodash "^4.17.19" 631 | minimatch "^3.0.4" 632 | natural-compare "^1.4.0" 633 | optionator "^0.9.1" 634 | progress "^2.0.0" 635 | regexpp "^3.1.0" 636 | semver "^7.2.1" 637 | strip-ansi "^6.0.0" 638 | strip-json-comments "^3.1.0" 639 | table "^5.2.3" 640 | text-table "^0.2.0" 641 | v8-compile-cache "^2.0.3" 642 | 643 | espree@^7.2.0: 644 | version "7.2.0" 645 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.2.0.tgz#1c263d5b513dbad0ac30c4991b93ac354e948d69" 646 | integrity sha512-H+cQ3+3JYRMEIOl87e7QdHX70ocly5iW4+dttuR8iYSPr/hXKFb+7dBsZ7+u1adC4VrnPlTkv0+OwuPnDop19g== 647 | dependencies: 648 | acorn "^7.3.1" 649 | acorn-jsx "^5.2.0" 650 | eslint-visitor-keys "^1.3.0" 651 | 652 | esprima@^4.0.0: 653 | version "4.0.1" 654 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 655 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 656 | 657 | esquery@^1.2.0: 658 | version "1.3.1" 659 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" 660 | integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== 661 | dependencies: 662 | estraverse "^5.1.0" 663 | 664 | esrecurse@^4.1.0: 665 | version "4.2.1" 666 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" 667 | integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== 668 | dependencies: 669 | estraverse "^4.1.0" 670 | 671 | estraverse@^4.1.0, estraverse@^4.1.1: 672 | version "4.3.0" 673 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 674 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 675 | 676 | estraverse@^5.1.0: 677 | version "5.2.0" 678 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 679 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 680 | 681 | esutils@^2.0.2: 682 | version "2.0.3" 683 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 684 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 685 | 686 | execa@^4.0.1: 687 | version "4.0.3" 688 | resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.3.tgz#0a34dabbad6d66100bd6f2c576c8669403f317f2" 689 | integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== 690 | dependencies: 691 | cross-spawn "^7.0.0" 692 | get-stream "^5.0.0" 693 | human-signals "^1.1.1" 694 | is-stream "^2.0.0" 695 | merge-stream "^2.0.0" 696 | npm-run-path "^4.0.0" 697 | onetime "^5.1.0" 698 | signal-exit "^3.0.2" 699 | strip-final-newline "^2.0.0" 700 | 701 | expect@^26.4.1: 702 | version "26.4.1" 703 | resolved "https://registry.yarnpkg.com/expect/-/expect-26.4.1.tgz#6ed3dc218e6a9ffce16c15edc518f44bad9a6731" 704 | integrity sha512-PnsyF/VmPRH/HAWELjrIAgQ5h+4JLTiomA1A2djx+jXrCQzQ/4egZYBOEx9hShoX+mQLS4enYk6Ouxk8b4kcEw== 705 | dependencies: 706 | "@jest/types" "^26.3.0" 707 | ansi-styles "^4.0.0" 708 | jest-get-type "^26.3.0" 709 | jest-matcher-utils "^26.4.1" 710 | jest-message-util "^26.3.0" 711 | jest-regex-util "^26.0.0" 712 | 713 | fast-deep-equal@^3.1.1: 714 | version "3.1.3" 715 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 716 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 717 | 718 | fast-json-stable-stringify@^2.0.0: 719 | version "2.1.0" 720 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 721 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 722 | 723 | fast-levenshtein@^2.0.6: 724 | version "2.0.6" 725 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 726 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= 727 | 728 | figures@^3.2.0: 729 | version "3.2.0" 730 | resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" 731 | integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== 732 | dependencies: 733 | escape-string-regexp "^1.0.5" 734 | 735 | file-entry-cache@^5.0.1: 736 | version "5.0.1" 737 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 738 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 739 | dependencies: 740 | flat-cache "^2.0.1" 741 | 742 | fill-range@^7.0.1: 743 | version "7.0.1" 744 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 745 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 746 | dependencies: 747 | to-regex-range "^5.0.1" 748 | 749 | find-up@4.1.0, find-up@^4.0.0: 750 | version "4.1.0" 751 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 752 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 753 | dependencies: 754 | locate-path "^5.0.0" 755 | path-exists "^4.0.0" 756 | 757 | find-up@^3.0.0: 758 | version "3.0.0" 759 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 760 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 761 | dependencies: 762 | locate-path "^3.0.0" 763 | 764 | find-versions@^3.2.0: 765 | version "3.2.0" 766 | resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" 767 | integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== 768 | dependencies: 769 | semver-regex "^2.0.0" 770 | 771 | flat-cache@^2.0.1: 772 | version "2.0.1" 773 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 774 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 775 | dependencies: 776 | flatted "^2.0.0" 777 | rimraf "2.6.3" 778 | write "1.0.3" 779 | 780 | flat@^4.1.0: 781 | version "4.1.0" 782 | resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" 783 | integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== 784 | dependencies: 785 | is-buffer "~2.0.3" 786 | 787 | flatted@^2.0.0: 788 | version "2.0.2" 789 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" 790 | integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== 791 | 792 | fs.realpath@^1.0.0: 793 | version "1.0.0" 794 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 795 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 796 | 797 | fsevents@~2.1.2: 798 | version "2.1.3" 799 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" 800 | integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== 801 | 802 | function-bind@^1.1.1: 803 | version "1.1.1" 804 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 805 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 806 | 807 | functional-red-black-tree@^1.0.1: 808 | version "1.0.1" 809 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 810 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= 811 | 812 | get-caller-file@^2.0.1: 813 | version "2.0.5" 814 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 815 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 816 | 817 | get-own-enumerable-property-symbols@^3.0.0: 818 | version "3.0.2" 819 | resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" 820 | integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== 821 | 822 | get-stream@^5.0.0: 823 | version "5.2.0" 824 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 825 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 826 | dependencies: 827 | pump "^3.0.0" 828 | 829 | glob-parent@^5.0.0, glob-parent@~5.1.0: 830 | version "5.1.1" 831 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" 832 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== 833 | dependencies: 834 | is-glob "^4.0.1" 835 | 836 | glob@7.1.6, glob@^7.1.3, glob@^7.1.6: 837 | version "7.1.6" 838 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 839 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 840 | dependencies: 841 | fs.realpath "^1.0.0" 842 | inflight "^1.0.4" 843 | inherits "2" 844 | minimatch "^3.0.4" 845 | once "^1.3.0" 846 | path-is-absolute "^1.0.0" 847 | 848 | globals@^12.1.0: 849 | version "12.4.0" 850 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" 851 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== 852 | dependencies: 853 | type-fest "^0.8.1" 854 | 855 | graceful-fs@^4.2.4: 856 | version "4.2.4" 857 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" 858 | integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== 859 | 860 | growl@1.10.5: 861 | version "1.10.5" 862 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" 863 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 864 | 865 | has-flag@^3.0.0: 866 | version "3.0.0" 867 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 868 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 869 | 870 | has-flag@^4.0.0: 871 | version "4.0.0" 872 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 873 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 874 | 875 | has-symbols@^1.0.0, has-symbols@^1.0.1: 876 | version "1.0.1" 877 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" 878 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== 879 | 880 | has@^1.0.3: 881 | version "1.0.3" 882 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 883 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 884 | dependencies: 885 | function-bind "^1.1.1" 886 | 887 | he@1.2.0: 888 | version "1.2.0" 889 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 890 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 891 | 892 | human-signals@^1.1.1: 893 | version "1.1.1" 894 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" 895 | integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== 896 | 897 | husky@^4.2.5: 898 | version "4.2.5" 899 | resolved "https://registry.yarnpkg.com/husky/-/husky-4.2.5.tgz#2b4f7622673a71579f901d9885ed448394b5fa36" 900 | integrity sha512-SYZ95AjKcX7goYVZtVZF2i6XiZcHknw50iXvY7b0MiGoj5RwdgRQNEHdb+gPDPCXKlzwrybjFjkL6FOj8uRhZQ== 901 | dependencies: 902 | chalk "^4.0.0" 903 | ci-info "^2.0.0" 904 | compare-versions "^3.6.0" 905 | cosmiconfig "^6.0.0" 906 | find-versions "^3.2.0" 907 | opencollective-postinstall "^2.0.2" 908 | pkg-dir "^4.2.0" 909 | please-upgrade-node "^3.2.0" 910 | slash "^3.0.0" 911 | which-pm-runs "^1.0.0" 912 | 913 | ignore@^4.0.6: 914 | version "4.0.6" 915 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 916 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 917 | 918 | import-fresh@^3.0.0, import-fresh@^3.1.0: 919 | version "3.2.1" 920 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" 921 | integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== 922 | dependencies: 923 | parent-module "^1.0.0" 924 | resolve-from "^4.0.0" 925 | 926 | imurmurhash@^0.1.4: 927 | version "0.1.4" 928 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 929 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= 930 | 931 | indent-string@^4.0.0: 932 | version "4.0.0" 933 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" 934 | integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== 935 | 936 | inflight@^1.0.4: 937 | version "1.0.6" 938 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 939 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 940 | dependencies: 941 | once "^1.3.0" 942 | wrappy "1" 943 | 944 | inherits@2: 945 | version "2.0.4" 946 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 947 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 948 | 949 | is-arguments@^1.0.4: 950 | version "1.0.4" 951 | resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" 952 | integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== 953 | 954 | is-arrayish@^0.2.1: 955 | version "0.2.1" 956 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 957 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 958 | 959 | is-binary-path@~2.1.0: 960 | version "2.1.0" 961 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 962 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 963 | dependencies: 964 | binary-extensions "^2.0.0" 965 | 966 | is-buffer@~2.0.3: 967 | version "2.0.4" 968 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" 969 | integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== 970 | 971 | is-callable@^1.1.4, is-callable@^1.2.0: 972 | version "1.2.0" 973 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" 974 | integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== 975 | 976 | is-date-object@^1.0.1: 977 | version "1.0.2" 978 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" 979 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== 980 | 981 | is-extglob@^2.1.1: 982 | version "2.1.1" 983 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 984 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 985 | 986 | is-fullwidth-code-point@^2.0.0: 987 | version "2.0.0" 988 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 989 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= 990 | 991 | is-fullwidth-code-point@^3.0.0: 992 | version "3.0.0" 993 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 994 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 995 | 996 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: 997 | version "4.0.1" 998 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 999 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1000 | dependencies: 1001 | is-extglob "^2.1.1" 1002 | 1003 | is-map@^2.0.1: 1004 | version "2.0.1" 1005 | resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" 1006 | integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== 1007 | 1008 | is-number@^7.0.0: 1009 | version "7.0.0" 1010 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1011 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1012 | 1013 | is-obj@^1.0.1: 1014 | version "1.0.1" 1015 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 1016 | integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 1017 | 1018 | is-plain-obj@^1.1.0: 1019 | version "1.1.0" 1020 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 1021 | integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= 1022 | 1023 | is-regex@^1.1.0: 1024 | version "1.1.1" 1025 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" 1026 | integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== 1027 | dependencies: 1028 | has-symbols "^1.0.1" 1029 | 1030 | is-regexp@^1.0.0: 1031 | version "1.0.0" 1032 | resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" 1033 | integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= 1034 | 1035 | is-set@^2.0.1: 1036 | version "2.0.1" 1037 | resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" 1038 | integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== 1039 | 1040 | is-stream@^2.0.0: 1041 | version "2.0.0" 1042 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 1043 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 1044 | 1045 | is-string@^1.0.4, is-string@^1.0.5: 1046 | version "1.0.5" 1047 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" 1048 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== 1049 | 1050 | is-symbol@^1.0.2: 1051 | version "1.0.3" 1052 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" 1053 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== 1054 | dependencies: 1055 | has-symbols "^1.0.1" 1056 | 1057 | isarray@^2.0.5: 1058 | version "2.0.5" 1059 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" 1060 | integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== 1061 | 1062 | isexe@^2.0.0: 1063 | version "2.0.0" 1064 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1065 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1066 | 1067 | iterate-iterator@^1.0.1: 1068 | version "1.0.1" 1069 | resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.1.tgz#1693a768c1ddd79c969051459453f082fe82e9f6" 1070 | integrity sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw== 1071 | 1072 | iterate-value@^1.0.0: 1073 | version "1.0.2" 1074 | resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" 1075 | integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== 1076 | dependencies: 1077 | es-get-iterator "^1.0.2" 1078 | iterate-iterator "^1.0.1" 1079 | 1080 | jest-diff@^26.4.0: 1081 | version "26.4.0" 1082 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.4.0.tgz#d073a0a11952b5bd9f1ff39bb9ad24304a0c55f7" 1083 | integrity sha512-wwC38HlOW+iTq6j5tkj/ZamHn6/nrdcEOc/fKaVILNtN2NLWGdkfRaHWwfNYr5ehaLvuoG2LfCZIcWByVj0gjg== 1084 | dependencies: 1085 | chalk "^4.0.0" 1086 | diff-sequences "^26.3.0" 1087 | jest-get-type "^26.3.0" 1088 | pretty-format "^26.4.0" 1089 | 1090 | jest-get-type@^26.3.0: 1091 | version "26.3.0" 1092 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" 1093 | integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== 1094 | 1095 | jest-matcher-utils@^26.4.1: 1096 | version "26.4.1" 1097 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.4.1.tgz#f9f2d1d37d301e328eb22e9df09e7343d6cc1b25" 1098 | integrity sha512-nmHWaOz54R/w6zJju5tuW0bw6+m38Rb1jnDKehKM/bOngDDL0UwtN634cRxpFoUNVRUrX8Wa0Z34xq/f8iuP5A== 1099 | dependencies: 1100 | chalk "^4.0.0" 1101 | jest-diff "^26.4.0" 1102 | jest-get-type "^26.3.0" 1103 | pretty-format "^26.4.0" 1104 | 1105 | jest-message-util@^26.3.0: 1106 | version "26.3.0" 1107 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.3.0.tgz#3bdb538af27bb417f2d4d16557606fd082d5841a" 1108 | integrity sha512-xIavRYqr4/otGOiLxLZGj3ieMmjcNE73Ui+LdSW/Y790j5acqCsAdDiLIbzHCZMpN07JOENRWX5DcU+OQ+TjTA== 1109 | dependencies: 1110 | "@babel/code-frame" "^7.0.0" 1111 | "@jest/types" "^26.3.0" 1112 | "@types/stack-utils" "^1.0.1" 1113 | chalk "^4.0.0" 1114 | graceful-fs "^4.2.4" 1115 | micromatch "^4.0.2" 1116 | slash "^3.0.0" 1117 | stack-utils "^2.0.2" 1118 | 1119 | jest-regex-util@^26.0.0: 1120 | version "26.0.0" 1121 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" 1122 | integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== 1123 | 1124 | js-tokens@^4.0.0: 1125 | version "4.0.0" 1126 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1127 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1128 | 1129 | js-yaml@3.13.1: 1130 | version "3.13.1" 1131 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1132 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 1133 | dependencies: 1134 | argparse "^1.0.7" 1135 | esprima "^4.0.0" 1136 | 1137 | js-yaml@^3.13.1: 1138 | version "3.14.0" 1139 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" 1140 | integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== 1141 | dependencies: 1142 | argparse "^1.0.7" 1143 | esprima "^4.0.0" 1144 | 1145 | json-parse-better-errors@^1.0.1: 1146 | version "1.0.2" 1147 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 1148 | integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== 1149 | 1150 | json-schema-traverse@^0.4.1: 1151 | version "0.4.1" 1152 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1153 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1154 | 1155 | json-stable-stringify-without-jsonify@^1.0.1: 1156 | version "1.0.1" 1157 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1158 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 1159 | 1160 | levn@^0.4.1: 1161 | version "0.4.1" 1162 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1163 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1164 | dependencies: 1165 | prelude-ls "^1.2.1" 1166 | type-check "~0.4.0" 1167 | 1168 | lines-and-columns@^1.1.6: 1169 | version "1.1.6" 1170 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 1171 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 1172 | 1173 | lint-staged@^10.2.11: 1174 | version "10.2.11" 1175 | resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.2.11.tgz#713c80877f2dc8b609b05bc59020234e766c9720" 1176 | integrity sha512-LRRrSogzbixYaZItE2APaS4l2eJMjjf5MbclRZpLJtcQJShcvUzKXsNeZgsLIZ0H0+fg2tL4B59fU9wHIHtFIA== 1177 | dependencies: 1178 | chalk "^4.0.0" 1179 | cli-truncate "2.1.0" 1180 | commander "^5.1.0" 1181 | cosmiconfig "^6.0.0" 1182 | debug "^4.1.1" 1183 | dedent "^0.7.0" 1184 | enquirer "^2.3.5" 1185 | execa "^4.0.1" 1186 | listr2 "^2.1.0" 1187 | log-symbols "^4.0.0" 1188 | micromatch "^4.0.2" 1189 | normalize-path "^3.0.0" 1190 | please-upgrade-node "^3.2.0" 1191 | string-argv "0.3.1" 1192 | stringify-object "^3.3.0" 1193 | 1194 | listr2@^2.1.0: 1195 | version "2.6.0" 1196 | resolved "https://registry.yarnpkg.com/listr2/-/listr2-2.6.0.tgz#788a3d202978a1b8582062952cbc49272c8e206a" 1197 | integrity sha512-nwmqTJYQQ+AsKb4fCXH/6/UmLCEDL1jkRAdSn9M6cEUzoRGrs33YD/3N86gAZQnGZ6hxV18XSdlBcJ1GTmetJA== 1198 | dependencies: 1199 | chalk "^4.1.0" 1200 | cli-truncate "^2.1.0" 1201 | figures "^3.2.0" 1202 | indent-string "^4.0.0" 1203 | log-update "^4.0.0" 1204 | p-map "^4.0.0" 1205 | rxjs "^6.6.2" 1206 | through "^2.3.8" 1207 | 1208 | locate-path@^3.0.0: 1209 | version "3.0.0" 1210 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 1211 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 1212 | dependencies: 1213 | p-locate "^3.0.0" 1214 | path-exists "^3.0.0" 1215 | 1216 | locate-path@^5.0.0: 1217 | version "5.0.0" 1218 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1219 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1220 | dependencies: 1221 | p-locate "^4.1.0" 1222 | 1223 | lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19: 1224 | version "4.17.20" 1225 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" 1226 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== 1227 | 1228 | log-symbols@3.0.0: 1229 | version "3.0.0" 1230 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" 1231 | integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== 1232 | dependencies: 1233 | chalk "^2.4.2" 1234 | 1235 | log-symbols@^4.0.0: 1236 | version "4.0.0" 1237 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" 1238 | integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== 1239 | dependencies: 1240 | chalk "^4.0.0" 1241 | 1242 | log-update@^4.0.0: 1243 | version "4.0.0" 1244 | resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" 1245 | integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== 1246 | dependencies: 1247 | ansi-escapes "^4.3.0" 1248 | cli-cursor "^3.1.0" 1249 | slice-ansi "^4.0.0" 1250 | wrap-ansi "^6.2.0" 1251 | 1252 | make-error@^1.1.1: 1253 | version "1.3.6" 1254 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 1255 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 1256 | 1257 | merge-stream@^2.0.0: 1258 | version "2.0.0" 1259 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1260 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1261 | 1262 | micromatch@^4.0.2: 1263 | version "4.0.2" 1264 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" 1265 | integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== 1266 | dependencies: 1267 | braces "^3.0.1" 1268 | picomatch "^2.0.5" 1269 | 1270 | mimic-fn@^2.1.0: 1271 | version "2.1.0" 1272 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1273 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1274 | 1275 | minimatch@3.0.4, minimatch@^3.0.4: 1276 | version "3.0.4" 1277 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1278 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1279 | dependencies: 1280 | brace-expansion "^1.1.7" 1281 | 1282 | minimist@^1.2.5: 1283 | version "1.2.5" 1284 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1285 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1286 | 1287 | mkdirp@^0.5.1: 1288 | version "0.5.5" 1289 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" 1290 | integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== 1291 | dependencies: 1292 | minimist "^1.2.5" 1293 | 1294 | mocha@^8.1.1: 1295 | version "8.1.1" 1296 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.1.tgz#1de1ba4e9a2c955d96b84e469d7540848223592d" 1297 | integrity sha512-p7FuGlYH8t7gaiodlFreseLxEmxTgvyG9RgPHODFPySNhwUehu8NIb0vdSt3WFckSneswZ0Un5typYcWElk7HQ== 1298 | dependencies: 1299 | ansi-colors "4.1.1" 1300 | browser-stdout "1.3.1" 1301 | chokidar "3.3.1" 1302 | debug "3.2.6" 1303 | diff "4.0.2" 1304 | escape-string-regexp "1.0.5" 1305 | find-up "4.1.0" 1306 | glob "7.1.6" 1307 | growl "1.10.5" 1308 | he "1.2.0" 1309 | js-yaml "3.13.1" 1310 | log-symbols "3.0.0" 1311 | minimatch "3.0.4" 1312 | ms "2.1.2" 1313 | object.assign "4.1.0" 1314 | promise.allsettled "1.0.2" 1315 | serialize-javascript "4.0.0" 1316 | strip-json-comments "3.0.1" 1317 | supports-color "7.1.0" 1318 | which "2.0.2" 1319 | wide-align "1.1.3" 1320 | workerpool "6.0.0" 1321 | yargs "13.3.2" 1322 | yargs-parser "13.1.2" 1323 | yargs-unparser "1.6.1" 1324 | 1325 | ms@2.1.2, ms@^2.1.1: 1326 | version "2.1.2" 1327 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1328 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1329 | 1330 | natural-compare@^1.4.0: 1331 | version "1.4.0" 1332 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1333 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= 1334 | 1335 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1336 | version "3.0.0" 1337 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1338 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1339 | 1340 | npm-run-path@^4.0.0: 1341 | version "4.0.1" 1342 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 1343 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 1344 | dependencies: 1345 | path-key "^3.0.0" 1346 | 1347 | object-inspect@^1.7.0: 1348 | version "1.8.0" 1349 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" 1350 | integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== 1351 | 1352 | object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: 1353 | version "1.1.1" 1354 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 1355 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 1356 | 1357 | object.assign@4.1.0, object.assign@^4.1.0: 1358 | version "4.1.0" 1359 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" 1360 | integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== 1361 | dependencies: 1362 | define-properties "^1.1.2" 1363 | function-bind "^1.1.1" 1364 | has-symbols "^1.0.0" 1365 | object-keys "^1.0.11" 1366 | 1367 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1368 | version "1.4.0" 1369 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1370 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1371 | dependencies: 1372 | wrappy "1" 1373 | 1374 | onetime@^5.1.0: 1375 | version "5.1.2" 1376 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 1377 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1378 | dependencies: 1379 | mimic-fn "^2.1.0" 1380 | 1381 | opencollective-postinstall@^2.0.2: 1382 | version "2.0.3" 1383 | resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" 1384 | integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== 1385 | 1386 | optionator@^0.9.1: 1387 | version "0.9.1" 1388 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1389 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1390 | dependencies: 1391 | deep-is "^0.1.3" 1392 | fast-levenshtein "^2.0.6" 1393 | levn "^0.4.1" 1394 | prelude-ls "^1.2.1" 1395 | type-check "^0.4.0" 1396 | word-wrap "^1.2.3" 1397 | 1398 | p-limit@^2.0.0, p-limit@^2.2.0: 1399 | version "2.3.0" 1400 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1401 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1402 | dependencies: 1403 | p-try "^2.0.0" 1404 | 1405 | p-locate@^3.0.0: 1406 | version "3.0.0" 1407 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 1408 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 1409 | dependencies: 1410 | p-limit "^2.0.0" 1411 | 1412 | p-locate@^4.1.0: 1413 | version "4.1.0" 1414 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1415 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1416 | dependencies: 1417 | p-limit "^2.2.0" 1418 | 1419 | p-map@^4.0.0: 1420 | version "4.0.0" 1421 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" 1422 | integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== 1423 | dependencies: 1424 | aggregate-error "^3.0.0" 1425 | 1426 | p-try@^2.0.0: 1427 | version "2.2.0" 1428 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1429 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1430 | 1431 | parent-module@^1.0.0: 1432 | version "1.0.1" 1433 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1434 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1435 | dependencies: 1436 | callsites "^3.0.0" 1437 | 1438 | parse-json@^5.0.0: 1439 | version "5.0.1" 1440 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.1.tgz#7cfe35c1ccd641bce3981467e6c2ece61b3b3878" 1441 | integrity sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ== 1442 | dependencies: 1443 | "@babel/code-frame" "^7.0.0" 1444 | error-ex "^1.3.1" 1445 | json-parse-better-errors "^1.0.1" 1446 | lines-and-columns "^1.1.6" 1447 | 1448 | path-exists@^3.0.0: 1449 | version "3.0.0" 1450 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1451 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= 1452 | 1453 | path-exists@^4.0.0: 1454 | version "4.0.0" 1455 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1456 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1457 | 1458 | path-is-absolute@^1.0.0: 1459 | version "1.0.1" 1460 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1461 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1462 | 1463 | path-key@^3.0.0, path-key@^3.1.0: 1464 | version "3.1.1" 1465 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1466 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1467 | 1468 | path-type@^4.0.0: 1469 | version "4.0.0" 1470 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 1471 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 1472 | 1473 | picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7: 1474 | version "2.2.2" 1475 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 1476 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 1477 | 1478 | pkg-dir@^4.2.0: 1479 | version "4.2.0" 1480 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1481 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1482 | dependencies: 1483 | find-up "^4.0.0" 1484 | 1485 | please-upgrade-node@^3.2.0: 1486 | version "3.2.0" 1487 | resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" 1488 | integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== 1489 | dependencies: 1490 | semver-compare "^1.0.0" 1491 | 1492 | prelude-ls@^1.2.1: 1493 | version "1.2.1" 1494 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1495 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1496 | 1497 | prettier@^2.0.5: 1498 | version "2.0.5" 1499 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" 1500 | integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== 1501 | 1502 | pretty-format@^26.4.0: 1503 | version "26.4.0" 1504 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.4.0.tgz#c08073f531429e9e5024049446f42ecc9f933a3b" 1505 | integrity sha512-mEEwwpCseqrUtuMbrJG4b824877pM5xald3AkilJ47Po2YLr97/siejYQHqj2oDQBeJNbu+Q0qUuekJ8F0NAPg== 1506 | dependencies: 1507 | "@jest/types" "^26.3.0" 1508 | ansi-regex "^5.0.0" 1509 | ansi-styles "^4.0.0" 1510 | react-is "^16.12.0" 1511 | 1512 | progress@^2.0.0: 1513 | version "2.0.3" 1514 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1515 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1516 | 1517 | promise.allsettled@1.0.2: 1518 | version "1.0.2" 1519 | resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" 1520 | integrity sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg== 1521 | dependencies: 1522 | array.prototype.map "^1.0.1" 1523 | define-properties "^1.1.3" 1524 | es-abstract "^1.17.0-next.1" 1525 | function-bind "^1.1.1" 1526 | iterate-value "^1.0.0" 1527 | 1528 | pump@^3.0.0: 1529 | version "3.0.0" 1530 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 1531 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 1532 | dependencies: 1533 | end-of-stream "^1.1.0" 1534 | once "^1.3.1" 1535 | 1536 | punycode@^2.1.0: 1537 | version "2.1.1" 1538 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1539 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1540 | 1541 | randombytes@^2.1.0: 1542 | version "2.1.0" 1543 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1544 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1545 | dependencies: 1546 | safe-buffer "^5.1.0" 1547 | 1548 | react-is@^16.12.0: 1549 | version "16.13.1" 1550 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 1551 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== 1552 | 1553 | readdirp@~3.3.0: 1554 | version "3.3.0" 1555 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" 1556 | integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== 1557 | dependencies: 1558 | picomatch "^2.0.7" 1559 | 1560 | regexpp@^3.0.0, regexpp@^3.1.0: 1561 | version "3.1.0" 1562 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" 1563 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== 1564 | 1565 | require-directory@^2.1.1: 1566 | version "2.1.1" 1567 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1568 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 1569 | 1570 | require-main-filename@^2.0.0: 1571 | version "2.0.0" 1572 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 1573 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 1574 | 1575 | resolve-from@^4.0.0: 1576 | version "4.0.0" 1577 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1578 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1579 | 1580 | restore-cursor@^3.1.0: 1581 | version "3.1.0" 1582 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 1583 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 1584 | dependencies: 1585 | onetime "^5.1.0" 1586 | signal-exit "^3.0.2" 1587 | 1588 | rimraf@2.6.3: 1589 | version "2.6.3" 1590 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1591 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1592 | dependencies: 1593 | glob "^7.1.3" 1594 | 1595 | rimraf@^3.0.2: 1596 | version "3.0.2" 1597 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1598 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1599 | dependencies: 1600 | glob "^7.1.3" 1601 | 1602 | rxjs@^6.6.2: 1603 | version "6.6.2" 1604 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.2.tgz#8096a7ac03f2cc4fe5860ef6e572810d9e01c0d2" 1605 | integrity sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg== 1606 | dependencies: 1607 | tslib "^1.9.0" 1608 | 1609 | safe-buffer@^5.1.0: 1610 | version "5.2.1" 1611 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1612 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1613 | 1614 | semver-compare@^1.0.0: 1615 | version "1.0.0" 1616 | resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" 1617 | integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= 1618 | 1619 | semver-regex@^2.0.0: 1620 | version "2.0.0" 1621 | resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" 1622 | integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== 1623 | 1624 | semver@^7.2.1, semver@^7.3.2: 1625 | version "7.3.2" 1626 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" 1627 | integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 1628 | 1629 | serialize-javascript@4.0.0: 1630 | version "4.0.0" 1631 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" 1632 | integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== 1633 | dependencies: 1634 | randombytes "^2.1.0" 1635 | 1636 | set-blocking@^2.0.0: 1637 | version "2.0.0" 1638 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1639 | integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= 1640 | 1641 | shebang-command@^2.0.0: 1642 | version "2.0.0" 1643 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1644 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1645 | dependencies: 1646 | shebang-regex "^3.0.0" 1647 | 1648 | shebang-regex@^3.0.0: 1649 | version "3.0.0" 1650 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1651 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1652 | 1653 | signal-exit@^3.0.2: 1654 | version "3.0.3" 1655 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1656 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1657 | 1658 | slash@^3.0.0: 1659 | version "3.0.0" 1660 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 1661 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 1662 | 1663 | slice-ansi@^2.1.0: 1664 | version "2.1.0" 1665 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 1666 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 1667 | dependencies: 1668 | ansi-styles "^3.2.0" 1669 | astral-regex "^1.0.0" 1670 | is-fullwidth-code-point "^2.0.0" 1671 | 1672 | slice-ansi@^3.0.0: 1673 | version "3.0.0" 1674 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" 1675 | integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== 1676 | dependencies: 1677 | ansi-styles "^4.0.0" 1678 | astral-regex "^2.0.0" 1679 | is-fullwidth-code-point "^3.0.0" 1680 | 1681 | slice-ansi@^4.0.0: 1682 | version "4.0.0" 1683 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1684 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1685 | dependencies: 1686 | ansi-styles "^4.0.0" 1687 | astral-regex "^2.0.0" 1688 | is-fullwidth-code-point "^3.0.0" 1689 | 1690 | source-map-support@^0.5.17: 1691 | version "0.5.19" 1692 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 1693 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 1694 | dependencies: 1695 | buffer-from "^1.0.0" 1696 | source-map "^0.6.0" 1697 | 1698 | source-map@^0.6.0: 1699 | version "0.6.1" 1700 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1701 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1702 | 1703 | sprintf-js@~1.0.2: 1704 | version "1.0.3" 1705 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1706 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 1707 | 1708 | stack-utils@^2.0.2: 1709 | version "2.0.2" 1710 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" 1711 | integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== 1712 | dependencies: 1713 | escape-string-regexp "^2.0.0" 1714 | 1715 | string-argv@0.3.1: 1716 | version "0.3.1" 1717 | resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" 1718 | integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== 1719 | 1720 | "string-width@^1.0.2 || 2": 1721 | version "2.1.1" 1722 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1723 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1724 | dependencies: 1725 | is-fullwidth-code-point "^2.0.0" 1726 | strip-ansi "^4.0.0" 1727 | 1728 | string-width@^3.0.0, string-width@^3.1.0: 1729 | version "3.1.0" 1730 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1731 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1732 | dependencies: 1733 | emoji-regex "^7.0.1" 1734 | is-fullwidth-code-point "^2.0.0" 1735 | strip-ansi "^5.1.0" 1736 | 1737 | string-width@^4.1.0, string-width@^4.2.0: 1738 | version "4.2.0" 1739 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" 1740 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== 1741 | dependencies: 1742 | emoji-regex "^8.0.0" 1743 | is-fullwidth-code-point "^3.0.0" 1744 | strip-ansi "^6.0.0" 1745 | 1746 | string.prototype.trimend@^1.0.1: 1747 | version "1.0.1" 1748 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" 1749 | integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== 1750 | dependencies: 1751 | define-properties "^1.1.3" 1752 | es-abstract "^1.17.5" 1753 | 1754 | string.prototype.trimstart@^1.0.1: 1755 | version "1.0.1" 1756 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" 1757 | integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== 1758 | dependencies: 1759 | define-properties "^1.1.3" 1760 | es-abstract "^1.17.5" 1761 | 1762 | stringify-object@^3.3.0: 1763 | version "3.3.0" 1764 | resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" 1765 | integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== 1766 | dependencies: 1767 | get-own-enumerable-property-symbols "^3.0.0" 1768 | is-obj "^1.0.1" 1769 | is-regexp "^1.0.0" 1770 | 1771 | strip-ansi@^4.0.0: 1772 | version "4.0.0" 1773 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1774 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= 1775 | dependencies: 1776 | ansi-regex "^3.0.0" 1777 | 1778 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 1779 | version "5.2.0" 1780 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1781 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1782 | dependencies: 1783 | ansi-regex "^4.1.0" 1784 | 1785 | strip-ansi@^6.0.0: 1786 | version "6.0.0" 1787 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1788 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1789 | dependencies: 1790 | ansi-regex "^5.0.0" 1791 | 1792 | strip-final-newline@^2.0.0: 1793 | version "2.0.0" 1794 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 1795 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 1796 | 1797 | strip-json-comments@3.0.1: 1798 | version "3.0.1" 1799 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" 1800 | integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== 1801 | 1802 | strip-json-comments@^3.1.0: 1803 | version "3.1.1" 1804 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1805 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1806 | 1807 | supports-color@7.1.0, supports-color@^7.1.0: 1808 | version "7.1.0" 1809 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" 1810 | integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== 1811 | dependencies: 1812 | has-flag "^4.0.0" 1813 | 1814 | supports-color@^5.3.0: 1815 | version "5.5.0" 1816 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1817 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1818 | dependencies: 1819 | has-flag "^3.0.0" 1820 | 1821 | table@^5.2.3: 1822 | version "5.4.6" 1823 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" 1824 | integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== 1825 | dependencies: 1826 | ajv "^6.10.2" 1827 | lodash "^4.17.14" 1828 | slice-ansi "^2.1.0" 1829 | string-width "^3.0.0" 1830 | 1831 | text-table@^0.2.0: 1832 | version "0.2.0" 1833 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1834 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1835 | 1836 | through@^2.3.8: 1837 | version "2.3.8" 1838 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1839 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1840 | 1841 | to-regex-range@^5.0.1: 1842 | version "5.0.1" 1843 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1844 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1845 | dependencies: 1846 | is-number "^7.0.0" 1847 | 1848 | ts-node@^8.10.2: 1849 | version "8.10.2" 1850 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d" 1851 | integrity sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA== 1852 | dependencies: 1853 | arg "^4.1.0" 1854 | diff "^4.0.1" 1855 | make-error "^1.1.1" 1856 | source-map-support "^0.5.17" 1857 | yn "3.1.1" 1858 | 1859 | tslib@^1.8.1, tslib@^1.9.0: 1860 | version "1.13.0" 1861 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" 1862 | integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== 1863 | 1864 | tsutils@^3.17.1: 1865 | version "3.17.1" 1866 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" 1867 | integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== 1868 | dependencies: 1869 | tslib "^1.8.1" 1870 | 1871 | type-check@^0.4.0, type-check@~0.4.0: 1872 | version "0.4.0" 1873 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1874 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1875 | dependencies: 1876 | prelude-ls "^1.2.1" 1877 | 1878 | type-fest@^0.11.0: 1879 | version "0.11.0" 1880 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" 1881 | integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== 1882 | 1883 | type-fest@^0.8.1: 1884 | version "0.8.1" 1885 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" 1886 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== 1887 | 1888 | typescript@^3.9.7: 1889 | version "3.9.7" 1890 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" 1891 | integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== 1892 | 1893 | uri-js@^4.2.2: 1894 | version "4.2.2" 1895 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1896 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1897 | dependencies: 1898 | punycode "^2.1.0" 1899 | 1900 | v8-compile-cache@^2.0.3: 1901 | version "2.1.1" 1902 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" 1903 | integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== 1904 | 1905 | which-module@^2.0.0: 1906 | version "2.0.0" 1907 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 1908 | integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= 1909 | 1910 | which-pm-runs@^1.0.0: 1911 | version "1.0.0" 1912 | resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" 1913 | integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= 1914 | 1915 | which@2.0.2, which@^2.0.1: 1916 | version "2.0.2" 1917 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1918 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1919 | dependencies: 1920 | isexe "^2.0.0" 1921 | 1922 | wide-align@1.1.3: 1923 | version "1.1.3" 1924 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" 1925 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== 1926 | dependencies: 1927 | string-width "^1.0.2 || 2" 1928 | 1929 | word-wrap@^1.2.3: 1930 | version "1.2.3" 1931 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1932 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1933 | 1934 | workerpool@6.0.0: 1935 | version "6.0.0" 1936 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.0.tgz#85aad67fa1a2c8ef9386a1b43539900f61d03d58" 1937 | integrity sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== 1938 | 1939 | wrap-ansi@^5.1.0: 1940 | version "5.1.0" 1941 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 1942 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 1943 | dependencies: 1944 | ansi-styles "^3.2.0" 1945 | string-width "^3.0.0" 1946 | strip-ansi "^5.0.0" 1947 | 1948 | wrap-ansi@^6.2.0: 1949 | version "6.2.0" 1950 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" 1951 | integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== 1952 | dependencies: 1953 | ansi-styles "^4.0.0" 1954 | string-width "^4.1.0" 1955 | strip-ansi "^6.0.0" 1956 | 1957 | wrappy@1: 1958 | version "1.0.2" 1959 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1960 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1961 | 1962 | write@1.0.3: 1963 | version "1.0.3" 1964 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 1965 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 1966 | dependencies: 1967 | mkdirp "^0.5.1" 1968 | 1969 | y18n@^4.0.0: 1970 | version "4.0.0" 1971 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" 1972 | integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== 1973 | 1974 | yaml@^1.7.2: 1975 | version "1.10.0" 1976 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" 1977 | integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== 1978 | 1979 | yargs-parser@13.1.2, yargs-parser@^13.1.2: 1980 | version "13.1.2" 1981 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" 1982 | integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== 1983 | dependencies: 1984 | camelcase "^5.0.0" 1985 | decamelize "^1.2.0" 1986 | 1987 | yargs-parser@^15.0.1: 1988 | version "15.0.1" 1989 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" 1990 | integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== 1991 | dependencies: 1992 | camelcase "^5.0.0" 1993 | decamelize "^1.2.0" 1994 | 1995 | yargs-unparser@1.6.1: 1996 | version "1.6.1" 1997 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.1.tgz#bd4b0ee05b4c94d058929c32cb09e3fce71d3c5f" 1998 | integrity sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA== 1999 | dependencies: 2000 | camelcase "^5.3.1" 2001 | decamelize "^1.2.0" 2002 | flat "^4.1.0" 2003 | is-plain-obj "^1.1.0" 2004 | yargs "^14.2.3" 2005 | 2006 | yargs@13.3.2: 2007 | version "13.3.2" 2008 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" 2009 | integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== 2010 | dependencies: 2011 | cliui "^5.0.0" 2012 | find-up "^3.0.0" 2013 | get-caller-file "^2.0.1" 2014 | require-directory "^2.1.1" 2015 | require-main-filename "^2.0.0" 2016 | set-blocking "^2.0.0" 2017 | string-width "^3.0.0" 2018 | which-module "^2.0.0" 2019 | y18n "^4.0.0" 2020 | yargs-parser "^13.1.2" 2021 | 2022 | yargs@^14.2.3: 2023 | version "14.2.3" 2024 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" 2025 | integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== 2026 | dependencies: 2027 | cliui "^5.0.0" 2028 | decamelize "^1.2.0" 2029 | find-up "^3.0.0" 2030 | get-caller-file "^2.0.1" 2031 | require-directory "^2.1.1" 2032 | require-main-filename "^2.0.0" 2033 | set-blocking "^2.0.0" 2034 | string-width "^3.0.0" 2035 | which-module "^2.0.0" 2036 | y18n "^4.0.0" 2037 | yargs-parser "^15.0.1" 2038 | 2039 | yn@3.1.1: 2040 | version "3.1.1" 2041 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 2042 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 2043 | --------------------------------------------------------------------------------