From a0c5d095064da895cd7b2d127e385640684e2c44 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Fri, 23 Jul 2021 03:28:11 +1200 Subject: [PATCH 01/20] chore: update minimum required node version to 12 BREAKING CHANGE: Node 12.4.0 or new is now required --- .github/workflows/ci.yml | 7 +++---- package.json | 6 ++---- rollup.config.js | 9 ++------- src/common/ignore-options.ts | 3 --- src/rules/prefer-readonly-type.ts | 3 --- src/util/rule.ts | 3 --- yarn.lock | 22 +--------------------- 7 files changed, 8 insertions(+), 45 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 44cf32465..8789e07d5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,7 @@ jobs: - name: Setup NodeJs uses: actions/setup-node@v1 with: - node-version: "14" + node-version: "16" - name: Install Dependencies run: yarn install --frozen-lockfile @@ -48,10 +48,9 @@ jobs: os: - "ubuntu-latest" node_version: - - "10" - "12" - "14" - - "15" + - "16" ts_version: - "next" - "latest" @@ -61,7 +60,7 @@ jobs: continue-on-error: ${{ matrix.ts_version == 'next' }} env: # Use compiled tests on everything instances except this one. - USE_COMPILED_TEST: ${{ fromJSON('["false", "true"]')[matrix.ts_version != 'latest' || matrix.node_version != '14' || matrix.os != 'ubuntu-latest'] }} + USE_COMPILED_TEST: ${{ fromJSON('["false", "true"]')[matrix.ts_version != 'latest' || matrix.node_version != '16' || matrix.os != 'ubuntu-latest'] }} steps: - name: Checkout uses: actions/checkout@v2 diff --git a/package.json b/package.json index bad5dc1c1..9d0626ab5 100644 --- a/package.json +++ b/package.json @@ -60,10 +60,8 @@ }, "dependencies": { "@typescript-eslint/experimental-utils": "^4.9.1", - "array.prototype.flatmap": "^1.2.4", "deepmerge": "^4.2.2", - "escape-string-regexp": "^4.0.0", - "object.fromentries": "^2.0.3" + "escape-string-regexp": "^4.0.0" }, "devDependencies": { "@rollup/plugin-commonjs": "^17.0.0", @@ -120,6 +118,6 @@ } }, "engines": { - "node": ">=10.18.0" + "node": ">=12.4.0" } } diff --git a/rollup.config.js b/rollup.config.js index 4664e4aab..550125e99 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -9,11 +9,6 @@ import rollupPluginTypescript from "@rollup/plugin-typescript"; import rollupPluginJSON from "@rollup/plugin-json"; import rollupPluginAutoExternal from "rollup-plugin-auto-external"; -const polyfills = [ - "array.prototype.flatmap/auto.js", - "object.fromentries/auto.js", -]; - const common = { input: "src/index.ts", @@ -23,11 +18,11 @@ const common = { sourcemap: false, }, - external: polyfills, + external: [], treeshake: { annotations: true, - moduleSideEffects: polyfills, + moduleSideEffects: [], propertyReadSideEffects: false, unknownGlobalSideEffects: false, }, diff --git a/src/common/ignore-options.ts b/src/common/ignore-options.ts index fd86f0b46..f6cac0615 100644 --- a/src/common/ignore-options.ts +++ b/src/common/ignore-options.ts @@ -1,6 +1,3 @@ -// Polyfill. -import "array.prototype.flatmap/auto.js"; - import { TSESTree } from "@typescript-eslint/experimental-utils"; import escapeRegExp from "escape-string-regexp"; import { JSONSchema4 } from "json-schema"; diff --git a/src/rules/prefer-readonly-type.ts b/src/rules/prefer-readonly-type.ts index 9fb6471fd..a32a93b49 100644 --- a/src/rules/prefer-readonly-type.ts +++ b/src/rules/prefer-readonly-type.ts @@ -1,6 +1,3 @@ -// Polyfill. -import "array.prototype.flatmap/auto.js"; - import { TSESTree } from "@typescript-eslint/experimental-utils"; import { all as deepMerge } from "deepmerge"; import { JSONSchema4 } from "json-schema"; diff --git a/src/util/rule.ts b/src/util/rule.ts index c6d4f2eb6..b09f392ed 100644 --- a/src/util/rule.ts +++ b/src/util/rule.ts @@ -1,6 +1,3 @@ -// Polyfill. -import "object.fromentries/auto.js"; - import { ESLintUtils, TSESLint, diff --git a/yarn.lock b/yarn.lock index a53ba9a12..0ff93ea31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1069,16 +1069,6 @@ array.prototype.flat@^1.2.3: define-properties "^1.1.3" es-abstract "^1.18.0-next.1" -array.prototype.flatmap@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" - integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - function-bind "^1.1.1" - asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -1834,7 +1824,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: +es-abstract@^1.18.0-next.1: version "1.18.0-next.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== @@ -4097,16 +4087,6 @@ object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.fromentries@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" - integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" - object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" From d88094616918b56a9a38d0ca9e60304494390842 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Fri, 23 Jul 2021 04:35:02 +1200 Subject: [PATCH 02/20] chore: remove deprecated stylitic ruleset BREAKING CHANGE: removed stylitic ruleset in favor of stylistic ruleset --- src/index.ts | 2 -- tests/index.test.ts | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index 7b3e926e0..4d9015644 100644 --- a/src/index.ts +++ b/src/index.ts @@ -30,8 +30,6 @@ const config: EslintPluginConfig = { "no-object-orientation": noObjectOrientation, "no-statements": noStatements, currying, - /** @deprecated Use `stylistic` instead. */ - stylitic: stylistic, stylistic, }, }; diff --git a/tests/index.test.ts b/tests/index.test.ts index 3cb2b2794..c16895871 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -24,6 +24,6 @@ describe("plugin", () => { it("should have all the configs", () => { expect.assertions(2); expect(plugin).toHaveProperty("configs"); - expect(Object.keys(plugin.configs)).toHaveLength(configFiles.length + 1); + expect(Object.keys(plugin.configs)).toHaveLength(configFiles.length); }); }); From dcb7f83e6cb8b59ba57a091c21ef9129732bce1c Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Fri, 23 Jul 2021 05:19:24 +1200 Subject: [PATCH 03/20] chore: set up new linting rules --- .eslintrc.json | 163 +-- package.json | 25 +- src/util/conditional-imports/.eslintrc.json | 11 +- tests/.eslintrc.json | 30 + yarn.lock | 1086 ++++++++++++++----- 5 files changed, 890 insertions(+), 425 deletions(-) create mode 100644 tests/.eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json index 5962cf884..817bef1a6 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -15,173 +15,38 @@ "node": true }, "extends": [ - "eslint:recommended", - "plugin:import/errors", - "plugin:import/warnings", - "plugin:import/typescript", + "@rebeccastevens/eslint-config/modern", + "@rebeccastevens/eslint-config/typescript", + "@rebeccastevens/eslint-config/common-overrides", "plugin:eslint-plugin/recommended", - "plugin:functional/recommended", "plugin:prettier/recommended", "prettier" ], "parserOptions": { "ecmaVersion": 10, - "project": [ - "./tsconfig.json", - "./tests/tsconfig.json" - ], + "project": ["./tsconfig.json", "./tests/tsconfig.json"], "sourceType": "module" }, - "ignorePatterns": [ - "build/", - "lib/" - ], + "ignorePatterns": ["build/", "coverage/", "lib/"], "rules": { - // Built in. - "no-param-reassign": "error", - "no-var": "error", - // Our rules. - "functional/prefer-readonly-type": [ - "error", - { - "allowMutableReturnType": true - } - ], - "functional/no-conditional-statement": [ - "error", - { - "allowReturningBranches": true - } - ], - "functional/functional-parameters": [ - "error", - { - "ignorePattern": [ - "^tsInstalled$" - ] - } - ] + "@typescript-eslint/no-unnecessary-condition": "off", + "import/no-unassigned-import": "off", + "node/no-unsupported-features/es-builtins": "off", + "node/no-unsupported-features/es-syntax": "off", + // enable once supported in all our supported node versions. + "unicorn/prefer-node-protocol": "off" }, "overrides": [ // Top level files. { - "files": [ - "*" - ], + "files": ["*"], "rules": { "functional/immutable-data": "off", - "functional/functional-parameters": "off", - "functional/no-expression-statement": "off" - } - }, - // TypeScript files. - { - "files": [ - "**/*.ts" - ], - "extends": [ - "plugin:@typescript-eslint/recommended" - ], - "rules": { - "@typescript-eslint/array-type": [ - "error", - { - "default": "generic" - } - ], - "@typescript-eslint/ban-types": [ - "error", - { - "types": { - "Object": { - "message": "Use object instead", - "fixWith": "object" - }, - "{}": false, - "object": false - }, - "extendDefaults": true - } - ], - "@typescript-eslint/prefer-interface": "off", - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-require-imports": "error", - "@typescript-eslint/no-var-requires": "off", - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/no-unused-vars-experimental": [ - "warn", - { - "ignoredNamesRegex": "^_", - "ignoreArgsIfArgsAfterAreUsed": true - } - ], - "@typescript-eslint/no-use-before-define": [ - "error", - { - "functions": false, - "classes": true, - "variables": true, - "typedefs": true - } - ] - } - }, - // Source files. - { - "files": [ - "src/**/*" - ], - "rules": { - // JSDoc. - "jsdoc/check-alignment": "warn", - "jsdoc/check-indentation": "warn", - "jsdoc/check-param-names": "warn", - "jsdoc/check-tag-names": "warn", - "jsdoc/implements-on-classes": "warn", - "jsdoc/newline-after-description": "warn", - "jsdoc/no-types": "warn", - "jsdoc/require-description": "warn", - "jsdoc/require-description-complete-sentence": "warn", - "jsdoc/require-hyphen-before-param-description": "warn", - "jsdoc/require-jsdoc": "warn", - "jsdoc/require-param-description": "warn", - "jsdoc/require-param-name": "warn", - "jsdoc/require-returns-check": "warn", - "jsdoc/require-returns-description": "warn" - } - }, - // Testing Files. - { - "files": [ - "tests/**/*" - ], - "env": { - "jest/globals": true - }, - "extends": [ - "plugin:jest/recommended" - ], - "rules": { "functional/functional-parameters": "off", "functional/no-conditional-statement": "off", "functional/no-expression-statement": "off", - "jest/no-alias-methods": "error", - "jest/no-test-return-statement": "error", - "jest/prefer-called-with": "warn", - "jest/prefer-expect-assertions": "error", - "jest/prefer-spy-on": "warn", - "jest/prefer-strict-equal": "warn", - "jest/prefer-to-be-null": "warn", - "jest/prefer-to-be-undefined": "warn", - "jest/prefer-to-contain": "warn", - "jest/prefer-to-have-length": "warn", - "jest/prefer-todo": "error" + "functional/no-throw-statement": "off" } } - ], - "settings": { - "import/ignore": [ - "escape-string-regexp" - ] - } + ] } diff --git a/package.json b/package.json index 9d0626ab5..92bc0fb82 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ "escape-string-regexp": "^4.0.0" }, "devDependencies": { + "@rebeccastevens/eslint-config": "^1.0.10", "@rollup/plugin-commonjs": "^17.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^11.0.0", @@ -74,21 +75,29 @@ "@types/glob": "^7.1.1", "@types/jest": "^26.0.19", "@types/node": "15.0.1", - "@typescript-eslint/eslint-plugin": "^4.9.1", - "@typescript-eslint/parser": "^4.9.1", + "@typescript-eslint/eslint-plugin": "^4.28.4", + "@typescript-eslint/parser": "^4.28.4", "auto-changelog": "^2.2.1", "babel-eslint": "^10.0.2", "codecov": "^3.8.1", "cpx": "^1.5.0", "cross-env": "^7.0.3", "dedent": "^0.7.0", - "eslint": "^7.15.0", + "eslint": "^7.31.0", "eslint-config-prettier": "^8.3.0", - "eslint-plugin-eslint-plugin": "^2.2.0", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jest": "^24.1.3", - "eslint-plugin-jsdoc": "^32.3.0", - "eslint-plugin-prettier": "^3.2.0", + "eslint-import-resolver-typescript": "^2.4.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-eslint-plugin": "^3.4.0", + "eslint-plugin-import": "^2.23.4", + "eslint-plugin-jest": "^24.4.0", + "eslint-plugin-jsdoc": "^35.5.1", + "eslint-plugin-markdown": "^2.2.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-optimize-regex": "^1.2.0", + "eslint-plugin-prettier": "^3.4.0", + "eslint-plugin-promise": "^5.1.0", + "eslint-plugin-sonarjs": "^0.9.1", + "eslint-plugin-unicorn": "^34.0.1", "glob": "^7.1.6", "husky": "^6.0.0", "jest": "^26.6.3", diff --git a/src/util/conditional-imports/.eslintrc.json b/src/util/conditional-imports/.eslintrc.json index d33e86739..493563629 100644 --- a/src/util/conditional-imports/.eslintrc.json +++ b/src/util/conditional-imports/.eslintrc.json @@ -1,7 +1,14 @@ { "rules": { - "@typescript-eslint/no-require-imports": "off", + "@typescript-eslint/no-var-requires": "off", "functional/functional-parameters": "off", - "functional/no-try-statement": "off" + "functional/no-try-statement": "off", + "import/no-extraneous-dependencies": [ + "error", + { + "peerDependencies": true + } + ], + "unicorn/prefer-module": "off" } } diff --git a/tests/.eslintrc.json b/tests/.eslintrc.json new file mode 100644 index 000000000..ac74b2015 --- /dev/null +++ b/tests/.eslintrc.json @@ -0,0 +1,30 @@ +{ + "env": { + "jest/globals": true + }, + "extends": [ + "plugin:jest/recommended" + ], + "rules": { + "@typescript-eslint/strict-boolean-expressions": "off", + "eslint-comments/disable-enable-pair": "off", + "eslint-comments/no-unlimited-disable": "off", + "functional/functional-parameters": "off", + "functional/no-conditional-statement": "off", + "functional/no-expression-statement": "off", + "jest/no-alias-methods": "error", + "jest/no-test-return-statement": "error", + "jest/prefer-called-with": "warn", + "jest/prefer-expect-assertions": "error", + "jest/prefer-spy-on": "warn", + "jest/prefer-strict-equal": "warn", + "jest/prefer-to-be-null": "warn", + "jest/prefer-to-be-undefined": "warn", + "jest/prefer-to-contain": "warn", + "jest/prefer-to-have-length": "warn", + "jest/prefer-todo": "error", + "sonarjs/no-identical-functions": "off", + "sonarjs/no-duplicate-string": "off", + "unicorn/prefer-module": "off" + } +} diff --git a/yarn.lock b/yarn.lock index 0ff93ea31..26a5bc6e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,6 +9,18 @@ dependencies: "@babel/highlight" "^7.10.4" +"@babel/code-frame@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== + dependencies: + "@babel/highlight" "^7.14.5" + +"@babel/compat-data@^7.14.5": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" + integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== + "@babel/core@^7.1.0", "@babel/core@^7.7.5": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" @@ -30,6 +42,36 @@ semver "^5.4.1" source-map "^0.5.0" +"@babel/core@^7.12.16": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.8.tgz#20cdf7c84b5d86d83fac8710a8bc605a7ba3f010" + integrity sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.8" + "@babel/helper-compilation-targets" "^7.14.5" + "@babel/helper-module-transforms" "^7.14.8" + "@babel/helpers" "^7.14.8" + "@babel/parser" "^7.14.8" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.8" + "@babel/types" "^7.14.8" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/eslint-parser@^7.12.16": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.14.7.tgz#91be59a4f7dd60d02a3ef772d156976465596bda" + integrity sha512-6WPwZqO5priAGIwV6msJcdc9TsEPzYeYdS/Xuoap+/ihkgN6dzHp2bcAAwyWZ5bLzk0vvjDmKvRwkqNaiJ8BiQ== + dependencies: + eslint-scope "^5.1.1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" + "@babel/generator@^7.12.10": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.10.tgz#2b188fc329fb8e4f762181703beffc0fe6df3460" @@ -39,6 +81,25 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.8.tgz#bf86fd6af96cf3b74395a8ca409515f89423e070" + integrity sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg== + dependencies: + "@babel/types" "^7.14.8" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-compilation-targets@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" + integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== + dependencies: + "@babel/compat-data" "^7.14.5" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.16.6" + semver "^6.3.0" + "@babel/helper-function-name@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" @@ -48,6 +109,15 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-function-name@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" + integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== + dependencies: + "@babel/helper-get-function-arity" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/types" "^7.14.5" + "@babel/helper-get-function-arity@^7.10.4": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" @@ -55,6 +125,20 @@ dependencies: "@babel/types" "^7.12.10" +"@babel/helper-get-function-arity@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" + integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-hoist-variables@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" + integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== + dependencies: + "@babel/types" "^7.14.5" + "@babel/helper-member-expression-to-functions@^7.12.1": version "7.12.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" @@ -62,6 +146,13 @@ dependencies: "@babel/types" "^7.12.7" +"@babel/helper-member-expression-to-functions@^7.14.5": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" + integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== + dependencies: + "@babel/types" "^7.14.5" + "@babel/helper-module-imports@^7.12.1": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" @@ -69,6 +160,13 @@ dependencies: "@babel/types" "^7.12.5" +"@babel/helper-module-imports@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" + integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== + dependencies: + "@babel/types" "^7.14.5" + "@babel/helper-module-transforms@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" @@ -84,6 +182,20 @@ "@babel/types" "^7.12.1" lodash "^4.17.19" +"@babel/helper-module-transforms@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz#d4279f7e3fd5f4d5d342d833af36d4dd87d7dc49" + integrity sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA== + dependencies: + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-simple-access" "^7.14.8" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.8" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.8" + "@babel/types" "^7.14.8" + "@babel/helper-optimise-call-expression@^7.10.4": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" @@ -91,6 +203,13 @@ dependencies: "@babel/types" "^7.12.10" +"@babel/helper-optimise-call-expression@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" + integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== + dependencies: + "@babel/types" "^7.14.5" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" @@ -106,6 +225,16 @@ "@babel/traverse" "^7.12.5" "@babel/types" "^7.12.5" +"@babel/helper-replace-supers@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" + integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.14.5" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + "@babel/helper-simple-access@^7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" @@ -113,6 +242,13 @@ dependencies: "@babel/types" "^7.12.1" +"@babel/helper-simple-access@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" + integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== + dependencies: + "@babel/types" "^7.14.8" + "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" @@ -120,11 +256,28 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-split-export-declaration@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" + integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== + dependencies: + "@babel/types" "^7.14.5" + "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz#32be33a756f29e278a0d644fa08a2c9e0f88a34c" + integrity sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow== + +"@babel/helper-validator-option@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" + integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== + "@babel/helpers@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" @@ -134,6 +287,15 @@ "@babel/traverse" "^7.12.5" "@babel/types" "^7.12.5" +"@babel/helpers@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" + integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== + dependencies: + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.8" + "@babel/types" "^7.14.8" + "@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" @@ -143,11 +305,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.7", "@babel/parser@^7.7.0": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.10.tgz#824600d59e96aea26a5a2af5a9d812af05c3ae81" integrity sha512-PJdRPwyoOqFAWfLytxrWwGrAxghCgh/yTNCYciOz8QgjflA7aZhECPZAa2VUedKg2+QMWkI0L9lynh2SNmNEgA== +"@babel/parser@^7.14.5", "@babel/parser@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.8.tgz#66fd41666b2d7b840bd5ace7f7416d5ac60208d4" + integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA== + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -241,6 +417,15 @@ "@babel/parser" "^7.12.7" "@babel/types" "^7.12.7" +"@babel/template@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" + integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/parser" "^7.14.5" + "@babel/types" "^7.14.5" + "@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.7.0": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.10.tgz#2d1f4041e8bf42ea099e5b2dc48d6a594c00017a" @@ -256,6 +441,21 @@ globals "^11.1.0" lodash "^4.17.19" +"@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.8.tgz#c0253f02677c5de1a8ff9df6b0aacbec7da1a8ce" + integrity sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.8" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-hoist-variables" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/parser" "^7.14.8" + "@babel/types" "^7.14.8" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.7.0": version "7.12.10" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.10.tgz#7965e4a7260b26f09c56bcfcb0498af1f6d9b260" @@ -265,6 +465,14 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.14.5", "@babel/types@^7.14.8": + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.8.tgz#38109de8fcadc06415fbd9b74df0065d4d41c728" + integrity sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q== + dependencies: + "@babel/helper-validator-identifier" "^7.14.8" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -278,10 +486,19 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@eslint/eslintrc@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" - integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== +"@es-joy/jsdoccomment@0.9.0-alpha.1": + version "0.9.0-alpha.1" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.9.0-alpha.1.tgz#f48bd162e185ec7f9f222273a282d10e52fe52f7" + integrity sha512-Clxxc0PwpISoYYBibA+1L2qFJ7gvFVhI2Hos87S06K+Q0cXdOhZQJNKWuaQGPAeHjZEuUB/YoWOfwjuF2wirqA== + dependencies: + comment-parser "1.1.6-beta.0" + esquery "^1.4.0" + jsdoc-type-pratt-parser "1.0.4" + +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -293,6 +510,20 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" + integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -501,6 +732,13 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" +"@rebeccastevens/eslint-config@^1.0.10": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@rebeccastevens/eslint-config/-/eslint-config-1.0.10.tgz#3287a17c618afd326553e3b23aefa5c3a5335333" + integrity sha512-VW7zpKL0mrclSjOZfIoFXADemr7kfcHz8Ev3WmG0ZmD/IKONzStJHOzJR57Y6uc/MZvtHCw1ILt3XmuZmoVVaw== + dependencies: + deepmerge "^4.0.0" + "@rollup/plugin-commonjs@^17.0.0": version "17.1.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz#757ec88737dffa8aa913eb392fade2e45aef2a2d" @@ -667,7 +905,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.7": +"@types/json-schema@*", "@types/json-schema@^7.0.7": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== @@ -677,6 +915,13 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/mdast@^3.0.0": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.7.tgz#cba63d0cc11eb1605cea5c0ad76e02684394166b" + integrity sha512-YwR7OK8aPmaBvMMUi+pZXBNoW2unbVbfok4YRqGMJBe1dpDlzpRkJrYEYmvjxgs5JhuQmKfDexrN98u941Zasg== + dependencies: + "@types/unist" "*" + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -714,6 +959,11 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== +"@types/unist@*", "@types/unist@^2.0.2": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + "@types/yargs-parser@*": version "15.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" @@ -726,31 +976,30 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^4.9.1": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.20.0.tgz#9d8794bd99aad9153092ad13c96164e3082e9a92" - integrity sha512-sw+3HO5aehYqn5w177z2D82ZQlqHCwcKSMboueo7oE4KU9QiC0SAgfS/D4z9xXvpTc8Bt41Raa9fBR8T2tIhoQ== +"@typescript-eslint/eslint-plugin@^4.28.4": + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.4.tgz#e73c8cabbf3f08dee0e1bda65ed4e622ae8f8921" + integrity sha512-s1oY4RmYDlWMlcV0kKPBaADn46JirZzvvH7c2CtAqxCY96S538JRBAzt83RrfkDheV/+G/vWNK0zek+8TB3Gmw== dependencies: - "@typescript-eslint/experimental-utils" "4.20.0" - "@typescript-eslint/scope-manager" "4.20.0" - debug "^4.1.1" + "@typescript-eslint/experimental-utils" "4.28.4" + "@typescript-eslint/scope-manager" "4.28.4" + debug "^4.3.1" functional-red-black-tree "^1.0.1" - lodash "^4.17.15" - regexpp "^3.0.0" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.20.0.tgz#a8ab2d7b61924f99042b7d77372996d5f41dc44b" - integrity sha512-sQNlf6rjLq2yB5lELl3gOE7OuoA/6IVXJUJ+Vs7emrQMva14CkOwyQwD7CW+TkmOJ4Q/YGmoDLmbfFrpGmbKng== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.20.0" - "@typescript-eslint/types" "4.20.0" - "@typescript-eslint/typescript-estree" "4.20.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@4.28.4": + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.4.tgz#9c70c35ebed087a5c70fb0ecd90979547b7fec96" + integrity sha512-OglKWOQRWTCoqMSy6pm/kpinEIgdcXYceIcH3EKWUl4S8xhFtN34GQRaAvTIZB9DD94rW7d/U7tUg3SYeDFNHA== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.28.4" + "@typescript-eslint/types" "4.28.4" + "@typescript-eslint/typescript-estree" "4.28.4" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" "@typescript-eslint/experimental-utils@^4.0.1", "@typescript-eslint/experimental-utils@^4.9.1": version "4.28.1" @@ -764,31 +1013,15 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/parser@^4.9.1": - version "4.11.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.11.1.tgz#981e18de2e019d6ca312596615f92e8f6f6598ed" - integrity sha512-BJ3jwPQu1jeynJ5BrjLuGfK/UJu6uwHxJ/di7sanqmUmxzmyIcd3vz58PMR7wpi8k3iWq2Q11KMYgZbUpRoIPw== - dependencies: - "@typescript-eslint/scope-manager" "4.11.1" - "@typescript-eslint/types" "4.11.1" - "@typescript-eslint/typescript-estree" "4.11.1" - debug "^4.1.1" - -"@typescript-eslint/scope-manager@4.11.1": - version "4.11.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.11.1.tgz#72dc2b60b0029ab0888479b12bf83034920b4b69" - integrity sha512-Al2P394dx+kXCl61fhrrZ1FTI7qsRDIUiVSuN6rTwss6lUn8uVO2+nnF4AvO0ug8vMsy3ShkbxLu/uWZdTtJMQ== - dependencies: - "@typescript-eslint/types" "4.11.1" - "@typescript-eslint/visitor-keys" "4.11.1" - -"@typescript-eslint/scope-manager@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.20.0.tgz#953ecbf3b00845ece7be66246608be9d126d05ca" - integrity sha512-/zm6WR6iclD5HhGpcwl/GOYDTzrTHmvf8LLLkwKqqPKG6+KZt/CfSgPCiybshmck66M2L5fWSF/MKNuCwtKQSQ== +"@typescript-eslint/parser@^4.28.4": + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.4.tgz#bc462dc2779afeefdcf49082516afdc3e7b96fab" + integrity sha512-4i0jq3C6n+og7/uCHiE6q5ssw87zVdpUj1k6VlVYMonE3ILdFApEzTWgppSRG4kVNB/5jxnH+gTeKLMNfUelQA== dependencies: - "@typescript-eslint/types" "4.20.0" - "@typescript-eslint/visitor-keys" "4.20.0" + "@typescript-eslint/scope-manager" "4.28.4" + "@typescript-eslint/types" "4.28.4" + "@typescript-eslint/typescript-estree" "4.28.4" + debug "^4.3.1" "@typescript-eslint/scope-manager@4.28.1": version "4.28.1" @@ -798,47 +1031,23 @@ "@typescript-eslint/types" "4.28.1" "@typescript-eslint/visitor-keys" "4.28.1" -"@typescript-eslint/types@4.11.1": - version "4.11.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.11.1.tgz#3ba30c965963ef9f8ced5a29938dd0c465bd3e05" - integrity sha512-5kvd38wZpqGY4yP/6W3qhYX6Hz0NwUbijVsX2rxczpY6OXaMxh0+5E5uLJKVFwaBM7PJe1wnMym85NfKYIh6CA== - -"@typescript-eslint/types@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.20.0.tgz#c6cf5ef3c9b1c8f699a9bbdafb7a1da1ca781225" - integrity sha512-cYY+1PIjei1nk49JAPnH1VEnu7OYdWRdJhYI5wiKOUMhLTG1qsx5cQxCUTuwWCmQoyriadz3Ni8HZmGSofeC+w== +"@typescript-eslint/scope-manager@4.28.4": + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.4.tgz#bdbce9b6a644e34f767bd68bc17bb14353b9fe7f" + integrity sha512-ZJBNs4usViOmlyFMt9X9l+X0WAFcDH7EdSArGqpldXu7aeZxDAuAzHiMAeI+JpSefY2INHrXeqnha39FVqXb8w== + dependencies: + "@typescript-eslint/types" "4.28.4" + "@typescript-eslint/visitor-keys" "4.28.4" "@typescript-eslint/types@4.28.1": version "4.28.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.1.tgz#d0f2ecbef3684634db357b9bbfc97b94b828f83f" integrity sha512-4z+knEihcyX7blAGi7O3Fm3O6YRCP+r56NJFMNGsmtdw+NCdpG5SgNz427LS9nQkRVTswZLhz484hakQwB8RRg== -"@typescript-eslint/typescript-estree@4.11.1": - version "4.11.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.11.1.tgz#a4416b4a65872a48773b9e47afabdf7519eb10bc" - integrity sha512-tC7MKZIMRTYxQhrVAFoJq/DlRwv1bnqA4/S2r3+HuHibqvbrPcyf858lNzU7bFmy4mLeIHFYr34ar/1KumwyRw== - dependencies: - "@typescript-eslint/types" "4.11.1" - "@typescript-eslint/visitor-keys" "4.11.1" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/typescript-estree@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.20.0.tgz#8b3b08f85f18a8da5d88f65cb400f013e88ab7be" - integrity sha512-Knpp0reOd4ZsyoEJdW8i/sK3mtZ47Ls7ZHvD8WVABNx5Xnn7KhenMTRGegoyMTx6TiXlOVgMz9r0pDgXTEEIHA== - dependencies: - "@typescript-eslint/types" "4.20.0" - "@typescript-eslint/visitor-keys" "4.20.0" - debug "^4.1.1" - globby "^11.0.1" - is-glob "^4.0.1" - semver "^7.3.2" - tsutils "^3.17.1" +"@typescript-eslint/types@4.28.4": + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.4.tgz#41acbd79b5816b7c0dd7530a43d97d020d3aeb42" + integrity sha512-3eap4QWxGqkYuEmVebUGULMskR6Cuoc/Wii0oSOddleP4EGx1tjLnZQ0ZP33YRoMDCs5O3j56RBV4g14T4jvww== "@typescript-eslint/typescript-estree@4.28.1": version "4.28.1" @@ -853,21 +1062,18 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@4.11.1": - version "4.11.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.11.1.tgz#4c050a4c1f7239786e2dd4e69691436143024e05" - integrity sha512-IrlBhD9bm4bdYcS8xpWarazkKXlE7iYb1HzRuyBP114mIaj5DJPo11Us1HgH60dTt41TCZXMaTCAW+OILIYPOg== +"@typescript-eslint/typescript-estree@4.28.4": + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.4.tgz#252e6863278dc0727244be9e371eb35241c46d00" + integrity sha512-z7d8HK8XvCRyN2SNp+OXC2iZaF+O2BTquGhEYLKLx5k6p0r05ureUtgEfo5f6anLkhCxdHtCf6rPM1p4efHYDQ== dependencies: - "@typescript-eslint/types" "4.11.1" - eslint-visitor-keys "^2.0.0" - -"@typescript-eslint/visitor-keys@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.20.0.tgz#1e84db034da13f208325e6bfc995c3b75f7dbd62" - integrity sha512-NXKRM3oOVQL8yNFDNCZuieRIwZ5UtjNLYtmMx2PacEAGmbaEYtGgVHUHVyZvU/0rYZcizdrWjDo+WBtRPSgq+A== - dependencies: - "@typescript-eslint/types" "4.20.0" - eslint-visitor-keys "^2.0.0" + "@typescript-eslint/types" "4.28.4" + "@typescript-eslint/visitor-keys" "4.28.4" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" "@typescript-eslint/visitor-keys@4.28.1": version "4.28.1" @@ -877,6 +1083,14 @@ "@typescript-eslint/types" "4.28.1" eslint-visitor-keys "^2.0.0" +"@typescript-eslint/visitor-keys@4.28.4": + version "4.28.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.4.tgz#92dacfefccd6751cbb0a964f06683bfd72d0c4d3" + integrity sha512-NIAXAdbz1XdOuzqkJHjNKXKj8QQ4cv5cxR/g0uQhCYf/6//XrmfpaYsM7PnBcNbfvTDLUkqQ5TPNm1sozDdTWg== + dependencies: + "@typescript-eslint/types" "4.28.4" + eslint-visitor-keys "^2.0.0" + abab@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" @@ -1034,15 +1248,15 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-includes@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" - integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== +array-includes@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - get-intrinsic "^1.0.1" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" is-string "^1.0.5" array-union@^2.1.0: @@ -1060,7 +1274,7 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.flat@^1.2.3: +array.prototype.flat@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== @@ -1290,6 +1504,17 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +browserslist@^4.16.6: + version "4.16.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== + dependencies: + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -1309,6 +1534,11 @@ buffer-from@1.x, buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +builtin-modules@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + builtin-modules@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" @@ -1359,6 +1589,11 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== +caniuse-lite@^1.0.30001219: + version "1.0.30001246" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001246.tgz#fe17d9919f87124d6bb416ef7b325356d69dc76c" + integrity sha512-Tc+ff0Co/nFNbLOrziBXmMVtpt9S2c2Y+Z9Nk9Khj09J+0zR9ejvIW5qkZAErCbOrVODCx/MN+GpB5FNBs5GFA== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -1393,6 +1628,21 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + chokidar@^1.6.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -1414,6 +1664,11 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +ci-info@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" + integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== + cjs-module-lexer@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" @@ -1429,6 +1684,13 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +clean-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" + integrity sha1-jffHquUf02h06PjQW5GAvBGj/tc= + dependencies: + escape-string-regexp "^1.0.5" + clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" @@ -1511,6 +1773,11 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -1528,10 +1795,10 @@ commander@^6.2.0: resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== -comment-parser@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.1.2.tgz#e5317d7a2ec22b470dcb54a29b25426c30bf39d8" - integrity sha512-AOdq0i8ghZudnYv8RUnHrhTgafUGs61Rdz9jemU5x2lnZwAWyOq7vySo626K59e1fVKH1xSRorJwPVRLSWOoAQ== +comment-parser@1.1.6-beta.0: + version "1.1.6-beta.0" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.1.6-beta.0.tgz#57e503b18d0a5bd008632dcc54b1f95c2fffe8f6" + integrity sha512-q3cA8TSMyqW7wcPSYWzbO/rMahnXgzs4SLG/UIWXdEsnXTFPZkEkWAdNgPiHig2OzxgpPLOh4WwsmClDxndwHw== commondir@^1.0.1: version "1.0.1" @@ -1548,11 +1815,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= - convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -1677,6 +1939,20 @@ debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.0, debug@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1702,7 +1978,7 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge@^4.2.2: +deepmerge@^4.0.0, deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== @@ -1758,13 +2034,12 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" - isarray "^1.0.0" doctrine@^3.0.0: version "3.0.0" @@ -1793,6 +2068,11 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +electron-to-chromium@^1.3.723: + version "1.3.784" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.784.tgz#c370be79374b02b7f13e8a8fb0d7a02641161dac" + integrity sha512-JTPxdUibkefeomWNaYs8lI/x/Zb4cOhZWX+d7kpzsNKzUd07pNuo/AcHeNJ/qgEchxM1IAxda9aaGUhKN/poOg== + emittery@^0.7.1: version "0.7.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" @@ -1817,7 +2097,7 @@ enquirer@^2.3.5, enquirer@^2.3.6: dependencies: ansi-colors "^4.1.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== @@ -1844,6 +2124,28 @@ es-abstract@^1.18.0-next.1: string.prototype.trimend "^1.0.3" string.prototype.trimstart "^1.0.3" +es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: + version "1.18.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" + integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.2" + is-callable "^1.2.3" + is-negative-zero "^2.0.1" + is-regex "^1.1.3" + is-string "^1.0.6" + object-inspect "^1.10.3" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -1853,6 +2155,11 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1893,66 +2200,153 @@ eslint-import-resolver-node@^0.3.4: debug "^2.6.9" resolve "^1.13.1" -eslint-module-utils@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" - integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== +eslint-import-resolver-typescript@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.4.0.tgz#ec1e7063ebe807f0362a7320543aaed6fe1100e1" + integrity sha512-useJKURidCcldRLCNKWemr1fFQL1SzB3G4a0li6lFGvlc5xGe1hY343bvG07cbpCzPuM/lK19FIJB3XGFSkplA== dependencies: - debug "^2.6.9" + debug "^4.1.1" + glob "^7.1.6" + is-glob "^4.0.1" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-module-utils@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233" + integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== + dependencies: + debug "^3.2.7" pkg-dir "^2.0.0" -eslint-plugin-eslint-plugin@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-2.3.0.tgz#1b6ffd13b74da5656e27106b79567b162984fc41" - integrity sha512-xER9XjfTLrAgoUzPguPKoreDGtXt2vUnwqAqdElNrkcSbl5K1rGtSOmhgbiqCb7UN4spnjNhIZplHMNWY6Kz/w== +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-eslint-comments@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa" + integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ== + dependencies: + escape-string-regexp "^1.0.5" + ignore "^5.0.5" + +eslint-plugin-eslint-plugin@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-3.4.0.tgz#5a737bcf08fa11ee965461afc0be9da289de5d3f" + integrity sha512-oC+x2CGVUFfYx8WiXjddD1RA6Ng7hsVgPExgxy1mKaRZZFGP2jDaf6h08SOkRpP0LuNQTJ6bjdrLKxcwmB/TXQ== + dependencies: + eslint-utils "^2.1.0" -eslint-plugin-import@^2.22.1: - version "2.22.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" - integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== +eslint-plugin-import@^2.23.4: + version "2.23.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz#8dceb1ed6b73e46e50ec9a5bb2411b645e7d3d97" + integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== dependencies: - array-includes "^3.1.1" - array.prototype.flat "^1.2.3" - contains-path "^0.1.0" + array-includes "^3.1.3" + array.prototype.flat "^1.2.4" debug "^2.6.9" - doctrine "1.5.0" + doctrine "^2.1.0" eslint-import-resolver-node "^0.3.4" - eslint-module-utils "^2.6.0" + eslint-module-utils "^2.6.1" + find-up "^2.0.0" has "^1.0.3" + is-core-module "^2.4.0" minimatch "^3.0.4" - object.values "^1.1.1" - read-pkg-up "^2.0.0" - resolve "^1.17.0" + object.values "^1.1.3" + pkg-up "^2.0.0" + read-pkg-up "^3.0.0" + resolve "^1.20.0" tsconfig-paths "^3.9.0" -eslint-plugin-jest@^24.1.3: - version "24.1.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.1.3.tgz#fa3db864f06c5623ff43485ca6c0e8fc5fe8ba0c" - integrity sha512-dNGGjzuEzCE3d5EPZQ/QGtmlMotqnYWD/QpCZ1UuZlrMAdhG5rldh0N0haCvhGnUkSeuORS5VNROwF9Hrgn3Lg== +eslint-plugin-jest@^24.4.0: + version "24.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.4.0.tgz#fa4b614dbd46a98b652d830377971f097bda9262" + integrity sha512-8qnt/hgtZ94E9dA6viqfViKBfkJwFHXgJmTWlMGDgunw1XJEGqm3eiPjDsTanM3/u/3Az82nyQM9GX7PM/QGmg== dependencies: "@typescript-eslint/experimental-utils" "^4.0.1" -eslint-plugin-jsdoc@^32.3.0: - version "32.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-32.3.0.tgz#7c9fa5da8c72bd6ad7d97bbf8dee8bc29bec3f9e" - integrity sha512-zyx7kajDK+tqS1bHuY5sapkad8P8KT0vdd/lE55j47VPG2MeenSYuIY/M/Pvmzq5g0+3JB+P3BJGUXmHxtuKPQ== +eslint-plugin-jsdoc@^35.5.1: + version "35.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-35.5.1.tgz#45932ee22669bbe06c97b82b936d56361efad370" + integrity sha512-pPYPWtsykwVEue1tYEyoppBj4dgF7XicF67tLLLraY6RQYBq7qMKjUHji19+hfiTtYKKBD0YfeK8hgjPAE5viw== dependencies: - comment-parser "1.1.2" - debug "^4.3.1" - jsdoctypeparser "^9.0.0" - lodash "^4.17.20" - regextras "^0.7.1" - semver "^7.3.4" + "@es-joy/jsdoccomment" "0.9.0-alpha.1" + comment-parser "1.1.6-beta.0" + debug "^4.3.2" + esquery "^1.4.0" + jsdoc-type-pratt-parser "^1.0.4" + lodash "^4.17.21" + regextras "^0.8.0" + semver "^7.3.5" spdx-expression-parse "^3.0.1" -eslint-plugin-prettier@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.2.0.tgz#af391b2226fa0e15c96f36c733f6e9035dbd952c" - integrity sha512-kOUSJnFjAUFKwVxuzy6sA5yyMx6+o9ino4gCdShzBNx4eyFRudWRYKCFolKjoM40PEiuU6Cn7wBLfq3WsGg7qg== +eslint-plugin-markdown@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-markdown/-/eslint-plugin-markdown-2.2.0.tgz#9c30bd51538a815e87e96646c69f11466b4c165f" + integrity sha512-Ctuc7aP1tU92qnFwVO1wDLEzf1jqMxwRkcSTw7gjbvnEqfh5CKUcTXM0sxg8CB2KDXrqpTuMZPgJ1XE9Olr7KA== + dependencies: + mdast-util-from-markdown "^0.8.5" + +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-optimize-regex@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-optimize-regex/-/eslint-plugin-optimize-regex-1.2.0.tgz#c13bd6c716cce4c5001ee8b7af073f2e0609e030" + integrity sha512-pzpF7bGsdXVPue/ubLqS0UbBGuBajxh2fO8OmBDoN0SHrxEBKf8WOAxkOI80lBb81yiZs7hj6ZxlflbrV3YrsA== + dependencies: + regexp-tree "^0.1.20" + +eslint-plugin-prettier@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz#cdbad3bf1dbd2b177e9825737fe63b476a08f0c7" + integrity sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw== dependencies: prettier-linter-helpers "^1.0.0" -eslint-scope@^5.0.0, eslint-scope@^5.1.1: +eslint-plugin-promise@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz#fb2188fb734e4557993733b41aa1a688f46c6f24" + integrity sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng== + +eslint-plugin-sonarjs@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.9.1.tgz#a3c63ab0d267bfb69863159e42c8081b01fd3ac6" + integrity sha512-KKFofk1LPjGHWeAZijYWv32c/C4mz+OAeBNVxhxHu1hknrTOhu415MWC8qKdAdsmOlBPShs9evM4mI1o7MNMhw== + +eslint-plugin-unicorn@^34.0.1: + version "34.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-34.0.1.tgz#e31cfaf487591599ff1f1b1e74776cce59dcc3ae" + integrity sha512-GUBtRYRhPVOW/GDu6QtOjrneSZxY/MulOT8puJU+47VKCzNmMgS/iHO2gZqoQ7KPMrpNYlebUlvCWy3IR1USVQ== + dependencies: + ci-info "^3.2.0" + clean-regexp "^1.0.0" + eslint-template-visitor "^2.3.2" + eslint-utils "^3.0.0" + is-builtin-module "^3.1.0" + lodash "^4.17.21" + pluralize "^8.0.0" + read-pkg-up "^7.0.1" + regexp-tree "^0.1.23" + reserved-words "^0.1.2" + safe-regex "^2.1.1" + semver "^7.3.5" + +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -1960,6 +2354,17 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" +eslint-template-visitor@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/eslint-template-visitor/-/eslint-template-visitor-2.3.2.tgz#b52f96ff311e773a345d79053ccc78275bbc463d" + integrity sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA== + dependencies: + "@babel/core" "^7.12.16" + "@babel/eslint-parser" "^7.12.16" + eslint-visitor-keys "^2.0.0" + esquery "^1.3.1" + multimap "^1.1.0" + eslint-utils@^2.0.0, eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" @@ -1984,13 +2389,19 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== -eslint@^7.15.0: - version "7.29.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.29.0.tgz#ee2a7648f2e729485e4d0bd6383ec1deabc8b3c0" - integrity sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA== +eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^7.31.0: + version "7.31.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.31.0.tgz#f972b539424bf2604907a970860732c5d99d3aca" + integrity sha512-vafgJpSh2ia8tnTkNUkwxGmnumgckLh5aAbLa1xRmIn9+owi8qBNGKL+B881kNKNTy7FFqTEkpNkUvmw0n6PkA== dependencies: "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.2" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" ajv "^6.10.0" chalk "^4.0.0" cross-spawn "^7.0.2" @@ -2043,7 +2454,7 @@ esprima@^4.0.0, esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: +esquery@^1.3.1, esquery@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== @@ -2407,7 +2818,7 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gensync@^1.0.0-beta.1: +gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== @@ -2417,16 +2828,7 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" - integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-intrinsic@^1.0.2: +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -2524,18 +2926,6 @@ globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" -globby@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - globby@^11.0.3: version "11.0.4" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" @@ -2583,6 +2973,11 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2598,6 +2993,11 @@ has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -2708,7 +3108,7 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.4: +ignore@^5.0.5, ignore@^5.1.1, ignore@^5.1.4: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== @@ -2776,11 +3176,29 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-bigint@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -2788,16 +3206,35 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +is-boolean-object@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== + dependencies: + call-bind "^1.0.2" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-builtin-module@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" + integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== + dependencies: + builtin-modules "^3.0.0" + is-callable@^1.1.4, is-callable@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== +is-callable@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -2812,6 +3249,13 @@ is-core-module@^2.1.0: dependencies: has "^1.0.3" +is-core-module@^2.2.0, is-core-module@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" + integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -2831,6 +3275,11 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" @@ -2912,6 +3361,11 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -2922,6 +3376,11 @@ is-negative-zero@^2.0.1: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== +is-number-object@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== + is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -2987,6 +3446,14 @@ is-regex@^1.1.1: dependencies: has-symbols "^1.0.1" +is-regex@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.2" + is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" @@ -3007,6 +3474,11 @@ is-string@^1.0.5: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +is-string@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -3014,6 +3486,13 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" +is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -3031,7 +3510,7 @@ is-wsl@^2.2.0: dependencies: is-docker "^2.0.0" -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -3498,10 +3977,10 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdoctypeparser@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz#8c97e2fb69315eb274b0f01377eaa5c940bd7b26" - integrity sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw== +jsdoc-type-pratt-parser@1.0.4, jsdoc-type-pratt-parser@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.0.4.tgz#5750d2d32ffb001866537d3baaedea7cf84c7036" + integrity sha512-jzmW9gokeq9+bHPDR1nCeidMyFUikdZlbOhKzh9+/nJqB75XhpNKec1/UuxW5c4+O+Pi31Gc/dCboyfSm/pSpQ== jsdom@^16.4.0: version "16.4.0" @@ -3694,16 +4173,6 @@ listr2@^3.2.2: rxjs "^6.6.3" through "^2.3.8" -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -3754,7 +4223,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: +lodash@^4.17.19, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -3826,6 +4295,22 @@ math-random@^1.0.1: resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== +mdast-util-from-markdown@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" + integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-string "^2.0.0" + micromark "~2.11.0" + parse-entities "^2.0.0" + unist-util-stringify-position "^2.0.0" + +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -3836,6 +4321,14 @@ merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +micromark@~2.11.0: + version "2.11.4" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" + integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + micromatch@^2.1.5: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -3941,6 +4434,16 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multimap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multimap/-/multimap-1.1.0.tgz#5263febc085a1791c33b59bb3afc6a76a2a10ca8" + integrity sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw== + nan@^2.12.1: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" @@ -4005,6 +4508,11 @@ node-notifier@^8.0.0: uuid "^8.3.0" which "^2.0.2" +node-releases@^1.1.71: + version "1.1.73" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" + integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== + normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -4060,6 +4568,11 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@^1.10.3: + version "1.11.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" + integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== + object-inspect@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" @@ -4102,15 +4615,14 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" - integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== +object.values@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" + integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - has "^1.0.3" + es-abstract "^1.18.2" once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" @@ -4212,6 +4724,18 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + parse-github-url@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" @@ -4227,13 +4751,6 @@ parse-glob@^3.0.4: is-extglob "^1.0.0" is-glob "^2.0.0" -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -4292,13 +4809,6 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -4321,11 +4831,6 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" @@ -4352,6 +4857,13 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + please-upgrade-node@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" @@ -4359,6 +4871,11 @@ please-upgrade-node@^3.2.0: dependencies: semver-compare "^1.0.0" +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -4456,13 +4973,13 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= dependencies: find-up "^2.0.0" - read-pkg "^2.0.0" + read-pkg "^3.0.0" read-pkg-up@^7.0.1: version "7.0.1" @@ -4473,15 +4990,6 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -4550,15 +5058,20 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp-tree@^0.1.20, regexp-tree@^0.1.23, regexp-tree@~0.1.1: + version "0.1.23" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.23.tgz#8a8ce1cc5e971acef62213a7ecdb1f6e18a1f1b2" + integrity sha512-+7HWfb4Bvu8Rs2eQTUIpX9I/PlQkYOuTNbRpKLJlQpSgwSkzFYh+pUj0gtvglnOZLKB6YgnIgRuJ2/IlpL48qw== + regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== -regextras@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.7.1.tgz#be95719d5f43f9ef0b9fa07ad89b7c606995a3b2" - integrity sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w== +regextras@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.8.0.tgz#ec0f99853d4912839321172f608b544814b02217" + integrity sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ== remove-trailing-separator@^1.0.1: version "1.1.0" @@ -4632,6 +5145,11 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +reserved-words@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" + integrity sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE= + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -4662,6 +5180,14 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13. is-core-module "^2.1.0" path-parse "^1.0.6" +resolve@^1.10.1, resolve@^1.20.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -4738,6 +5264,13 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" +safe-regex@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2" + integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== + dependencies: + regexp-tree "~0.1.1" + safe-resolve@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/safe-resolve/-/safe-resolve-1.0.0.tgz#fe34f8d29d7a3becfd249d0aa8a799b5c3cf6559" @@ -4780,14 +5313,14 @@ semver-compare@^1.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: +semver@7.x, semver@^7.2.1, semver@^7.3.2: version "7.3.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -5066,7 +5599,7 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimend@^1.0.3: +string.prototype.trimend@^1.0.3, string.prototype.trimend@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== @@ -5074,7 +5607,7 @@ string.prototype.trimend@^1.0.3: call-bind "^1.0.2" define-properties "^1.1.3" -string.prototype.trimstart@^1.0.3: +string.prototype.trimstart@^1.0.3, string.prototype.trimstart@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== @@ -5327,13 +5860,6 @@ tslib@^2.0.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== -tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== - dependencies: - tslib "^1.8.1" - tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -5409,6 +5935,16 @@ uglify-js@^3.1.4: resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.1.tgz#78307f539f7b9ca5557babb186ea78ad30cc0375" integrity sha512-o8lHP20KjIiQe5b/67Rh68xEGRrc2SRsCuuoYclXXoC74AfSRGblU1HKzJWH3HxPZ+Ort85fWHpSX7KwBUC9CQ== +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -5419,6 +5955,13 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== + dependencies: + "@types/unist" "^2.0.2" + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -5547,6 +6090,17 @@ whatwg-url@^8.0.0: tr46 "^2.0.2" webidl-conversions "^6.1.0" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" From bd8d5509ebcba8c867abe480b915f6a948360e9e Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Fri, 23 Jul 2021 05:34:05 +1200 Subject: [PATCH 04/20] chore: use the default linting output format --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 92bc0fb82..2cea2d66b 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "compile": "rollup -c", "compile-tests": "tsc -p tests/tsconfig.json && cpx ./tests/helpers/tsconfig.json ./build/tests/helpers/", "prelint": "yarn build && yarn link && yarn link 'eslint-plugin-functional'", - "lint": "eslint . -f visualstudio", + "lint": "eslint .", "lint-fix": "yarn lint --fix", "test": "jest --testPathIgnorePatterns _work.test", "test-compiled": "cross-env USE_COMPLIED=1 yarn test", From d01bc54103bd4c31dd3103cd5abacb567f37b981 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Fri, 23 Jul 2021 07:50:19 +1200 Subject: [PATCH 05/20] style: update file linting --- package.json | 1 + rollup.config.js | 2 +- src/common/ignore-options.ts | 27 ++-- src/configs/all.ts | 2 +- src/configs/currying.ts | 2 +- src/configs/external-recommended.ts | 2 +- src/configs/functional-lite.ts | 2 +- src/configs/functional.ts | 4 +- src/configs/no-exceptions.ts | 2 +- src/configs/no-mutations.ts | 2 +- src/configs/no-object-orientation.ts | 2 +- src/configs/no-statements.ts | 2 +- src/configs/stylistic.ts | 2 +- src/index.ts | 5 +- src/rules/functional-parameters.ts | 37 ++--- src/rules/immutable-data.ts | 55 +++---- src/rules/no-class.ts | 14 +- src/rules/no-conditional-statement.ts | 151 ++++++++---------- src/rules/no-expression-statement.ts | 18 +-- src/rules/no-let.ts | 18 +-- src/rules/no-loop-statement.ts | 18 +-- src/rules/no-method-signature.ts | 14 +- src/rules/no-mixed-type.ts | 16 +- src/rules/no-promise-reject.ts | 12 +- src/rules/no-return-void.ts | 14 +- src/rules/no-this-expression.ts | 14 +- src/rules/no-throw-statement.ts | 14 +- src/rules/no-try-statement.ts | 12 +- src/rules/prefer-readonly-type.ts | 155 +++++++++---------- src/rules/prefer-tacit.ts | 97 +++++------- src/rules/prefer-type-literal.ts | 18 +-- src/util/conditional-imports/tsutils.ts | 4 +- src/util/conditional-imports/typescript.ts | 4 +- src/util/misc.ts | 6 +- src/util/rule.ts | 45 +++--- src/util/tree.ts | 7 +- src/util/typeguard.ts | 25 +-- tests/common/ignore-options.test.ts | 14 +- tests/configs.test.ts | 6 +- tests/helpers/configs.ts | 4 +- tests/helpers/util.ts | 9 +- tests/index.test.ts | 4 +- tests/rules/functional-parameters.test.ts | 4 +- tests/rules/immutable-data.test.ts | 4 +- tests/rules/no-class.test.ts | 4 +- tests/rules/no-conditional-statement.test.ts | 4 +- tests/rules/no-expression-statement.test.ts | 4 +- tests/rules/no-let.test.ts | 4 +- tests/rules/no-loop-statement.test.ts | 4 +- tests/rules/no-method-signature.test.ts | 4 +- tests/rules/no-mixed-type.test.ts | 4 +- tests/rules/no-promise-reject.test.ts | 4 +- tests/rules/no-return-void.test.ts | 4 +- tests/rules/no-this-expression.test.ts | 4 +- tests/rules/no-throw-statement.test.ts | 4 +- tests/rules/no-try-statement.test.ts | 4 +- tests/rules/prefer-readonly-type.test.ts | 4 +- tests/rules/prefer-tacit.test.ts | 4 +- tests/rules/prefer-type-literal.test.ts | 4 +- yarn.lock | 19 +++ 60 files changed, 413 insertions(+), 536 deletions(-) diff --git a/package.json b/package.json index 2cea2d66b..3262480aa 100644 --- a/package.json +++ b/package.json @@ -98,6 +98,7 @@ "eslint-plugin-promise": "^5.1.0", "eslint-plugin-sonarjs": "^0.9.1", "eslint-plugin-unicorn": "^34.0.1", + "espree": "^8.0.0", "glob": "^7.1.6", "husky": "^6.0.0", "jest": "^26.6.3", diff --git a/rollup.config.js b/rollup.config.js index 550125e99..5681da009 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -4,9 +4,9 @@ // @ts-check import rollupPluginCommonjs from "@rollup/plugin-commonjs"; +import rollupPluginJSON from "@rollup/plugin-json"; import rollupPluginNodeResolve from "@rollup/plugin-node-resolve"; import rollupPluginTypescript from "@rollup/plugin-typescript"; -import rollupPluginJSON from "@rollup/plugin-json"; import rollupPluginAutoExternal from "rollup-plugin-auto-external"; const common = { diff --git a/src/common/ignore-options.ts b/src/common/ignore-options.ts index f6cac0615..d6b8bff8c 100644 --- a/src/common/ignore-options.ts +++ b/src/common/ignore-options.ts @@ -1,8 +1,8 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; import escapeRegExp from "escape-string-regexp"; -import { JSONSchema4 } from "json-schema"; +import type { JSONSchema4 } from "json-schema"; -import { BaseOptions, RuleContext } from "../util/rule"; +import type { BaseOptions, RuleContext } from "../util/rule"; import { inClass, inFunctionBody, inInterface } from "../util/tree"; import { hasID, @@ -38,7 +38,7 @@ export const allowLocalMutationOptionSchema: JSONSchema4 = { }; export type IgnorePatternOption = { - readonly ignorePattern?: string | ReadonlyArray; + readonly ignorePattern?: ReadonlyArray | string; }; export const ignorePatternOptionSchema: JSONSchema4 = { @@ -55,7 +55,7 @@ export const ignorePatternOptionSchema: JSONSchema4 = { }; export type IgnoreAccessorPatternOption = { - readonly ignoreAccessorPattern?: string | ReadonlyArray; + readonly ignoreAccessorPattern?: ReadonlyArray | string; }; export const ignoreAccessorPatternOptionSchema: JSONSchema4 = { @@ -111,7 +111,7 @@ export const ignoreInterfaceOptionSchema: JSONSchema4 = { * Get the identifier text of the given node. */ function getNodeIdentifierText( - node: TSESTree.Node | undefined | null, + node: TSESTree.Node | null | undefined, context: RuleContext ): string | undefined { return node === undefined || node === null @@ -175,7 +175,7 @@ function shouldIgnoreViaPattern( : [ignorePattern as string]; // One or more patterns match? - return patterns.some((pattern) => new RegExp(pattern).test(text)); + return patterns.some((pattern) => new RegExp(pattern, "u").test(text)); } /** @@ -214,9 +214,10 @@ function accessorPatternMatch( allowExtra ) : // Text matches pattern? - new RegExp(`^${escapeRegExp(pattern).replace(/\\\*/g, ".*")}$`).test( - textParts[0] - ) && + new RegExp( + `^${escapeRegExp(pattern).replace(/\\\*/gu, ".*")}$`, + "u" + ).test(textParts[0]) && accessorPatternMatch( remainingPatternParts, textParts.slice(1), @@ -256,11 +257,11 @@ export function shouldIgnore( node: TSESTree.Node, context: RuleContext, options: Partial< - IgnoreAccessorPatternOption & + AllowLocalMutationOption & + IgnoreAccessorPatternOption & IgnoreClassOption & IgnoreInterfaceOption & - IgnorePatternOption & - AllowLocalMutationOption + IgnorePatternOption > ): boolean { return ( diff --git a/src/configs/all.ts b/src/configs/all.ts index c710a989c..745d5ce3a 100644 --- a/src/configs/all.ts +++ b/src/configs/all.ts @@ -1,4 +1,4 @@ -import { Linter } from "eslint"; +import type { Linter } from "eslint"; const config: Linter.Config = { rules: { diff --git a/src/configs/currying.ts b/src/configs/currying.ts index 2d9f559bc..856c0b2f4 100644 --- a/src/configs/currying.ts +++ b/src/configs/currying.ts @@ -1,4 +1,4 @@ -import { Linter } from "eslint"; +import type { Linter } from "eslint"; const config: Linter.Config = { rules: { diff --git a/src/configs/external-recommended.ts b/src/configs/external-recommended.ts index 03b8c9733..aa35238b9 100644 --- a/src/configs/external-recommended.ts +++ b/src/configs/external-recommended.ts @@ -1,4 +1,4 @@ -import { Linter } from "eslint"; +import type { Linter } from "eslint"; const config: Linter.Config = { rules: { diff --git a/src/configs/functional-lite.ts b/src/configs/functional-lite.ts index 0ba1e7292..6ca2b0197 100644 --- a/src/configs/functional-lite.ts +++ b/src/configs/functional-lite.ts @@ -1,5 +1,5 @@ import deepMerge from "deepmerge"; -import { Linter } from "eslint"; +import type { Linter } from "eslint"; import functional from "./functional"; diff --git a/src/configs/functional.ts b/src/configs/functional.ts index 4f688c4c7..2ad995510 100644 --- a/src/configs/functional.ts +++ b/src/configs/functional.ts @@ -1,9 +1,9 @@ import { all as deepMerge } from "deepmerge"; -import { Linter } from "eslint"; +import type { Linter } from "eslint"; import currying from "./currying"; -import noMutations from "./no-mutations"; import noExceptions from "./no-exceptions"; +import noMutations from "./no-mutations"; import noObjectOrientation from "./no-object-orientation"; import noStatements from "./no-statements"; diff --git a/src/configs/no-exceptions.ts b/src/configs/no-exceptions.ts index a7d322d60..bbac17993 100644 --- a/src/configs/no-exceptions.ts +++ b/src/configs/no-exceptions.ts @@ -1,4 +1,4 @@ -import { Linter } from "eslint"; +import type { Linter } from "eslint"; const config: Linter.Config = { rules: { diff --git a/src/configs/no-mutations.ts b/src/configs/no-mutations.ts index 5640ced9d..bc5cc4600 100644 --- a/src/configs/no-mutations.ts +++ b/src/configs/no-mutations.ts @@ -1,4 +1,4 @@ -import { Linter } from "eslint"; +import type { Linter } from "eslint"; const config: Linter.Config = { rules: { diff --git a/src/configs/no-object-orientation.ts b/src/configs/no-object-orientation.ts index 80d083b77..8f7941f65 100644 --- a/src/configs/no-object-orientation.ts +++ b/src/configs/no-object-orientation.ts @@ -1,4 +1,4 @@ -import { Linter } from "eslint"; +import type { Linter } from "eslint"; const config: Linter.Config = { rules: { diff --git a/src/configs/no-statements.ts b/src/configs/no-statements.ts index 887b3fabe..6f4d55487 100644 --- a/src/configs/no-statements.ts +++ b/src/configs/no-statements.ts @@ -1,4 +1,4 @@ -import { Linter } from "eslint"; +import type { Linter } from "eslint"; const config: Linter.Config = { rules: { diff --git a/src/configs/stylistic.ts b/src/configs/stylistic.ts index e92acac1a..0c30872c5 100644 --- a/src/configs/stylistic.ts +++ b/src/configs/stylistic.ts @@ -1,4 +1,4 @@ -import { Linter } from "eslint"; +import type { Linter } from "eslint"; const config: Linter.Config = { rules: { diff --git a/src/index.ts b/src/index.ts index 4d9015644..286e8873a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,16 +1,15 @@ -import { Linter, Rule } from "eslint"; +import type { Linter, Rule } from "eslint"; import all from "./configs/all"; import currying from "./configs/currying"; import externalRecommended from "./configs/external-recommended"; import functional from "./configs/functional"; import functionalLite from "./configs/functional-lite"; -import noMutations from "./configs/no-mutations"; import noExceptions from "./configs/no-exceptions"; +import noMutations from "./configs/no-mutations"; import noObjectOrientation from "./configs/no-object-orientation"; import noStatements from "./configs/no-statements"; import stylistic from "./configs/stylistic"; - import { rules } from "./rules"; type EslintPluginConfig = { diff --git a/src/rules/functional-parameters.ts b/src/rules/functional-parameters.ts index 30cd67052..2e1a41cf6 100644 --- a/src/rules/functional-parameters.ts +++ b/src/rules/functional-parameters.ts @@ -1,17 +1,11 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; import { all as deepMerge } from "deepmerge"; -import { JSONSchema4 } from "json-schema"; +import type { JSONSchema4 } from "json-schema"; -import { - IgnorePatternOption, - ignorePatternOptionSchema, -} from "../common/ignore-options"; -import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { IgnorePatternOption } from "../common/ignore-options"; +import { ignorePatternOptionSchema } from "../common/ignore-options"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; import { isIIFE, isPropertyAccess, isPropertyName } from "../util/tree"; import { isRestElement } from "../util/typeguard"; @@ -25,8 +19,8 @@ type Options = IgnorePatternOption & { readonly allowRestParameter: boolean; readonly allowArgumentsKeyword: boolean; readonly enforceParameterCount: - | false | ParameterCountOptions + | false | { readonly count: ParameterCountOptions; readonly ignoreIIFE: boolean; @@ -115,9 +109,9 @@ const meta: RuleMetaData = { function getRestParamViolations( allowRestParameter: Options["allowRestParameter"], node: + | TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration | TSESTree.FunctionExpression - | TSESTree.ArrowFunctionExpression ): RuleResult["descriptors"] { return !allowRestParameter && node.params.length > 0 && @@ -137,9 +131,9 @@ function getRestParamViolations( function getParamCountViolations( enforceParameterCount: Options["enforceParameterCount"], node: + | TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration | TSESTree.FunctionExpression - | TSESTree.ArrowFunctionExpression ): RuleResult["descriptors"] { if ( enforceParameterCount === false || @@ -149,7 +143,8 @@ function getParamCountViolations( isIIFE(node)) ) { return []; - } else if ( + } + if ( node.params.length === 0 && (enforceParameterCount === "atLeastOne" || (typeof enforceParameterCount === "object" && @@ -161,7 +156,8 @@ function getParamCountViolations( messageId: "paramCountAtLeastOne", }, ]; - } else if ( + } + if ( node.params.length !== 1 && (enforceParameterCount === "exactlyOne" || (typeof enforceParameterCount === "object" && @@ -173,9 +169,8 @@ function getParamCountViolations( messageId: "paramCountExactlyOne", }, ]; - } else { - return []; } + return []; } /** @@ -183,9 +178,9 @@ function getParamCountViolations( */ function checkFunction( node: + | TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration - | TSESTree.FunctionExpression - | TSESTree.ArrowFunctionExpression, + | TSESTree.FunctionExpression, context: RuleContext, options: Options ): RuleResult { diff --git a/src/rules/immutable-data.ts b/src/rules/immutable-data.ts index 67fedd02b..bdbc84453 100644 --- a/src/rules/immutable-data.ts +++ b/src/rules/immutable-data.ts @@ -1,24 +1,21 @@ -import { IgnoreClassOption } from "./../common/ignore-options"; -import { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; import { all as deepMerge } from "deepmerge"; -import { JSONSchema4 } from "json-schema"; +import type { JSONSchema4 } from "json-schema"; -import { +import type { IgnoreAccessorPatternOption, + IgnorePatternOption, + IgnoreClassOption, +} from "../common/ignore-options"; +import { ignoreAccessorPatternOptionSchema, ignoreClassOptionSchema, - IgnorePatternOption, ignorePatternOptionSchema, shouldIgnore, } from "../common/ignore-options"; import { isExpected } from "../util/misc"; -import { - createRule, - getTypeOfNode, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule, getTypeOfNode } from "../util/rule"; import { inConstructor } from "../util/tree"; import { isArrayConstructorType, @@ -35,9 +32,9 @@ import { export const name = "immutable-data" as const; // The options this rule can take. -type Options = IgnorePatternOption & +type Options = IgnoreAccessorPatternOption & IgnoreClassOption & - IgnoreAccessorPatternOption & { + IgnorePatternOption & { readonly ignoreImmediateMutation: boolean; readonly assumeTypes: | boolean @@ -118,7 +115,7 @@ const meta: RuleMetaData = { * * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype#Methods#Mutator_methods */ -const arrayMutatorMethods = [ +const arrayMutatorMethods = new Set([ "copyWithin", "fill", "pop", @@ -128,7 +125,7 @@ const arrayMutatorMethods = [ "sort", "splice", "unshift", -] as const; +]); /** * Array methods that return a new object (or array) without mutating the original. @@ -143,26 +140,26 @@ const arrayNewObjectReturningMethods = [ "map", "reduce", "reduceRight", -] as const; +]; /** * Array constructor functions that create a new array. * * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Methods */ -const arrayConstructorFunctions = ["from", "of"] as const; +const arrayConstructorFunctions = ["from", "of"]; /** * Object constructor functions that mutate an object. * * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object#Methods_of_the_Object_constructor */ -const objectConstructorMutatorFunctions = [ +const objectConstructorMutatorFunctions = new Set([ "assign", "defineProperties", "defineProperty", "setPrototypeOf", -] as const; +]); /** * Check if the given assignment expression violates this rule. @@ -281,14 +278,7 @@ function checkCallExpression( ? // Potential array mutation? // Check if allowed here - this cannot be automatically checked beforehand. !shouldIgnore(node.callee.object, context, options) && - arrayMutatorMethods.some( - (m) => - m === - ( - (node.callee as TSESTree.MemberExpression) - .property as TSESTree.Identifier - ).name - ) && + arrayMutatorMethods.has(node.callee.property.name) && (!options.ignoreImmediateMutation || !isInChainCallAndFollowsNew( node.callee, @@ -302,14 +292,7 @@ function checkCallExpression( ) ? [{ node, messageId: "array" }] : // Potential non-array object mutation (ex. Object.assign on identifier)? - objectConstructorMutatorFunctions.some( - (m) => - m === - ( - (node.callee as TSESTree.MemberExpression) - .property as TSESTree.Identifier - ).name - ) && + objectConstructorMutatorFunctions.has(node.callee.property.name) && node.arguments.length >= 2 && (isIdentifier(node.arguments[0]) || isMemberExpression(node.arguments[0])) && diff --git a/src/rules/no-class.ts b/src/rules/no-class.ts index 58e43c95c..25abf1bf2 100644 --- a/src/rules/no-class.ts +++ b/src/rules/no-class.ts @@ -1,12 +1,8 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; - -import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { JSONSchema4 } from "json-schema"; + +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; // The name of this rule. export const name = "no-class" as const; diff --git a/src/rules/no-conditional-statement.ts b/src/rules/no-conditional-statement.ts index 339a94eea..4780e2cef 100644 --- a/src/rules/no-conditional-statement.ts +++ b/src/rules/no-conditional-statement.ts @@ -1,16 +1,10 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; -import { Type } from "typescript"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { JSONSchema4 } from "json-schema"; +import type { Type } from "typescript"; import tsutils from "../util/conditional-imports/tsutils"; - -import { - createRule, - getTypeOfNode, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule, getTypeOfNode } from "../util/rule"; import { isBlockStatement, isExpressionStatement, @@ -78,6 +72,38 @@ const meta: RuleMetaData = { schema, }; +/** + * Report the given node as an incomplete branch violation. + * + * @param node - The node to report. + * @returns A violation rule result. + */ +function incompleteBranchViolation( + node: TSESTree.Node +): RuleResult["descriptors"] { + return [{ node, messageId: "incompleteBranch" }]; +} + +/** + * Get a function that tests if the given statement is never returning. + */ +function getIsNeverExpressions( + context: RuleContext +) { + return (statement: TSESTree.Statement) => { + if (isExpressionStatement(statement)) { + const expressionStatementType = getTypeOfNode( + statement.expression, + context + ); + return ( + expressionStatementType !== null && isNeverType(expressionStatementType) + ); + } + return false; + }; +} + /** * Get all of the violations in the given if statement assuming if statements * are allowed. @@ -132,21 +158,8 @@ function getIfBranchViolations( return false; } - if ( - branch.body.some((statement) => { - if (isExpressionStatement(statement)) { - const expressionStatementType = getTypeOfNode( - statement.expression, - context - ); - return ( - expressionStatementType !== null && - isNeverType(expressionStatementType) - ); - } - return false; - }) - ) { + const isNeverExpressions = getIsNeverExpressions(context); + if (branch.body.some(isNeverExpressions)) { return false; } } @@ -155,9 +168,7 @@ function getIfBranchViolations( } ); - return violations.flatMap((node) => [ - { node, messageId: "incompleteBranch" }, - ]); + return violations.flatMap(incompleteBranchViolation); } /** @@ -168,6 +179,8 @@ function getSwitchViolations( node: TSESTree.SwitchStatement, context: RuleContext ): RuleResult["descriptors"] { + const isNeverExpressions = getIsNeverExpressions(context); + const violations = node.cases.filter((branch) => { if (branch.consequent.length === 0) { return false; @@ -193,49 +206,19 @@ function getSwitchViolations( return false; } - if ( - lastBlock.body.some((statement) => { - if (isExpressionStatement(statement)) { - const expressionStatementType = getTypeOfNode( - statement.expression, - context - ); - return ( - expressionStatementType !== null && - isNeverType(expressionStatementType) - ); - } - return false; - }) - ) { + if (lastBlock.body.some(isNeverExpressions)) { return false; } } - if ( - branch.consequent.some((statement) => { - if (isExpressionStatement(statement)) { - const expressionStatementType = getTypeOfNode( - statement.expression, - context - ); - return ( - expressionStatementType !== null && - isNeverType(expressionStatementType) - ); - } - return false; - }) - ) { + if (branch.consequent.some(isNeverExpressions)) { return false; } return true; }); - return violations.flatMap((node) => [ - { node, messageId: "incompleteBranch" }, - ]); + return violations.flatMap(incompleteBranchViolation); } /** @@ -254,22 +237,20 @@ function isExhaustiveTypeSwitchViolation( ): boolean { if (tsutils === undefined) { return true; - } else { - const discriminantType = getTypeOfNode(node.discriminant, context); + } - if (discriminantType === null || !discriminantType.isUnion()) { - return true; - } else { - const unionTypes = tsutils.unionTypeParts(discriminantType); - const caseTypes = node.cases.reduce>( - (types, c) => new Set([...types, getTypeOfNode(c.test!, context)!]), - new Set() - ); - return ( - unionTypes.filter((unionType) => !caseTypes.has(unionType)).length !== 0 - ); - } + const discriminantType = getTypeOfNode(node.discriminant, context); + if (discriminantType === null || !discriminantType.isUnion()) { + return true; } + + const unionTypes = tsutils.unionTypeParts(discriminantType); + const caseTypes = node.cases.reduce>( + (types, c) => new Set([...types, getTypeOfNode(c.test!, context)!]), + new Set() + ); + + return unionTypes.some((unionType) => !caseTypes.has(unionType)); } /** @@ -299,13 +280,14 @@ function checkIfStatement( ): RuleResult { return { context, - descriptors: options.allowReturningBranches - ? options.allowReturningBranches === "ifExhaustive" + descriptors: + options.allowReturningBranches === false + ? [{ node, messageId: "unexpectedIf" }] + : options.allowReturningBranches === "ifExhaustive" ? isExhaustiveIfViolation(node) ? [{ node, messageId: "incompleteIf" }] : getIfBranchViolations(node, context) - : getIfBranchViolations(node, context) - : [{ node, messageId: "unexpectedIf" }], + : getIfBranchViolations(node, context), }; } @@ -319,13 +301,14 @@ function checkSwitchStatement( ): RuleResult { return { context, - descriptors: options.allowReturningBranches - ? options.allowReturningBranches === "ifExhaustive" + descriptors: + options.allowReturningBranches === false + ? [{ node, messageId: "unexpectedSwitch" }] + : options.allowReturningBranches === "ifExhaustive" ? isExhaustiveSwitchViolation(node, context) ? [{ node, messageId: "incompleteSwitch" }] : getSwitchViolations(node, context) - : getSwitchViolations(node, context) - : [{ node, messageId: "unexpectedSwitch" }], + : getSwitchViolations(node, context), }; } diff --git a/src/rules/no-expression-statement.ts b/src/rules/no-expression-statement.ts index d4e3ffa05..11f84c86e 100644 --- a/src/rules/no-expression-statement.ts +++ b/src/rules/no-expression-statement.ts @@ -1,17 +1,11 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { JSONSchema4 } from "json-schema"; -import { - IgnorePatternOption, - ignorePatternOptionSchema, -} from "../common/ignore-options"; +import type { IgnorePatternOption } from "../common/ignore-options"; +import { ignorePatternOptionSchema } from "../common/ignore-options"; import { isDirectivePrologue } from "../util/misc"; -import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; // The name of this rule. export const name = "no-expression-statement" as const; diff --git a/src/rules/no-let.ts b/src/rules/no-let.ts index 3f74e3371..5271649ba 100644 --- a/src/rules/no-let.ts +++ b/src/rules/no-let.ts @@ -1,19 +1,17 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; import { all as deepMerge } from "deepmerge"; -import { JSONSchema4 } from "json-schema"; +import type { JSONSchema4 } from "json-schema"; -import { +import type { AllowLocalMutationOption, - allowLocalMutationOptionSchema, IgnorePatternOption, - ignorePatternOptionSchema, } from "../common/ignore-options"; import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; + allowLocalMutationOptionSchema, + ignorePatternOptionSchema, +} from "../common/ignore-options"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; // The name of this rule. export const name = "no-let" as const; diff --git a/src/rules/no-loop-statement.ts b/src/rules/no-loop-statement.ts index 3158c37ca..0a92a2922 100644 --- a/src/rules/no-loop-statement.ts +++ b/src/rules/no-loop-statement.ts @@ -1,12 +1,8 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { JSONSchema4 } from "json-schema"; -import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; // The name of this rule. export const name = "no-loop-statement" as const; @@ -42,11 +38,11 @@ const meta: RuleMetaData = { */ function checkLoop( node: - | TSESTree.ForStatement + | TSESTree.DoWhileStatement | TSESTree.ForInStatement | TSESTree.ForOfStatement - | TSESTree.WhileStatement - | TSESTree.DoWhileStatement, + | TSESTree.ForStatement + | TSESTree.WhileStatement, context: RuleContext ): RuleResult { // All loops violate this rule. diff --git a/src/rules/no-method-signature.ts b/src/rules/no-method-signature.ts index 5a9edd21a..bc738a2a2 100644 --- a/src/rules/no-method-signature.ts +++ b/src/rules/no-method-signature.ts @@ -1,12 +1,8 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; - -import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { JSONSchema4 } from "json-schema"; + +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; // The name of this rule. export const name = "no-method-signature" as const; diff --git a/src/rules/no-mixed-type.ts b/src/rules/no-mixed-type.ts index 1728e7e9d..983524f6f 100644 --- a/src/rules/no-mixed-type.ts +++ b/src/rules/no-mixed-type.ts @@ -1,15 +1,9 @@ -import { - AST_NODE_TYPES, - TSESTree, -} from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import { AST_NODE_TYPES } from "@typescript-eslint/experimental-utils"; +import type { JSONSchema4 } from "json-schema"; -import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; import { isTSPropertySignature, isTSTypeLiteral } from "../util/typeguard"; // The name of this rule. diff --git a/src/rules/no-promise-reject.ts b/src/rules/no-promise-reject.ts index 1a93b5021..1bf35308c 100644 --- a/src/rules/no-promise-reject.ts +++ b/src/rules/no-promise-reject.ts @@ -1,12 +1,8 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { JSONSchema4 } from "json-schema"; -import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; import { isIdentifier, isMemberExpression } from "../util/typeguard"; // The name of this rule. diff --git a/src/rules/no-return-void.ts b/src/rules/no-return-void.ts index eba520cf2..becb8065a 100644 --- a/src/rules/no-return-void.ts +++ b/src/rules/no-return-void.ts @@ -1,12 +1,8 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { JSONSchema4 } from "json-schema"; -import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; import { isTSNullKeyword, isTSUndefinedKeyword, @@ -66,9 +62,9 @@ const meta: RuleMetaData = { */ function checkFunction( node: + | TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration | TSESTree.FunctionExpression - | TSESTree.ArrowFunctionExpression | TSESTree.TSFunctionType, context: RuleContext, options: Options diff --git a/src/rules/no-this-expression.ts b/src/rules/no-this-expression.ts index 6ad1509c7..c88c57294 100644 --- a/src/rules/no-this-expression.ts +++ b/src/rules/no-this-expression.ts @@ -1,12 +1,8 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; - -import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { JSONSchema4 } from "json-schema"; + +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; // The name of this rule. export const name = "no-this-expression" as const; diff --git a/src/rules/no-throw-statement.ts b/src/rules/no-throw-statement.ts index ac177cf39..a519925bb 100644 --- a/src/rules/no-throw-statement.ts +++ b/src/rules/no-throw-statement.ts @@ -1,12 +1,8 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; - -import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { JSONSchema4 } from "json-schema"; + +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; // The name of this rule. export const name = "no-throw-statement" as const; diff --git a/src/rules/no-try-statement.ts b/src/rules/no-try-statement.ts index 331c4361f..b229011e5 100644 --- a/src/rules/no-try-statement.ts +++ b/src/rules/no-try-statement.ts @@ -1,12 +1,8 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { JSONSchema4 } from "json-schema"; -import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; // The name of this rule. export const name = "no-try-statement" as const; diff --git a/src/rules/prefer-readonly-type.ts b/src/rules/prefer-readonly-type.ts index a32a93b49..508a42d28 100644 --- a/src/rules/prefer-readonly-type.ts +++ b/src/rules/prefer-readonly-type.ts @@ -1,24 +1,21 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; import { all as deepMerge } from "deepmerge"; -import { JSONSchema4 } from "json-schema"; +import type { JSONSchema4 } from "json-schema"; -import { +import type { AllowLocalMutationOption, - allowLocalMutationOptionSchema, IgnoreClassOption, - ignoreClassOptionSchema, IgnoreInterfaceOption, - ignoreInterfaceOptionSchema, IgnorePatternOption, - ignorePatternOptionSchema, } from "../common/ignore-options"; import { - createRule, - getTypeOfNode, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; + allowLocalMutationOptionSchema, + ignoreClassOptionSchema, + ignoreInterfaceOptionSchema, + ignorePatternOptionSchema, +} from "../common/ignore-options"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule, getTypeOfNode } from "../util/rule"; import { isInReturnType } from "../util/tree"; import { isArrayType, @@ -38,9 +35,9 @@ export const name = "prefer-readonly-type" as const; // The options this rule can take. type Options = AllowLocalMutationOption & - IgnorePatternOption & IgnoreClassOption & - IgnoreInterfaceOption & { + IgnoreInterfaceOption & + IgnorePatternOption & { readonly allowMutableReturnType: boolean; readonly checkImplicit: boolean; readonly ignoreCollections: boolean; @@ -112,7 +109,8 @@ const mutableToImmutableTypes: ReadonlyMap = new Map< ["Set", "ReadonlySet"], ]); const mutableTypeRegex = new RegExp( - `^${Array.from(mutableToImmutableTypes.keys()).join("|")}$` + `^${[...mutableToImmutableTypes.keys()].join("|")}$`, + "u" ); /** @@ -128,30 +126,29 @@ function checkArrayOrTupleType( context, descriptors: [], }; - } else { - return { - context, - descriptors: - (!node.parent || - !isTSTypeOperator(node.parent) || - node.parent.operator !== "readonly") && - (!options.allowMutableReturnType || !isInReturnType(node)) - ? [ - { - node, - messageId: isTSTupleType(node) ? "tuple" : "array", - fix: - node.parent && isTSArrayType(node.parent) - ? (fixer) => [ - fixer.insertTextBefore(node, "(readonly "), - fixer.insertTextAfter(node, ")"), - ] - : (fixer) => fixer.insertTextBefore(node, "readonly "), - }, - ] - : [], - }; } + return { + context, + descriptors: + (node.parent === undefined || + !isTSTypeOperator(node.parent) || + node.parent.operator !== "readonly") && + (!options.allowMutableReturnType || !isInReturnType(node)) + ? [ + { + node, + messageId: isTSTupleType(node) ? "tuple" : "array", + fix: + node.parent !== undefined && isTSArrayType(node.parent) + ? (fixer) => [ + fixer.insertTextBefore(node, "(readonly "), + fixer.insertTextAfter(node, ")"), + ] + : (fixer) => fixer.insertTextBefore(node, "readonly "), + }, + ] + : [], + }; } /** @@ -163,19 +160,20 @@ function checkMappedType( ): RuleResult { return { context, - descriptors: node.readonly - ? [] - : [ - { - node, - messageId: "property", - fix: (fixer) => - fixer.insertTextBeforeRange( - [node.range[0] + 1, node.range[1]], - " readonly" - ), - }, - ], + descriptors: + node.readonly === true || node.readonly === "+" + ? [] + : [ + { + node, + messageId: "property", + fix: (fixer) => + fixer.insertTextBeforeRange( + [node.range[0] + 1, node.range[1]], + " readonly" + ), + }, + ], }; } @@ -190,36 +188,34 @@ function checkTypeReference( if (isIdentifier(node.typeName)) { if ( options.ignoreCollections && - node.typeName.name.match(mutableTypeRegex) + mutableTypeRegex.test(node.typeName.name) ) { return { context, descriptors: [], }; - } else { - const immutableType = mutableToImmutableTypes.get(node.typeName.name); - return { - context, - descriptors: - immutableType && - (!options.allowMutableReturnType || !isInReturnType(node)) - ? [ - { - node, - messageId: "type", - fix: (fixer) => - fixer.replaceText(node.typeName, immutableType), - }, - ] - : [], - }; } - } else { + const immutableType = mutableToImmutableTypes.get(node.typeName.name); return { context, - descriptors: [], + descriptors: + immutableType !== undefined && + immutableType.length > 0 && + (!options.allowMutableReturnType || !isInReturnType(node)) + ? [ + { + node, + messageId: "type", + fix: (fixer) => fixer.replaceText(node.typeName, immutableType), + }, + ] + : [], }; } + return { + context, + descriptors: [], + }; } /** @@ -237,7 +233,7 @@ function checkProperty( return { context, descriptors: - !node.readonly && + node.readonly !== true && (!options.allowMutableReturnType || !isInReturnType(node)) ? [ { @@ -261,10 +257,10 @@ function checkProperty( */ function checkImplicitType( node: - | TSESTree.VariableDeclaration + | TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration | TSESTree.FunctionExpression - | TSESTree.ArrowFunctionExpression, + | TSESTree.VariableDeclaration, context: RuleContext, options: Options ): RuleResult { @@ -315,12 +311,11 @@ function checkImplicitType( : [] ), }; - } else { - return { - context, - descriptors: [], - }; } + return { + context, + descriptors: [], + }; } // Create the rule. diff --git a/src/rules/prefer-tacit.ts b/src/rules/prefer-tacit.ts index 27d6ba585..a8ee8c1bc 100644 --- a/src/rules/prefer-tacit.ts +++ b/src/rules/prefer-tacit.ts @@ -1,20 +1,13 @@ -import { FunctionLikeDeclaration, Type } from "typescript"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { ReportDescriptor } from "@typescript-eslint/experimental-utils/dist/ts-eslint"; import { all as deepMerge } from "deepmerge"; -import { TSESTree } from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; +import type { JSONSchema4 } from "json-schema"; +import type { FunctionLikeDeclaration, Type } from "typescript"; -import { - IgnorePatternOption, - ignorePatternOptionSchema, -} from "../common/ignore-options"; -import { - createRule, - getESTreeNode, - getTypeOfNode, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { IgnorePatternOption } from "../common/ignore-options"; +import { ignorePatternOptionSchema } from "../common/ignore-options"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule, getESTreeNode, getTypeOfNode } from "../util/rule"; import { isBlockStatement, isCallExpression, @@ -23,7 +16,6 @@ import { isReturnStatement, isTSFunctionType, } from "../util/typeguard"; -import { ReportDescriptor } from "@typescript-eslint/experimental-utils/dist/ts-eslint"; // The name of this rule. export const name = "prefer-tacit" as const; @@ -103,32 +95,29 @@ function isCallerViolation( ): boolean { if (calleeType.symbol === undefined) { return false; - } else { - const tsDeclaration = - calleeType.symbol.valueDeclaration ?? calleeType.symbol.declarations?.[0]; - - if (tsDeclaration === undefined) { - return false; - } else { - const declaration = getESTreeNode(tsDeclaration, context); + } + const tsDeclaration = + calleeType.symbol.valueDeclaration ?? calleeType.symbol.declarations?.[0]; - return ( - (declaration !== null && - declaration !== undefined && - (isFunctionLike(declaration) || isTSFunctionType(declaration)) && - declaration.params.length === caller.arguments.length) || - // Check for optional params. - ((tsDeclaration as FunctionLikeDeclaration).parameters !== undefined && - (tsDeclaration as FunctionLikeDeclaration).parameters - .slice(caller.arguments.length) - .every( - (param) => - param.initializer !== undefined || - param.questionToken !== undefined - )) - ); - } + if (tsDeclaration === undefined) { + return false; } + const declaration = getESTreeNode(tsDeclaration, context); + + return ( + (declaration !== null && + declaration !== undefined && + (isFunctionLike(declaration) || isTSFunctionType(declaration)) && + declaration.params.length === caller.arguments.length) || + // Check for optional params. + ((tsDeclaration as FunctionLikeDeclaration).parameters !== undefined && + (tsDeclaration as FunctionLikeDeclaration).parameters + .slice(caller.arguments.length) + .every( + (param) => + param.initializer !== undefined || param.questionToken !== undefined + )) + ); } /** @@ -136,9 +125,9 @@ function isCallerViolation( */ function getCallDescriptors( node: + | TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration - | TSESTree.FunctionExpression - | TSESTree.ArrowFunctionExpression, + | TSESTree.FunctionExpression, context: RuleContext, options: Options, caller: TSESTree.CallExpression @@ -167,7 +156,7 @@ function getCallDescriptors( const calleeName = caller.callee.name; return [ { - node: node, + node, messageId: "generic", fix: // No fixer when assuming types as this is dangerous. @@ -179,12 +168,10 @@ function getCallDescriptors( : (fixer) => fixer.replaceText(node, calleeName), }, ]; - } else { - return []; } - } else { return []; } + return []; } /** @@ -192,17 +179,16 @@ function getCallDescriptors( */ function getDirectCallDescriptors( node: + | TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration - | TSESTree.FunctionExpression - | TSESTree.ArrowFunctionExpression, + | TSESTree.FunctionExpression, context: RuleContext, options: Options ): Array> { if (isCallExpression(node.body)) { return getCallDescriptors(node, context, options, node.body); - } else { - return []; } + return []; } /** @@ -210,9 +196,9 @@ function getDirectCallDescriptors( */ function getNestedCallDescriptors( node: + | TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration - | TSESTree.FunctionExpression - | TSESTree.ArrowFunctionExpression, + | TSESTree.FunctionExpression, context: RuleContext, options: Options ): Array> { @@ -229,9 +215,8 @@ function getNestedCallDescriptors( options, node.body.body[0].argument ); - } else { - return []; } + return []; } /** @@ -239,9 +224,9 @@ function getNestedCallDescriptors( */ function checkFunction( node: + | TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration - | TSESTree.FunctionExpression - | TSESTree.ArrowFunctionExpression, + | TSESTree.FunctionExpression, context: RuleContext, options: Options ): RuleResult { diff --git a/src/rules/prefer-type-literal.ts b/src/rules/prefer-type-literal.ts index bfa82c5b1..92c67b1fa 100644 --- a/src/rules/prefer-type-literal.ts +++ b/src/rules/prefer-type-literal.ts @@ -1,16 +1,10 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; -import { JSONSchema4 } from "json-schema"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { JSONSchema4 } from "json-schema"; -import { - IgnorePatternOption, - ignorePatternOptionSchema, -} from "../common/ignore-options"; -import { - createRule, - RuleContext, - RuleMetaData, - RuleResult, -} from "../util/rule"; +import type { IgnorePatternOption } from "../common/ignore-options"; +import { ignorePatternOptionSchema } from "../common/ignore-options"; +import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; +import { createRule } from "../util/rule"; import { isIdentifier } from "../util/typeguard"; // The name of this rule. diff --git a/src/util/conditional-imports/tsutils.ts b/src/util/conditional-imports/tsutils.ts index db214bade..7f8aa3ada 100644 --- a/src/util/conditional-imports/tsutils.ts +++ b/src/util/conditional-imports/tsutils.ts @@ -1,11 +1,11 @@ // Note: This import will be stripped out by rollup. -import * as tsutils from "tsutils"; +import type * as tsutils from "tsutils"; // Conditionally loaded tsutils but only if it is avaliable. export default (() => { try { return require("tsutils") as typeof tsutils; - } catch (error) { + } catch { return undefined; } })(); diff --git a/src/util/conditional-imports/typescript.ts b/src/util/conditional-imports/typescript.ts index 94125317d..0efc6354e 100644 --- a/src/util/conditional-imports/typescript.ts +++ b/src/util/conditional-imports/typescript.ts @@ -1,11 +1,11 @@ // Note: This import will be stripped out by rollup. -import ts from "typescript"; +import type ts from "typescript"; // Conditionally loaded TypeScript but only if it is available. export default (() => { try { return require("typescript") as typeof ts; - } catch (error) { + } catch { return undefined; } })(); diff --git a/src/util/misc.ts b/src/util/misc.ts index b4e0d2d72..2e3f7c808 100644 --- a/src/util/misc.ts +++ b/src/util/misc.ts @@ -1,7 +1,5 @@ -import { - AST_NODE_TYPES, - TSESTree, -} from "@typescript-eslint/experimental-utils"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import { AST_NODE_TYPES } from "@typescript-eslint/experimental-utils"; /** * Returns a function that checks if the given value is the same as the expected diff --git a/src/util/rule.ts b/src/util/rule.ts index b09f392ed..5e447cfaf 100644 --- a/src/util/rule.ts +++ b/src/util/rule.ts @@ -1,16 +1,12 @@ -import { - ESLintUtils, - TSESLint, - TSESTree, -} from "@typescript-eslint/experimental-utils"; -import { Rule } from "eslint"; -import { Node, Type } from "typescript"; +import type { TSESLint, TSESTree } from "@typescript-eslint/experimental-utils"; +import { ESLintUtils } from "@typescript-eslint/experimental-utils"; +import type { Rule } from "eslint"; +import type { Node, Type } from "typescript"; -import { shouldIgnore } from "../common/ignore-options"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// eslint-disable-next-line @typescript-eslint/ban-ts-comment, @typescript-eslint/prefer-ts-expect-error // @ts-ignore -- This file is outside of the root dir (i.e. src/). import { version } from "../../package.json"; +import { shouldIgnore } from "../common/ignore-options"; export type BaseOptions = object; @@ -18,9 +14,12 @@ export type BaseOptions = object; export type RuleMetaDataDocs = Omit; // "docs.url" will be set automatically. -export type RuleMetaData = { +export type RuleMetaData = Omit< + TSESLint.RuleMetaData, + "docs" +> & { readonly docs: RuleMetaDataDocs; -} & Omit, "docs">; +}; export type RuleContext< MessageIds extends string, @@ -72,12 +71,13 @@ function checkNode< options: Options ): (node: Node) => void { return (node: Node) => { - if (!options || !shouldIgnore(node, context, options)) { + if (!shouldIgnore(node, context, options)) { const result = check(node, context, options); - result.descriptors.forEach((descriptor) => - result.context.report(descriptor) - ); + // eslint-disable-next-line functional/no-loop-statement -- can't really be avoided. + for (const descriptor of result.descriptors) { + result.context.report(descriptor); + } } }; } @@ -131,14 +131,13 @@ export function getTypeOfNode>( parserServices.esTreeNodeToTSNodeMap === undefined ) { return null; - } else { - const checker = parserServices.program.getTypeChecker(); - const nodeType = checker.getTypeAtLocation( - parserServices.esTreeNodeToTSNodeMap.get(node) - ); - const constrained = checker.getBaseConstraintOfType(nodeType); - return constrained ?? nodeType; } + const checker = parserServices.program.getTypeChecker(); + const nodeType = checker.getTypeAtLocation( + parserServices.esTreeNodeToTSNodeMap.get(node) + ); + const constrained = checker.getBaseConstraintOfType(nodeType); + return constrained ?? nodeType; } /** diff --git a/src/util/tree.ts b/src/util/tree.ts index 812ab6602..88cf73dae 100644 --- a/src/util/tree.ts +++ b/src/util/tree.ts @@ -1,4 +1,4 @@ -import { TSESTree } from "@typescript-eslint/experimental-utils"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; import { isCallExpression, @@ -22,7 +22,7 @@ function getAncestorOfType( ): T | null { return checker(node, child) ? node - : node.parent == undefined + : node.parent === null || node.parent === undefined ? null : getAncestorOfType(checker, node.parent, node); } @@ -72,7 +72,8 @@ export function isInReturnType(node: TSESTree.Node): boolean { return ( getAncestorOfType( (n): n is TSESTree.Node => - n.parent != undefined && + n.parent !== undefined && + n.parent !== null && isFunctionLike(n.parent) && n.parent.returnType === n, node diff --git a/src/util/typeguard.ts b/src/util/typeguard.ts index ef314dc2b..4ed50bacd 100644 --- a/src/util/typeguard.ts +++ b/src/util/typeguard.ts @@ -2,17 +2,16 @@ * @file Functions that typeguard the given node/type. */ -import { - AST_NODE_TYPES, - TSESTree, -} from "@typescript-eslint/experimental-utils"; +import type { TSESTree } from "@typescript-eslint/experimental-utils"; +import { AST_NODE_TYPES } from "@typescript-eslint/experimental-utils"; // TS import - only use this for types, will be stripped out by rollup. -import { Type, UnionType } from "typescript"; +import type { Type, UnionType } from "typescript"; // TS import - conditionally imported only when typescript is available. -import ts from "../util/conditional-imports/typescript"; +import ts from "./conditional-imports/typescript"; // Any JSDoc for these functions would be tedious. +// eslint-disable-next-line eslint-comments/disable-enable-pair /* eslint-disable jsdoc/require-jsdoc */ /* @@ -110,7 +109,7 @@ export function isFunctionDeclaration( */ export function isFunctionExpressionLike( node: TSESTree.Node -): node is TSESTree.FunctionExpression | TSESTree.ArrowFunctionExpression { +): node is TSESTree.ArrowFunctionExpression | TSESTree.FunctionExpression { return ( node.type === AST_NODE_TYPES.FunctionExpression || node.type === AST_NODE_TYPES.ArrowFunctionExpression @@ -125,9 +124,9 @@ export function isFunctionExpressionLike( export function isFunctionLike( node: TSESTree.Node ): node is + | TSESTree.ArrowFunctionExpression | TSESTree.FunctionDeclaration - | TSESTree.FunctionExpression - | TSESTree.ArrowFunctionExpression { + | TSESTree.FunctionExpression { return isFunctionDeclaration(node) || isFunctionExpressionLike(node); } @@ -333,7 +332,7 @@ export function isArrayType( return assumeType === true && type === null ? node !== null : type !== null && - ((type.symbol && type.symbol.name === "Array") || + ((type.symbol !== undefined && type.symbol.name === "Array") || (isUnionType(type) && type.types.some((t) => isArrayType(t, false, null)))); } @@ -364,7 +363,8 @@ export function isArrayConstructorType( return assumeType === true && type === null ? node !== null && isIdentifier(node) && node.name === "Array" : type !== null && - ((type.symbol && type.symbol.name === "ArrayConstructor") || + ((type.symbol !== undefined && + type.symbol.name === "ArrayConstructor") || (isUnionType(type) && type.types.some((t) => isArrayConstructorType(t, false, null)))); } @@ -395,7 +395,8 @@ export function isObjectConstructorType( return assumeType === true && type === null ? node !== null && isIdentifier(node) && node.name === "Object" : type !== null && - ((type.symbol && type.symbol.name === "ObjectConstructor") || + ((type.symbol !== undefined && + type.symbol.name === "ObjectConstructor") || (isUnionType(type) && type.types.some((t) => isObjectConstructorType(t, false, null)))); } diff --git a/tests/common/ignore-options.test.ts b/tests/common/ignore-options.test.ts index 5657db529..b697dfd83 100644 --- a/tests/common/ignore-options.test.ts +++ b/tests/common/ignore-options.test.ts @@ -1,12 +1,12 @@ -import { TSESLint } from "@typescript-eslint/experimental-utils"; +import type { TSESLint } from "@typescript-eslint/experimental-utils"; import dedent from "dedent"; -import { Rule, RuleTester } from "eslint"; +import { RuleTester } from "eslint"; -import { +import type { IgnoreAccessorPatternOption, IgnorePatternOption, - shouldIgnore, } from "../../src/common/ignore-options"; +import { shouldIgnore } from "../../src/common/ignore-options"; import { filename, es9 } from "../helpers/configs"; import { addFilename, createDummyRule } from "../helpers/util"; @@ -136,7 +136,7 @@ describe("option: ignore", () => { expect(shouldIgnore(node, context, options)).toBe(allowed); }, }; - }) as Rule.RuleModule, + })!, addFilename(filename, { valid: [ ...(tests as unknown as ReadonlyArray), @@ -190,7 +190,7 @@ describe("option: ignore", () => { expect(shouldIgnore(node, context, options)).toBe(allowed); }, }; - }) as Rule.RuleModule, + })!, addFilename(filename, { valid: [ ...(assignmentExpressionTests as unknown as ReadonlyArray), @@ -228,7 +228,7 @@ describe("option: ignore", () => { expect(shouldIgnore(node, context, options)).toBe(allowed); }, }; - }) as Rule.RuleModule, + })!, addFilename(filename, { valid: [ ...(expressionStatementTests as unknown as ReadonlyArray), diff --git a/tests/configs.test.ts b/tests/configs.test.ts index f1653ea77..6cb827c67 100644 --- a/tests/configs.test.ts +++ b/tests/configs.test.ts @@ -1,14 +1,14 @@ /** * @file Tests for all configs except `all`. */ -import { Linter } from "eslint"; +import type { Linter } from "eslint"; import all from "../src/configs/all"; import currying from "../src/configs/currying"; import functional from "../src/configs/functional"; import functionalLite from "../src/configs/functional-lite"; -import noMutations from "../src/configs/no-mutations"; import noExceptions from "../src/configs/no-exceptions"; +import noMutations from "../src/configs/no-mutations"; import noObjectOrientation from "../src/configs/no-object-orientation"; import noStatements from "../src/configs/no-statements"; import stylistic from "../src/configs/stylistic"; @@ -24,6 +24,7 @@ function testConfig(config: Linter.Config, master: Linter.Config) { expect(config).not.toStrictEqual(master); Object.keys(config.rules ?? {}).every((rule) => { expect(master.rules?.[rule]).toBeDefined(); + return true; }); }); @@ -32,6 +33,7 @@ function testConfig(config: Linter.Config, master: Linter.Config) { expect(config).not.toStrictEqual(master); Object.keys(config.overrides?.[0].rules ?? {}).every((rule) => { expect(master.overrides?.[0].rules?.[rule]).toBeDefined(); + return true; }); }); }; diff --git a/tests/helpers/configs.ts b/tests/helpers/configs.ts index 3ad542ea6..3c2541a15 100644 --- a/tests/helpers/configs.ts +++ b/tests/helpers/configs.ts @@ -1,5 +1,5 @@ -import { Linter } from "eslint"; -import * as path from "path"; +import type { Linter } from "eslint"; +import path from "path"; export const filename = path.join(__dirname, "file.ts"); diff --git a/tests/helpers/util.ts b/tests/helpers/util.ts index 24e4f646a..306952f8e 100644 --- a/tests/helpers/util.ts +++ b/tests/helpers/util.ts @@ -1,9 +1,10 @@ -import { TSESLint } from "@typescript-eslint/experimental-utils"; -import { Rule, RuleTester as ESLintRuleTester } from "eslint"; -import { filename } from "./configs"; +import type { TSESLint } from "@typescript-eslint/experimental-utils"; +import type { Rule, RuleTester as ESLintRuleTester } from "eslint"; import ts from "../../src/util/conditional-imports/typescript"; +import { filename } from "./configs"; + type OptionsSet = { /** * The set of options this test case should pass for. @@ -83,7 +84,7 @@ export function createDummyRule( export type RuleTesterTests = { // eslint-disable-next-line functional/prefer-readonly-type - valid?: Array; + valid?: Array; // eslint-disable-next-line functional/prefer-readonly-type invalid?: Array; }; diff --git a/tests/index.test.ts b/tests/index.test.ts index c16895871..5ae7f8ebd 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -2,10 +2,10 @@ * @file Tests the index file. */ -import plugin from "../src/index"; - import { readdirSync } from "fs"; +import plugin from "../src"; + describe("plugin", () => { const ruleFiles: ReadonlyArray = readdirSync("./src/rules").filter( (file) => file !== "index.ts" && file.endsWith(".ts") diff --git a/tests/rules/functional-parameters.test.ts b/tests/rules/functional-parameters.test.ts index 6242298e3..bc71beb58 100644 --- a/tests/rules/functional-parameters.test.ts +++ b/tests/rules/functional-parameters.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/functional-parameters"; - import { es3, es6, typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/immutable-data.test.ts b/tests/rules/immutable-data.test.ts index c5f4ce8ad..2fdf82acd 100644 --- a/tests/rules/immutable-data.test.ts +++ b/tests/rules/immutable-data.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/immutable-data"; - import { es3, es6, typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/no-class.test.ts b/tests/rules/no-class.test.ts index 466fb6a97..5af73ac9a 100644 --- a/tests/rules/no-class.test.ts +++ b/tests/rules/no-class.test.ts @@ -5,14 +5,12 @@ import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/no-class"; - import { es6, typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/no-conditional-statement.test.ts b/tests/rules/no-conditional-statement.test.ts index 260a5e09b..04ece7d67 100644 --- a/tests/rules/no-conditional-statement.test.ts +++ b/tests/rules/no-conditional-statement.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/no-conditional-statement"; - import { es3, typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/no-expression-statement.test.ts b/tests/rules/no-expression-statement.test.ts index b223a18df..a8bd6984b 100644 --- a/tests/rules/no-expression-statement.test.ts +++ b/tests/rules/no-expression-statement.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/no-expression-statement"; - import { es3, typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/no-let.test.ts b/tests/rules/no-let.test.ts index 56f415a4b..1472650ae 100644 --- a/tests/rules/no-let.test.ts +++ b/tests/rules/no-let.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/no-let"; - import { es6, typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/no-loop-statement.test.ts b/tests/rules/no-loop-statement.test.ts index 3b03d75c2..0023ee65f 100644 --- a/tests/rules/no-loop-statement.test.ts +++ b/tests/rules/no-loop-statement.test.ts @@ -5,14 +5,12 @@ import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/no-loop-statement"; - import { es3, es6, typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/no-method-signature.test.ts b/tests/rules/no-method-signature.test.ts index 3cee22dcb..9d967f92c 100644 --- a/tests/rules/no-method-signature.test.ts +++ b/tests/rules/no-method-signature.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/no-method-signature"; - import { typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/no-mixed-type.test.ts b/tests/rules/no-mixed-type.test.ts index 3f2c5dfec..4d393ec11 100644 --- a/tests/rules/no-mixed-type.test.ts +++ b/tests/rules/no-mixed-type.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/no-mixed-type"; - import { typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/no-promise-reject.test.ts b/tests/rules/no-promise-reject.test.ts index 95ff82a8c..f7840ed22 100644 --- a/tests/rules/no-promise-reject.test.ts +++ b/tests/rules/no-promise-reject.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/no-promise-reject"; - import { es6, typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/no-return-void.test.ts b/tests/rules/no-return-void.test.ts index a68358127..7c9c740fc 100644 --- a/tests/rules/no-return-void.test.ts +++ b/tests/rules/no-return-void.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/no-return-void"; - import { typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/no-this-expression.test.ts b/tests/rules/no-this-expression.test.ts index 990973b3c..eba410e1f 100644 --- a/tests/rules/no-this-expression.test.ts +++ b/tests/rules/no-this-expression.test.ts @@ -5,14 +5,12 @@ import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/no-this-expression"; - import { es3, typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/no-throw-statement.test.ts b/tests/rules/no-throw-statement.test.ts index 5bd888b12..d7a9df6e1 100644 --- a/tests/rules/no-throw-statement.test.ts +++ b/tests/rules/no-throw-statement.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/no-throw-statement"; - import { es3, typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/no-try-statement.test.ts b/tests/rules/no-try-statement.test.ts index d0db4fc8a..8f0a32999 100644 --- a/tests/rules/no-try-statement.test.ts +++ b/tests/rules/no-try-statement.test.ts @@ -5,14 +5,12 @@ import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/no-try-statement"; - import { es3, typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/prefer-readonly-type.test.ts b/tests/rules/prefer-readonly-type.test.ts index 392b90e27..4f2eb0948 100644 --- a/tests/rules/prefer-readonly-type.test.ts +++ b/tests/rules/prefer-readonly-type.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/prefer-readonly-type"; - import { typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/prefer-tacit.test.ts b/tests/rules/prefer-tacit.test.ts index ce31180fa..882efb579 100644 --- a/tests/rules/prefer-tacit.test.ts +++ b/tests/rules/prefer-tacit.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/prefer-tacit"; - import { es6, typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/tests/rules/prefer-type-literal.test.ts b/tests/rules/prefer-type-literal.test.ts index 8e6378003..a2e5782ab 100644 --- a/tests/rules/prefer-type-literal.test.ts +++ b/tests/rules/prefer-type-literal.test.ts @@ -6,14 +6,12 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; import { name, rule } from "../../src/rules/prefer-type-literal"; - import { typescript } from "../helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; import { describeTsOnly, - InvalidTestCase, processInvalidTestCase, processValidTestCase, - ValidTestCase, } from "../helpers/util"; // Valid test cases. diff --git a/yarn.lock b/yarn.lock index 26a5bc6e7..a985f9a5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1119,6 +1119,11 @@ acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.4.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" + integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== + agent-base@5: version "5.1.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" @@ -2394,6 +2399,11 @@ eslint-visitor-keys@^2.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== +eslint-visitor-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz#e32e99c6cdc2eb063f204eda5db67bfe58bb4186" + integrity sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q== + eslint@^7.31.0: version "7.31.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.31.0.tgz#f972b539424bf2604907a970860732c5d99d3aca" @@ -2449,6 +2459,15 @@ espree@^7.3.0, espree@^7.3.1: acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" +espree@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-8.0.0.tgz#08c92c31814c96c96c54d3a35cc80f1cdb420275" + integrity sha512-y/+i23dwTjIDJrYCcjcAMr3c3UGbPIjC6THMQKjWmhP97fW0FPiI89kmpKfmgV/5jrkIi6toQP+CMm3qBE1Hig== + dependencies: + acorn "^8.4.1" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^3.0.0" + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" From b200df9336b71788778634984fbbc98e079421eb Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Fri, 23 Jul 2021 08:01:13 +1200 Subject: [PATCH 06/20] chore: remove unneeded incompatible dev-dependencies Remove dev-dependencies that aren't needed for testing and aren't compatable with all node versions being tested against. --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8789e07d5..4babf3fae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,6 +73,10 @@ jobs: with: node-version: ${{ matrix.node_version }} + # Remove dev-dependencies that aren't needed for testing and aren't compatable with all node versions being tested against. + - name: Remove unneeded incompatible dev-dependencies + run: yarn remove @rebeccastevens/eslint-config + - name: Install Dependencies run: yarn install --frozen-lockfile From e45c571f356c6251c7a5d2e9e2317ee18c793f36 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Thu, 7 Jan 2021 02:34:46 +1300 Subject: [PATCH 07/20] fix: bring rule meta data "recommended" into line with the recommend config --- src/rules/functional-parameters.ts | 2 +- src/rules/no-class.ts | 2 +- src/rules/no-conditional-statement.ts | 2 +- src/rules/no-expression-statement.ts | 2 +- src/rules/no-loop-statement.ts | 2 +- src/rules/no-method-signature.ts | 2 +- src/rules/no-mixed-type.ts | 2 +- src/rules/no-return-void.ts | 2 +- src/rules/no-this-expression.ts | 2 +- src/rules/no-throw-statement.ts | 2 +- src/rules/no-try-statement.ts | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/rules/functional-parameters.ts b/src/rules/functional-parameters.ts index 2e1a41cf6..056f2c2f1 100644 --- a/src/rules/functional-parameters.ts +++ b/src/rules/functional-parameters.ts @@ -97,7 +97,7 @@ const meta: RuleMetaData = { docs: { description: "Enforce functional parameters.", category: "Best Practices", - recommended: false, + recommended: "error", }, messages: errorMessages, schema, diff --git a/src/rules/no-class.ts b/src/rules/no-class.ts index 25abf1bf2..6753b4e91 100644 --- a/src/rules/no-class.ts +++ b/src/rules/no-class.ts @@ -27,7 +27,7 @@ const meta: RuleMetaData = { docs: { description: "Disallow classes.", category: "Best Practices", - recommended: false, + recommended: "error", }, messages: errorMessages, schema, diff --git a/src/rules/no-conditional-statement.ts b/src/rules/no-conditional-statement.ts index 4780e2cef..a506b0ae4 100644 --- a/src/rules/no-conditional-statement.ts +++ b/src/rules/no-conditional-statement.ts @@ -66,7 +66,7 @@ const meta: RuleMetaData = { docs: { description: "Disallow conditional statements.", category: "Best Practices", - recommended: false, + recommended: "error", }, messages: errorMessages, schema, diff --git a/src/rules/no-expression-statement.ts b/src/rules/no-expression-statement.ts index 11f84c86e..35eb72855 100644 --- a/src/rules/no-expression-statement.ts +++ b/src/rules/no-expression-statement.ts @@ -30,7 +30,7 @@ const meta: RuleMetaData = { docs: { description: "Disallow expression statements.", category: "Best Practices", - recommended: false, + recommended: "error", }, messages: errorMessages, schema, diff --git a/src/rules/no-loop-statement.ts b/src/rules/no-loop-statement.ts index 0a92a2922..8b5d42d91 100644 --- a/src/rules/no-loop-statement.ts +++ b/src/rules/no-loop-statement.ts @@ -27,7 +27,7 @@ const meta: RuleMetaData = { docs: { description: "Disallow imperative loops.", category: "Best Practices", - recommended: false, + recommended: "error", }, messages: errorMessages, schema, diff --git a/src/rules/no-method-signature.ts b/src/rules/no-method-signature.ts index bc738a2a2..56c3a7a62 100644 --- a/src/rules/no-method-signature.ts +++ b/src/rules/no-method-signature.ts @@ -29,7 +29,7 @@ const meta: RuleMetaData = { description: "Prefer property signatures with readonly modifiers over method signatures.", category: "Best Practices", - recommended: "error", + recommended: "warn", }, messages: errorMessages, schema, diff --git a/src/rules/no-mixed-type.ts b/src/rules/no-mixed-type.ts index 983524f6f..dabc4242d 100644 --- a/src/rules/no-mixed-type.ts +++ b/src/rules/no-mixed-type.ts @@ -49,7 +49,7 @@ const meta: RuleMetaData = { description: "Restrict types so that only members of the same kind of are allowed in them.", category: "Best Practices", - recommended: false, + recommended: "error", }, messages: errorMessages, schema, diff --git a/src/rules/no-return-void.ts b/src/rules/no-return-void.ts index becb8065a..56495b5ee 100644 --- a/src/rules/no-return-void.ts +++ b/src/rules/no-return-void.ts @@ -51,7 +51,7 @@ const meta: RuleMetaData = { docs: { description: "Disallow functions that don't return anything.", category: "Best Practices", - recommended: false, + recommended: "error", }, messages: errorMessages, schema, diff --git a/src/rules/no-this-expression.ts b/src/rules/no-this-expression.ts index c88c57294..12e611cea 100644 --- a/src/rules/no-this-expression.ts +++ b/src/rules/no-this-expression.ts @@ -27,7 +27,7 @@ const meta: RuleMetaData = { docs: { description: "Disallow this access.", category: "Best Practices", - recommended: false, + recommended: "error", }, messages: errorMessages, schema, diff --git a/src/rules/no-throw-statement.ts b/src/rules/no-throw-statement.ts index a519925bb..0b1540afa 100644 --- a/src/rules/no-throw-statement.ts +++ b/src/rules/no-throw-statement.ts @@ -27,7 +27,7 @@ const meta: RuleMetaData = { docs: { description: "Disallow throwing exceptions.", category: "Best Practices", - recommended: false, + recommended: "error", }, messages: errorMessages, schema, diff --git a/src/rules/no-try-statement.ts b/src/rules/no-try-statement.ts index b229011e5..6336da3ec 100644 --- a/src/rules/no-try-statement.ts +++ b/src/rules/no-try-statement.ts @@ -47,7 +47,7 @@ const meta: RuleMetaData = { docs: { description: "Disallow try-catch[-finally] and try-finally patterns.", category: "Best Practices", - recommended: false, + recommended: "error", }, messages: errorMessages, schema, From 79d461a3580f7e8819b97fd71c8dee44a4af2f4f Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Sun, 25 Jul 2021 00:00:44 +1200 Subject: [PATCH 08/20] chore: remove deprecated rule: prefer-type-literal BREAKING CHANGE: rule "prefer-type-literal" has been removed. --- README.md | 1 - docs/rules/prefer-type-literal.md | 42 ---------- docs/user-guide/migrating-from-tslint.md | 1 - src/configs/all.ts | 1 - src/configs/no-object-orientation.ts | 1 - src/rules/index.ts | 2 - src/rules/prefer-type-literal.ts | 94 --------------------- tests/rules/prefer-type-literal.test.ts | 102 ----------------------- 8 files changed, 244 deletions(-) delete mode 100644 docs/rules/prefer-type-literal.md delete mode 100644 src/rules/prefer-type-literal.ts delete mode 100644 tests/rules/prefer-type-literal.test.ts diff --git a/README.md b/README.md index 7d4991240..6f827df36 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,6 @@ The [below section](#supported-rules) gives details on which rules are enabled b | [`no-class`](./docs/rules/no-class.md) | Disallow classes | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | | | [`no-mixed-type`](./docs/rules/no-mixed-type.md) | Restrict types so that only members of the same kind are allowed in them | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | :thought_balloon: | | [`no-this-expression`](./docs/rules/no-this-expression.md) | Disallow `this` access | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | | -| [`prefer-type-literal`](./docs/rules/prefer-type-literal.md) | Use type literals over interfaces | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | :thought_balloon: | ### No Statements Rules diff --git a/docs/rules/prefer-type-literal.md b/docs/rules/prefer-type-literal.md deleted file mode 100644 index 708b7849a..000000000 --- a/docs/rules/prefer-type-literal.md +++ /dev/null @@ -1,42 +0,0 @@ -# Prefer type over interface (prefer-type-literal) - -This rule enforces use of the type literals over interfaces. - -## Rule Details - -Interfaces are part of Object Oriented Design. -When it comes to functional design, types should be used instead. - -Examples of **incorrect** code for this rule: - -```ts -/* eslint functional/prefer-type-literal: "error" */ - -interface Foo { - bar: string; -} -``` - -Examples of **correct** code for this rule: - -```ts -/* eslint functional/prefer-type-literal: "error" */ - -type Foo = { - bar: string; -}; -``` - -## Options - -This rule accepts an options object of the following type: - -```ts -{ - ignorePattern?: string | Array; -} -``` - -### `ignorePattern` - -See the [ignorePattern](./options/ignore-pattern.md) docs. diff --git a/docs/user-guide/migrating-from-tslint.md b/docs/user-guide/migrating-from-tslint.md index 9c9e55b46..187aea55c 100644 --- a/docs/user-guide/migrating-from-tslint.md +++ b/docs/user-guide/migrating-from-tslint.md @@ -60,7 +60,6 @@ Below is a table mapping the `eslint-plugin-functional` rules to their `tslint-i | [`functional/no-this-expression`](../rules/no-this-expression.md) | `no-this` | | [`functional/no-class`](../rules/no-class.md) | `no-class` | | [`functional/no-mixed-type`](../rules/no-mixed-type.md) | `no-mixed-interface` | -| [`functional/prefer-type-literal`](../rules/prefer-type-literal.md) | - | | [`functional/no-expression-statement`](../rules/no-expression-statement.md) | `no-expression-statement` | | [`functional/no-conditional-statement`](../rules/no-conditional-statement.md) | `no-if-statement` | | [`functional/no-loop-statement`](../rules/no-loop-statement.md) | `no-loop-statement` | diff --git a/src/configs/all.ts b/src/configs/all.ts index 745d5ce3a..0db73d9d0 100644 --- a/src/configs/all.ts +++ b/src/configs/all.ts @@ -23,7 +23,6 @@ const config: Linter.Config = { "functional/no-mixed-type": "error", "functional/prefer-readonly-type": "error", "functional/prefer-tacit": ["error", { assumeTypes: false }], - "functional/prefer-type-literal": "error", "functional/no-return-void": "error", }, }, diff --git a/src/configs/no-object-orientation.ts b/src/configs/no-object-orientation.ts index 8f7941f65..4681ba459 100644 --- a/src/configs/no-object-orientation.ts +++ b/src/configs/no-object-orientation.ts @@ -10,7 +10,6 @@ const config: Linter.Config = { files: ["*.ts", "*.tsx"], rules: { "functional/no-mixed-type": "error", - "functional/prefer-type-literal": "error", }, }, ], diff --git a/src/rules/index.ts b/src/rules/index.ts index d60774a59..06eb7baef 100644 --- a/src/rules/index.ts +++ b/src/rules/index.ts @@ -14,7 +14,6 @@ import * as noThrowStatement from "./no-throw-statement"; import * as noTryStatement from "./no-try-statement"; import * as preferReadonlyTypes from "./prefer-readonly-type"; import * as preferTacit from "./prefer-tacit"; -import * as preferType from "./prefer-type-literal"; /** * All of the custom rules. @@ -36,5 +35,4 @@ export const rules = { [noTryStatement.name]: noTryStatement.rule, [preferReadonlyTypes.name]: preferReadonlyTypes.rule, [preferTacit.name]: preferTacit.rule, - [preferType.name]: preferType.rule, }; diff --git a/src/rules/prefer-type-literal.ts b/src/rules/prefer-type-literal.ts deleted file mode 100644 index 92c67b1fa..000000000 --- a/src/rules/prefer-type-literal.ts +++ /dev/null @@ -1,94 +0,0 @@ -import type { TSESTree } from "@typescript-eslint/experimental-utils"; -import type { JSONSchema4 } from "json-schema"; - -import type { IgnorePatternOption } from "../common/ignore-options"; -import { ignorePatternOptionSchema } from "../common/ignore-options"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; -import { isIdentifier } from "../util/typeguard"; - -// The name of this rule. -export const name = "prefer-type-literal" as const; - -// The options this rule can take. -type Options = IgnorePatternOption; - -// The schema for the rule options. -const schema: JSONSchema4 = [ignorePatternOptionSchema]; - -// The default options for the rule. -const defaultOptions: Options = {}; - -// The possible error messages. -const errorMessages = { - generic: "Unexpected interface, use a type literal instead.", -} as const; - -// The meta data for this rule. -const meta: RuleMetaData = { - deprecated: true, - replacedBy: ["@typescript-eslint/consistent-type-definitions"], - type: "suggestion", - docs: { - description: "Prefer Type Literals over Interfaces.", - category: "Best Practices", - recommended: false, - }, - messages: errorMessages, - fixable: "code", - schema, -}; - -/** - * Check if the given interface node violates this rule. - */ -function checkInterface( - node: TSESTree.TSInterfaceDeclaration, - context: RuleContext -): RuleResult { - return { - context, - descriptors: [ - { - node, - messageId: "generic", - fix: - node.extends === undefined || - node.extends.every((type) => isIdentifier(type.expression)) - ? (fixer) => [ - fixer.replaceTextRange( - [node.range[0], node.range[0] + "interface".length], - "type" - ), - fixer.insertTextBefore(node.body, "= "), - ...(node.extends === undefined - ? [] - : [ - fixer.replaceTextRange( - [node.id.range[1], node.body.range[0]], - " " - ), - ...node.extends.map((type) => - fixer.insertTextBefore( - node.body, - `${(type.expression as TSESTree.Identifier).name} & ` - ) - ), - ]), - fixer.insertTextAfter(node, ";"), - ] - : undefined, - }, - ], - }; -} - -// Create the rule. -export const rule = createRule( - name, - meta, - defaultOptions, - { - TSInterfaceDeclaration: checkInterface, - } -); diff --git a/tests/rules/prefer-type-literal.test.ts b/tests/rules/prefer-type-literal.test.ts deleted file mode 100644 index a2e5782ab..000000000 --- a/tests/rules/prefer-type-literal.test.ts +++ /dev/null @@ -1,102 +0,0 @@ -/** - * @file Tests for prefer-type-literal. - */ - -import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "../../src/rules/prefer-type-literal"; -import { typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "../helpers/util"; - -// Valid test cases. -const valid: ReadonlyArray = []; - -// Invalid test cases. -const invalid: ReadonlyArray = [ - { - code: dedent` - interface Foo {}`, - optionsSet: [[]], - output: dedent` - type Foo = {};`, - errors: [ - { - messageId: "generic", - type: "TSInterfaceDeclaration", - line: 1, - column: 1, - }, - ], - }, - { - code: dedent` - interface Foo { - prop: string; - }`, - optionsSet: [[]], - output: dedent` - type Foo = { - prop: string; - };`, - errors: [ - { - messageId: "generic", - type: "TSInterfaceDeclaration", - line: 1, - column: 1, - }, - ], - }, - { - code: dedent` - interface Foo extends Bar { - prop: string; - }`, - optionsSet: [[]], - output: dedent` - type Foo = Bar & { - prop: string; - };`, - errors: [ - { - messageId: "generic", - type: "TSInterfaceDeclaration", - line: 1, - column: 1, - }, - ], - }, - { - code: dedent` - interface Foo extends Bar, Baz { - prop: string; - }`, - optionsSet: [[]], - output: dedent` - type Foo = Bar & Baz & { - prop: string; - };`, - errors: [ - { - messageId: "generic", - type: "TSInterfaceDeclaration", - line: 1, - column: 1, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); From 9898ab691fddd78955d0ddc59999d2fad0ac1085 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Sun, 25 Jul 2021 02:11:40 +1200 Subject: [PATCH 09/20] chore: setup tspaths --- package.json | 3 + src/common/ignore-options.ts | 6 +- src/configs/functional.ts | 10 +- src/index.ts | 22 +- src/rules/functional-parameters.ts | 12 +- src/rules/immutable-data.ts | 14 +- src/rules/no-class.ts | 4 +- src/rules/no-conditional-statement.ts | 8 +- src/rules/no-expression-statement.ts | 10 +- src/rules/no-let.ts | 8 +- src/rules/no-loop-statement.ts | 4 +- src/rules/no-method-signature.ts | 4 +- src/rules/no-mixed-type.ts | 6 +- src/rules/no-promise-reject.ts | 6 +- src/rules/no-return-void.ts | 6 +- src/rules/no-this-expression.ts | 4 +- src/rules/no-throw-statement.ts | 4 +- src/rules/no-try-statement.ts | 4 +- src/rules/prefer-readonly-type.ts | 12 +- src/rules/prefer-tacit.ts | 10 +- src/util/rule.ts | 6 +- src/util/typeguard.ts | 2 +- tests/common/ignore-options.test.ts | 8 +- tests/configs.test.ts | 20 +- tests/helpers/util.ts | 2 +- tests/index.test.ts | 2 +- tests/rules/_work.test.ts | 6 +- tests/rules/functional-parameters.test.ts | 8 +- tests/rules/immutable-data.test.ts | 8 +- tests/rules/index.test.ts | 2 +- tests/rules/no-class.test.ts | 8 +- tests/rules/no-conditional-statement.test.ts | 8 +- tests/rules/no-expression-statement.test.ts | 8 +- tests/rules/no-let.test.ts | 8 +- tests/rules/no-loop-statement.test.ts | 8 +- tests/rules/no-method-signature.test.ts | 8 +- tests/rules/no-mixed-type.test.ts | 8 +- tests/rules/no-promise-reject.test.ts | 8 +- tests/rules/no-return-void.test.ts | 8 +- tests/rules/no-this-expression.test.ts | 8 +- tests/rules/no-throw-statement.test.ts | 8 +- tests/rules/no-try-statement.test.ts | 8 +- tests/rules/prefer-readonly-type.test.ts | 8 +- tests/rules/prefer-tacit.test.ts | 8 +- tsconfig.base.json | 14 +- tsconfig.json | 2 +- yarn.lock | 1756 +++++++++--------- 47 files changed, 1096 insertions(+), 1009 deletions(-) diff --git a/package.json b/package.json index 3262480aa..408292e12 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "@types/glob": "^7.1.1", "@types/jest": "^26.0.19", "@types/node": "15.0.1", + "@types/rollup-plugin-auto-external": "^2.0.2", "@typescript-eslint/eslint-plugin": "^4.28.4", "@typescript-eslint/parser": "^4.28.4", "auto-changelog": "^2.2.1", @@ -110,6 +111,8 @@ "rollup-plugin-auto-external": "^2.0.0", "shelljs": "^0.8.3", "ts-jest": "^26.4.4", + "ts-node": "^10.1.0", + "tsconfig-paths": "^3.10.1", "tslib": "^2.0.3", "tsutils": "^3.21.0", "typescript": "^4.1.3" diff --git a/src/common/ignore-options.ts b/src/common/ignore-options.ts index d6b8bff8c..e5638d711 100644 --- a/src/common/ignore-options.ts +++ b/src/common/ignore-options.ts @@ -2,8 +2,8 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import escapeRegExp from "escape-string-regexp"; import type { JSONSchema4 } from "json-schema"; -import type { BaseOptions, RuleContext } from "../util/rule"; -import { inClass, inFunctionBody, inInterface } from "../util/tree"; +import type { BaseOptions, RuleContext } from "~/util/rule"; +import { inClass, inFunctionBody, inInterface } from "~/util/tree"; import { hasID, hasKey, @@ -21,7 +21,7 @@ import { isTSTypeReference, isUnaryExpression, isVariableDeclaration, -} from "../util/typeguard"; +} from "~/util/typeguard"; export type AllowLocalMutationOption = { readonly allowLocalMutation: boolean; diff --git a/src/configs/functional.ts b/src/configs/functional.ts index 2ad995510..ce9280ed7 100644 --- a/src/configs/functional.ts +++ b/src/configs/functional.ts @@ -1,11 +1,11 @@ import { all as deepMerge } from "deepmerge"; import type { Linter } from "eslint"; -import currying from "./currying"; -import noExceptions from "./no-exceptions"; -import noMutations from "./no-mutations"; -import noObjectOrientation from "./no-object-orientation"; -import noStatements from "./no-statements"; +import currying from "~/configs/currying"; +import noExceptions from "~/configs/no-exceptions"; +import noMutations from "~/configs/no-mutations"; +import noObjectOrientation from "~/configs/no-object-orientation"; +import noStatements from "~/configs/no-statements"; const config: Linter.Config = deepMerge([ currying, diff --git a/src/index.ts b/src/index.ts index 286e8873a..de60c913d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,16 +1,16 @@ import type { Linter, Rule } from "eslint"; -import all from "./configs/all"; -import currying from "./configs/currying"; -import externalRecommended from "./configs/external-recommended"; -import functional from "./configs/functional"; -import functionalLite from "./configs/functional-lite"; -import noExceptions from "./configs/no-exceptions"; -import noMutations from "./configs/no-mutations"; -import noObjectOrientation from "./configs/no-object-orientation"; -import noStatements from "./configs/no-statements"; -import stylistic from "./configs/stylistic"; -import { rules } from "./rules"; +import all from "~/configs/all"; +import currying from "~/configs/currying"; +import externalRecommended from "~/configs/external-recommended"; +import functional from "~/configs/functional"; +import functionalLite from "~/configs/functional-lite"; +import noExceptions from "~/configs/no-exceptions"; +import noMutations from "~/configs/no-mutations"; +import noObjectOrientation from "~/configs/no-object-orientation"; +import noStatements from "~/configs/no-statements"; +import stylistic from "~/configs/stylistic"; +import { rules } from "~/rules"; type EslintPluginConfig = { readonly rules: Record; diff --git a/src/rules/functional-parameters.ts b/src/rules/functional-parameters.ts index 056f2c2f1..a0baa8587 100644 --- a/src/rules/functional-parameters.ts +++ b/src/rules/functional-parameters.ts @@ -2,12 +2,12 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import { all as deepMerge } from "deepmerge"; import type { JSONSchema4 } from "json-schema"; -import type { IgnorePatternOption } from "../common/ignore-options"; -import { ignorePatternOptionSchema } from "../common/ignore-options"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; -import { isIIFE, isPropertyAccess, isPropertyName } from "../util/tree"; -import { isRestElement } from "../util/typeguard"; +import type { IgnorePatternOption } from "~/common/ignore-options"; +import { ignorePatternOptionSchema } from "~/common/ignore-options"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule } from "~/util/rule"; +import { isIIFE, isPropertyAccess, isPropertyName } from "~/util/tree"; +import { isRestElement } from "~/util/typeguard"; // The name of this rule. export const name = "functional-parameters" as const; diff --git a/src/rules/immutable-data.ts b/src/rules/immutable-data.ts index bdbc84453..c643da745 100644 --- a/src/rules/immutable-data.ts +++ b/src/rules/immutable-data.ts @@ -6,17 +6,17 @@ import type { IgnoreAccessorPatternOption, IgnorePatternOption, IgnoreClassOption, -} from "../common/ignore-options"; +} from "~/common/ignore-options"; import { ignoreAccessorPatternOptionSchema, ignoreClassOptionSchema, ignorePatternOptionSchema, shouldIgnore, -} from "../common/ignore-options"; -import { isExpected } from "../util/misc"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule, getTypeOfNode } from "../util/rule"; -import { inConstructor } from "../util/tree"; +} from "~/common/ignore-options"; +import { isExpected } from "~/util/misc"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule, getTypeOfNode } from "~/util/rule"; +import { inConstructor } from "~/util/tree"; import { isArrayConstructorType, isArrayExpression, @@ -26,7 +26,7 @@ import { isMemberExpression, isNewExpression, isObjectConstructorType, -} from "../util/typeguard"; +} from "~/util/typeguard"; // The name of this rule. export const name = "immutable-data" as const; diff --git a/src/rules/no-class.ts b/src/rules/no-class.ts index 6753b4e91..ecdc4bc9c 100644 --- a/src/rules/no-class.ts +++ b/src/rules/no-class.ts @@ -1,8 +1,8 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import type { JSONSchema4 } from "json-schema"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule } from "~/util/rule"; // The name of this rule. export const name = "no-class" as const; diff --git a/src/rules/no-conditional-statement.ts b/src/rules/no-conditional-statement.ts index a506b0ae4..5baf17f89 100644 --- a/src/rules/no-conditional-statement.ts +++ b/src/rules/no-conditional-statement.ts @@ -2,9 +2,9 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import type { JSONSchema4 } from "json-schema"; import type { Type } from "typescript"; -import tsutils from "../util/conditional-imports/tsutils"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule, getTypeOfNode } from "../util/rule"; +import tsutils from "~/conditional-imports/tsutils"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule, getTypeOfNode } from "~/util/rule"; import { isBlockStatement, isExpressionStatement, @@ -12,7 +12,7 @@ import { isNeverType, isReturnStatement, isThrowStatement, -} from "../util/typeguard"; +} from "~/util/typeguard"; // The name of this rule. export const name = "no-conditional-statement" as const; diff --git a/src/rules/no-expression-statement.ts b/src/rules/no-expression-statement.ts index 35eb72855..2a4da5f6f 100644 --- a/src/rules/no-expression-statement.ts +++ b/src/rules/no-expression-statement.ts @@ -1,11 +1,11 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import type { JSONSchema4 } from "json-schema"; -import type { IgnorePatternOption } from "../common/ignore-options"; -import { ignorePatternOptionSchema } from "../common/ignore-options"; -import { isDirectivePrologue } from "../util/misc"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; +import type { IgnorePatternOption } from "~/common/ignore-options"; +import { ignorePatternOptionSchema } from "~/common/ignore-options"; +import { isDirectivePrologue } from "~/util/misc"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule } from "~/util/rule"; // The name of this rule. export const name = "no-expression-statement" as const; diff --git a/src/rules/no-let.ts b/src/rules/no-let.ts index 5271649ba..f69eb4203 100644 --- a/src/rules/no-let.ts +++ b/src/rules/no-let.ts @@ -5,13 +5,13 @@ import type { JSONSchema4 } from "json-schema"; import type { AllowLocalMutationOption, IgnorePatternOption, -} from "../common/ignore-options"; +} from "~/common/ignore-options"; import { allowLocalMutationOptionSchema, ignorePatternOptionSchema, -} from "../common/ignore-options"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; +} from "~/common/ignore-options"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule } from "~/util/rule"; // The name of this rule. export const name = "no-let" as const; diff --git a/src/rules/no-loop-statement.ts b/src/rules/no-loop-statement.ts index 8b5d42d91..c59daf5ef 100644 --- a/src/rules/no-loop-statement.ts +++ b/src/rules/no-loop-statement.ts @@ -1,8 +1,8 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import type { JSONSchema4 } from "json-schema"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule } from "~/util/rule"; // The name of this rule. export const name = "no-loop-statement" as const; diff --git a/src/rules/no-method-signature.ts b/src/rules/no-method-signature.ts index 56c3a7a62..aeafb8abc 100644 --- a/src/rules/no-method-signature.ts +++ b/src/rules/no-method-signature.ts @@ -1,8 +1,8 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import type { JSONSchema4 } from "json-schema"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule } from "~/util/rule"; // The name of this rule. export const name = "no-method-signature" as const; diff --git a/src/rules/no-mixed-type.ts b/src/rules/no-mixed-type.ts index dabc4242d..9f6e18816 100644 --- a/src/rules/no-mixed-type.ts +++ b/src/rules/no-mixed-type.ts @@ -2,9 +2,9 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import { AST_NODE_TYPES } from "@typescript-eslint/experimental-utils"; import type { JSONSchema4 } from "json-schema"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; -import { isTSPropertySignature, isTSTypeLiteral } from "../util/typeguard"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule } from "~/util/rule"; +import { isTSPropertySignature, isTSTypeLiteral } from "~/util/typeguard"; // The name of this rule. export const name = "no-mixed-type" as const; diff --git a/src/rules/no-promise-reject.ts b/src/rules/no-promise-reject.ts index 1bf35308c..51d46f532 100644 --- a/src/rules/no-promise-reject.ts +++ b/src/rules/no-promise-reject.ts @@ -1,9 +1,9 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import type { JSONSchema4 } from "json-schema"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; -import { isIdentifier, isMemberExpression } from "../util/typeguard"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule } from "~/util/rule"; +import { isIdentifier, isMemberExpression } from "~/util/typeguard"; // The name of this rule. export const name = "no-promise-reject" as const; diff --git a/src/rules/no-return-void.ts b/src/rules/no-return-void.ts index 56495b5ee..5e5212040 100644 --- a/src/rules/no-return-void.ts +++ b/src/rules/no-return-void.ts @@ -1,13 +1,13 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import type { JSONSchema4 } from "json-schema"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule } from "~/util/rule"; import { isTSNullKeyword, isTSUndefinedKeyword, isTSVoidKeyword, -} from "../util/typeguard"; +} from "~/util/typeguard"; // The name of this rule. export const name = "no-return-void" as const; diff --git a/src/rules/no-this-expression.ts b/src/rules/no-this-expression.ts index 12e611cea..6ce9e07f8 100644 --- a/src/rules/no-this-expression.ts +++ b/src/rules/no-this-expression.ts @@ -1,8 +1,8 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import type { JSONSchema4 } from "json-schema"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule } from "~/util/rule"; // The name of this rule. export const name = "no-this-expression" as const; diff --git a/src/rules/no-throw-statement.ts b/src/rules/no-throw-statement.ts index 0b1540afa..3b82f98f7 100644 --- a/src/rules/no-throw-statement.ts +++ b/src/rules/no-throw-statement.ts @@ -1,8 +1,8 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import type { JSONSchema4 } from "json-schema"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule } from "~/util/rule"; // The name of this rule. export const name = "no-throw-statement" as const; diff --git a/src/rules/no-try-statement.ts b/src/rules/no-try-statement.ts index 6336da3ec..1b4bb85ea 100644 --- a/src/rules/no-try-statement.ts +++ b/src/rules/no-try-statement.ts @@ -1,8 +1,8 @@ import type { TSESTree } from "@typescript-eslint/experimental-utils"; import type { JSONSchema4 } from "json-schema"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule } from "../util/rule"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule } from "~/util/rule"; // The name of this rule. export const name = "no-try-statement" as const; diff --git a/src/rules/prefer-readonly-type.ts b/src/rules/prefer-readonly-type.ts index 508a42d28..82fb28086 100644 --- a/src/rules/prefer-readonly-type.ts +++ b/src/rules/prefer-readonly-type.ts @@ -7,16 +7,16 @@ import type { IgnoreClassOption, IgnoreInterfaceOption, IgnorePatternOption, -} from "../common/ignore-options"; +} from "~/common/ignore-options"; import { allowLocalMutationOptionSchema, ignoreClassOptionSchema, ignoreInterfaceOptionSchema, ignorePatternOptionSchema, -} from "../common/ignore-options"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule, getTypeOfNode } from "../util/rule"; -import { isInReturnType } from "../util/tree"; +} from "~/common/ignore-options"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule, getTypeOfNode } from "~/util/rule"; +import { isInReturnType } from "~/util/tree"; import { isArrayType, isAssignmentPattern, @@ -28,7 +28,7 @@ import { isTSPropertySignature, isTSTupleType, isTSTypeOperator, -} from "../util/typeguard"; +} from "~/util/typeguard"; // The name of this rule. export const name = "prefer-readonly-type" as const; diff --git a/src/rules/prefer-tacit.ts b/src/rules/prefer-tacit.ts index a8ee8c1bc..f375fb2e6 100644 --- a/src/rules/prefer-tacit.ts +++ b/src/rules/prefer-tacit.ts @@ -4,10 +4,10 @@ import { all as deepMerge } from "deepmerge"; import type { JSONSchema4 } from "json-schema"; import type { FunctionLikeDeclaration, Type } from "typescript"; -import type { IgnorePatternOption } from "../common/ignore-options"; -import { ignorePatternOptionSchema } from "../common/ignore-options"; -import type { RuleContext, RuleMetaData, RuleResult } from "../util/rule"; -import { createRule, getESTreeNode, getTypeOfNode } from "../util/rule"; +import type { IgnorePatternOption } from "~/common/ignore-options"; +import { ignorePatternOptionSchema } from "~/common/ignore-options"; +import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; +import { createRule, getESTreeNode, getTypeOfNode } from "~/util/rule"; import { isBlockStatement, isCallExpression, @@ -15,7 +15,7 @@ import { isIdentifier, isReturnStatement, isTSFunctionType, -} from "../util/typeguard"; +} from "~/util/typeguard"; // The name of this rule. export const name = "prefer-tacit" as const; diff --git a/src/util/rule.ts b/src/util/rule.ts index 5e447cfaf..b736f1a61 100644 --- a/src/util/rule.ts +++ b/src/util/rule.ts @@ -3,10 +3,8 @@ import { ESLintUtils } from "@typescript-eslint/experimental-utils"; import type { Rule } from "eslint"; import type { Node, Type } from "typescript"; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment, @typescript-eslint/prefer-ts-expect-error -// @ts-ignore -- This file is outside of the root dir (i.e. src/). -import { version } from "../../package.json"; -import { shouldIgnore } from "../common/ignore-options"; +import { shouldIgnore } from "~/common/ignore-options"; +import { version } from "~/package.json"; export type BaseOptions = object; diff --git a/src/util/typeguard.ts b/src/util/typeguard.ts index 4ed50bacd..a3c2260e2 100644 --- a/src/util/typeguard.ts +++ b/src/util/typeguard.ts @@ -8,7 +8,7 @@ import { AST_NODE_TYPES } from "@typescript-eslint/experimental-utils"; import type { Type, UnionType } from "typescript"; // TS import - conditionally imported only when typescript is available. -import ts from "./conditional-imports/typescript"; +import ts from "~/conditional-imports/typescript"; // Any JSDoc for these functions would be tedious. // eslint-disable-next-line eslint-comments/disable-enable-pair diff --git a/tests/common/ignore-options.test.ts b/tests/common/ignore-options.test.ts index b697dfd83..a724eb0c3 100644 --- a/tests/common/ignore-options.test.ts +++ b/tests/common/ignore-options.test.ts @@ -5,10 +5,10 @@ import { RuleTester } from "eslint"; import type { IgnoreAccessorPatternOption, IgnorePatternOption, -} from "../../src/common/ignore-options"; -import { shouldIgnore } from "../../src/common/ignore-options"; -import { filename, es9 } from "../helpers/configs"; -import { addFilename, createDummyRule } from "../helpers/util"; +} from "~/common/ignore-options"; +import { shouldIgnore } from "~/common/ignore-options"; +import { filename, es9 } from "~/tests/helpers/configs"; +import { addFilename, createDummyRule } from "~/tests/helpers/util"; describe("option: ignore", () => { describe("ignoreAccessorPattern", () => { diff --git a/tests/configs.test.ts b/tests/configs.test.ts index 6cb827c67..6cc21da86 100644 --- a/tests/configs.test.ts +++ b/tests/configs.test.ts @@ -3,16 +3,16 @@ */ import type { Linter } from "eslint"; -import all from "../src/configs/all"; -import currying from "../src/configs/currying"; -import functional from "../src/configs/functional"; -import functionalLite from "../src/configs/functional-lite"; -import noExceptions from "../src/configs/no-exceptions"; -import noMutations from "../src/configs/no-mutations"; -import noObjectOrientation from "../src/configs/no-object-orientation"; -import noStatements from "../src/configs/no-statements"; -import stylistic from "../src/configs/stylistic"; -import { rules } from "../src/rules"; +import all from "~/configs/all"; +import currying from "~/configs/currying"; +import functional from "~/configs/functional"; +import functionalLite from "~/configs/functional-lite"; +import noExceptions from "~/configs/no-exceptions"; +import noMutations from "~/configs/no-mutations"; +import noObjectOrientation from "~/configs/no-object-orientation"; +import noStatements from "~/configs/no-statements"; +import stylistic from "~/configs/stylistic"; +import { rules } from "~/rules"; /** * Test the given config. diff --git a/tests/helpers/util.ts b/tests/helpers/util.ts index 306952f8e..6c6173d5b 100644 --- a/tests/helpers/util.ts +++ b/tests/helpers/util.ts @@ -1,7 +1,7 @@ import type { TSESLint } from "@typescript-eslint/experimental-utils"; import type { Rule, RuleTester as ESLintRuleTester } from "eslint"; -import ts from "../../src/util/conditional-imports/typescript"; +import ts from "~/conditional-imports/typescript"; import { filename } from "./configs"; diff --git a/tests/index.test.ts b/tests/index.test.ts index 5ae7f8ebd..579a6331d 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -4,7 +4,7 @@ import { readdirSync } from "fs"; -import plugin from "../src"; +import plugin from "~/index"; describe("plugin", () => { const ruleFiles: ReadonlyArray = readdirSync("./src/rules").filter( diff --git a/tests/rules/_work.test.ts b/tests/rules/_work.test.ts index 4d502631e..e62cf2eb2 100644 --- a/tests/rules/_work.test.ts +++ b/tests/rules/_work.test.ts @@ -9,15 +9,15 @@ import { InvalidTestCase, processValidTestCase, processInvalidTestCase, -} from "../helpers/util"; -import { typescript } from "../helpers/configs"; +} from "~/tests/helpers/util"; +import { typescript } from "~/tests/helpers/configs"; import { RuleTester } from "eslint"; /* * Step 1. * Import the rule to test. */ -import { rule } from "../../src/rules/prefer-readonly-type"; +import { rule } from "~/rules/prefer-readonly-type"; /* * Step 2a. diff --git a/tests/rules/functional-parameters.test.ts b/tests/rules/functional-parameters.test.ts index bc71beb58..7f0a3bd92 100644 --- a/tests/rules/functional-parameters.test.ts +++ b/tests/rules/functional-parameters.test.ts @@ -5,14 +5,14 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/functional-parameters"; -import { es3, es6, typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/functional-parameters"; +import { es3, es6, typescript } from "~/tests//helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests//helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const es3Valid: ReadonlyArray = [ diff --git a/tests/rules/immutable-data.test.ts b/tests/rules/immutable-data.test.ts index 2fdf82acd..5680d3dc4 100644 --- a/tests/rules/immutable-data.test.ts +++ b/tests/rules/immutable-data.test.ts @@ -5,14 +5,14 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/immutable-data"; -import { es3, es6, typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/immutable-data"; +import { es3, es6, typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const objectES3Valid: ReadonlyArray = [ diff --git a/tests/rules/index.test.ts b/tests/rules/index.test.ts index 406b79793..bb027f501 100644 --- a/tests/rules/index.test.ts +++ b/tests/rules/index.test.ts @@ -1,6 +1,6 @@ import * as fs from "fs"; -import { rules } from "../../src/rules"; +import { rules } from "~/rules"; describe("./src/rules/index.ts", () => { const rulesNames: ReadonlyArray = Object.keys(rules); diff --git a/tests/rules/no-class.test.ts b/tests/rules/no-class.test.ts index 5af73ac9a..ed5a6568d 100644 --- a/tests/rules/no-class.test.ts +++ b/tests/rules/no-class.test.ts @@ -4,14 +4,14 @@ import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/no-class"; -import { es6, typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/src/rules/no-class"; +import { es6, typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const valid: ReadonlyArray = []; diff --git a/tests/rules/no-conditional-statement.test.ts b/tests/rules/no-conditional-statement.test.ts index 04ece7d67..dd61d101c 100644 --- a/tests/rules/no-conditional-statement.test.ts +++ b/tests/rules/no-conditional-statement.test.ts @@ -5,14 +5,14 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/no-conditional-statement"; -import { es3, typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/no-conditional-statement"; +import { es3, typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const es3Valid: ReadonlyArray = [ diff --git a/tests/rules/no-expression-statement.test.ts b/tests/rules/no-expression-statement.test.ts index a8bd6984b..37a521498 100644 --- a/tests/rules/no-expression-statement.test.ts +++ b/tests/rules/no-expression-statement.test.ts @@ -5,14 +5,14 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/no-expression-statement"; -import { es3, typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/no-expression-statement"; +import { es3, typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const valid: ReadonlyArray = [ diff --git a/tests/rules/no-let.test.ts b/tests/rules/no-let.test.ts index 1472650ae..75d25fc4a 100644 --- a/tests/rules/no-let.test.ts +++ b/tests/rules/no-let.test.ts @@ -5,14 +5,14 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/no-let"; -import { es6, typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/no-let"; +import { es6, typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const valid: ReadonlyArray = [ diff --git a/tests/rules/no-loop-statement.test.ts b/tests/rules/no-loop-statement.test.ts index 0023ee65f..0ae7ed1ef 100644 --- a/tests/rules/no-loop-statement.test.ts +++ b/tests/rules/no-loop-statement.test.ts @@ -4,14 +4,14 @@ import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/no-loop-statement"; -import { es3, es6, typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/src/rules/no-loop-statement"; +import { es3, es6, typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const valid: ReadonlyArray = []; diff --git a/tests/rules/no-method-signature.test.ts b/tests/rules/no-method-signature.test.ts index 9d967f92c..2525f7e2e 100644 --- a/tests/rules/no-method-signature.test.ts +++ b/tests/rules/no-method-signature.test.ts @@ -5,14 +5,14 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/no-method-signature"; -import { typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/no-method-signature"; +import { typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const valid: ReadonlyArray = [ diff --git a/tests/rules/no-mixed-type.test.ts b/tests/rules/no-mixed-type.test.ts index 4d393ec11..180b18fa7 100644 --- a/tests/rules/no-mixed-type.test.ts +++ b/tests/rules/no-mixed-type.test.ts @@ -5,14 +5,14 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/no-mixed-type"; -import { typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/no-mixed-type"; +import { typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const valid: ReadonlyArray = [ diff --git a/tests/rules/no-promise-reject.test.ts b/tests/rules/no-promise-reject.test.ts index f7840ed22..6d736149d 100644 --- a/tests/rules/no-promise-reject.test.ts +++ b/tests/rules/no-promise-reject.test.ts @@ -5,14 +5,14 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/no-promise-reject"; -import { es6, typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/no-promise-reject"; +import { es6, typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const valid: ReadonlyArray = [ diff --git a/tests/rules/no-return-void.test.ts b/tests/rules/no-return-void.test.ts index 7c9c740fc..4425b6504 100644 --- a/tests/rules/no-return-void.test.ts +++ b/tests/rules/no-return-void.test.ts @@ -5,14 +5,14 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/no-return-void"; -import { typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/no-return-void"; +import { typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const valid: ReadonlyArray = [ diff --git a/tests/rules/no-this-expression.test.ts b/tests/rules/no-this-expression.test.ts index eba410e1f..c9594856c 100644 --- a/tests/rules/no-this-expression.test.ts +++ b/tests/rules/no-this-expression.test.ts @@ -4,14 +4,14 @@ import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/no-this-expression"; -import { es3, typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/no-this-expression"; +import { es3, typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const valid: ReadonlyArray = [ diff --git a/tests/rules/no-throw-statement.test.ts b/tests/rules/no-throw-statement.test.ts index d7a9df6e1..cca0848c0 100644 --- a/tests/rules/no-throw-statement.test.ts +++ b/tests/rules/no-throw-statement.test.ts @@ -5,14 +5,14 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/no-throw-statement"; -import { es3, typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/no-throw-statement"; +import { es3, typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const valid: ReadonlyArray = []; diff --git a/tests/rules/no-try-statement.test.ts b/tests/rules/no-try-statement.test.ts index 8f0a32999..fa6942546 100644 --- a/tests/rules/no-try-statement.test.ts +++ b/tests/rules/no-try-statement.test.ts @@ -4,14 +4,14 @@ import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/no-try-statement"; -import { es3, typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/no-try-statement"; +import { es3, typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const valid: ReadonlyArray = [ diff --git a/tests/rules/prefer-readonly-type.test.ts b/tests/rules/prefer-readonly-type.test.ts index 4f2eb0948..fc3fbeb9e 100644 --- a/tests/rules/prefer-readonly-type.test.ts +++ b/tests/rules/prefer-readonly-type.test.ts @@ -5,14 +5,14 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/prefer-readonly-type"; -import { typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/prefer-readonly-type"; +import { typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const valid: ReadonlyArray = [ diff --git a/tests/rules/prefer-tacit.test.ts b/tests/rules/prefer-tacit.test.ts index 882efb579..3abe95da3 100644 --- a/tests/rules/prefer-tacit.test.ts +++ b/tests/rules/prefer-tacit.test.ts @@ -5,14 +5,14 @@ import dedent from "dedent"; import { RuleTester } from "eslint"; -import { name, rule } from "../../src/rules/prefer-tacit"; -import { es6, typescript } from "../helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "../helpers/util"; +import { name, rule } from "~/rules/prefer-tacit"; +import { es6, typescript } from "~/tests/helpers/configs"; +import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; import { describeTsOnly, processInvalidTestCase, processValidTestCase, -} from "../helpers/util"; +} from "~/tests/helpers/util"; // Valid test cases. const es6Valid: ReadonlyArray = [ diff --git a/tsconfig.base.json b/tsconfig.base.json index ba55de16b..66ce3cccc 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -7,12 +7,24 @@ "lib": [ "ESNext" ], + "baseUrl": ".", + "paths": { + "~/*": ["./*"], + "~/index": ["./src"], + "~/common/*": ["src/common/*"], + "~/configs/*": ["src/configs/*"], + "~/rules": ["src/rules"], + "~/rules/*": ["src/rules/*"], + "~/util/*": ["src/util/*"], + "~/conditional-imports/*": ["src/util/conditional-imports/*"], + "~/tests/*": ["tests/*"] + }, "module": "ESNext", "moduleResolution": "node", "newLine": "LF", "noEmitOnError": true, "resolveJsonModule": true, "strict": true, - "target": "ES2018", + "target": "ES2018" } } diff --git a/tsconfig.json b/tsconfig.json index 098c0735d..3f9f47e68 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "./tsconfig.base.json", "compilerOptions": { - "rootDir": "./src", + "rootDir": ".", "removeComments": true }, "exclude": [ diff --git a/yarn.lock b/yarn.lock index a985f9a5a..5d3304f2b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,26 +4,26 @@ "@babel/code-frame@7.12.11", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" "@babel/code-frame@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz" integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== dependencies: "@babel/highlight" "^7.14.5" "@babel/compat-data@^7.14.5": version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz" integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== "@babel/core@^7.1.0", "@babel/core@^7.7.5": version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz" integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== dependencies: "@babel/code-frame" "^7.10.4" @@ -44,7 +44,7 @@ "@babel/core@^7.12.16": version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.8.tgz#20cdf7c84b5d86d83fac8710a8bc605a7ba3f010" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz" integrity sha512-/AtaeEhT6ErpDhInbXmjHcUQXH0L0TEgscfcxk1qbOvLuKCa5aZT0SOOtDKFY96/CLROwbLSKyFor6idgNaU4Q== dependencies: "@babel/code-frame" "^7.14.5" @@ -65,7 +65,7 @@ "@babel/eslint-parser@^7.12.16": version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.14.7.tgz#91be59a4f7dd60d02a3ef772d156976465596bda" + resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.14.7.tgz" integrity sha512-6WPwZqO5priAGIwV6msJcdc9TsEPzYeYdS/Xuoap+/ihkgN6dzHp2bcAAwyWZ5bLzk0vvjDmKvRwkqNaiJ8BiQ== dependencies: eslint-scope "^5.1.1" @@ -74,7 +74,7 @@ "@babel/generator@^7.12.10": version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.10.tgz#2b188fc329fb8e4f762181703beffc0fe6df3460" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.12.10.tgz" integrity sha512-6mCdfhWgmqLdtTkhXjnIz0LcdVCd26wS2JXRtj2XY0u5klDsXBREA/pG5NVOuVnF2LUrBGNFtQkIqqTbblg0ww== dependencies: "@babel/types" "^7.12.10" @@ -83,7 +83,7 @@ "@babel/generator@^7.14.8": version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.8.tgz#bf86fd6af96cf3b74395a8ca409515f89423e070" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.14.8.tgz" integrity sha512-cYDUpvIzhBVnMzRoY1fkSEhK/HmwEVwlyULYgn/tMQYd6Obag3ylCjONle3gdErfXBW61SVTlR9QR7uWlgeIkg== dependencies: "@babel/types" "^7.14.8" @@ -92,7 +92,7 @@ "@babel/helper-compilation-targets@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz" integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== dependencies: "@babel/compat-data" "^7.14.5" @@ -102,7 +102,7 @@ "@babel/helper-function-name@^7.10.4": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz" integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== dependencies: "@babel/helper-get-function-arity" "^7.10.4" @@ -111,7 +111,7 @@ "@babel/helper-function-name@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz" integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== dependencies: "@babel/helper-get-function-arity" "^7.14.5" @@ -120,56 +120,56 @@ "@babel/helper-get-function-arity@^7.10.4": version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" + resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz" integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== dependencies: "@babel/types" "^7.12.10" "@babel/helper-get-function-arity@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" + resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz" integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== dependencies: "@babel/types" "^7.14.5" "@babel/helper-hoist-variables@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz" integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== dependencies: "@babel/types" "^7.14.5" "@babel/helper-member-expression-to-functions@^7.12.1": version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz" integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== dependencies: "@babel/types" "^7.12.7" "@babel/helper-member-expression-to-functions@^7.14.5": version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz" integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== dependencies: "@babel/types" "^7.14.5" "@babel/helper-module-imports@^7.12.1": version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz" integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== dependencies: "@babel/types" "^7.12.5" "@babel/helper-module-imports@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz" integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== dependencies: "@babel/types" "^7.14.5" "@babel/helper-module-transforms@^7.12.1": version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz" integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== dependencies: "@babel/helper-module-imports" "^7.12.1" @@ -184,7 +184,7 @@ "@babel/helper-module-transforms@^7.14.8": version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz#d4279f7e3fd5f4d5d342d833af36d4dd87d7dc49" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.14.8.tgz" integrity sha512-RyE+NFOjXn5A9YU1dkpeBaduagTlZ0+fccnIcAGbv1KGUlReBj7utF7oEth8IdIBQPcux0DDgW5MFBH2xu9KcA== dependencies: "@babel/helper-module-imports" "^7.14.5" @@ -198,26 +198,26 @@ "@babel/helper-optimise-call-expression@^7.10.4": version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz" integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== dependencies: "@babel/types" "^7.12.10" "@babel/helper-optimise-call-expression@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz" integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== dependencies: "@babel/types" "^7.14.5" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz" integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== "@babel/helper-replace-supers@^7.12.1": version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz#f009a17543bbbbce16b06206ae73b63d3fca68d9" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz" integrity sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA== dependencies: "@babel/helper-member-expression-to-functions" "^7.12.1" @@ -227,7 +227,7 @@ "@babel/helper-replace-supers@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz" integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== dependencies: "@babel/helper-member-expression-to-functions" "^7.14.5" @@ -237,50 +237,50 @@ "@babel/helper-simple-access@^7.12.1": version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz" integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== dependencies: "@babel/types" "^7.12.1" "@babel/helper-simple-access@^7.14.8": version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz" integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== dependencies: "@babel/types" "^7.14.8" "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz" integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== dependencies: "@babel/types" "^7.11.0" "@babel/helper-split-export-declaration@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz" integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== dependencies: "@babel/types" "^7.14.5" "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.8": version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz#32be33a756f29e278a0d644fa08a2c9e0f88a34c" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.8.tgz" integrity sha512-ZGy6/XQjllhYQrNw/3zfWRwZCTVSiBLZ9DHVZxn9n2gip/7ab8mv2TWlKPIBk26RwedCBoWdjLmn+t9na2Gcow== "@babel/helper-validator-option@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz" integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== "@babel/helpers@^7.12.5": version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz" integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== dependencies: "@babel/template" "^7.10.4" @@ -289,7 +289,7 @@ "@babel/helpers@^7.14.8": version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.8.tgz" integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== dependencies: "@babel/template" "^7.14.5" @@ -298,7 +298,7 @@ "@babel/highlight@^7.10.4": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz" integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== dependencies: "@babel/helper-validator-identifier" "^7.10.4" @@ -307,7 +307,7 @@ "@babel/highlight@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz" integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== dependencies: "@babel/helper-validator-identifier" "^7.14.5" @@ -316,101 +316,101 @@ "@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.7", "@babel/parser@^7.7.0": version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.10.tgz#824600d59e96aea26a5a2af5a9d812af05c3ae81" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.10.tgz" integrity sha512-PJdRPwyoOqFAWfLytxrWwGrAxghCgh/yTNCYciOz8QgjflA7aZhECPZAa2VUedKg2+QMWkI0L9lynh2SNmNEgA== "@babel/parser@^7.14.5", "@babel/parser@^7.14.8": version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.8.tgz#66fd41666b2d7b840bd5ace7f7416d5ac60208d4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz" integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz" integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz" integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.3.3": version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz" integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== dependencies: "@babel/code-frame" "^7.10.4" @@ -419,7 +419,7 @@ "@babel/template@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz" integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== dependencies: "@babel/code-frame" "^7.14.5" @@ -428,7 +428,7 @@ "@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.7.0": version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.10.tgz#2d1f4041e8bf42ea099e5b2dc48d6a594c00017a" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.10.tgz" integrity sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg== dependencies: "@babel/code-frame" "^7.10.4" @@ -443,7 +443,7 @@ "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8": version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.8.tgz#c0253f02677c5de1a8ff9df6b0aacbec7da1a8ce" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz" integrity sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg== dependencies: "@babel/code-frame" "^7.14.5" @@ -458,7 +458,7 @@ "@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.7.0": version "7.12.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.10.tgz#7965e4a7260b26f09c56bcfcb0498af1f6d9b260" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.12.10.tgz" integrity sha512-sf6wboJV5mGyip2hIpDSKsr80RszPinEFjsHTalMxZAZkoQ2/2yQzxlcFN52SJqsyPfLtPmenL4g2KB3KJXPDw== dependencies: "@babel/helper-validator-identifier" "^7.10.4" @@ -467,7 +467,7 @@ "@babel/types@^7.14.5", "@babel/types@^7.14.8": version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.8.tgz#38109de8fcadc06415fbd9b74df0065d4d41c728" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.14.8.tgz" integrity sha512-iob4soQa7dZw8nodR/KlOQkPh9S4I8RwCxwRIFuiMRYjOzH/KJzdUfDgz6cGi5dDaclXF4P2PAhCdrBJNIg68Q== dependencies: "@babel/helper-validator-identifier" "^7.14.8" @@ -475,12 +475,12 @@ "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@cnakazawa/watch@^1.0.3": version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + resolved "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz" integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== dependencies: exec-sh "^0.3.2" @@ -488,7 +488,7 @@ "@es-joy/jsdoccomment@0.9.0-alpha.1": version "0.9.0-alpha.1" - resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.9.0-alpha.1.tgz#f48bd162e185ec7f9f222273a282d10e52fe52f7" + resolved "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.9.0-alpha.1.tgz" integrity sha512-Clxxc0PwpISoYYBibA+1L2qFJ7gvFVhI2Hos87S06K+Q0cXdOhZQJNKWuaQGPAeHjZEuUB/YoWOfwjuF2wirqA== dependencies: comment-parser "1.1.6-beta.0" @@ -497,7 +497,7 @@ "@eslint/eslintrc@^0.4.3": version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: ajv "^6.12.4" @@ -512,7 +512,7 @@ "@humanwhocodes/config-array@^0.5.0": version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== dependencies: "@humanwhocodes/object-schema" "^1.2.0" @@ -521,12 +521,12 @@ "@humanwhocodes/object-schema@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz" integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" @@ -537,12 +537,12 @@ "@istanbuljs/schema@^0.1.2": version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== "@jest/console@^26.6.2": version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + resolved "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz" integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: "@jest/types" "^26.6.2" @@ -554,7 +554,7 @@ "@jest/core@^26.6.3": version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + resolved "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz" integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== dependencies: "@jest/console" "^26.6.2" @@ -588,7 +588,7 @@ "@jest/environment@^26.6.2": version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz" integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== dependencies: "@jest/fake-timers" "^26.6.2" @@ -598,7 +598,7 @@ "@jest/fake-timers@^26.6.2": version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz" integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== dependencies: "@jest/types" "^26.6.2" @@ -610,7 +610,7 @@ "@jest/globals@^26.6.2": version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz" integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== dependencies: "@jest/environment" "^26.6.2" @@ -619,7 +619,7 @@ "@jest/reporters@^26.6.2": version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz" integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== dependencies: "@bcoe/v8-coverage" "^0.2.3" @@ -651,7 +651,7 @@ "@jest/source-map@^26.6.2": version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz" integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== dependencies: callsites "^3.0.0" @@ -660,7 +660,7 @@ "@jest/test-result@^26.6.2": version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz" integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: "@jest/console" "^26.6.2" @@ -670,7 +670,7 @@ "@jest/test-sequencer@^26.6.3": version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz" integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== dependencies: "@jest/test-result" "^26.6.2" @@ -681,7 +681,7 @@ "@jest/transform@^26.6.2": version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz" integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" @@ -702,7 +702,7 @@ "@jest/types@^26.6.2": version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" @@ -713,7 +713,7 @@ "@nodelib/fs.scandir@2.1.3": version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz" integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== dependencies: "@nodelib/fs.stat" "2.0.3" @@ -721,12 +721,12 @@ "@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz" integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== "@nodelib/fs.walk@^1.2.3": version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz" integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== dependencies: "@nodelib/fs.scandir" "2.1.3" @@ -734,14 +734,14 @@ "@rebeccastevens/eslint-config@^1.0.10": version "1.0.10" - resolved "https://registry.yarnpkg.com/@rebeccastevens/eslint-config/-/eslint-config-1.0.10.tgz#3287a17c618afd326553e3b23aefa5c3a5335333" + resolved "https://registry.npmjs.org/@rebeccastevens/eslint-config/-/eslint-config-1.0.10.tgz" integrity sha512-VW7zpKL0mrclSjOZfIoFXADemr7kfcHz8Ev3WmG0ZmD/IKONzStJHOzJR57Y6uc/MZvtHCw1ILt3XmuZmoVVaw== dependencies: deepmerge "^4.0.0" "@rollup/plugin-commonjs@^17.0.0": version "17.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz#757ec88737dffa8aa913eb392fade2e45aef2a2d" + resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz" integrity sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew== dependencies: "@rollup/pluginutils" "^3.1.0" @@ -754,14 +754,14 @@ "@rollup/plugin-json@^4.1.0": version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + resolved "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz" integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== dependencies: "@rollup/pluginutils" "^3.0.8" "@rollup/plugin-node-resolve@^11.0.0": version "11.2.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.0.tgz#a5ab88c35bb7622d115f44984dee305112b6f714" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.0.tgz" integrity sha512-qHjNIKYt5pCcn+5RUBQxK8krhRvf1HnyVgUCcFFcweDS7fhkOLZeYh0mhHK6Ery8/bb9tvN/ubPzmfF0qjDCTA== dependencies: "@rollup/pluginutils" "^3.1.0" @@ -773,7 +773,7 @@ "@rollup/plugin-typescript@^8.0.0": version "8.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-8.1.0.tgz#b7bbbbb4fd1324834f37844efd48b3844d912742" + resolved "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.1.0.tgz" integrity sha512-pyQlcGQYRsONUDwXK3ckGPHjPzmjlq4sinzr7emW8ZMb2oZjg9WLcdcP8wyHSvBjvHrLzMayyPy079RROqb4vw== dependencies: "@rollup/pluginutils" "^3.1.0" @@ -781,7 +781,7 @@ "@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== dependencies: "@types/estree" "0.0.39" @@ -790,26 +790,46 @@ "@sinonjs/commons@^1.7.0": version "1.8.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.1.tgz#e7df00f98a203324f6dc7cc606cad9d4a8ab2217" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz" integrity sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw== dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^6.0.1": version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz" integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== dependencies: "@sinonjs/commons" "^1.7.0" "@tootallnate/once@1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@tsconfig/node10@^1.0.7": + version "1.0.8" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + +"@tsconfig/node12@^1.0.7": + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz" + integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + +"@tsconfig/node14@^1.0.0": + version "1.0.1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + +"@tsconfig/node16@^1.0.1": + version "1.0.2" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": version "7.1.12" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz" integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== dependencies: "@babel/parser" "^7.1.0" @@ -820,14 +840,14 @@ "@types/babel__generator@*": version "7.6.2" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz" integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.0" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz" integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== dependencies: "@babel/parser" "^7.1.0" @@ -835,19 +855,19 @@ "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": version "7.11.0" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz" integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== dependencies: "@babel/types" "^7.3.0" "@types/dedent@^0.7.0": version "0.7.0" - resolved "https://registry.yarnpkg.com/@types/dedent/-/dedent-0.7.0.tgz#155f339ca404e6dd90b9ce46a3f78fd69ca9b050" + resolved "https://registry.npmjs.org/@types/dedent/-/dedent-0.7.0.tgz" integrity sha512-EGlKlgMhnLt/cM4DbUSafFdrkeJoC9Mvnj0PUCU7tFmTjMjNRT957kXCx0wYm3JuEq4o4ZsS5vG+NlkM2DMd2A== "@types/eslint@^7.2.6": version "7.2.10" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.10.tgz#4b7a9368d46c0f8cd5408c23288a59aa2394d917" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.10.tgz" integrity sha512-kUEPnMKrqbtpCq/KTaGFFKAcz6Ethm2EjCoKIDaCmfRBWLbFuTcOJfTlorwbnboXBzahqWLgUp1BQeKHiJzPUQ== dependencies: "@types/estree" "*" @@ -855,17 +875,17 @@ "@types/estree@*", "@types/estree@^0.0.46": version "0.0.46" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz" integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== "@types/estree@0.0.39": version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/glob@^7.1.1": version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz" integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== dependencies: "@types/minimatch" "*" @@ -873,33 +893,33 @@ "@types/graceful-fs@^4.1.2": version "4.1.4" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz" integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz" integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== "@types/istanbul-lib-report@*": version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz" integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@26.x", "@types/jest@^26.0.19": version "26.0.23" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.23.tgz#a1b7eab3c503b80451d019efb588ec63522ee4e7" + resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz" integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA== dependencies: jest-diff "^26.0.0" @@ -907,78 +927,85 @@ "@types/json-schema@*", "@types/json-schema@^7.0.7": version "7.0.7" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== "@types/json5@^0.0.29": version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= "@types/mdast@^3.0.0": version "3.0.7" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.7.tgz#cba63d0cc11eb1605cea5c0ad76e02684394166b" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.7.tgz" integrity sha512-YwR7OK8aPmaBvMMUi+pZXBNoW2unbVbfok4YRqGMJBe1dpDlzpRkJrYEYmvjxgs5JhuQmKfDexrN98u941Zasg== dependencies: "@types/unist" "*" "@types/minimatch@*": version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*", "@types/node@15.0.1": version "15.0.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.1.tgz#ef34dea0881028d11398be5bf4e856743e3dc35a" + resolved "https://registry.npmjs.org/@types/node/-/node-15.0.1.tgz" integrity sha512-TMkXt0Ck1y0KKsGr9gJtWGjttxlZnnvDtphxUOSd0bfaR6Q1jle+sPvrzNR1urqYTWMinoKvjKfXUGsumaO1PA== "@types/normalize-package-data@^2.4.0": version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz" integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== "@types/parse-json@^4.0.0": version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prettier@^2.0.0": version "2.1.5" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.5.tgz#b6ab3bba29e16b821d84e09ecfaded462b816b00" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.5.tgz" integrity sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ== "@types/resolve@1.17.1": version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" +"@types/rollup-plugin-auto-external@^2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@types/rollup-plugin-auto-external/-/rollup-plugin-auto-external-2.0.2.tgz" + integrity sha512-1Xtl9S4yQapD+A4mX1sqYVXm3UmVA9oIEf2YKEhRTCUNxlAM3DoKK1HPxrGMemDJNfhe6Yl3w0JsAGvIN5j/ow== + dependencies: + rollup ">=2.0.0" + "@types/stack-utils@^2.0.0": version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz" integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== "@types/unist@*", "@types/unist@^2.0.2": version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== "@types/yargs-parser@*": version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz" integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== "@types/yargs@^15.0.0": version "15.0.11" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.11.tgz#361d7579ecdac1527687bcebf9946621c12ab78c" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.11.tgz" integrity sha512-jfcNBxHFYJ4nPIacsi3woz1+kvUO6s1CyeEhtnDHBjHUMNj5UlW2GynmnSgiJJEdNg9yW5C8lfoNRZrHGv5EqA== dependencies: "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^4.28.4": version "4.28.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.4.tgz#e73c8cabbf3f08dee0e1bda65ed4e622ae8f8921" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.4.tgz" integrity sha512-s1oY4RmYDlWMlcV0kKPBaADn46JirZzvvH7c2CtAqxCY96S538JRBAzt83RrfkDheV/+G/vWNK0zek+8TB3Gmw== dependencies: "@typescript-eslint/experimental-utils" "4.28.4" @@ -991,7 +1018,7 @@ "@typescript-eslint/experimental-utils@4.28.4": version "4.28.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.4.tgz#9c70c35ebed087a5c70fb0ecd90979547b7fec96" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.4.tgz" integrity sha512-OglKWOQRWTCoqMSy6pm/kpinEIgdcXYceIcH3EKWUl4S8xhFtN34GQRaAvTIZB9DD94rW7d/U7tUg3SYeDFNHA== dependencies: "@types/json-schema" "^7.0.7" @@ -1003,7 +1030,7 @@ "@typescript-eslint/experimental-utils@^4.0.1", "@typescript-eslint/experimental-utils@^4.9.1": version "4.28.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.1.tgz#3869489dcca3c18523c46018b8996e15948dbadc" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.1.tgz" integrity sha512-n8/ggadrZ+uyrfrSEchx3jgODdmcx7MzVM2sI3cTpI/YlfSm0+9HEUaWw3aQn2urL2KYlWYMDgn45iLfjDYB+Q== dependencies: "@types/json-schema" "^7.0.7" @@ -1015,7 +1042,7 @@ "@typescript-eslint/parser@^4.28.4": version "4.28.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.4.tgz#bc462dc2779afeefdcf49082516afdc3e7b96fab" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.28.4.tgz" integrity sha512-4i0jq3C6n+og7/uCHiE6q5ssw87zVdpUj1k6VlVYMonE3ILdFApEzTWgppSRG4kVNB/5jxnH+gTeKLMNfUelQA== dependencies: "@typescript-eslint/scope-manager" "4.28.4" @@ -1025,7 +1052,7 @@ "@typescript-eslint/scope-manager@4.28.1": version "4.28.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.1.tgz#fd3c20627cdc12933f6d98b386940d8d0ce8a991" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.1.tgz" integrity sha512-o95bvGKfss6705x7jFGDyS7trAORTy57lwJ+VsYwil/lOUxKQ9tA7Suuq+ciMhJc/1qPwB3XE2DKh9wubW8YYA== dependencies: "@typescript-eslint/types" "4.28.1" @@ -1033,7 +1060,7 @@ "@typescript-eslint/scope-manager@4.28.4": version "4.28.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.4.tgz#bdbce9b6a644e34f767bd68bc17bb14353b9fe7f" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.28.4.tgz" integrity sha512-ZJBNs4usViOmlyFMt9X9l+X0WAFcDH7EdSArGqpldXu7aeZxDAuAzHiMAeI+JpSefY2INHrXeqnha39FVqXb8w== dependencies: "@typescript-eslint/types" "4.28.4" @@ -1041,17 +1068,17 @@ "@typescript-eslint/types@4.28.1": version "4.28.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.1.tgz#d0f2ecbef3684634db357b9bbfc97b94b828f83f" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.1.tgz" integrity sha512-4z+knEihcyX7blAGi7O3Fm3O6YRCP+r56NJFMNGsmtdw+NCdpG5SgNz427LS9nQkRVTswZLhz484hakQwB8RRg== "@typescript-eslint/types@4.28.4": version "4.28.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.4.tgz#41acbd79b5816b7c0dd7530a43d97d020d3aeb42" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.28.4.tgz" integrity sha512-3eap4QWxGqkYuEmVebUGULMskR6Cuoc/Wii0oSOddleP4EGx1tjLnZQ0ZP33YRoMDCs5O3j56RBV4g14T4jvww== "@typescript-eslint/typescript-estree@4.28.1": version "4.28.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.1.tgz#af882ae41740d1f268e38b4d0fad21e7e8d86a81" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.1.tgz" integrity sha512-GhKxmC4sHXxHGJv8e8egAZeTZ6HI4mLU6S7FUzvFOtsk7ZIDN1ksA9r9DyOgNqowA9yAtZXV0Uiap61bIO81FQ== dependencies: "@typescript-eslint/types" "4.28.1" @@ -1064,7 +1091,7 @@ "@typescript-eslint/typescript-estree@4.28.4": version "4.28.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.4.tgz#252e6863278dc0727244be9e371eb35241c46d00" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.4.tgz" integrity sha512-z7d8HK8XvCRyN2SNp+OXC2iZaF+O2BTquGhEYLKLx5k6p0r05ureUtgEfo5f6anLkhCxdHtCf6rPM1p4efHYDQ== dependencies: "@typescript-eslint/types" "4.28.4" @@ -1077,7 +1104,7 @@ "@typescript-eslint/visitor-keys@4.28.1": version "4.28.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.1.tgz#162a515ee255f18a6068edc26df793cdc1ec9157" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.1.tgz" integrity sha512-K4HMrdFqr9PFquPu178SaSb92CaWe2yErXyPumc8cYWxFmhgJsNY9eSePmO05j0JhBvf2Cdhptd6E6Yv9HVHcg== dependencies: "@typescript-eslint/types" "4.28.1" @@ -1085,7 +1112,7 @@ "@typescript-eslint/visitor-keys@4.28.4": version "4.28.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.4.tgz#92dacfefccd6751cbb0a964f06683bfd72d0c4d3" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.4.tgz" integrity sha512-NIAXAdbz1XdOuzqkJHjNKXKj8QQ4cv5cxR/g0uQhCYf/6//XrmfpaYsM7PnBcNbfvTDLUkqQ5TPNm1sozDdTWg== dependencies: "@typescript-eslint/types" "4.28.4" @@ -1093,12 +1120,12 @@ abab@^2.0.3: version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== acorn-globals@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: acorn "^7.1.1" @@ -1106,39 +1133,39 @@ acorn-globals@^6.0.0: acorn-jsx@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== acorn-walk@^7.1.1: version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.4.1: version "8.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz" integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== agent-base@5: version "5.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-5.1.1.tgz#e8fb3f242959db44d63be665db7a8e739537a32c" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz" integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g== agent-base@6: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" @@ -1146,7 +1173,7 @@ aggregate-error@^3.0.0: ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -1156,7 +1183,7 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: ajv@^8.0.1: version "8.6.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz" integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== dependencies: fast-deep-equal "^3.1.1" @@ -1166,38 +1193,38 @@ ajv@^8.0.1: ansi-colors@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz" integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== dependencies: type-fest "^0.11.0" ansi-regex@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" anymatch@^1.3.0: version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz" integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== dependencies: micromatch "^2.1.5" @@ -1205,7 +1232,7 @@ anymatch@^1.3.0: anymatch@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" @@ -1213,49 +1240,54 @@ anymatch@^2.0.0: anymatch@^3.0.3: version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz" integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" argv@0.0.2: version "0.0.2" - resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" + resolved "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz" integrity sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas= arr-diff@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz" integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= dependencies: arr-flatten "^1.0.1" arr-diff@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== arr-union@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-includes@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz" integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== dependencies: call-bind "^1.0.2" @@ -1266,22 +1298,22 @@ array-includes@^3.1.3: array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array-unique@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= array-unique@^0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= array.prototype.flat@^1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz" integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== dependencies: call-bind "^1.0.0" @@ -1290,44 +1322,44 @@ array.prototype.flat@^1.2.4: asn1@~0.2.3: version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz" integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= assign-symbols@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= astral-regex@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-each@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= atob@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== auto-changelog@^2.2.1: version "2.3.0" - resolved "https://registry.yarnpkg.com/auto-changelog/-/auto-changelog-2.3.0.tgz#08ab8b1840a5d804410f1d1a5d2c4b2df0d835e1" + resolved "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.3.0.tgz" integrity sha512-S2B+RtTgytsa7l5iFGBoWT9W9ylITT5JJ8OaMJ7nrwvnlRm1dSS2tghaYueDeInZZafOE+1llH3tUQjMDRVS1g== dependencies: commander "^5.0.0" @@ -1338,17 +1370,17 @@ auto-changelog@^2.2.1: aws-sign2@~0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== babel-eslint@^10.0.2: version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz" integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== dependencies: "@babel/code-frame" "^7.0.0" @@ -1360,7 +1392,7 @@ babel-eslint@^10.0.2: babel-jest@^26.6.3: version "26.6.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz" integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== dependencies: "@jest/transform" "^26.6.2" @@ -1374,7 +1406,7 @@ babel-jest@^26.6.3: babel-plugin-istanbul@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz" integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -1385,7 +1417,7 @@ babel-plugin-istanbul@^6.0.0: babel-plugin-jest-hoist@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz" integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== dependencies: "@babel/template" "^7.3.3" @@ -1395,7 +1427,7 @@ babel-plugin-jest-hoist@^26.6.2: babel-preset-current-node-syntax@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz" integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -1413,7 +1445,7 @@ babel-preset-current-node-syntax@^1.0.0: babel-preset-jest@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz" integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== dependencies: babel-plugin-jest-hoist "^26.6.2" @@ -1421,7 +1453,7 @@ babel-preset-jest@^26.6.2: babel-runtime@^6.9.2: version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= dependencies: core-js "^2.4.0" @@ -1429,12 +1461,12 @@ babel-runtime@^6.9.2: balanced-match@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base@^0.11.1: version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" @@ -1447,14 +1479,14 @@ base@^0.11.1: bcrypt-pbkdf@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: tweetnacl "^0.14.3" binary-extensions@^1.0.0: version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== bindings@^1.5.0: @@ -1466,7 +1498,7 @@ bindings@^1.5.0: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -1474,7 +1506,7 @@ brace-expansion@^1.1.7: braces@^1.8.2: version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + resolved "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz" integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= dependencies: expand-range "^1.8.1" @@ -1483,7 +1515,7 @@ braces@^1.8.2: braces@^2.3.1: version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== dependencies: arr-flatten "^1.1.0" @@ -1499,19 +1531,19 @@ braces@^2.3.1: braces@^3.0.1: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" browser-process-hrtime@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== browserslist@^4.16.6: version "4.16.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz" integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== dependencies: caniuse-lite "^1.0.30001219" @@ -1522,43 +1554,43 @@ browserslist@^4.16.6: bs-logger@0.x: version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== dependencies: fast-json-stable-stringify "2.x" bser@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== builtin-modules@^3.0.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz" integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== builtin-modules@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz" integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== builtins@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-2.0.1.tgz#42a4d6fe38973a7c185b435970d13e5e70f70f3c" + resolved "https://registry.npmjs.org/builtins/-/builtins-2.0.1.tgz" integrity sha512-XkkVe5QAb6guWPXTzpSrYpSlN3nqEmrrE2TkAr/tp7idSF6+MONh9WvKrAuR3HiKLvoSgmbs8l1U9IPmMrIoLw== dependencies: semver "^6.0.0" cache-base@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" @@ -1573,7 +1605,7 @@ cache-base@^1.0.1: call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" @@ -1581,39 +1613,39 @@ call-bind@^1.0.0, call-bind@^1.0.2: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.0.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-lite@^1.0.30001219: version "1.0.30001246" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001246.tgz#fe17d9919f87124d6bb416ef7b325356d69dc76c" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001246.tgz" integrity sha512-Tc+ff0Co/nFNbLOrziBXmMVtpt9S2c2Y+Z9Nk9Khj09J+0zR9ejvIW5qkZAErCbOrVODCx/MN+GpB5FNBs5GFA== capture-exit@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + resolved "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz" integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== dependencies: rsvp "^4.8.4" caseless@~0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= chalk@^2.0.0: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -1622,7 +1654,7 @@ chalk@^2.0.0: chalk@^4.0.0, chalk@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: ansi-styles "^4.1.0" @@ -1630,27 +1662,27 @@ chalk@^4.0.0, chalk@^4.1.0: char-regex@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== character-entities-legacy@^1.0.0: version "1.1.4" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== character-entities@^1.0.0: version "1.2.4" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== character-reference-invalid@^1.0.0: version "1.1.4" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== chokidar@^1.6.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz" integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= dependencies: anymatch "^1.3.0" @@ -1666,22 +1698,22 @@ chokidar@^1.6.0: ci-info@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz" integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== cjs-module-lexer@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz" integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== class-utils@^0.3.5: version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" @@ -1691,26 +1723,26 @@ class-utils@^0.3.5: clean-regexp@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" + resolved "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz" integrity sha1-jffHquUf02h06PjQW5GAvBGj/tc= dependencies: escape-string-regexp "^1.0.5" clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: restore-cursor "^3.1.0" cli-truncate@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: slice-ansi "^3.0.0" @@ -1718,7 +1750,7 @@ cli-truncate@^2.1.0: cliui@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== dependencies: string-width "^4.2.0" @@ -1727,12 +1759,12 @@ cliui@^6.0.0: co@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= codecov@^3.8.1: version "3.8.1" - resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.8.1.tgz#06fe026b75525ed1ce864d4a34f1010c52c51546" + resolved "https://registry.npmjs.org/codecov/-/codecov-3.8.1.tgz" integrity sha512-Qm7ltx1pzLPsliZY81jyaQ80dcNR4/JpcX0IHCIWrHBXgseySqbdbYfkdiXd7o/xmzQpGRVCKGYeTrHUpn6Dcw== dependencies: argv "0.0.2" @@ -1743,12 +1775,12 @@ codecov@^3.8.1: collect-v8-coverage@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== collection-visit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" @@ -1756,95 +1788,95 @@ collection-visit@^1.0.0: color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colorette@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" commander@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== commander@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.0.tgz#b990bfb8ac030aedc6d11bc04d1488ffef56db75" + resolved "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz" integrity sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q== comment-parser@1.1.6-beta.0: version "1.1.6-beta.0" - resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.1.6-beta.0.tgz#57e503b18d0a5bd008632dcc54b1f95c2fffe8f6" + resolved "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.6-beta.0.tgz" integrity sha512-q3cA8TSMyqW7wcPSYWzbO/rMahnXgzs4SLG/UIWXdEsnXTFPZkEkWAdNgPiHig2OzxgpPLOh4WwsmClDxndwHw== commondir@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= component-emitter@^1.2.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" copy-descriptor@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js@^2.4.0: version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= cosmiconfig@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz" integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== dependencies: "@types/parse-json" "^4.0.0" @@ -1855,7 +1887,7 @@ cosmiconfig@^7.0.0: cpx@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + resolved "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz" integrity sha1-GFvgGFEdhycN7czCkxceN2VauI8= dependencies: babel-runtime "^6.9.2" @@ -1870,16 +1902,21 @@ cpx@^1.5.0: shell-quote "^1.6.1" subarg "^1.0.0" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-env@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== dependencies: cross-spawn "^7.0.1" cross-spawn@^6.0.0: version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== dependencies: nice-try "^1.0.4" @@ -1890,7 +1927,7 @@ cross-spawn@^6.0.0: cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -1899,31 +1936,31 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: cssom@^0.4.4: version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== cssom@~0.3.6: version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" dashdash@^1.12.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: assert-plus "^1.0.0" data-urls@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: abab "^2.0.3" @@ -1932,86 +1969,86 @@ data-urls@^2.0.0: debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@^3.2.7: version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" debug@^4.0.0, debug@^4.3.2: version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: ms "2.1.2" decamelize@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decimal.js@^10.2.0: version "10.2.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz" integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== decode-uri-component@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= dedent@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= deepmerge@^4.0.0, deepmerge@^4.2.2: version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== define-properties@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" @@ -2019,55 +2056,60 @@ define-property@^2.0.2: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= detect-newline@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== diff-sequences@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz" integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" domexception@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: webidl-conversions "^5.0.0" duplexer@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== ecc-jsbn@~0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: jsbn "~0.1.0" @@ -2075,43 +2117,43 @@ ecc-jsbn@~0.1.1: electron-to-chromium@^1.3.723: version "1.3.784" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.784.tgz#c370be79374b02b7f13e8a8fb0d7a02641161dac" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.784.tgz" integrity sha512-JTPxdUibkefeomWNaYs8lI/x/Zb4cOhZWX+d7kpzsNKzUd07pNuo/AcHeNJ/qgEchxM1IAxda9aaGUhKN/poOg== emittery@^0.7.1: version "0.7.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz" integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== end-of-stream@^1.1.0: version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: ansi-colors "^4.1.1" error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" es-abstract@^1.18.0-next.1: version "1.18.0-next.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz" integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== dependencies: call-bind "^1.0.2" @@ -2131,7 +2173,7 @@ es-abstract@^1.18.0-next.1: es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: version "1.18.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz" integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== dependencies: call-bind "^1.0.2" @@ -2153,7 +2195,7 @@ es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: es-to-primitive@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" @@ -2162,27 +2204,27 @@ es-to-primitive@^1.2.1: escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= escape-string-regexp@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escodegen@^1.14.1: version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: esprima "^4.0.1" @@ -2194,12 +2236,12 @@ escodegen@^1.14.1: eslint-config-prettier@^8.3.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz#f7471b20b6fe8a9a9254cc684454202886a2dd7a" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz" integrity sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew== eslint-import-resolver-node@^0.3.4: version "0.3.4" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz" integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== dependencies: debug "^2.6.9" @@ -2207,7 +2249,7 @@ eslint-import-resolver-node@^0.3.4: eslint-import-resolver-typescript@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.4.0.tgz#ec1e7063ebe807f0362a7320543aaed6fe1100e1" + resolved "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.4.0.tgz" integrity sha512-useJKURidCcldRLCNKWemr1fFQL1SzB3G4a0li6lFGvlc5xGe1hY343bvG07cbpCzPuM/lK19FIJB3XGFSkplA== dependencies: debug "^4.1.1" @@ -2218,7 +2260,7 @@ eslint-import-resolver-typescript@^2.4.0: eslint-module-utils@^2.6.1: version "2.6.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz#b51be1e473dd0de1c5ea638e22429c2490ea8233" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.1.tgz" integrity sha512-ZXI9B8cxAJIH4nfkhTwcRTEAnrVfobYqwjWy/QMCZ8rHkZHFjf9yO4BzpiF9kCSfNlMG54eKigISHpX0+AaT4A== dependencies: debug "^3.2.7" @@ -2226,7 +2268,7 @@ eslint-module-utils@^2.6.1: eslint-plugin-es@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz" integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== dependencies: eslint-utils "^2.0.0" @@ -2234,7 +2276,7 @@ eslint-plugin-es@^3.0.0: eslint-plugin-eslint-comments@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz#9e1cd7b4413526abb313933071d7aba05ca12ffa" + resolved "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz" integrity sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ== dependencies: escape-string-regexp "^1.0.5" @@ -2242,14 +2284,14 @@ eslint-plugin-eslint-comments@^3.2.0: eslint-plugin-eslint-plugin@^3.4.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-3.4.0.tgz#5a737bcf08fa11ee965461afc0be9da289de5d3f" + resolved "https://registry.npmjs.org/eslint-plugin-eslint-plugin/-/eslint-plugin-eslint-plugin-3.4.0.tgz" integrity sha512-oC+x2CGVUFfYx8WiXjddD1RA6Ng7hsVgPExgxy1mKaRZZFGP2jDaf6h08SOkRpP0LuNQTJ6bjdrLKxcwmB/TXQ== dependencies: eslint-utils "^2.1.0" eslint-plugin-import@^2.23.4: version "2.23.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz#8dceb1ed6b73e46e50ec9a5bb2411b645e7d3d97" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.23.4.tgz" integrity sha512-6/wP8zZRsnQFiR3iaPFgh5ImVRM1WN5NUWfTIRqwOdeiGJlBcSk82o1FEVq8yXmy4lkIzTo7YhHCIxlU/2HyEQ== dependencies: array-includes "^3.1.3" @@ -2270,14 +2312,14 @@ eslint-plugin-import@^2.23.4: eslint-plugin-jest@^24.4.0: version "24.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.4.0.tgz#fa4b614dbd46a98b652d830377971f097bda9262" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.4.0.tgz" integrity sha512-8qnt/hgtZ94E9dA6viqfViKBfkJwFHXgJmTWlMGDgunw1XJEGqm3eiPjDsTanM3/u/3Az82nyQM9GX7PM/QGmg== dependencies: "@typescript-eslint/experimental-utils" "^4.0.1" eslint-plugin-jsdoc@^35.5.1: version "35.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-35.5.1.tgz#45932ee22669bbe06c97b82b936d56361efad370" + resolved "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-35.5.1.tgz" integrity sha512-pPYPWtsykwVEue1tYEyoppBj4dgF7XicF67tLLLraY6RQYBq7qMKjUHji19+hfiTtYKKBD0YfeK8hgjPAE5viw== dependencies: "@es-joy/jsdoccomment" "0.9.0-alpha.1" @@ -2292,14 +2334,14 @@ eslint-plugin-jsdoc@^35.5.1: eslint-plugin-markdown@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-markdown/-/eslint-plugin-markdown-2.2.0.tgz#9c30bd51538a815e87e96646c69f11466b4c165f" + resolved "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-2.2.0.tgz" integrity sha512-Ctuc7aP1tU92qnFwVO1wDLEzf1jqMxwRkcSTw7gjbvnEqfh5CKUcTXM0sxg8CB2KDXrqpTuMZPgJ1XE9Olr7KA== dependencies: mdast-util-from-markdown "^0.8.5" eslint-plugin-node@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + resolved "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz" integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== dependencies: eslint-plugin-es "^3.0.0" @@ -2311,31 +2353,31 @@ eslint-plugin-node@^11.1.0: eslint-plugin-optimize-regex@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-optimize-regex/-/eslint-plugin-optimize-regex-1.2.0.tgz#c13bd6c716cce4c5001ee8b7af073f2e0609e030" + resolved "https://registry.npmjs.org/eslint-plugin-optimize-regex/-/eslint-plugin-optimize-regex-1.2.0.tgz" integrity sha512-pzpF7bGsdXVPue/ubLqS0UbBGuBajxh2fO8OmBDoN0SHrxEBKf8WOAxkOI80lBb81yiZs7hj6ZxlflbrV3YrsA== dependencies: regexp-tree "^0.1.20" eslint-plugin-prettier@^3.4.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz#cdbad3bf1dbd2b177e9825737fe63b476a08f0c7" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz" integrity sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw== dependencies: prettier-linter-helpers "^1.0.0" eslint-plugin-promise@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz#fb2188fb734e4557993733b41aa1a688f46c6f24" + resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz" integrity sha512-NGmI6BH5L12pl7ScQHbg7tvtk4wPxxj8yPHH47NvSmMtFneC077PSeY3huFj06ZWZvtbfxSPt3RuOQD5XcR4ng== eslint-plugin-sonarjs@^0.9.1: version "0.9.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.9.1.tgz#a3c63ab0d267bfb69863159e42c8081b01fd3ac6" + resolved "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.9.1.tgz" integrity sha512-KKFofk1LPjGHWeAZijYWv32c/C4mz+OAeBNVxhxHu1hknrTOhu415MWC8qKdAdsmOlBPShs9evM4mI1o7MNMhw== eslint-plugin-unicorn@^34.0.1: version "34.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-34.0.1.tgz#e31cfaf487591599ff1f1b1e74776cce59dcc3ae" + resolved "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-34.0.1.tgz" integrity sha512-GUBtRYRhPVOW/GDu6QtOjrneSZxY/MulOT8puJU+47VKCzNmMgS/iHO2gZqoQ7KPMrpNYlebUlvCWy3IR1USVQ== dependencies: ci-info "^3.2.0" @@ -2353,7 +2395,7 @@ eslint-plugin-unicorn@^34.0.1: eslint-scope@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" @@ -2361,7 +2403,7 @@ eslint-scope@^5.1.1: eslint-template-visitor@^2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/eslint-template-visitor/-/eslint-template-visitor-2.3.2.tgz#b52f96ff311e773a345d79053ccc78275bbc463d" + resolved "https://registry.npmjs.org/eslint-template-visitor/-/eslint-template-visitor-2.3.2.tgz" integrity sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA== dependencies: "@babel/core" "^7.12.16" @@ -2372,41 +2414,41 @@ eslint-template-visitor@^2.3.2: eslint-utils@^2.0.0, eslint-utils@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: eslint-visitor-keys "^1.1.0" eslint-utils@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: eslint-visitor-keys "^2.0.0" eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint-visitor-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz" integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== eslint-visitor-keys@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint-visitor-keys@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz#e32e99c6cdc2eb063f204eda5db67bfe58bb4186" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz" integrity sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q== eslint@^7.31.0: version "7.31.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.31.0.tgz#f972b539424bf2604907a970860732c5d99d3aca" + resolved "https://registry.npmjs.org/eslint/-/eslint-7.31.0.tgz" integrity sha512-vafgJpSh2ia8tnTkNUkwxGmnumgckLh5aAbLa1xRmIn9+owi8qBNGKL+B881kNKNTy7FFqTEkpNkUvmw0n6PkA== dependencies: "@babel/code-frame" "7.12.11" @@ -2452,7 +2494,7 @@ eslint@^7.31.0: espree@^7.3.0, espree@^7.3.1: version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: acorn "^7.4.0" @@ -2461,7 +2503,7 @@ espree@^7.3.0, espree@^7.3.1: espree@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-8.0.0.tgz#08c92c31814c96c96c54d3a35cc80f1cdb420275" + resolved "https://registry.npmjs.org/espree/-/espree-8.0.0.tgz" integrity sha512-y/+i23dwTjIDJrYCcjcAMr3c3UGbPIjC6THMQKjWmhP97fW0FPiI89kmpKfmgV/5jrkIi6toQP+CMm3qBE1Hig== dependencies: acorn "^8.4.1" @@ -2470,56 +2512,56 @@ espree@^8.0.0: esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.3.1, esquery@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== estree-walker@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== estree-walker@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== exec-sh@^0.3.2: version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz" integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== execa@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: cross-spawn "^6.0.0" @@ -2532,7 +2574,7 @@ execa@^1.0.0: execa@^4.0.0, execa@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" @@ -2547,19 +2589,19 @@ execa@^4.0.0, execa@^4.1.0: exit@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= expand-brackets@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz" integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= dependencies: is-posix-bracket "^0.1.0" expand-brackets@^2.1.4: version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" @@ -2572,14 +2614,14 @@ expand-brackets@^2.1.4: expand-range@^1.8.1: version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + resolved "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz" integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= dependencies: fill-range "^2.1.0" expect@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + resolved "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz" integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== dependencies: "@jest/types" "^26.6.2" @@ -2591,14 +2633,14 @@ expect@^26.6.2: extend-shallow@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" @@ -2606,19 +2648,19 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: extend@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== extglob@^0.3.1: version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + resolved "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= dependencies: is-extglob "^1.0.0" extglob@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" @@ -2632,27 +2674,27 @@ extglob@^2.0.4: extsprintf@1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-diff@^1.1.2: version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-glob@^3.1.1: version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz" integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -2664,38 +2706,38 @@ fast-glob@^3.1.1: fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fastq@^1.6.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.9.0.tgz#e16a72f338eaca48e91b5c23593bcc2ef66b7947" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz" integrity sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w== dependencies: reusify "^1.0.4" fb-watchman@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz" integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== dependencies: bser "2.1.1" figures@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" @@ -2707,12 +2749,12 @@ file-uri-to-path@1.0.0: filename-regex@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + resolved "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz" integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= fill-range@^2.1.0: version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz" integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== dependencies: is-number "^2.1.0" @@ -2723,7 +2765,7 @@ fill-range@^2.1.0: fill-range@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" @@ -2733,26 +2775,26 @@ fill-range@^4.0.0: fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" find-index@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + resolved "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz" integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ= find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= dependencies: locate-path "^2.0.0" find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -2760,7 +2802,7 @@ find-up@^4.0.0, find-up@^4.1.0: flat-cache@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: flatted "^3.1.0" @@ -2768,29 +2810,29 @@ flat-cache@^3.0.4: flatted@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz" integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= for-own@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + resolved "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz" integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= dependencies: for-in "^1.0.1" forever-agent@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@~2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" @@ -2799,14 +2841,14 @@ form-data@~2.3.2: fragment-cache@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.0.0: @@ -2817,39 +2859,34 @@ fsevents@^1.0.0: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.1.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.2.1.tgz#1fb02ded2036a8ac288d507a65962bd87b97628d" - integrity sha512-bTLYHSeC0UH/EFXS9KqWnXuOl/wHK5Z/d+ghd5AsFMYN7wIGkUCOJyzy88+wJKkZPGON8u4Z9f6U4FdgURE9qA== - -fsevents@~2.3.2: +fsevents@^2.1.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== functional-red-black-tree@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^2.0.1: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== dependencies: function-bind "^1.1.1" @@ -2858,43 +2895,43 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== get-package-type@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-stream@^4.0.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" get-stream@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= getpass@^0.1.1: version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: assert-plus "^1.0.0" glob-base@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + resolved "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= dependencies: glob-parent "^2.0.0" @@ -2902,28 +2939,28 @@ glob-base@^0.3.0: glob-parent@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= dependencies: is-glob "^2.0.0" glob-parent@^5.1.0, glob-parent@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob2base@^0.0.12: version "0.0.12" - resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + resolved "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz" integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY= dependencies: find-index "^0.1.1" glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: fs.realpath "^1.0.0" @@ -2935,19 +2972,19 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl globals@^11.1.0: version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: version "13.9.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" + resolved "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz" integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== dependencies: type-fest "^0.20.2" globby@^11.0.3: version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" + resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz" integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== dependencies: array-union "^2.1.0" @@ -2959,17 +2996,17 @@ globby@^11.0.3: graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.2.4: version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== growly@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + resolved "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= handlebars@^4.7.3: version "4.7.6" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz" integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== dependencies: minimist "^1.2.5" @@ -2981,12 +3018,12 @@ handlebars@^4.7.3: har-schema@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.3: version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: ajv "^6.12.3" @@ -2994,32 +3031,32 @@ har-validator@~5.1.3: has-bigints@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-symbols@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== has-symbols@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== has-value@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" @@ -3028,7 +3065,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" @@ -3037,12 +3074,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= has-values@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" @@ -3050,31 +3087,31 @@ has-values@^1.0.0: has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hosted-git-info@^2.1.4: version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== html-encoding-sniffer@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== http-proxy-agent@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" @@ -3083,7 +3120,7 @@ http-proxy-agent@^4.0.0: http-signature@~1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: assert-plus "^1.0.0" @@ -3092,7 +3129,7 @@ http-signature@~1.2.0: https-proxy-agent@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz#702b71fb5520a132a66de1f67541d9e62154d82b" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz" integrity sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg== dependencies: agent-base "5" @@ -3100,41 +3137,41 @@ https-proxy-agent@^4.0.0: human-signals@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== husky@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e" + resolved "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz" integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ== iconv-lite@0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" ignore-walk@3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz" integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== dependencies: minimatch "^3.0.4" ignore@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== ignore@^5.0.5, ignore@^5.1.1, ignore@^5.1.4: version "5.1.8" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.2.2" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz" integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== dependencies: parent-module "^1.0.0" @@ -3142,7 +3179,7 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: import-local@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz" integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== dependencies: pkg-dir "^4.2.0" @@ -3150,17 +3187,17 @@ import-local@^3.0.2: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" @@ -3168,41 +3205,41 @@ inflight@^1.0.4: inherits@2, inherits@^2.0.1, inherits@~2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== interpret@^1.0.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== ip-regex@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= is-accessor-descriptor@^0.1.6: version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-alphabetical@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== is-alphanumerical@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== dependencies: is-alphabetical "^1.0.0" @@ -3210,98 +3247,98 @@ is-alphanumerical@^1.0.0: is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-bigint@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.2.tgz#ffb381442503235ad245ea89e45b3dbff040ee5a" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz" integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== is-binary-path@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= dependencies: binary-extensions "^1.0.0" is-boolean-object@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.1.tgz#3c0878f035cb821228d350d2e1e36719716a3de8" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz" integrity sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng== dependencies: call-bind "^1.0.2" is-buffer@^1.1.5: version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-builtin-module@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" + resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz" integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== dependencies: builtin-modules "^3.0.0" is-callable@^1.1.4, is-callable@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz" integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== is-callable@^1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz" integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== is-ci@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: ci-info "^2.0.0" is-core-module@^2.1.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz" integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== dependencies: has "^1.0.3" is-core-module@^2.2.0, is-core-module@^2.4.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz" integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== dependencies: has "^1.0.3" is-data-descriptor@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-date-object@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== is-decimal@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== is-descriptor@^0.1.0: version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" @@ -3310,7 +3347,7 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" @@ -3319,56 +3356,56 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-docker@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz" integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== is-dotfile@^1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + resolved "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz" integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= is-equal-shallow@^0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + resolved "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= dependencies: is-primitive "^2.0.0" is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extendable@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" is-extglob@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-fn@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= dependencies: is-extglob "^1.0.0" @@ -3382,92 +3419,92 @@ is-glob@^4.0.0, is-glob@^4.0.1: is-hexadecimal@^1.0.0: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== is-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= is-negative-zero@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== is-number-object@^1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.5.tgz#6edfaeed7950cff19afedce9fbfca9ee6dd289eb" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz" integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== is-number@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + resolved "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= dependencies: kind-of "^3.0.2" is-number@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" is-number@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + resolved "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz" integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" is-posix-bracket@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + resolved "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= is-potential-custom-element-name@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz" integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= is-primitive@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= is-reference@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz" integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== dependencies: "@types/estree" "*" is-regex@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz" integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== dependencies: has-symbols "^1.0.1" is-regex@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz" integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== dependencies: call-bind "^1.0.2" @@ -3475,95 +3512,95 @@ is-regex@^1.1.3: is-regexp@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= is-stream@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= is-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== is-string@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== is-string@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz" integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== is-symbol@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz" integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: has-symbols "^1.0.1" is-symbol@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: has-symbols "^1.0.2" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= is-windows@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" isarray@1.0.0, isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= isstream@~0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= istanbul-lib-coverage@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== dependencies: "@babel/core" "^7.7.5" @@ -3573,7 +3610,7 @@ istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: istanbul-lib-report@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -3582,7 +3619,7 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz" integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== dependencies: debug "^4.1.1" @@ -3591,7 +3628,7 @@ istanbul-lib-source-maps@^4.0.0: istanbul-reports@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz" integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== dependencies: html-escaper "^2.0.0" @@ -3599,7 +3636,7 @@ istanbul-reports@^3.0.2: jest-changed-files@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz" integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== dependencies: "@jest/types" "^26.6.2" @@ -3608,7 +3645,7 @@ jest-changed-files@^26.6.2: jest-cli@^26.6.3: version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz" integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== dependencies: "@jest/core" "^26.6.3" @@ -3627,7 +3664,7 @@ jest-cli@^26.6.3: jest-config@^26.6.3: version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz" integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== dependencies: "@babel/core" "^7.1.0" @@ -3651,7 +3688,7 @@ jest-config@^26.6.3: jest-diff@^26.0.0, jest-diff@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz" integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== dependencies: chalk "^4.0.0" @@ -3661,14 +3698,14 @@ jest-diff@^26.0.0, jest-diff@^26.6.2: jest-docblock@^26.0.0: version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz" integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== dependencies: detect-newline "^3.0.0" jest-each@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz" integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== dependencies: "@jest/types" "^26.6.2" @@ -3679,7 +3716,7 @@ jest-each@^26.6.2: jest-environment-jsdom@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz" integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== dependencies: "@jest/environment" "^26.6.2" @@ -3692,7 +3729,7 @@ jest-environment-jsdom@^26.6.2: jest-environment-node@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz" integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== dependencies: "@jest/environment" "^26.6.2" @@ -3704,12 +3741,12 @@ jest-environment-node@^26.6.2: jest-get-type@^26.3.0: version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz" integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== jest-haste-map@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz" integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== dependencies: "@jest/types" "^26.6.2" @@ -3730,7 +3767,7 @@ jest-haste-map@^26.6.2: jest-jasmine2@^26.6.3: version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz" integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== dependencies: "@babel/traverse" "^7.1.0" @@ -3754,7 +3791,7 @@ jest-jasmine2@^26.6.3: jest-leak-detector@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz" integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== dependencies: jest-get-type "^26.3.0" @@ -3762,7 +3799,7 @@ jest-leak-detector@^26.6.2: jest-matcher-utils@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz" integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== dependencies: chalk "^4.0.0" @@ -3772,7 +3809,7 @@ jest-matcher-utils@^26.6.2: jest-message-util@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz" integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: "@babel/code-frame" "^7.0.0" @@ -3787,7 +3824,7 @@ jest-message-util@^26.6.2: jest-mock@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz" integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== dependencies: "@jest/types" "^26.6.2" @@ -3795,17 +3832,17 @@ jest-mock@^26.6.2: jest-pnp-resolver@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== jest-regex-util@^26.0.0: version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz" integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== jest-resolve-dependencies@^26.6.3: version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz" integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== dependencies: "@jest/types" "^26.6.2" @@ -3814,7 +3851,7 @@ jest-resolve-dependencies@^26.6.3: jest-resolve@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz" integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== dependencies: "@jest/types" "^26.6.2" @@ -3828,7 +3865,7 @@ jest-resolve@^26.6.2: jest-runner@^26.6.3: version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz" integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== dependencies: "@jest/console" "^26.6.2" @@ -3854,7 +3891,7 @@ jest-runner@^26.6.3: jest-runtime@^26.6.3: version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz" integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== dependencies: "@jest/console" "^26.6.2" @@ -3887,7 +3924,7 @@ jest-runtime@^26.6.3: jest-serializer@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz" integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== dependencies: "@types/node" "*" @@ -3895,7 +3932,7 @@ jest-serializer@^26.6.2: jest-snapshot@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz" integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== dependencies: "@babel/types" "^7.0.0" @@ -3917,7 +3954,7 @@ jest-snapshot@^26.6.2: jest-util@^26.1.0, jest-util@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz" integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== dependencies: "@jest/types" "^26.6.2" @@ -3929,7 +3966,7 @@ jest-util@^26.1.0, jest-util@^26.6.2: jest-validate@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz" integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== dependencies: "@jest/types" "^26.6.2" @@ -3941,7 +3978,7 @@ jest-validate@^26.6.2: jest-watcher@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz" integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: "@jest/test-result" "^26.6.2" @@ -3954,7 +3991,7 @@ jest-watcher@^26.6.2: jest-worker@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: "@types/node" "*" @@ -3963,7 +4000,7 @@ jest-worker@^26.6.2: jest@^26.6.3: version "26.6.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + resolved "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz" integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== dependencies: "@jest/core" "^26.6.3" @@ -3972,12 +4009,12 @@ jest@^26.6.3: js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@3.14.0: version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== dependencies: argparse "^1.0.7" @@ -3985,7 +4022,7 @@ js-yaml@3.14.0: js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" @@ -3993,17 +4030,17 @@ js-yaml@^3.13.1: jsbn@~0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= jsdoc-type-pratt-parser@1.0.4, jsdoc-type-pratt-parser@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.0.4.tgz#5750d2d32ffb001866537d3baaedea7cf84c7036" + resolved "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.0.4.tgz" integrity sha512-jzmW9gokeq9+bHPDR1nCeidMyFUikdZlbOhKzh9+/nJqB75XhpNKec1/UuxW5c4+O+Pi31Gc/dCboyfSm/pSpQ== jsdom@^16.4.0: version "16.4.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz" integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== dependencies: abab "^2.0.3" @@ -4035,66 +4072,73 @@ jsdom@^16.4.0: jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== json-parse-better-errors@^1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-parse-even-better-errors@^2.3.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-schema@0.2.3: version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= json-schema@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.3.0.tgz#90a9c5054bd065422c00241851ce8d59475b701b" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.3.0.tgz" integrity sha512-TYfxx36xfl52Rf1LU9HyWSLGPdYLL+SQ8/E/0yVyKG8wCCDaSrhPap0vEdlsZWRaS6tnKKLPGiEJGiREVC8kxQ== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= json-stringify-safe@~5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json5@2.x, json5@^2.1.2: version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + resolved "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz" integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== dependencies: minimist "^1.2.5" json5@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== dependencies: minimist "^1.2.0" +json5@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + jsprim@^1.2.2: version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz" integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= dependencies: assert-plus "1.0.0" @@ -4104,41 +4148,41 @@ jsprim@^1.2.2: kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== kleur@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== leven@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -4146,7 +4190,7 @@ levn@^0.4.1: levn@~0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" @@ -4154,12 +4198,12 @@ levn@~0.3.0: lines-and-columns@^1.1.6: version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= lint-staged@^10.5.3: version "10.5.4" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.4.tgz#cd153b5f0987d2371fc1d2847a409a2fe705b665" + resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.4.tgz" integrity sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg== dependencies: chalk "^4.1.0" @@ -4180,7 +4224,7 @@ lint-staged@^10.5.3: listr2@^3.2.2: version "3.2.3" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.2.3.tgz#ef9e0d790862f038dde8a9837be552b1adfd1c07" + resolved "https://registry.npmjs.org/listr2/-/listr2-3.2.3.tgz" integrity sha512-vUb80S2dSUi8YxXahO8/I/s29GqnOL8ozgHVLjfWQXa03BNEeS1TpBLjh2ruaqq5ufx46BRGvfymdBSuoXET5w== dependencies: chalk "^4.1.0" @@ -4194,7 +4238,7 @@ listr2@^3.2.2: load-json-file@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= dependencies: graceful-fs "^4.1.2" @@ -4204,7 +4248,7 @@ load-json-file@^4.0.0: locate-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: p-locate "^2.0.0" @@ -4212,51 +4256,51 @@ locate-path@^2.0.0: locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" lodash.clonedeep@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= lodash.memoize@4.x: version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.sortby@^4.7.0: version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= lodash.truncate@^4.4.2: version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= lodash@^4.17.19, lodash@^4.17.21: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz" integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== dependencies: chalk "^4.0.0" log-update@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: ansi-escapes "^4.3.0" @@ -4266,57 +4310,57 @@ log-update@^4.0.0: lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" magic-string@^0.25.7: version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz" integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== dependencies: sourcemap-codec "^1.4.4" make-dir@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" -make-error@1.x: +make-error@1.x, make-error@^1.1.1: version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== makeerror@1.0.x: version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz" integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= dependencies: tmpl "1.0.x" map-cache@^0.2.2: version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-visit@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" math-random@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" + resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz" integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== mdast-util-from-markdown@^0.8.5: version "0.8.5" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" + resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz" integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== dependencies: "@types/mdast" "^3.0.0" @@ -4327,22 +4371,22 @@ mdast-util-from-markdown@^0.8.5: mdast-util-to-string@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" + resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz" integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.3.0: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== micromark@~2.11.0: version "2.11.4" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-2.11.4.tgz#d13436138eea826383e822449c9a5c50ee44665a" + resolved "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz" integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== dependencies: debug "^4.0.0" @@ -4350,7 +4394,7 @@ micromark@~2.11.0: micromatch@^2.1.5: version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= dependencies: arr-diff "^2.0.0" @@ -4369,7 +4413,7 @@ micromatch@^2.1.5: micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== dependencies: arr-diff "^4.0.0" @@ -4388,7 +4432,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: micromatch@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz" integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== dependencies: braces "^3.0.1" @@ -4396,36 +4440,36 @@ micromatch@^4.0.2: mime-db@1.44.0: version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz" integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz" integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: mime-db "1.44.0" mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimatch@^3.0.2, minimatch@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== mixin-deep@^1.2.0: version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== dependencies: for-in "^1.0.2" @@ -4433,34 +4477,34 @@ mixin-deep@^1.2.0: mkdirp@1.x: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mkdirp@^0.5.1: version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@^2.1.1: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multimap@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/multimap/-/multimap-1.1.0.tgz#5263febc085a1791c33b59bb3afc6a76a2a10ca8" + resolved "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz" integrity sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw== nan@^2.12.1: @@ -4470,7 +4514,7 @@ nan@^2.12.1: nanomatch@^1.2.9: version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" @@ -4487,37 +4531,37 @@ nanomatch@^1.2.9: natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= neo-async@^2.6.0: version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== nice-try@^1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== node-fetch@^2.2.0, node-fetch@^2.6.0: version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= node-modules-regexp@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= node-notifier@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.0.tgz#a7eee2d51da6d0f7ff5094bc7108c911240c1620" + resolved "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.0.tgz" integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA== dependencies: growly "^1.3.0" @@ -4529,12 +4573,12 @@ node-notifier@^8.0.0: node-releases@^1.1.71: version "1.1.73" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz" integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" @@ -4544,43 +4588,43 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= dependencies: remove-trailing-separator "^1.0.1" normalize-path@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-run-path@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= dependencies: path-key "^2.0.0" npm-run-path@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" nwsapi@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz" integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== oauth-sign@~0.9.0: version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-copy@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: copy-descriptor "^0.1.0" @@ -4589,29 +4633,29 @@ object-copy@^0.1.0: object-inspect@^1.10.3: version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz" integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== object-inspect@^1.9.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz" integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object-visit@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" object.assign@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: call-bind "^1.0.0" @@ -4621,7 +4665,7 @@ object.assign@^4.1.2: object.omit@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + resolved "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz" integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= dependencies: for-own "^0.1.4" @@ -4629,14 +4673,14 @@ object.omit@^2.0.0: object.pick@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" object.values@^1.1.3: version "1.1.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz" integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== dependencies: call-bind "^1.0.2" @@ -4645,21 +4689,21 @@ object.values@^1.1.3: once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" onetime@^5.1.0: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" optionator@^0.8.1: version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" @@ -4671,7 +4715,7 @@ optionator@^0.8.1: optionator@^0.9.1: version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: deep-is "^0.1.3" @@ -4683,69 +4727,69 @@ optionator@^0.9.1: p-each-series@^2.1.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz" integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== p-finally@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= p-limit@^1.1.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-locate@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= dependencies: p-limit "^1.1.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-map@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" p-try@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" parse-entities@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz" integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== dependencies: character-entities "^1.0.0" @@ -4757,12 +4801,12 @@ parse-entities@^2.0.0: parse-github-url@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" + resolved "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz" integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== parse-glob@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + resolved "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= dependencies: glob-base "^0.3.0" @@ -4772,7 +4816,7 @@ parse-glob@^3.0.4: parse-json@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= dependencies: error-ex "^1.3.1" @@ -4780,7 +4824,7 @@ parse-json@^4.0.0: parse-json@^5.0.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz" integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== dependencies: "@babel/code-frame" "^7.0.0" @@ -4790,146 +4834,146 @@ parse-json@^5.0.0: parse5@5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== pascalcase@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-type@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: pify "^3.0.0" path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== pify@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= pirates@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz" integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== dependencies: node-modules-regexp "^1.0.0" pkg-dir@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz" integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= dependencies: find-up "^2.1.0" pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" pkg-up@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz" integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= dependencies: find-up "^2.1.0" please-upgrade-node@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: semver-compare "^1.0.0" pluralize@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== posix-character-classes@^0.1.0: version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prelude-ls@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= preserve@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= prettier-linter-helpers@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== dependencies: fast-diff "^1.1.2" prettier@^2.2.1: version "2.3.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.2.tgz#ef280a05ec253712e486233db5c6f23441e7342d" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz" integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== pretty-format@^26.0.0, pretty-format@^26.6.2: version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== dependencies: "@jest/types" "^26.6.2" @@ -4939,17 +4983,17 @@ pretty-format@^26.0.0, pretty-format@^26.6.2: process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== progress@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== prompts@^2.0.1: version "2.4.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz" integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== dependencies: kleur "^3.0.3" @@ -4957,12 +5001,12 @@ prompts@^2.0.1: psl@^1.1.28: version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== pump@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" @@ -4970,17 +5014,17 @@ pump@^3.0.0: punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qs@~6.5.2: version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== randomatic@^3.0.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + resolved "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz" integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== dependencies: is-number "^4.0.0" @@ -4989,12 +5033,12 @@ randomatic@^3.0.0: react-is@^17.0.1: version "17.0.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz" integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== read-pkg-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz" integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= dependencies: find-up "^2.0.0" @@ -5002,7 +5046,7 @@ read-pkg-up@^3.0.0: read-pkg-up@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== dependencies: find-up "^4.1.0" @@ -5011,7 +5055,7 @@ read-pkg-up@^7.0.1: read-pkg@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= dependencies: load-json-file "^4.0.0" @@ -5020,7 +5064,7 @@ read-pkg@^3.0.0: read-pkg@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: "@types/normalize-package-data" "^2.4.0" @@ -5030,7 +5074,7 @@ read-pkg@^5.2.0: readable-stream@^2.0.2: version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" @@ -5043,7 +5087,7 @@ readable-stream@^2.0.2: readdirp@^2.0.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== dependencies: graceful-fs "^4.1.11" @@ -5052,26 +5096,26 @@ readdirp@^2.0.0: rechoir@^0.6.2: version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= dependencies: resolve "^1.1.6" regenerator-runtime@^0.11.0: version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== regex-cache@^0.4.2: version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + resolved "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz" integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== dependencies: is-equal-shallow "^0.1.3" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" @@ -5079,44 +5123,44 @@ regex-not@^1.0.0, regex-not@^1.0.2: regexp-tree@^0.1.20, regexp-tree@^0.1.23, regexp-tree@~0.1.1: version "0.1.23" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.23.tgz#8a8ce1cc5e971acef62213a7ecdb1f6e18a1f1b2" + resolved "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.23.tgz" integrity sha512-+7HWfb4Bvu8Rs2eQTUIpX9I/PlQkYOuTNbRpKLJlQpSgwSkzFYh+pUj0gtvglnOZLKB6YgnIgRuJ2/IlpL48qw== regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== regextras@^0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.8.0.tgz#ec0f99853d4912839321172f608b544814b02217" + resolved "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz" integrity sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ== remove-trailing-separator@^1.0.1: version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= repeat-element@^1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= request-promise-core@1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz" integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== dependencies: lodash "^4.17.19" request-promise-native@^1.0.8: version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz" integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== dependencies: request-promise-core "1.1.4" @@ -5125,7 +5169,7 @@ request-promise-native@^1.0.8: request@^2.88.2: version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" @@ -5151,49 +5195,49 @@ request@^2.88.2: require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== require-main-filename@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== reserved-words@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" + resolved "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz" integrity sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE= resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-from@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve-url@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0: version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz" integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== dependencies: is-core-module "^2.1.0" @@ -5201,7 +5245,7 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13. resolve@^1.10.1, resolve@^1.20.0: version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== dependencies: is-core-module "^2.2.0" @@ -5209,7 +5253,7 @@ resolve@^1.10.1, resolve@^1.20.0: restore-cursor@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: onetime "^5.1.0" @@ -5217,24 +5261,24 @@ restore-cursor@^3.1.0: ret@~0.1.10: version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" rollup-plugin-auto-external@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-auto-external/-/rollup-plugin-auto-external-2.0.0.tgz#98fd137d66c1cbe0f4e245b31560a72dbde896aa" + resolved "https://registry.npmjs.org/rollup-plugin-auto-external/-/rollup-plugin-auto-external-2.0.0.tgz" integrity sha512-HQM3ZkZYfSam1uoZtAB9sK26EiAsfs1phrkf91c/YX+S07wugyRXSigBxrIwiLr5EPPilKYmoMxsrnlGBsXnuQ== dependencies: builtins "^2.0.0" @@ -5242,67 +5286,67 @@ rollup-plugin-auto-external@^2.0.0: safe-resolve "^1.0.0" semver "^5.5.0" -rollup@^2.34.2: +rollup@>=2.0.0, rollup@^2.34.2: version "2.52.7" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.52.7.tgz#e15a8bf734f6e4c204b7cdf33521151310250cb2" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.52.7.tgz" integrity sha512-55cSH4CCU6MaPr9TAOyrIC+7qFCHscL7tkNsm1MBfIJRRqRbCEY0mmeFn4Wg8FKsHtEH8r389Fz38r/o+kgXLg== optionalDependencies: fsevents "~2.3.2" rsvp@^4.8.4: version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + resolved "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-parallel@^1.1.9: version "1.1.10" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz" integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== rxjs@^6.6.3: version "6.6.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz" integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== dependencies: tslib "^1.9.0" safe-buffer@^5.0.1, safe-buffer@^5.1.2: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: ret "~0.1.10" safe-regex@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz" integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== dependencies: regexp-tree "~0.1.1" safe-resolve@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-resolve/-/safe-resolve-1.0.0.tgz#fe34f8d29d7a3becfd249d0aa8a799b5c3cf6559" + resolved "https://registry.npmjs.org/safe-resolve/-/safe-resolve-1.0.0.tgz" integrity sha1-/jT40p16O+z9JJ0KqKeZtcPPZVk= "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sane@^4.0.3: version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + resolved "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz" integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== dependencies: "@cnakazawa/watch" "^1.0.3" @@ -5317,48 +5361,48 @@ sane@^4.0.3: saxes@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: xmlchars "^2.2.0" semver-compare@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.x, semver@^7.2.1, semver@^7.3.2: +semver@7.x, semver@^7.2.1: version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== dependencies: lru-cache "^6.0.0" semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.5: +semver@^7.3.2, semver@^7.3.5: version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" set-blocking@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== dependencies: extend-shallow "^2.0.1" @@ -5368,36 +5412,36 @@ set-value@^2.0.0, set-value@^2.0.1: shebang-command@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.6.1: version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== shelljs@^0.8.3: version "0.8.4" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" + resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz" integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== dependencies: glob "^7.0.0" @@ -5406,27 +5450,27 @@ shelljs@^0.8.3: shellwords@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + resolved "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== slice-ansi@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: ansi-styles "^4.0.0" @@ -5435,7 +5479,7 @@ slice-ansi@^3.0.0: slice-ansi@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: ansi-styles "^4.0.0" @@ -5444,7 +5488,7 @@ slice-ansi@^4.0.0: snapdragon-node@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" @@ -5453,14 +5497,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" @@ -5474,7 +5518,7 @@ snapdragon@^0.8.1: source-map-resolve@^0.5.0: version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: atob "^2.1.2" @@ -5483,9 +5527,9 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6: +source-map-support@^0.5.17, source-map-support@^0.5.6: version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== dependencies: buffer-from "^1.0.0" @@ -5493,32 +5537,32 @@ source-map-support@^0.5.6: source-map-url@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz" integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@^0.5.0, source-map@^0.5.6: version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.3: version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== sourcemap-codec@^1.4.4: version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== spdx-correct@^3.0.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" @@ -5526,12 +5570,12 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" @@ -5539,24 +5583,24 @@ spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1: spdx-license-ids@^3.0.0: version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz" integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sshpk@^1.7.0: version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: asn1 "~0.2.3" @@ -5571,14 +5615,14 @@ sshpk@^1.7.0: stack-utils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz" integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== dependencies: escape-string-regexp "^2.0.0" static-extend@^0.1.1: version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" @@ -5586,24 +5630,24 @@ static-extend@^0.1.1: stealthy-require@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= stream-events@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" + resolved "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz" integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== dependencies: stubs "^3.0.0" string-argv@0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== string-length@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz" integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== dependencies: char-regex "^1.0.2" @@ -5611,7 +5655,7 @@ string-length@^4.0.1: string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz" integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== dependencies: emoji-regex "^8.0.0" @@ -5620,7 +5664,7 @@ string-width@^4.1.0, string-width@^4.2.0: string.prototype.trimend@^1.0.3, string.prototype.trimend@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== dependencies: call-bind "^1.0.2" @@ -5628,7 +5672,7 @@ string.prototype.trimend@^1.0.3, string.prototype.trimend@^1.0.4: string.prototype.trimstart@^1.0.3, string.prototype.trimstart@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== dependencies: call-bind "^1.0.2" @@ -5636,14 +5680,14 @@ string.prototype.trimstart@^1.0.3, string.prototype.trimstart@^1.0.4: string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" stringify-object@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== dependencies: get-own-enumerable-property-symbols "^3.0.0" @@ -5652,65 +5696,65 @@ stringify-object@^3.3.0: strip-ansi@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: ansi-regex "^5.0.0" strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= strip-bom@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-eof@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== stubs@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" + resolved "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz" integrity sha1-6NK6H6nJBXAwPAMLaQD31fiavls= subarg@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + resolved "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz" integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= dependencies: minimist "^1.1.0" supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-hyperlinks@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz" integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== dependencies: has-flag "^4.0.0" @@ -5718,12 +5762,12 @@ supports-hyperlinks@^2.0.0: symbol-tree@^3.2.4: version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== table@^6.0.9: version "6.7.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + resolved "https://registry.npmjs.org/table/-/table-6.7.1.tgz" integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== dependencies: ajv "^8.0.1" @@ -5735,7 +5779,7 @@ table@^6.0.9: teeny-request@6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-6.0.1.tgz#9b1f512cef152945827ba7e34f62523a4ce2c5b0" + resolved "https://registry.npmjs.org/teeny-request/-/teeny-request-6.0.1.tgz" integrity sha512-TAK0c9a00ELOqLrZ49cFxvPVogMUFaWY8dUsQc/0CuQPGF+BOxOQzXfE413BAk2kLomwNplvdtMpeaeGWmoc2g== dependencies: http-proxy-agent "^4.0.0" @@ -5746,7 +5790,7 @@ teeny-request@6.0.1: terminal-link@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== dependencies: ansi-escapes "^4.2.1" @@ -5754,7 +5798,7 @@ terminal-link@^2.0.0: test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" @@ -5763,39 +5807,39 @@ test-exclude@^6.0.0: text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= throat@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== through@^2.3.8: version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= tmpl@1.0.x: version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-object-path@^0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" @@ -5803,14 +5847,14 @@ to-regex-range@^2.1.0: to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" @@ -5820,7 +5864,7 @@ to-regex@^3.0.1, to-regex@^3.0.2: tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: psl "^1.1.28" @@ -5828,7 +5872,7 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: tough-cookie@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz" integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== dependencies: ip-regex "^2.1.0" @@ -5837,14 +5881,14 @@ tough-cookie@^3.0.1: tr46@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + resolved "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz" integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== dependencies: punycode "^2.1.1" ts-jest@^26.4.4: version "26.4.4" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.4.4.tgz#61f13fb21ab400853c532270e52cc0ed7e502c49" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-26.4.4.tgz" integrity sha512-3lFWKbLxJm34QxyVNNCgXX1u4o/RV0myvA2y2Bxm46iGIjKlaY0own9gIckbjZJPn+WaJEnfPPJ20HHGpoq4yg== dependencies: "@types/jest" "26.x" @@ -5859,9 +5903,34 @@ ts-jest@^26.4.4: semver "7.x" yargs-parser "20.x" +ts-node@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.1.0.tgz" + integrity sha512-6szn3+J9WyG2hE+5W8e0ruZrzyk1uFLYye6IGMBadnOzDh8aP7t8CbFpsfCiEx2+wMixAhjFt7lOZC4+l+WbEA== + dependencies: + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + source-map-support "^0.5.17" + yn "3.1.1" + +tsconfig-paths@^3.10.1: + version "3.10.1" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz" + integrity sha512-rETidPDgCpltxF7MjBZlAFPUHv5aHH2MymyPvh+vEyWAED4Eb/WeMbsnD/JDr4OKPOA1TssDHgIcpTN5Kh0p6Q== + dependencies: + json5 "^2.2.0" + minimist "^1.2.0" + strip-bom "^3.0.0" + tsconfig-paths@^3.9.0: version "3.9.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz" integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== dependencies: "@types/json5" "^0.0.29" @@ -5871,92 +5940,92 @@ tsconfig-paths@^3.9.0: tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.3: version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== tsutils@^3.21.0: version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-check@~0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" type-detect@4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.11.0: version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== type-fest@^0.8.1: version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== typedarray-to-buffer@^3.1.5: version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" typescript@^4.1.3: version "4.3.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.2.tgz#399ab18aac45802d6f2498de5054fcbbe716a805" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz" integrity sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw== uglify-js@^3.1.4: version "3.12.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.1.tgz#78307f539f7b9ca5557babb186ea78ad30cc0375" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.1.tgz" integrity sha512-o8lHP20KjIiQe5b/67Rh68xEGRrc2SRsCuuoYclXXoC74AfSRGblU1HKzJWH3HxPZ+Ort85fWHpSX7KwBUC9CQ== unbox-primitive@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz" integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== dependencies: function-bind "^1.1.1" @@ -5966,7 +6035,7 @@ unbox-primitive@^1.0.1: union-value@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== dependencies: arr-union "^3.1.0" @@ -5976,14 +6045,14 @@ union-value@^1.0.0: unist-util-stringify-position@^2.0.0: version "2.0.3" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz" integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== dependencies: "@types/unist" "^2.0.2" unset-value@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" @@ -5991,49 +6060,49 @@ unset-value@^1.0.0: uri-js@^4.2.2: version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz" integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= urlgrey@0.4.4: version "0.4.4" - resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f" + resolved "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz" integrity sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8= use@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= uuid@^3.3.2: version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== uuid@^8.3.0: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== v8-compile-cache@^2.0.3: version "2.2.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz" integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== v8-to-istanbul@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz" integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" @@ -6042,7 +6111,7 @@ v8-to-istanbul@^7.0.0: validate-npm-package-license@^3.0.1: version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" @@ -6050,7 +6119,7 @@ validate-npm-package-license@^3.0.1: verror@1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: assert-plus "^1.0.0" @@ -6059,50 +6128,50 @@ verror@1.10.0: w3c-hr-time@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" w3c-xmlserializer@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: xml-name-validator "^3.0.0" walker@^1.0.7, walker@~1.0.5: version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= dependencies: makeerror "1.0.x" webidl-conversions@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== webidl-conversions@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== whatwg-encoding@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" whatwg-mimetype@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== whatwg-url@^8.0.0: version "8.4.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz" integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== dependencies: lodash.sortby "^4.7.0" @@ -6111,7 +6180,7 @@ whatwg-url@^8.0.0: which-boxed-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: is-bigint "^1.0.1" @@ -6122,36 +6191,36 @@ which-boxed-primitive@^1.0.2: which-module@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= which@^1.2.9: version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" which@^2.0.1, which@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== wordwrap@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= wrap-ansi@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== dependencies: ansi-styles "^4.0.0" @@ -6160,12 +6229,12 @@ wrap-ansi@^6.2.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write-file-atomic@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" @@ -6175,42 +6244,42 @@ write-file-atomic@^3.0.0: ws@^7.2.3: version "7.4.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.1.tgz#a333be02696bd0e54cea0434e21dcc8a9ac294bb" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz" integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ== xml-name-validator@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== xmlchars@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== y18n@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz" integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^1.10.0: version "1.10.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== yargs-parser@20.x: version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== yargs-parser@^18.1.2: version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" @@ -6218,7 +6287,7 @@ yargs-parser@^18.1.2: yargs@^15.4.1: version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: cliui "^6.0.0" @@ -6232,3 +6301,8 @@ yargs@^15.4.1: which-module "^2.0.0" y18n "^4.0.0" yargs-parser "^18.1.2" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== From 562b78f3ebc54ca69c82a66abdccf43f535db810 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Sun, 25 Jul 2021 00:20:01 +1200 Subject: [PATCH 10/20] chore: switch testing over to ava --- .eslintrc.json | 3 +- .github/workflows/ci.yml | 35 +- .gitignore | 2 +- .nycrc | 20 + .vscode/settings.json | 4 +- ava.config.js | 42 + jest.config.js | 25 - package.json | 19 +- scripts/.eslintrc.json | 5 + scripts/compile-tests.ts | 62 + scripts/tsconfig.json | 21 + tests/.eslintrc.json | 26 +- tests/common/ignore-options.test.ts | 445 +- tests/configs.test.ts | 87 +- tests/helpers/configs.ts | 104 +- tests/helpers/testers.ts | 66 + tests/helpers/util.ts | 7 +- tests/index.test.ts | 37 +- tests/rules/_work.test.ts | 19 +- tests/rules/functional-parameters.test.ts | 233 - .../rules/functional-parameters/es3/index.ts | 7 + .../functional-parameters/es3/invalid.ts | 98 + .../rules/functional-parameters/es3/valid.ts | 43 + .../rules/functional-parameters/es6/index.ts | 7 + .../functional-parameters/es6/invalid.ts | 38 + .../rules/functional-parameters/es6/valid.ts | 29 + .../rules/functional-parameters/index.test.ts | 11 + tests/rules/immutable-data.test.ts | 1356 ------ tests/rules/immutable-data/es3/array/index.ts | 7 + .../rules/immutable-data/es3/array/invalid.ts | 467 ++ tests/rules/immutable-data/es3/array/valid.ts | 208 + tests/rules/immutable-data/es3/index.ts | 7 + .../rules/immutable-data/es3/object/index.ts | 7 + .../immutable-data/es3/object/invalid.ts | 215 + .../rules/immutable-data/es3/object/valid.ts | 55 + tests/rules/immutable-data/es6/array/index.ts | 7 + .../rules/immutable-data/es6/array/invalid.ts | 238 + tests/rules/immutable-data/es6/array/valid.ts | 23 + tests/rules/immutable-data/es6/index.ts | 7 + .../rules/immutable-data/es6/object/index.ts | 7 + .../immutable-data/es6/object/invalid.ts | 73 + .../rules/immutable-data/es6/object/valid.ts | 45 + tests/rules/immutable-data/index.test.ts | 11 + tests/rules/index.test.ts | 16 +- tests/rules/no-class.test.ts | 61 - tests/rules/no-class.test/es6/index.ts | 7 + tests/rules/no-class.test/es6/invalid.ts | 30 + tests/rules/no-class.test/es6/valid.ts | 5 + tests/rules/no-class.test/index.test.ts | 8 + tests/rules/no-conditional-statement.test.ts | 451 -- .../no-conditional-statement/es3/index.ts | 7 + .../no-conditional-statement/es3/invalid.ts | 235 + .../no-conditional-statement/es3/valid.ts | 61 + .../no-conditional-statement/index.test.ts | 10 + .../no-conditional-statement/ts/index.ts | 7 + .../no-conditional-statement/ts/invalid.ts | 5 + .../no-conditional-statement/ts/valid.ts | 151 + tests/rules/no-expression-statement.test.ts | 83 - .../no-expression-statement/es3/index.ts | 7 + .../no-expression-statement/es3/invalid.ts | 35 + .../no-expression-statement/es3/valid.ts | 25 + .../no-expression-statement/index.test.ts | 8 + tests/rules/no-let.test.ts | 329 -- tests/rules/no-let/es6/index.ts | 7 + tests/rules/no-let/es6/invalid.ts | 172 + tests/rules/no-let/es6/valid.ts | 134 + tests/rules/no-let/index.test.ts | 8 + tests/rules/no-loop-statement.test.ts | 153 - tests/rules/no-loop-statement/es3/index.ts | 7 + tests/rules/no-loop-statement/es3/invalid.ts | 54 + tests/rules/no-loop-statement/es3/valid.ts | 5 + tests/rules/no-loop-statement/es6/index.ts | 7 + tests/rules/no-loop-statement/es6/invalid.ts | 66 + tests/rules/no-loop-statement/es6/valid.ts | 5 + tests/rules/no-loop-statement/index.test.ts | 11 + tests/rules/no-method-signature.test.ts | 75 - tests/rules/no-method-signature/index.test.ts | 6 + tests/rules/no-method-signature/ts/index.ts | 7 + tests/rules/no-method-signature/ts/invalid.ts | 38 + tests/rules/no-method-signature/ts/valid.ts | 22 + tests/rules/no-mixed-type.test.ts | 180 - tests/rules/no-mixed-type/index.test.ts | 6 + tests/rules/no-mixed-type/ts/index.ts | 7 + tests/rules/no-mixed-type/ts/invalid.ts | 74 + tests/rules/no-mixed-type/ts/valid.ts | 91 + tests/rules/no-promise-reject.test.ts | 67 - tests/rules/no-promise-reject/es6/index.ts | 7 + tests/rules/no-promise-reject/es6/invalid.ts | 26 + tests/rules/no-promise-reject/es6/valid.ts | 18 + tests/rules/no-promise-reject/index.test.ts | 8 + tests/rules/no-return-void.test.ts | 135 - tests/rules/no-return-void/index.test.ts | 6 + tests/rules/no-return-void/ts/index.ts | 7 + tests/rules/no-return-void/ts/invalid.ts | 74 + tests/rules/no-return-void/ts/valid.ts | 46 + tests/rules/no-this-expression.test.ts | 54 - tests/rules/no-this-expression/es3/index.ts | 7 + tests/rules/no-this-expression/es3/invalid.ts | 18 + tests/rules/no-this-expression/es3/valid.ts | 10 + tests/rules/no-this-expression/index.test.ts | 8 + tests/rules/no-throw-statement.test.ts | 73 - tests/rules/no-throw-statement/es3/index.ts | 7 + tests/rules/no-throw-statement/es3/invalid.ts | 44 + tests/rules/no-throw-statement/es3/valid.ts | 5 + tests/rules/no-throw-statement/index.test.ts | 8 + tests/rules/no-try-statement.test.ts | 110 - tests/rules/no-try-statement/es3/index.ts | 7 + tests/rules/no-try-statement/es3/invalid.ts | 66 + tests/rules/no-try-statement/es3/valid.ts | 18 + tests/rules/no-try-statement/index.test.ts | 8 + .../rules/prefer-readonly-type/index.test.ts | 6 + tests/rules/prefer-readonly-type/ts/index.ts | 7 + .../ts/invalid.ts} | 425 +- tests/rules/prefer-readonly-type/ts/valid.ts | 392 ++ tests/rules/prefer-tacit.test.ts | 223 - tests/rules/prefer-tacit/es3/index.ts | 7 + tests/rules/prefer-tacit/es3/invalid.ts | 36 + tests/rules/prefer-tacit/es3/valid.ts | 16 + tests/rules/prefer-tacit/es6/index.ts | 7 + tests/rules/prefer-tacit/es6/invalid.ts | 56 + tests/rules/prefer-tacit/es6/valid.ts | 11 + tests/rules/prefer-tacit/index.test.ts | 11 + tests/rules/prefer-tacit/ts/index.ts | 7 + tests/rules/prefer-tacit/ts/invalid.ts | 100 + tests/rules/prefer-tacit/ts/valid.ts | 37 + yarn.lock | 3986 ++++++----------- 126 files changed, 5899 insertions(+), 7169 deletions(-) create mode 100644 .nycrc create mode 100644 ava.config.js delete mode 100644 jest.config.js create mode 100644 scripts/.eslintrc.json create mode 100644 scripts/compile-tests.ts create mode 100644 scripts/tsconfig.json create mode 100644 tests/helpers/testers.ts delete mode 100644 tests/rules/functional-parameters.test.ts create mode 100644 tests/rules/functional-parameters/es3/index.ts create mode 100644 tests/rules/functional-parameters/es3/invalid.ts create mode 100644 tests/rules/functional-parameters/es3/valid.ts create mode 100644 tests/rules/functional-parameters/es6/index.ts create mode 100644 tests/rules/functional-parameters/es6/invalid.ts create mode 100644 tests/rules/functional-parameters/es6/valid.ts create mode 100644 tests/rules/functional-parameters/index.test.ts delete mode 100644 tests/rules/immutable-data.test.ts create mode 100644 tests/rules/immutable-data/es3/array/index.ts create mode 100644 tests/rules/immutable-data/es3/array/invalid.ts create mode 100644 tests/rules/immutable-data/es3/array/valid.ts create mode 100644 tests/rules/immutable-data/es3/index.ts create mode 100644 tests/rules/immutable-data/es3/object/index.ts create mode 100644 tests/rules/immutable-data/es3/object/invalid.ts create mode 100644 tests/rules/immutable-data/es3/object/valid.ts create mode 100644 tests/rules/immutable-data/es6/array/index.ts create mode 100644 tests/rules/immutable-data/es6/array/invalid.ts create mode 100644 tests/rules/immutable-data/es6/array/valid.ts create mode 100644 tests/rules/immutable-data/es6/index.ts create mode 100644 tests/rules/immutable-data/es6/object/index.ts create mode 100644 tests/rules/immutable-data/es6/object/invalid.ts create mode 100644 tests/rules/immutable-data/es6/object/valid.ts create mode 100644 tests/rules/immutable-data/index.test.ts delete mode 100644 tests/rules/no-class.test.ts create mode 100644 tests/rules/no-class.test/es6/index.ts create mode 100644 tests/rules/no-class.test/es6/invalid.ts create mode 100644 tests/rules/no-class.test/es6/valid.ts create mode 100644 tests/rules/no-class.test/index.test.ts delete mode 100644 tests/rules/no-conditional-statement.test.ts create mode 100644 tests/rules/no-conditional-statement/es3/index.ts create mode 100644 tests/rules/no-conditional-statement/es3/invalid.ts create mode 100644 tests/rules/no-conditional-statement/es3/valid.ts create mode 100644 tests/rules/no-conditional-statement/index.test.ts create mode 100644 tests/rules/no-conditional-statement/ts/index.ts create mode 100644 tests/rules/no-conditional-statement/ts/invalid.ts create mode 100644 tests/rules/no-conditional-statement/ts/valid.ts delete mode 100644 tests/rules/no-expression-statement.test.ts create mode 100644 tests/rules/no-expression-statement/es3/index.ts create mode 100644 tests/rules/no-expression-statement/es3/invalid.ts create mode 100644 tests/rules/no-expression-statement/es3/valid.ts create mode 100644 tests/rules/no-expression-statement/index.test.ts delete mode 100644 tests/rules/no-let.test.ts create mode 100644 tests/rules/no-let/es6/index.ts create mode 100644 tests/rules/no-let/es6/invalid.ts create mode 100644 tests/rules/no-let/es6/valid.ts create mode 100644 tests/rules/no-let/index.test.ts delete mode 100644 tests/rules/no-loop-statement.test.ts create mode 100644 tests/rules/no-loop-statement/es3/index.ts create mode 100644 tests/rules/no-loop-statement/es3/invalid.ts create mode 100644 tests/rules/no-loop-statement/es3/valid.ts create mode 100644 tests/rules/no-loop-statement/es6/index.ts create mode 100644 tests/rules/no-loop-statement/es6/invalid.ts create mode 100644 tests/rules/no-loop-statement/es6/valid.ts create mode 100644 tests/rules/no-loop-statement/index.test.ts delete mode 100644 tests/rules/no-method-signature.test.ts create mode 100644 tests/rules/no-method-signature/index.test.ts create mode 100644 tests/rules/no-method-signature/ts/index.ts create mode 100644 tests/rules/no-method-signature/ts/invalid.ts create mode 100644 tests/rules/no-method-signature/ts/valid.ts delete mode 100644 tests/rules/no-mixed-type.test.ts create mode 100644 tests/rules/no-mixed-type/index.test.ts create mode 100644 tests/rules/no-mixed-type/ts/index.ts create mode 100644 tests/rules/no-mixed-type/ts/invalid.ts create mode 100644 tests/rules/no-mixed-type/ts/valid.ts delete mode 100644 tests/rules/no-promise-reject.test.ts create mode 100644 tests/rules/no-promise-reject/es6/index.ts create mode 100644 tests/rules/no-promise-reject/es6/invalid.ts create mode 100644 tests/rules/no-promise-reject/es6/valid.ts create mode 100644 tests/rules/no-promise-reject/index.test.ts delete mode 100644 tests/rules/no-return-void.test.ts create mode 100644 tests/rules/no-return-void/index.test.ts create mode 100644 tests/rules/no-return-void/ts/index.ts create mode 100644 tests/rules/no-return-void/ts/invalid.ts create mode 100644 tests/rules/no-return-void/ts/valid.ts delete mode 100644 tests/rules/no-this-expression.test.ts create mode 100644 tests/rules/no-this-expression/es3/index.ts create mode 100644 tests/rules/no-this-expression/es3/invalid.ts create mode 100644 tests/rules/no-this-expression/es3/valid.ts create mode 100644 tests/rules/no-this-expression/index.test.ts delete mode 100644 tests/rules/no-throw-statement.test.ts create mode 100644 tests/rules/no-throw-statement/es3/index.ts create mode 100644 tests/rules/no-throw-statement/es3/invalid.ts create mode 100644 tests/rules/no-throw-statement/es3/valid.ts create mode 100644 tests/rules/no-throw-statement/index.test.ts delete mode 100644 tests/rules/no-try-statement.test.ts create mode 100644 tests/rules/no-try-statement/es3/index.ts create mode 100644 tests/rules/no-try-statement/es3/invalid.ts create mode 100644 tests/rules/no-try-statement/es3/valid.ts create mode 100644 tests/rules/no-try-statement/index.test.ts create mode 100644 tests/rules/prefer-readonly-type/index.test.ts create mode 100644 tests/rules/prefer-readonly-type/ts/index.ts rename tests/rules/{prefer-readonly-type.test.ts => prefer-readonly-type/ts/invalid.ts} (61%) create mode 100644 tests/rules/prefer-readonly-type/ts/valid.ts delete mode 100644 tests/rules/prefer-tacit.test.ts create mode 100644 tests/rules/prefer-tacit/es3/index.ts create mode 100644 tests/rules/prefer-tacit/es3/invalid.ts create mode 100644 tests/rules/prefer-tacit/es3/valid.ts create mode 100644 tests/rules/prefer-tacit/es6/index.ts create mode 100644 tests/rules/prefer-tacit/es6/invalid.ts create mode 100644 tests/rules/prefer-tacit/es6/valid.ts create mode 100644 tests/rules/prefer-tacit/index.test.ts create mode 100644 tests/rules/prefer-tacit/ts/index.ts create mode 100644 tests/rules/prefer-tacit/ts/invalid.ts create mode 100644 tests/rules/prefer-tacit/ts/valid.ts diff --git a/.eslintrc.json b/.eslintrc.json index 817bef1a6..af33e4e62 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,7 +6,6 @@ "eslint-plugin", "functional", "import", - "jest", "jsdoc", "prettier" ], @@ -30,7 +29,7 @@ "ignorePatterns": ["build/", "coverage/", "lib/"], "rules": { "@typescript-eslint/no-unnecessary-condition": "off", - "import/no-unassigned-import": "off", + "import/no-relative-parent-imports": "error", "node/no-unsupported-features/es-builtins": "off", "node/no-unsupported-features/es-syntax": "off", // enable once supported in all our supported node versions. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4babf3fae..1ad18de00 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -59,23 +59,18 @@ jobs: runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.ts_version == 'next' }} env: - # Use compiled tests on everything instances except this one. - USE_COMPILED_TEST: ${{ fromJSON('["false", "true"]')[matrix.ts_version != 'latest' || matrix.node_version != '16' || matrix.os != 'ubuntu-latest'] }} + REPORT_COVERAGE: ${{ fromJSON('["false", "true"]')[matrix.ts_version == 'latest' && matrix.node_version == '16' && matrix.os != 'ubuntu-latest'] }} steps: - name: Checkout uses: actions/checkout@v2 with: # Fetch all commits for codecov. - fetch-depth: ${{ fromJSON('[0, 1]')[ env.USE_COMPILED_TEST == 'true'] }} + fetch-depth: ${{ fromJSON('[0, 1]')[ env.REPORT_COVERAGE == 'true'] }} - - name: Setup NodeJs + - name: Setup NodeJs for building uses: actions/setup-node@v1 with: - node-version: ${{ matrix.node_version }} - - # Remove dev-dependencies that aren't needed for testing and aren't compatable with all node versions being tested against. - - name: Remove unneeded incompatible dev-dependencies - run: yarn remove @rebeccastevens/eslint-config + node-version: "16" - name: Install Dependencies run: yarn install --frozen-lockfile @@ -84,26 +79,28 @@ jobs: run: yarn build - name: Compile Tests - if: env.USE_COMPILED_TEST == 'true' + if: env.REPORT_COVERAGE == 'false' run: yarn compile-tests + - name: Setup NodeJs ${{ matrix.node_version }} for testing + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node_version }} + - name: Remove Dev TypeScript - run: yarn remove typescript + run: yarn remove typescript --ignore-engines - name: Add TypeScript "${{ matrix.ts_version }}" if: matrix.ts_version != 'JS' - run: yarn add -D typescript@"${{ matrix.ts_version }}" + run: yarn add -D typescript@"${{ matrix.ts_version }}" --ignore-engines - - name: Run Tests (Uncompiled) - if: env.USE_COMPILED_TEST != 'true' + - name: Run Tests run: yarn test - - - name: Run Tests (Compiled) - if: env.USE_COMPILED_TEST == 'true' - run: yarn test-compiled + env: + USE_COMPILED_TESTS: ${{ env.REPORT_COVERAGE == 'false' }} - name: Report coverage uses: codecov/codecov-action@v1 - if: env.USE_COMPILED_TEST != 'true' + if: env.REPORT_COVERAGE == 'true' with: file: coverage/lcov.info diff --git a/.gitignore b/.gitignore index 5d44030c6..5093bc8b3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ .DS_Store thumbs.db *.log -.rpt2_cache/ +.nyc_output/ node_modules/ /build/ /lib/ diff --git a/.nycrc b/.nycrc new file mode 100644 index 000000000..332fc26a4 --- /dev/null +++ b/.nycrc @@ -0,0 +1,20 @@ +{ + "extends": "@istanbuljs/nyc-config-typescript", + "include": [ + "src/**/*" + ], + "exclude": [ + "src/util/conditional-imports/**/*" + ], + "reporter": [ + "lcov", + "text" + ], + "check-coverage": false, + "watermarks": { + "lines": [80, 95], + "functions": [80, 95], + "branches": [80, 95], + "statements": [80, 95] + } +} diff --git a/.vscode/settings.json b/.vscode/settings.json index c85328e89..25a330b12 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,12 +1,12 @@ { "files.exclude": { - ".rpt2_cache": true, + ".nyc_output": true, "coverage": true, }, "files.trimTrailingWhitespace": true, "search.exclude": { "**/.git/": true, - "**/.rpt2_cache/": true, + "**/.nyc_output/": true, "**/yarn.lock": true, ".vscode/": true, "build/": true, diff --git a/ava.config.js b/ava.config.js new file mode 100644 index 000000000..98a7249e0 --- /dev/null +++ b/ava.config.js @@ -0,0 +1,42 @@ +// @ts-check + +/** + * Get the intended boolean value from the given string. + */ +function getBoolean(value) { + if (value === undefined) { + return false; + } + const asNumber = Number(value); + return Number.isNaN(asNumber) + ? Boolean(String(value).toLowerCase().replace("false", "")) + : Boolean(asNumber); +} + +const useCompiledTests = getBoolean(process.env.USE_COMPILED_TESTS); + +const avaCommonConfig = { + files: ["tests/**/!(_)*.test.*"], + timeout: "5m", +}; + +const avaTsConfig = { + ...avaCommonConfig, + extensions: ["ts"], + require: ["ts-node/register", "tsconfig-paths/register"], + environmentVariables: { + TS_NODE_PROJECT: "tests/tsconfig.json", + }, +}; + +const avaJsConfig = { + ...avaCommonConfig, + files: avaCommonConfig.files.map((file) => `build/${file}`), + extensions: ["js"], + require: ["tsconfig-paths/register"], + environmentVariables: { + TS_NODE_PROJECT: "build/tests/tsconfig.json", + }, +}; + +export default useCompiledTests ? avaJsConfig : avaTsConfig; diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index ffbcdc94a..000000000 --- a/jest.config.js +++ /dev/null @@ -1,25 +0,0 @@ -"use strict"; - -/** - * Used compiled rules? i.e. test against JS files instead of TS files. - */ -const useCompiled = Boolean(process.env.USE_COMPLIED); - -module.exports = { - testEnvironment: "node", - transform: { - "^.+\\.ts$": "ts-jest", - }, - testRegex: useCompiled - ? "./build/tests/.+\\.test\\.js$" - : "./tests/.+\\.test\\.ts$", - collectCoverage: !useCompiled, - collectCoverageFrom: useCompiled ? ["build/src/**/*.js"] : ["src/**/*.ts"], - moduleFileExtensions: ["ts", "js", "json", "node"], - coverageReporters: ["text-summary", "lcov"], - globals: { - "ts-jest": { - tsconfig: "tests/tsconfig.json", - }, - }, -}; diff --git a/package.json b/package.json index 408292e12..9f1dd3424 100644 --- a/package.json +++ b/package.json @@ -46,13 +46,12 @@ "prebuild-tests": "rimraf build", "build-tests": "yarn compile-tests", "compile": "rollup -c", - "compile-tests": "tsc -p tests/tsconfig.json && cpx ./tests/helpers/tsconfig.json ./build/tests/helpers/", + "compile-tests": "ts-node -P scripts/tsconfig.json scripts/compile-tests.ts", "prelint": "yarn build && yarn link && yarn link 'eslint-plugin-functional'", "lint": "eslint .", "lint-fix": "yarn lint --fix", - "test": "jest --testPathIgnorePatterns _work.test", - "test-compiled": "cross-env USE_COMPLIED=1 yarn test", - "test-work": "jest tests/rules/_work.test.ts --no-coverage", + "test": "nyc ava", + "test-work": "ava 'tests/rules/_work.test.ts'", "verify": "yarn build && yarn lint && yarn build-tests && yarn test-compiled && rimraf build", "preversion": "yarn verify", "version": "auto-changelog -p && git add CHANGELOG.md", @@ -64,6 +63,7 @@ "escape-string-regexp": "^4.0.0" }, "devDependencies": { + "@istanbuljs/nyc-config-typescript": "^1.0.1", "@rebeccastevens/eslint-config": "^1.0.10", "@rollup/plugin-commonjs": "^17.0.0", "@rollup/plugin-json": "^4.1.0", @@ -73,24 +73,24 @@ "@types/eslint": "^7.2.6", "@types/estree": "^0.0.46", "@types/glob": "^7.1.1", - "@types/jest": "^26.0.19", "@types/node": "15.0.1", "@types/rollup-plugin-auto-external": "^2.0.2", "@typescript-eslint/eslint-plugin": "^4.28.4", "@typescript-eslint/parser": "^4.28.4", "auto-changelog": "^2.2.1", + "ava": "^3.15.0", "babel-eslint": "^10.0.2", "codecov": "^3.8.1", - "cpx": "^1.5.0", "cross-env": "^7.0.3", "dedent": "^0.7.0", "eslint": "^7.31.0", + "eslint-ava-rule-tester": "^4.0.0", "eslint-config-prettier": "^8.3.0", "eslint-import-resolver-typescript": "^2.4.0", + "eslint-plugin-ava": "^12.0.0", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-eslint-plugin": "^3.4.0", "eslint-plugin-import": "^2.23.4", - "eslint-plugin-jest": "^24.4.0", "eslint-plugin-jsdoc": "^35.5.1", "eslint-plugin-markdown": "^2.2.0", "eslint-plugin-node": "^11.1.0", @@ -102,16 +102,17 @@ "espree": "^8.0.0", "glob": "^7.1.6", "husky": "^6.0.0", - "jest": "^26.6.3", "json-schema": "^0.3.0", + "jsonc-parser": "^3.0.0", "lint-staged": "^10.5.3", + "nyc": "^15.1.0", "prettier": "^2.2.1", "rimraf": "^3.0.0", "rollup": "^2.34.2", "rollup-plugin-auto-external": "^2.0.0", "shelljs": "^0.8.3", - "ts-jest": "^26.4.4", "ts-node": "^10.1.0", + "tsc-prog": "^2.2.1", "tsconfig-paths": "^3.10.1", "tslib": "^2.0.3", "tsutils": "^3.21.0", diff --git a/scripts/.eslintrc.json b/scripts/.eslintrc.json new file mode 100644 index 000000000..3274bf64c --- /dev/null +++ b/scripts/.eslintrc.json @@ -0,0 +1,5 @@ +{ + "rules": { + "node/no-unsupported-features/node-builtins": "off" + } +} diff --git a/scripts/compile-tests.ts b/scripts/compile-tests.ts new file mode 100644 index 000000000..ffaa2c176 --- /dev/null +++ b/scripts/compile-tests.ts @@ -0,0 +1,62 @@ +import { promises as fs } from "fs"; +import * as JSONC from "jsonc-parser"; +import * as tsc from "tsc-prog"; + +/** + * The script. + */ +async function run() { + transpileTests(); + await Promise.all([createTestsTsConfig(), createTestsHelpersTsConfig()]); +} + +/** + * Transpile the tests. + */ +function transpileTests() { + const program = tsc.createProgramFromConfig({ + basePath: `${process.cwd()}/tests`, + configFilePath: "tsconfig.json", + }); + + tsc.emit(program, { + clean: { outDir: true }, + }); +} + +/** + * Create a suitable "build/tests/tsconfig.json" file. + */ +async function createTestsTsConfig() { + const testsTsConfig = JSONC.parse( + await fs.readFile("tests/tsconfig.json", { encoding: "utf-8" }) + ); + + const updatedTestsTsConfig = { + ...testsTsConfig, + extends: `../${testsTsConfig.extends}`, + compilerOptions: { + ...testsTsConfig.compilerOptions, + baseUrl: "..", + }, + }; + + return fs.writeFile( + "build/tests/tsconfig.json", + JSON.stringify(updatedTestsTsConfig, null, 2), + { encoding: "utf-8" } + ); +} + +/** + * Create a suitable "build/tests/helpers/tsconfig.json" file. + */ +async function createTestsHelpersTsConfig() { + return fs.copyFile( + "tests/helpers/tsconfig.json", + "build/tests/helpers/tsconfig.json" + ); +} + +// Run the script. +run().catch((error) => void console.error(error)); diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json new file mode 100644 index 000000000..034159ece --- /dev/null +++ b/scripts/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2018", + "module": "CommonJS", + "lib": ["esnext"], + "alwaysStrict": true, + "strict": true, + "esModuleInterop": true, + "moduleResolution": "node", + "noImplicitAny": false, + "noImplicitReturns": true, + "noImplicitThis": true, + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "forceConsistentCasingInFileNames": true, + "importHelpers": false, + "newLine": "LF", + "noEmitOnError": true, + "removeComments": true + } +} diff --git a/tests/.eslintrc.json b/tests/.eslintrc.json index ac74b2015..0967526bc 100644 --- a/tests/.eslintrc.json +++ b/tests/.eslintrc.json @@ -1,30 +1,20 @@ { - "env": { - "jest/globals": true - }, - "extends": [ - "plugin:jest/recommended" - ], + "plugins": ["ava"], + "extends": ["plugin:ava/recommended"], "rules": { + "@typescript-eslint/no-unused-vars-experimental": "off", "@typescript-eslint/strict-boolean-expressions": "off", + "ava/no-import-test-files": ["error", { "files": ["tests/**/*.test.ts"] }], "eslint-comments/disable-enable-pair": "off", "eslint-comments/no-unlimited-disable": "off", "functional/functional-parameters": "off", "functional/no-conditional-statement": "off", "functional/no-expression-statement": "off", - "jest/no-alias-methods": "error", - "jest/no-test-return-statement": "error", - "jest/prefer-called-with": "warn", - "jest/prefer-expect-assertions": "error", - "jest/prefer-spy-on": "warn", - "jest/prefer-strict-equal": "warn", - "jest/prefer-to-be-null": "warn", - "jest/prefer-to-be-undefined": "warn", - "jest/prefer-to-contain": "warn", - "jest/prefer-to-have-length": "warn", - "jest/prefer-todo": "error", - "sonarjs/no-identical-functions": "off", + "functional/no-loop-statement": "off", + "functional/no-return-void": "off", + "import/no-named-as-default-member": "off", "sonarjs/no-duplicate-string": "off", + "sonarjs/no-identical-functions": "off", "unicorn/prefer-module": "off" } } diff --git a/tests/common/ignore-options.test.ts b/tests/common/ignore-options.test.ts index a724eb0c3..b98ff659d 100644 --- a/tests/common/ignore-options.test.ts +++ b/tests/common/ignore-options.test.ts @@ -1,240 +1,235 @@ import type { TSESLint } from "@typescript-eslint/experimental-utils"; +import assert from "assert"; +import test from "ava"; import dedent from "dedent"; -import { RuleTester } from "eslint"; +import RuleTester from "eslint-ava-rule-tester"; import type { IgnoreAccessorPatternOption, IgnorePatternOption, } from "~/common/ignore-options"; import { shouldIgnore } from "~/common/ignore-options"; -import { filename, es9 } from "~/tests/helpers/configs"; +import { filename, configs } from "~/tests/helpers/configs"; +import { testWrapper } from "~/tests/helpers/testers"; import { addFilename, createDummyRule } from "~/tests/helpers/util"; -describe("option: ignore", () => { - describe("ignoreAccessorPattern", () => { - const tests: ReadonlyArray< - TSESLint.ValidTestCase - > = [ - // Exact match. - { - code: dedent` - mutable = 0;`, - options: [true, { ignoreAccessorPattern: "mutable" }], - }, - { - code: dedent` - mutable.foo = 0;`, - options: [true, { ignoreAccessorPattern: "mutable.foo" }], - }, - { - code: dedent` - x = 0; - xxx_mutable_xxx = 0; - mutable.foo.bar = 0; - mutable.foo[0] = 0; - mutable.foo["foo-bar"] = 0;`, - options: [false, { ignoreAccessorPattern: "mutable" }], - }, - // Prefix match. - { - code: dedent` - mutable_ = 0; - mutable_xxx = 0;`, - options: [true, { ignoreAccessorPattern: "mutable_*" }], - }, - { - code: dedent` - x = 0; - xxx_mutable_xxx = 0; - mutable_xxx.foo = 0; - mutable_xxx[0] = 0; - mutable_xxx["foo-bar"] = 0;`, - options: [false, { ignoreAccessorPattern: "mutable_*" }], - }, - // Suffix match. - { - code: dedent` - _mutable = 0; - xxx_mutable = 0;`, - options: [true, { ignoreAccessorPattern: "*_mutable" }], - }, - { - code: dedent` - x = 0; - xxx_mutable_xxx = 0; - xxx_mutable.foo = 0; - xxx_mutable[0] = 0; - xxx_mutable["foo-bar"] = 0;`, - options: [false, { ignoreAccessorPattern: "*_mutable" }], - }, - // Middle match. - { - code: dedent` - xxx_mutable_xxx = 0;`, - options: [true, { ignoreAccessorPattern: "*_mutable_*" }], - }, - { - code: dedent` - x = 0; - xxx_mutable_xxx.foo = 0; - xxx_mutable_xxx[0] = 0; - xxx_mutable_xxx["foo-bar"] = 0;`, - options: [false, { ignoreAccessorPattern: "*_mutable_*" }], - }, - // Mutable properties. - { - code: dedent` - mutable_xxx.foo = 0; - mutable_xxx[0] = 0; - mutable_xxx["foo-bar"] = 0;`, - options: [true, { ignoreAccessorPattern: "mutable_*.*" }], - }, - { - code: dedent` - mutable_xxx = 0; - mutable_xxx.foo.bar = 0; - mutable_xxx.foo[0] = 0; - mutable_xxx.foo["foo-bar"] = 0;`, - options: [false, { ignoreAccessorPattern: "mutable_*.*" }], - }, - // Mutable deep properties. - { - code: dedent` - mutable_xxx.foo.bar[0] = 0; - mutable_xxx.foo.bar["foo-bar"] = 0; - mutable_xxx.foo.bar = [0, 1, 2]; - mutable_xxx.foo = 0; - mutable_xxx[0] = 0; - mutable_xxx["foo-bar"] = 0;`, - options: [true, { ignoreAccessorPattern: "mutable_*.*.**" }], - }, - { - code: dedent` - mutable_xxx = 0;`, - options: [false, { ignoreAccessorPattern: "mutable_*.*.**" }], - }, - // Mutable deep properties and container. - { - code: dedent` - mutable_xxx.foo.bar[0] = 0; - mutable_xxx.foo.bar["foo-bar"] = 0; - mutable_xxx.foo.bar = [0, 1, 2]; - mutable_xxx.foo = 0; - mutable_xxx[0] = 0; - mutable_xxx["foo-bar"] = 0; - mutable_xxx = 0;`, - options: [true, { ignoreAccessorPattern: "mutable_*.**" }], - }, - ]; - - new RuleTester(es9).run( - "AssignmentExpression", - createDummyRule((context) => { - const [allowed, options] = context.options; - return { - AssignmentExpression: (node) => { - expect(shouldIgnore(node, context, options)).toBe(allowed); - }, - }; - })!, - addFilename(filename, { - valid: [ - ...(tests as unknown as ReadonlyArray), - ], - invalid: [], - }) - ); +/** + * Create a dummy rule that operates on AssignmentExpression nodes. + */ +function createDummyAssignmentExpressionRule() { + return createDummyRule((context) => { + const [allowed, options] = context.options; + return { + AssignmentExpression: (node) => { + assert(shouldIgnore(node, context, options) === allowed); + }, + }; }); +} - describe("ignorePattern", () => { - const assignmentExpressionTests: ReadonlyArray< - TSESLint.ValidTestCase - > = [ - // Prefix match. - { - code: dedent` - mutable_ = 0; - mutable_xxx = 0; - mutable_xxx.foo = 0; - mutable_xxx[0] = 0;`, - options: [true, { ignorePattern: "^mutable_" }], - }, - // Suffix match. - { - code: dedent` - _mutable = 0; - xxx_mutable = 0; - foo.xxx_mutable = 0;`, - options: [true, { ignorePattern: "_mutable$" }], - }, - // Middle match. - { - code: dedent` - mutable = 0;`, - options: [true, { ignorePattern: "^mutable$" }], - }, - { - code: dedent` - mutable.foo.bar = 0; - mutable.bar[0] = 0;`, - options: [false, { ignorePattern: "^mutable$" }], - }, - ]; +const tests: ReadonlyArray< + TSESLint.ValidTestCase +> = [ + // Exact match. + { + code: dedent` + mutable = 0;`, + options: [true, { ignoreAccessorPattern: "mutable" }], + }, + { + code: dedent` + mutable.foo = 0;`, + options: [true, { ignoreAccessorPattern: "mutable.foo" }], + }, + { + code: dedent` + x = 0; + xxx_mutable_xxx = 0; + mutable.foo.bar = 0; + mutable.foo[0] = 0; + mutable.foo["foo-bar"] = 0;`, + options: [false, { ignoreAccessorPattern: "mutable" }], + }, + // Prefix match. + { + code: dedent` + mutable_ = 0; + mutable_xxx = 0;`, + options: [true, { ignoreAccessorPattern: "mutable_*" }], + }, + { + code: dedent` + x = 0; + xxx_mutable_xxx = 0; + mutable_xxx.foo = 0; + mutable_xxx[0] = 0; + mutable_xxx["foo-bar"] = 0;`, + options: [false, { ignoreAccessorPattern: "mutable_*" }], + }, + // Suffix match. + { + code: dedent` + _mutable = 0; + xxx_mutable = 0;`, + options: [true, { ignoreAccessorPattern: "*_mutable" }], + }, + { + code: dedent` + x = 0; + xxx_mutable_xxx = 0; + xxx_mutable.foo = 0; + xxx_mutable[0] = 0; + xxx_mutable["foo-bar"] = 0;`, + options: [false, { ignoreAccessorPattern: "*_mutable" }], + }, + // Middle match. + { + code: dedent` + xxx_mutable_xxx = 0;`, + options: [true, { ignoreAccessorPattern: "*_mutable_*" }], + }, + { + code: dedent` + x = 0; + xxx_mutable_xxx.foo = 0; + xxx_mutable_xxx[0] = 0; + xxx_mutable_xxx["foo-bar"] = 0;`, + options: [false, { ignoreAccessorPattern: "*_mutable_*" }], + }, + // Mutable properties. + { + code: dedent` + mutable_xxx.foo = 0; + mutable_xxx[0] = 0; + mutable_xxx["foo-bar"] = 0;`, + options: [true, { ignoreAccessorPattern: "mutable_*.*" }], + }, + { + code: dedent` + mutable_xxx = 0; + mutable_xxx.foo.bar = 0; + mutable_xxx.foo[0] = 0; + mutable_xxx.foo["foo-bar"] = 0;`, + options: [false, { ignoreAccessorPattern: "mutable_*.*" }], + }, + // Mutable deep properties. + { + code: dedent` + mutable_xxx.foo.bar[0] = 0; + mutable_xxx.foo.bar["foo-bar"] = 0; + mutable_xxx.foo.bar = [0, 1, 2]; + mutable_xxx.foo = 0; + mutable_xxx[0] = 0; + mutable_xxx["foo-bar"] = 0;`, + options: [true, { ignoreAccessorPattern: "mutable_*.*.**" }], + }, + { + code: dedent` + mutable_xxx = 0;`, + options: [false, { ignoreAccessorPattern: "mutable_*.*.**" }], + }, + // Mutable deep properties and container. + { + code: dedent` + mutable_xxx.foo.bar[0] = 0; + mutable_xxx.foo.bar["foo-bar"] = 0; + mutable_xxx.foo.bar = [0, 1, 2]; + mutable_xxx.foo = 0; + mutable_xxx[0] = 0; + mutable_xxx["foo-bar"] = 0; + mutable_xxx = 0;`, + options: [true, { ignoreAccessorPattern: "mutable_*.**" }], + }, +]; - new RuleTester(es9).run( - "AssignmentExpression", - createDummyRule((context) => { - const [allowed, options] = context.options; - return { - AssignmentExpression: (node) => { - expect(shouldIgnore(node, context, options)).toBe(allowed); - }, - }; - })!, - addFilename(filename, { - valid: [ - ...(assignmentExpressionTests as unknown as ReadonlyArray), - ], - invalid: [], - }) - ); +new RuleTester(testWrapper(test), configs.es10).run( + "AssignmentExpression", + createDummyAssignmentExpressionRule(), + addFilename(filename, { + valid: [...(tests as unknown as ReadonlyArray)], + invalid: [], + }) +); - const expressionStatementTests: ReadonlyArray< - TSESLint.ValidTestCase - > = [ - { - code: dedent` - const x = 0;`, - options: [true, { ignorePattern: "^const x" }], - }, - { - code: dedent` - const x = 0;`, - options: [true, { ignorePattern: "= 0;$" }], - }, - { - code: dedent` - const x = 0;`, - options: [true, { ignorePattern: "^const x = 0;$" }], - }, - ]; +const assignmentExpressionTests: ReadonlyArray< + TSESLint.ValidTestCase +> = [ + // Prefix match. + { + code: dedent` + mutable_ = 0; + mutable_xxx = 0; + mutable_xxx.foo = 0; + mutable_xxx[0] = 0;`, + options: [true, { ignorePattern: "^mutable_" }], + }, + // Suffix match. + { + code: dedent` + _mutable = 0; + xxx_mutable = 0; + foo.xxx_mutable = 0;`, + options: [true, { ignorePattern: "_mutable$" }], + }, + // Middle match. + { + code: dedent` + mutable = 0;`, + options: [true, { ignorePattern: "^mutable$" }], + }, + { + code: dedent` + mutable.foo.bar = 0; + mutable.bar[0] = 0;`, + options: [false, { ignorePattern: "^mutable$" }], + }, +]; - new RuleTester(es9).run( - "ExpressionStatement", - createDummyRule((context) => { - const [allowed, options] = context.options; - return { - ExpressionStatement: (node) => { - expect(shouldIgnore(node, context, options)).toBe(allowed); - }, - }; - })!, - addFilename(filename, { - valid: [ - ...(expressionStatementTests as unknown as ReadonlyArray), - ], - invalid: [], - }) - ); - }); -}); +new RuleTester(testWrapper(test), configs.es10).run( + "AssignmentExpression", + createDummyAssignmentExpressionRule(), + addFilename(filename, { + valid: [ + ...(assignmentExpressionTests as unknown as ReadonlyArray), + ], + invalid: [], + }) +); + +const expressionStatementTests: ReadonlyArray< + TSESLint.ValidTestCase +> = [ + { + code: dedent` + const x = 0;`, + options: [true, { ignorePattern: "^const x" }], + }, + { + code: dedent` + const x = 0;`, + options: [true, { ignorePattern: "= 0;$" }], + }, + { + code: dedent` + const x = 0;`, + options: [true, { ignorePattern: "^const x = 0;$" }], + }, +]; + +new RuleTester(testWrapper(test), configs.es10).run( + "ExpressionStatement", + createDummyRule((context) => { + const [allowed, options] = context.options; + return { + ExpressionStatement: (node) => { + assert(shouldIgnore(node, context, options) === allowed); + }, + }; + }), + addFilename(filename, { + valid: [ + ...(expressionStatementTests as unknown as ReadonlyArray), + ], + invalid: [], + }) +); diff --git a/tests/configs.test.ts b/tests/configs.test.ts index 6cc21da86..ef1f3ef54 100644 --- a/tests/configs.test.ts +++ b/tests/configs.test.ts @@ -1,7 +1,7 @@ /** * @file Tests for all configs except `all`. */ -import type { Linter } from "eslint"; +import test from "ava"; import all from "~/configs/all"; import currying from "~/configs/currying"; @@ -14,53 +14,48 @@ import noStatements from "~/configs/no-statements"; import stylistic from "~/configs/stylistic"; import { rules } from "~/rules"; -/** - * Test the given config. - */ -function testConfig(config: Linter.Config, master: Linter.Config) { - return () => { - it("should not have any JS rules that the all config does not have", () => { - expect.hasAssertions(); - expect(config).not.toStrictEqual(master); - Object.keys(config.rules ?? {}).every((rule) => { - expect(master.rules?.[rule]).toBeDefined(); - return true; - }); - }); +test('Config "All" - should have all the rules', (t) => { + const allRules = Object.keys(rules); - it("should not have any TS rules that the all config does not have", () => { - expect.hasAssertions(); - expect(config).not.toStrictEqual(master); - Object.keys(config.overrides?.[0].rules ?? {}).every((rule) => { - expect(master.overrides?.[0].rules?.[rule]).toBeDefined(); - return true; - }); - }); - }; -} + const configAllJSRules = Object.keys(all.rules ?? {}); + const configAllTSRules = Object.keys(all.overrides?.[0].rules ?? {}); + const configAllRules = new Set([...configAllJSRules, ...configAllTSRules]); + + t.is(configAllRules.size, allRules.length); +}); -describe("configs", () => { - describe("All", () => { - const allRules = Object.keys(rules); - const configJSRules = Object.keys(all.rules ?? {}); - const configTSRules = Object.keys(all.overrides?.[0].rules ?? {}); +/** + * A map of each config (except the "all" config) to it's name. + */ +const configs = new Map([ + [currying, "Currying"], + [functional, "Functional"], + [functionalLite, "Functional Lite"], + [noExceptions, "No Mutations"], + [noMutations, "No Exceptions"], + [noObjectOrientation, "No Object Orientation"], + [noStatements, "No Statements"], + [stylistic, "Stylistic"], +]); - it("should have all the rules", () => { - expect.assertions(1); - expect(new Set([...configJSRules, ...configTSRules]).size).toBe( - allRules.length - ); - }); +for (const [config, name] of [...configs.entries()]) { + test(`Config "${name}" - should not have any *JS* rules that the all config does not have`, (t) => { + const rulesNames = Object.keys(config.rules ?? {}); + if (rulesNames.length === 0) { + t.pass("no tests"); + } + for (const rule of rulesNames) { + t.not(all.rules?.[rule], undefined); + } }); - /* eslint-disable jest/valid-describe */ - describe("Currying", testConfig(currying, all)); - describe("Functional", testConfig(functional, all)); - describe("Functional Lite", testConfig(functionalLite, all)); - describe("No Mutations", testConfig(noMutations, all)); - describe("No Exceptions", testConfig(noExceptions, all)); - describe("No Object Orientation", testConfig(noObjectOrientation, all)); - describe("No Statements", testConfig(noStatements, all)); - describe("Stylistic", testConfig(stylistic, all)); - /* eslint-enable jest/valid-describe */ -}); + test(`Config "${name}" - should not have any *TS* rules that the all config does not have`, (t) => { + const rulesNames = Object.keys(config.overrides?.[0].rules ?? {}); + if (rulesNames.length === 0) { + t.pass("no tests"); + } + for (const rule of rulesNames) { + t.not(all.overrides?.[0].rules?.[rule], undefined); + } + }); +} diff --git a/tests/helpers/configs.ts b/tests/helpers/configs.ts index 3c2541a15..4f8dc9cdc 100644 --- a/tests/helpers/configs.ts +++ b/tests/helpers/configs.ts @@ -3,52 +3,72 @@ import path from "path"; export const filename = path.join(__dirname, "file.ts"); -export const typescript: Linter.Config = { - parser: require.resolve("@typescript-eslint/parser"), - parserOptions: { - sourceType: "module", - project: path.join(__dirname, "./tsconfig.json"), - }, -}; +const typescriptParser = "@typescript-eslint/parser"; +const babelParser = "babel-eslint"; +const espreeParser = "espree"; -export const es9: Linter.Config = { - parser: require.resolve("babel-eslint"), - parserOptions: { - ecmaVersion: 9, - }, -}; +export const configs = { + typescript: { + parser: require.resolve(typescriptParser), + parserOptions: { + sourceType: "module", + project: path.join(__dirname, "./tsconfig.json"), + }, + } as Linter.Config, -export const es8: Linter.Config = { - parser: require.resolve("babel-eslint"), - parserOptions: { - ecmaVersion: 8, - }, -}; + es11: { + parser: require.resolve(babelParser), + parserOptions: { + ecmaVersion: 9, + }, + } as Linter.Config, -export const es7: Linter.Config = { - parser: require.resolve("babel-eslint"), - parserOptions: { - ecmaVersion: 7, - }, -}; + es10: { + parser: require.resolve(babelParser), + parserOptions: { + ecmaVersion: 9, + }, + } as Linter.Config, -export const es6: Linter.Config = { - parser: require.resolve("babel-eslint"), - parserOptions: { - ecmaVersion: 6, - }, -}; + es9: { + parser: require.resolve(babelParser), + parserOptions: { + ecmaVersion: 9, + }, + } as Linter.Config, -export const es5: Linter.Config = { - parser: require.resolve("espree"), - parserOptions: { - ecmaVersion: 5, - }, -}; + es8: { + parser: require.resolve(babelParser), + parserOptions: { + ecmaVersion: 8, + }, + } as Linter.Config, + + es7: { + parser: require.resolve(babelParser), + parserOptions: { + ecmaVersion: 7, + }, + } as Linter.Config, + + es6: { + parser: require.resolve(babelParser), + parserOptions: { + ecmaVersion: 6, + }, + } as Linter.Config, + + es5: { + parser: require.resolve(espreeParser), + parserOptions: { + ecmaVersion: 5, + }, + } as Linter.Config, -export const es3: Linter.Config = { - parser: require.resolve("espree"), - parserOptions: { - ecmaVersion: 3, - }, + es3: { + parser: require.resolve(espreeParser), + parserOptions: { + ecmaVersion: 3, + }, + } as Linter.Config, }; diff --git a/tests/helpers/testers.ts b/tests/helpers/testers.ts new file mode 100644 index 000000000..5ae18d45a --- /dev/null +++ b/tests/helpers/testers.ts @@ -0,0 +1,66 @@ +import test from "ava"; +// eslint-disable-next-line ava/use-test +import type { Implementation } from "ava"; +import type { Rule } from "eslint"; +import RuleTester from "eslint-ava-rule-tester"; + +import { configs } from "./configs"; +import { + processInvalidTestCase, + processValidTestCase, + isTsInstalled, +} from "./util"; +import type { ValidTestCase, InvalidTestCase } from "./util"; + +type TestFunction = ( + ruleName: string, + rule: Rule.RuleModule, + tests: { + readonly valid: ReadonlyArray; + readonly invalid: ReadonlyArray; + } +) => void; + +const testNames = new Map(); + +/** + * A wrapper function to wrap a given ava test function and issue a unique title + * is given to each rule. + */ +export function testWrapper( + avaTest: (title: string, callback: Implementation) => void +) { + return (title: string, callback: Implementation) => { + const count = (testNames.get(title) ?? 0) + 1; + testNames.set(title, count); + avaTest(`v${count} - ${title}`, callback); + }; +} + +export const testUsing = [...Object.entries(configs)] + .map( + ([configName, config]) => + [ + configName, + ((ruleName, rule, { valid, invalid }) => { + const ruleTester = new RuleTester( + testWrapper( + configName === "typescript" && !isTsInstalled() ? test.skip : test + ), + config + ); + + ruleTester.run(ruleName, rule, { + valid: processValidTestCase(valid), + invalid: processInvalidTestCase(invalid), + }); + }) as TestFunction, + ] as const + ) + .reduce( + (carry, [configName, fn]) => ({ + ...carry, + [configName]: fn, + }), + {} + ) as Record; diff --git a/tests/helpers/util.ts b/tests/helpers/util.ts index 6c6173d5b..8f42edcdb 100644 --- a/tests/helpers/util.ts +++ b/tests/helpers/util.ts @@ -110,11 +110,6 @@ export function addFilename( /** * Returns whether or not TypeScript is installed locally. */ -export function tsInstalled(): boolean { +export function isTsInstalled(): boolean { return ts !== undefined; } - -/** - * Jest `describe` function that won't run if TypeScript isn't present. - */ -export const describeTsOnly = tsInstalled() ? describe : describe.skip; diff --git a/tests/index.test.ts b/tests/index.test.ts index 579a6331d..48e0ce125 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -2,28 +2,31 @@ * @file Tests the index file. */ +import test from "ava"; import { readdirSync } from "fs"; import plugin from "~/index"; -describe("plugin", () => { - const ruleFiles: ReadonlyArray = readdirSync("./src/rules").filter( - (file) => file !== "index.ts" && file.endsWith(".ts") - ); +const ruleFiles: ReadonlyArray = readdirSync("./src/rules").filter( + (file) => file !== "index.ts" && file.endsWith(".ts") +); - const configFiles: ReadonlyArray = readdirSync( - "./src/configs" - ).filter((file) => file !== "index.ts" && file.endsWith(".ts")); +const configFiles: ReadonlyArray = readdirSync("./src/configs").filter( + (file) => file !== "index.ts" && file.endsWith(".ts") +); - it("should have all the rules", () => { - expect.assertions(2); - expect(plugin).toHaveProperty("rules"); - expect(Object.keys(plugin.rules)).toHaveLength(ruleFiles.length); - }); +test("should have all the rules", (t) => { + t.true( + Object.prototype.hasOwnProperty.call(plugin, "rules"), + 'The plugin\'s config object should have a "rules" property.' + ); + t.assert(Object.keys(plugin.rules).length === ruleFiles.length); +}); - it("should have all the configs", () => { - expect.assertions(2); - expect(plugin).toHaveProperty("configs"); - expect(Object.keys(plugin.configs)).toHaveLength(configFiles.length); - }); +test("should have all the configs", (t) => { + t.true( + Object.prototype.hasOwnProperty.call(plugin, "configs"), + 'The plugin\'s config object should have a "configs" property.' + ); + t.assert(Object.keys(plugin.configs).length === configFiles.length); }); diff --git a/tests/rules/_work.test.ts b/tests/rules/_work.test.ts index e62cf2eb2..f17b5f40c 100644 --- a/tests/rules/_work.test.ts +++ b/tests/rules/_work.test.ts @@ -4,20 +4,14 @@ */ import dedent from "dedent"; -import { - ValidTestCase, - InvalidTestCase, - processValidTestCase, - processInvalidTestCase, -} from "~/tests/helpers/util"; -import { typescript } from "~/tests/helpers/configs"; -import { RuleTester } from "eslint"; +import type { ValidTestCase, InvalidTestCase } from "../helpers/util"; +import { testUsing } from "~/tests/helpers/testers"; /* * Step 1. * Import the rule to test. */ -import { rule } from "~/rules/prefer-readonly-type"; +import { name, rule } from "~/rules/prefer-readonly-type"; /* * Step 2a. @@ -61,8 +55,7 @@ const invalid: ReadonlyArray = [ * Run test with `yarn test-work` or to debug in vscode, press F5 (with this * file open and focused). */ -const ruleTester = new RuleTester(typescript); -ruleTester.run("Work", rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), +testUsing.typescript(name, rule, { + valid: valid, + invalid: invalid, }); diff --git a/tests/rules/functional-parameters.test.ts b/tests/rules/functional-parameters.test.ts deleted file mode 100644 index 7f0a3bd92..000000000 --- a/tests/rules/functional-parameters.test.ts +++ /dev/null @@ -1,233 +0,0 @@ -/** - * @file Tests for functional-parameters. - */ - -import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/functional-parameters"; -import { es3, es6, typescript } from "~/tests//helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests//helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const es3Valid: ReadonlyArray = [ - { - code: dedent` - var foo = { - arguments: 2 - }; - foo.arguments = 3`, - optionsSet: [[]], - }, - { - code: dedent` - (function() { - console.log("hello world"); - })();`, - optionsSet: [[]], - }, - { - code: dedent` - function foo(bar) { - console.log(bar); - }`, - optionsSet: [ - [{ enforceParameterCount: "atLeastOne" }], - [{ enforceParameterCount: "exactlyOne" }], - ], - }, - { - code: dedent` - function foo(bar, baz) { - console.log(bar, baz); - }`, - optionsSet: [ - [{ enforceParameterCount: "atLeastOne" }], - [{ ignorePattern: "^foo", enforceParameterCount: "exactlyOne" }], - ], - }, -]; - -// Invalid test cases. -const es3Invalid: ReadonlyArray = [ - { - code: dedent` - function foo() { - console.log("hello world"); - }`, - optionsSet: [[]], - errors: [ - { - messageId: "paramCountAtLeastOne", - type: "FunctionDeclaration", - line: 1, - column: 1, - }, - ], - }, - { - code: dedent` - (function() { - console.log("hello world"); - })();`, - optionsSet: [[{ enforceParameterCount: { ignoreIIFE: false } }]], - errors: [ - { - messageId: "paramCountAtLeastOne", - type: "FunctionExpression", - line: 1, - column: 2, - }, - ], - }, - { - code: dedent` - function foo(bar) { - console.log(arguments); - }`, - optionsSet: [[]], - errors: [ - { - messageId: "arguments", - type: "Identifier", - line: 2, - column: 15, - }, - ], - }, - { - code: dedent` - function foo() { - console.log("bar"); - }`, - optionsSet: [[{ enforceParameterCount: "atLeastOne" }]], - errors: [ - { - messageId: "paramCountAtLeastOne", - type: "FunctionDeclaration", - line: 1, - column: 1, - }, - ], - }, - { - code: dedent` - function foo() { - console.log("bar"); - }`, - optionsSet: [[{ enforceParameterCount: "exactlyOne" }]], - errors: [ - { - messageId: "paramCountExactlyOne", - type: "FunctionDeclaration", - line: 1, - column: 1, - }, - ], - }, - { - code: dedent` - function foo(bar, baz) { - console.log(bar, baz); - }`, - optionsSet: [[{ enforceParameterCount: "exactlyOne" }]], - errors: [ - { - messageId: "paramCountExactlyOne", - type: "FunctionDeclaration", - line: 1, - column: 1, - }, - ], - }, -]; - -// Valid test cases. -const es6Valid: ReadonlyArray = [ - ...es3Valid, - { - code: dedent` - (() => { - console.log("hello world"); - })();`, - optionsSet: [[]], - }, - { - code: dedent` - function foo([bar, ...baz]) { - console.log(bar, baz); - }`, - optionsSet: [[]], - }, - { - code: dedent` - function foo(...bar) { - console.log(bar); - }`, - optionsSet: [[{ ignorePattern: "^foo" }]], - }, -]; - -// Invalid test cases. -const es6Invalid: ReadonlyArray = [ - ...es3Invalid, - { - code: dedent` - (() => { - console.log("hello world"); - })();`, - optionsSet: [[{ enforceParameterCount: { ignoreIIFE: false } }]], - errors: [ - { - messageId: "paramCountAtLeastOne", - type: "ArrowFunctionExpression", - line: 1, - column: 2, - }, - ], - }, - { - code: dedent` - function foo(...bar) { - console.log(bar); - }`, - optionsSet: [[]], - errors: [ - { - messageId: "restParam", - type: "RestElement", - line: 1, - column: 14, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(es6Valid), - invalid: processInvalidTestCase(es6Invalid), - }); -}); - -describe("JavaScript (es6)", () => { - const ruleTester = new RuleTester(es6); - ruleTester.run(name, rule, { - valid: processValidTestCase(es6Valid), - invalid: processInvalidTestCase(es6Invalid), - }); -}); - -describe("JavaScript (es3)", () => { - const ruleTester = new RuleTester(es3); - ruleTester.run(name, rule, { - valid: processValidTestCase(es3Valid), - invalid: processInvalidTestCase(es3Invalid), - }); -}); diff --git a/tests/rules/functional-parameters/es3/index.ts b/tests/rules/functional-parameters/es3/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/functional-parameters/es3/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/functional-parameters/es3/invalid.ts b/tests/rules/functional-parameters/es3/invalid.ts new file mode 100644 index 000000000..454a7eda4 --- /dev/null +++ b/tests/rules/functional-parameters/es3/invalid.ts @@ -0,0 +1,98 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + function foo() { + console.log("hello world"); + }`, + optionsSet: [[]], + errors: [ + { + messageId: "paramCountAtLeastOne", + type: "FunctionDeclaration", + line: 1, + column: 1, + }, + ], + }, + { + code: dedent` + (function() { + console.log("hello world"); + })();`, + optionsSet: [[{ enforceParameterCount: { ignoreIIFE: false } }]], + errors: [ + { + messageId: "paramCountAtLeastOne", + type: "FunctionExpression", + line: 1, + column: 2, + }, + ], + }, + { + code: dedent` + function foo(bar) { + console.log(arguments); + }`, + optionsSet: [[]], + errors: [ + { + messageId: "arguments", + type: "Identifier", + line: 2, + column: 15, + }, + ], + }, + { + code: dedent` + function foo() { + console.log("bar"); + }`, + optionsSet: [[{ enforceParameterCount: "atLeastOne" }]], + errors: [ + { + messageId: "paramCountAtLeastOne", + type: "FunctionDeclaration", + line: 1, + column: 1, + }, + ], + }, + { + code: dedent` + function foo() { + console.log("bar"); + }`, + optionsSet: [[{ enforceParameterCount: "exactlyOne" }]], + errors: [ + { + messageId: "paramCountExactlyOne", + type: "FunctionDeclaration", + line: 1, + column: 1, + }, + ], + }, + { + code: dedent` + function foo(bar, baz) { + console.log(bar, baz); + }`, + optionsSet: [[{ enforceParameterCount: "exactlyOne" }]], + errors: [ + { + messageId: "paramCountExactlyOne", + type: "FunctionDeclaration", + line: 1, + column: 1, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/functional-parameters/es3/valid.ts b/tests/rules/functional-parameters/es3/valid.ts new file mode 100644 index 000000000..9054c1e9c --- /dev/null +++ b/tests/rules/functional-parameters/es3/valid.ts @@ -0,0 +1,43 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + var foo = { + arguments: 2 + }; + foo.arguments = 3`, + optionsSet: [[]], + }, + { + code: dedent` + (function() { + console.log("hello world"); + })();`, + optionsSet: [[]], + }, + { + code: dedent` + function foo(bar) { + console.log(bar); + }`, + optionsSet: [ + [{ enforceParameterCount: "atLeastOne" }], + [{ enforceParameterCount: "exactlyOne" }], + ], + }, + { + code: dedent` + function foo(bar, baz) { + console.log(bar, baz); + }`, + optionsSet: [ + [{ enforceParameterCount: "atLeastOne" }], + [{ ignorePattern: "^foo", enforceParameterCount: "exactlyOne" }], + ], + }, +]; + +export default tests; diff --git a/tests/rules/functional-parameters/es6/index.ts b/tests/rules/functional-parameters/es6/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/functional-parameters/es6/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/functional-parameters/es6/invalid.ts b/tests/rules/functional-parameters/es6/invalid.ts new file mode 100644 index 000000000..79905a7c9 --- /dev/null +++ b/tests/rules/functional-parameters/es6/invalid.ts @@ -0,0 +1,38 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + (() => { + console.log("hello world"); + })();`, + optionsSet: [[{ enforceParameterCount: { ignoreIIFE: false } }]], + errors: [ + { + messageId: "paramCountAtLeastOne", + type: "ArrowFunctionExpression", + line: 1, + column: 2, + }, + ], + }, + { + code: dedent` + function foo(...bar) { + console.log(bar); + }`, + optionsSet: [[]], + errors: [ + { + messageId: "restParam", + type: "RestElement", + line: 1, + column: 14, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/functional-parameters/es6/valid.ts b/tests/rules/functional-parameters/es6/valid.ts new file mode 100644 index 000000000..536fc528f --- /dev/null +++ b/tests/rules/functional-parameters/es6/valid.ts @@ -0,0 +1,29 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + (() => { + console.log("hello world"); + })();`, + optionsSet: [[]], + }, + { + code: dedent` + function foo([bar, ...baz]) { + console.log(bar, baz); + }`, + optionsSet: [[]], + }, + { + code: dedent` + function foo(...bar) { + console.log(bar); + }`, + optionsSet: [[{ ignorePattern: "^foo" }]], + }, +]; + +export default tests; diff --git a/tests/rules/functional-parameters/index.test.ts b/tests/rules/functional-parameters/index.test.ts new file mode 100644 index 000000000..3e2c72b0e --- /dev/null +++ b/tests/rules/functional-parameters/index.test.ts @@ -0,0 +1,11 @@ +import { name, rule } from "~/rules/functional-parameters"; +import { testUsing } from "~/tests/helpers/testers"; + +import es3Tests from "./es3"; +import es6Tests from "./es6"; + +testUsing.typescript(name, rule, es6Tests); +testUsing.typescript(name, rule, es3Tests); + +testUsing.es6(name, rule, es6Tests); +testUsing.es3(name, rule, es3Tests); diff --git a/tests/rules/immutable-data.test.ts b/tests/rules/immutable-data.test.ts deleted file mode 100644 index 5680d3dc4..000000000 --- a/tests/rules/immutable-data.test.ts +++ /dev/null @@ -1,1356 +0,0 @@ -/** - * @file Tests for immutable-data. - */ - -import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/immutable-data"; -import { es3, es6, typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const objectES3Valid: ReadonlyArray = [ - // Allowed non-object mutation patterns. - { - code: dedent` - var y = x.a; - var z = x["a"]; - if (x.a && y.a) {} - var w = ~x.a; - if (!x.a) {}`, - optionsSet: [[]], - }, - // Allow Object.assign() on non identifiers. - { - code: dedent` - var x = { msg1: "hello", obj: { a: 1, b: 2}, func: function() {} }; - var bar = function(a, b, c) { return { a: a, b: b, c: c }; }; - - var a = Object.assign({}, { msg: "hello world" }); - var b = Object.assign(bar(1, 2, 3), { d: 4 }); - var c = Object.assign(x.func(), { d: 4 });`, - optionsSet: [[]], - }, - // IgnorePattern - objects. - { - code: dedent` - var mutableVar = { a: 1 }; - delete mutableVar.a;`, - optionsSet: [[{ ignorePattern: ["^mutable"] }]], - }, - { - code: dedent` - var mutableVar = { a: 1 }; - Object.assign(mutableVar, { b: 2 });`, - optionsSet: [[{ ignorePattern: ["^mutable"] }]], - }, - // IgnoreAccessorPattern - objects. - { - code: dedent` - var mutableVar = { a: 1 }; - mutableVar.a = 0; - mutableVar.a++;`, - optionsSet: [ - [{ ignoreAccessorPattern: ["**.mutable*.a"] }], - [{ ignoreAccessorPattern: ["**.mutable*.*"] }], - [{ ignoreAccessorPattern: ["**.mutable*.*.**"] }], - [{ ignoreAccessorPattern: ["**.mutable*.**"] }], - ], - }, -]; - -// Invalid test cases. -const objectES3Invalid: ReadonlyArray = [ - // Disallowed object mutation patterns. - { - code: dedent` - var x = {a: 1}; - x.foo = "bar"; - x["foo"] = "bar"; - x.a += 1; - x.a -= 1; - x.a *= 1; - x.a /= 1; - x.a %= 1; - x.a <<= 1; - x.a >>= 1; - x.a >>>= 1; - x.a &= 1; - x.a |= 1; - x.a ^= 1; - delete x.a; - delete x["a"]; - x.a++; - x.a--; - ++x.a; - --x.a; - if (x.a = 2) {} - if (x.a++) {}`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 2, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 5, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 6, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 7, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 8, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 9, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 10, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 11, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 12, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 13, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 14, - column: 1, - }, - { - messageId: "generic", - type: "UnaryExpression", - line: 15, - column: 1, - }, - { - messageId: "generic", - type: "UnaryExpression", - line: 16, - column: 1, - }, - { - messageId: "generic", - type: "UpdateExpression", - line: 17, - column: 1, - }, - { - messageId: "generic", - type: "UpdateExpression", - line: 18, - column: 1, - }, - { - messageId: "generic", - type: "UpdateExpression", - line: 19, - column: 1, - }, - { - messageId: "generic", - type: "UpdateExpression", - line: 20, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 21, - column: 5, - }, - { - messageId: "generic", - type: "UpdateExpression", - line: 22, - column: 5, - }, - ], - }, - // Disallow Object.assign on identifers. - { - code: dedent` - var x = { msg1: "hello", obj: { a: 1, b: 2} }; - - var a = Object.assign(x, { msg2: "world" }); - var b = Object.assign(x.obj, { msg2: "world" });`, - optionsSet: [[]], - errors: [ - { - messageId: "object", - type: "CallExpression", - line: 3, - column: 9, - }, - { - messageId: "object", - type: "CallExpression", - line: 4, - column: 9, - }, - ], - }, - // Disallow other object mutation methods. - { - code: dedent` - var foo = { a: 1 }; - Object.defineProperties(foo, { b: { value: 2, writable: false }}); - Object.defineProperty(foo, "c", { value: 3, writable: false }); - Object.setPrototypeOf(foo, null);`, - optionsSet: [[{ assumeTypes: true }]], - errors: [ - { - messageId: "object", - type: "CallExpression", - line: 2, - column: 1, - }, - { - messageId: "object", - type: "CallExpression", - line: 3, - column: 1, - }, - { - messageId: "object", - type: "CallExpression", - line: 4, - column: 1, - }, - ], - }, -]; - -/** - * Valid tests that only apply to es6 and above. - */ -const objectES6Valid: ReadonlyArray = [ - ...objectES3Valid, - // Allow initialization of class members in constructor - { - code: dedent` - class Klass { - bar = 1; - baz: string; - constructor() { - this.baz = "hello"; - } - }`, - optionsSet: [[]], - }, - // IgnoreAccessorPattern - classes. - { - code: dedent` - class Klass { - mutate() { - this.mutableField = 0; - } - }`, - optionsSet: [ - [{ ignoreAccessorPattern: ["this.*.**"] }], - [{ ignoreAccessorPattern: ["**.mutable*"] }], - [{ ignoreAccessorPattern: ["**.mutable*.**"] }], - ], - }, - // Ignore class - { - code: dedent` - class Klass { - baz: string; - mutate() { - this.baz = "hello"; - } - }`, - optionsSet: [[{ ignoreClass: true }], [{ ignoreClass: "fieldsOnly" }]], - }, -]; - -/** - * Invalid tests that only apply to es6 and above. - */ -const objectES6Invalid: ReadonlyArray = [ - ...objectES3Invalid, - { - code: dedent` - const x = {a: 1}; - x.a **= 1;`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 2, - column: 1, - }, - ], - }, - // No mutation in class methods. - { - code: dedent` - class Klass { - bar = 1; - baz: string; - - constructor() { - this.baz = "hello"; - } - - zoo() { - this.bar = 2; - this.baz = 3; - } - }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 10, - column: 5, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 11, - column: 5, - }, - ], - }, - // Catch non-field mutation in classes. - { - code: dedent` - class Klass { - mutate() { - let data = { prop: 0 }; - data.prop = 1; - } - }`, - optionsSet: [[{ ignoreClass: "fieldsOnly" }]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 5, - }, - ], - }, -]; - -const arrayES3Valid: ReadonlyArray = [ - // Allowed non-array mutation patterns. - { - code: dedent` - var foo = function () {}; - var bar = { - x: 1, - y: foo - }; - var x = 0; - x = 4; - x += 1; - x -= 1; - x++; - x--; - ++x; - --x; - if (x = 2) {} - if (x++) {}`, - optionsSet: [[]], - }, - // Allow array non-mutation methods - { - code: dedent` - var x = [5, 6]; - var y = [{ z: [3, 7] }]; - - x.concat([3, 4]); - x.includes(2); - x.indexOf(1); - x.join(', '); - x.lastIndexOf(0); - x.slice(1, 2); - x.toString(); - x.toLocaleString("en", {timeZone: "UTC"}); - - y[0].z.concat([3, 4]); - y[0].z.includes(2); - y[0].z.indexOf(1); - y[0].z.join(', '); - y[0].z.lastIndexOf(0); - y[0].z.slice(1, 2); - y[0].z.toString(); - y[0].z.toLocaleString("en", {timeZone: "UTC"});`, - optionsSet: [[]], - }, - // Allowed array mutation methods to be chained to the creation of an array. - { - code: dedent` - [0, 1, 2].copyWithin(0, 1, 2); - [0, 1, 2].fill(3); - [0, 1, 2].pop(); - [0, 1, 2].push(3); - [0, 1, 2].reverse(); - [0, 1, 2].shift(); - [0, 1, 2].sort(); - [0, 1, 2].splice(0, 1, 9); - [0, 1, 2].unshift(6); - - new Array(5).copyWithin(0, 1, 2); - new Array(5).fill(3); - new Array(5).pop(); - new Array(5).push(3); - new Array(5).reverse(); - new Array(5).shift(); - new Array(5).sort(); - new Array(5).splice(0, 1, 9); - new Array(5).unshift(6);`, - optionsSet: [[]], - }, - // Allowed array mutation methods to be chained to array constructor functions. - { - code: dedent` - Array.of(0, 1, 2).copyWithin(0, 1, 2); - Array.of(0, 1, 2).fill(3); - Array.of(0, 1, 2).pop(); - Array.of(0, 1, 2).push(3); - Array.of(0, 1, 2).reverse(); - Array.of(0, 1, 2).shift(); - Array.of(0, 1, 2).sort(); - Array.of(0, 1, 2).splice(0, 1, 9); - Array.of(0, 1, 2).unshift(6); - - Array.from({ length: 10 }).copyWithin(0, 1, 2); - Array.from({ length: 10 }).fill(3); - Array.from({ length: 10 }).pop(); - Array.from({ length: 10 }).push(3); - Array.from({ length: 10 }).reverse(); - Array.from({ length: 10 }).shift(); - Array.from({ length: 10 }).sort(); - Array.from({ length: 10 }).splice(0, 1, 9); - Array.from({ length: 10 }).unshift(6);`, - optionsSet: [[]], - }, - // Allowed array mutation methods to be chained to array accessor/iteration methods. - { - code: dedent` - x.slice().copyWithin(0, 1, 2); - x.slice().fill(3); - x.slice().pop(); - x.slice().push(3); - x.slice().reverse(); - x.slice().shift(); - x.slice().sort(); - x.slice().splice(0, 1, 9); - x.slice().unshift(6); - - x.concat([1, 2, 3]).copyWithin(0, 1, 2); - x.concat([1, 2, 3]).fill(3); - x.concat([1, 2, 3]).pop(); - x.concat([1, 2, 3]).push(3); - x.concat([1, 2, 3]).reverse(); - x.concat([1, 2, 3]).shift(); - x.concat([1, 2, 3]).sort(); - x.concat([1, 2, 3]).splice(0, 1, 9); - x.concat([1, 2, 3]).unshift(6); - - x.filter(function (v) { return v > 1; }).copyWithin(0, 1, 2); - x.filter(function (v) { return v > 1; }).fill(3); - x.filter(function (v) { return v > 1; }).pop(); - x.filter(function (v) { return v > 1; }).push(3); - x.filter(function (v) { return v > 1; }).reverse(); - x.filter(function (v) { return v > 1; }).shift(); - x.filter(function (v) { return v > 1; }).sort(); - x.filter(function (v) { return v > 1; }).splice(0, 1, 9); - x.filter(function (v) { return v > 1; }).unshift(6); - - x.map(function (v) { return v * 2; }).copyWithin(0, 1, 2); - x.map(function (v) { return v * 2; }).fill(3); - x.map(function (v) { return v * 2; }).pop(); - x.map(function (v) { return v * 2; }).push(3); - x.map(function (v) { return v * 2; }).reverse(); - x.map(function (v) { return v * 2; }).shift(); - x.map(function (v) { return v * 2; }).sort(); - x.map(function (v) { return v * 2; }).splice(0, 1, 9); - x.map(function (v) { return v * 2; }).unshift(6); - - x.reduce(function (r, v) { return r.concat([v + 1]); }, []).copyWithin(0, 1, 2); - x.reduce(function (r, v) { return r.concat([v + 1]); }, []).fill(3); - x.reduce(function (r, v) { return r.concat([v + 1]); }, []).pop(); - x.reduce(function (r, v) { return r.concat([v + 1]); }, []).push(3); - x.reduce(function (r, v) { return r.concat([v + 1]); }, []).reverse(); - x.reduce(function (r, v) { return r.concat([v + 1]); }, []).shift(); - x.reduce(function (r, v) { return r.concat([v + 1]); }, []).sort(); - x.reduce(function (r, v) { return r.concat([v + 1]); }, []).splice(0, 1, 9); - x.reduce(function (r, v) { return r.concat([v + 1]); }, []).unshift(6); - - x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).copyWithin(0, 1, 2); - x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).fill(3); - x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).pop(); - x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).push(3); - x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).reverse(); - x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).shift(); - x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).sort(); - x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).splice(0, 1, 9); - x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).unshift(6);`, - optionsSet: [[]], - }, - // Don't catch calls of array mutation methods on non-array objects. - { - code: dedent` - var z = { - copyWithin: function () {}, - fill: function () {}, - pop: function () {}, - push: function () {}, - reverse: function () {}, - shift: function () {}, - sort: function () {}, - splice: function () {}, - unshift: function () {} - }; - - z.copyWithin(); - z.fill(); - z.pop(); - z.push(); - z.reverse(); - z.shift(); - z.sort(); - z.splice(); - z.unshift();`, - optionsSet: [[{ assumeTypes: false }]], - }, - { - code: dedent` - var mutableX = [0, 1]; - mutableX.copyWithin(0, 1, 2); - mutableX.fill(3); - mutableX.pop(); - mutableX.push(3); - mutableX.reverse(); - mutableX.shift(); - mutableX.sort(); - mutableX.splice(0, 1, 9); - mutableX.unshift(6);`, - optionsSet: [ - [{ ignorePattern: "^mutable" }], - [{ ignoreAccessorPattern: "mutable*" }], - ], - }, -]; - -const arrayES3Invalid: ReadonlyArray = [ - { - code: dedent` - var x = [5, 6]; - var y = [{ z: [3, 7] }]; - x[0] = 4; - y[0].z[0] = 4; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - var x = [5, 6]; - var y = [{ z: [3, 7] }]; - x[0] += 1; - y[0].z[0] += 1; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - var x = [5, 6]; - var y = [{ z: [3, 7] }]; - x[0] -= 1; - y[0].z[0] -= 1; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - var x = [5, 6]; - var y = [{ z: [3, 7] }]; - delete x[0]; - delete y[0].z[0]; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "UnaryExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "UnaryExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - var x = [5, 6]; - var y = [{ z: [3, 7] }]; - x[0]++; - y[0].z[0]++; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "UpdateExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "UpdateExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - var x = [5, 6]; - var y = [{ z: [3, 7] }]; - x[0]--; - y[0].z[0]--; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "UpdateExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "UpdateExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - var x = [5, 6]; - var y = [{ z: [3, 7] }]; - ++x[0]; - ++y[0].z[0]; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "UpdateExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "UpdateExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - var x = [5, 6]; - var y = [{ z: [3, 7] }]; - --x[0]; - --y[0].z[0]; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "UpdateExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "UpdateExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - var x = [5, 6]; - var y = [{ z: [3, 7] }]; - if (x[0] = 2) {} - if (y[0].z[0] = 2) {} - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 5, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 5, - }, - ], - }, - { - code: dedent` - var x = [5, 6]; - var y = [{ z: [3, 7] }]; - if (x[0]++) {} - if (y[0].z[0]++) {} - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "UpdateExpression", - line: 3, - column: 5, - }, - { - messageId: "generic", - type: "UpdateExpression", - line: 4, - column: 5, - }, - ], - }, - { - code: dedent` - var x = [5, 6]; - var y = [{ z: [3, 7] }]; - x.length = 5; - y[0].z.length = 1; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - // Disallowed array mutation methods. - { - code: dedent` - var x = [5, 6]; - x.copyWithin(0, 1, 2); - x.fill(3); - x.pop(); - x.push(3); - x.reverse(); - x.shift(); - x.sort(); - x.splice(0, 1, 9); - x.unshift(6); - var y = [{ z: [3, 7] }]; - y[0].z.copyWithin(0, 1, 2); - y[0].z.fill(3); - y[0].z.pop(); - y[0].z.push(3); - y[0].z.reverse(); - y[0].z.shift(); - y[0].z.sort(); - y[0].z.splice(0, 1, 9); - y[0].z.unshift(6);`, - optionsSet: [[{ assumeTypes: true }]], - errors: [ - { - messageId: "array", - type: "CallExpression", - line: 2, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 3, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 4, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 5, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 6, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 7, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 8, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 9, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 10, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 12, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 13, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 14, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 15, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 16, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 17, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 18, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 19, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 20, - column: 1, - }, - ], - }, - // Disallowed array mutation methods to be chained to the creation of an array - // if `ignoreImmediateMutation` is false. - { - code: dedent` - [0, 1, 2].copyWithin(0, 1, 2); - [0, 1, 2].fill(3); - [0, 1, 2].pop(); - [0, 1, 2].push(3); - [0, 1, 2].reverse(); - [0, 1, 2].shift(); - [0, 1, 2].sort(); - [0, 1, 2].splice(0, 1, 9); - [0, 1, 2].unshift(6)`, - optionsSet: [[{ ignoreImmediateMutation: false }]], - errors: [ - { - messageId: "array", - type: "CallExpression", - line: 1, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 2, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 3, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 4, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 5, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 6, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 7, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 8, - column: 1, - }, - { - messageId: "array", - type: "CallExpression", - line: 9, - column: 1, - }, - ], - }, -]; - -// Valid test cases. -const arrayES6Valid: ReadonlyArray = [ - ...arrayES3Valid, // Allowed non-array mutation patterns. - { - code: dedent` - const x = 0; - x *= 1; - x **= 1; - x /= 1; - x %= 1; - x <<= 1; - x >>= 1; - x >>>= 1; - x &= 1; - x |= 1; - x ^= 1;`, - optionsSet: [[]], - }, -]; - -// Invalid test cases. -const arrayES6Invalid: ReadonlyArray = [ - ...arrayES3Invalid, - - { - code: dedent` - const x = [5, 6]; - const y = [{ z: [3, 7] }]; - x[0] *= 2; - y[0].z[0] *= 2; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - const x = [5, 6]; - const y = [{ z: [3, 7] }]; - x[0] **= 2; - y[0].z[0] **= 2; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - const x = [5, 6]; - const y = [{ z: [3, 7] }]; - x[0] /= 1; - y[0].z[0] /= 1; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - const x = [5, 6]; - const y = [{ z: [3, 7] }]; - x[0] %= 1; - y[0].z[0] %= 1; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - const x = [5, 6]; - const y = [{ z: [3, 7] }]; - x[0] <<= 1; - y[0].z[0] <<= 1; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - const x = [5, 6]; - const y = [{ z: [3, 7] }]; - x[0] >>= 1; - y[0].z[0] >>= 1; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - const x = [5, 6]; - const y = [{ z: [3, 7] }]; - x[0] >>>= 1; - y[0].z[0] >>>= 1; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - const x = [5, 6]; - const y = [{ z: [3, 7] }]; - x[0] &= 1; - y[0].z[0] &= 1; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - const x = [5, 6]; - const y = [{ z: [3, 7] }]; - x[0] |= 1; - y[0].z[0] |= 1; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, - { - code: dedent` - const x = [5, 6]; - const y = [{ z: [3, 7] }]; - x[0] ^= 1; - y[0].z[0] ^= 1; - `, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "AssignmentExpression", - line: 3, - column: 1, - }, - { - messageId: "generic", - type: "AssignmentExpression", - line: 4, - column: 1, - }, - ], - }, -]; - -const es3Valid: ReadonlyArray = [ - ...objectES3Valid, - ...arrayES3Valid, -]; -const es3Invalid: ReadonlyArray = [ - ...objectES3Invalid, - ...arrayES3Invalid, -]; - -const es6Valid: ReadonlyArray = [ - ...objectES6Valid, - ...arrayES6Valid, -]; -const es6Invalid: ReadonlyArray = [ - ...objectES6Invalid, - ...arrayES6Invalid, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(es6Valid), - invalid: processInvalidTestCase(es6Invalid), - }); -}); - -describe("JavaScript (es6)", () => { - const ruleTester = new RuleTester(es6); - ruleTester.run(name, rule, { - valid: processValidTestCase(es6Valid), - invalid: processInvalidTestCase(es6Invalid), - }); -}); - -describe("JavaScript (es3)", () => { - const ruleTester = new RuleTester(es3); - ruleTester.run(name, rule, { - valid: processValidTestCase(es3Valid), - invalid: processInvalidTestCase(es3Invalid), - }); -}); diff --git a/tests/rules/immutable-data/es3/array/index.ts b/tests/rules/immutable-data/es3/array/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/immutable-data/es3/array/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/immutable-data/es3/array/invalid.ts b/tests/rules/immutable-data/es3/array/invalid.ts new file mode 100644 index 000000000..6a04079f7 --- /dev/null +++ b/tests/rules/immutable-data/es3/array/invalid.ts @@ -0,0 +1,467 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + var x = [5, 6]; + var y = [{ z: [3, 7] }]; + x[0] = 4; + y[0].z[0] = 4; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + var x = [5, 6]; + var y = [{ z: [3, 7] }]; + x[0] += 1; + y[0].z[0] += 1; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + var x = [5, 6]; + var y = [{ z: [3, 7] }]; + x[0] -= 1; + y[0].z[0] -= 1; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + var x = [5, 6]; + var y = [{ z: [3, 7] }]; + delete x[0]; + delete y[0].z[0]; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "UnaryExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "UnaryExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + var x = [5, 6]; + var y = [{ z: [3, 7] }]; + x[0]++; + y[0].z[0]++; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "UpdateExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "UpdateExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + var x = [5, 6]; + var y = [{ z: [3, 7] }]; + x[0]--; + y[0].z[0]--; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "UpdateExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "UpdateExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + var x = [5, 6]; + var y = [{ z: [3, 7] }]; + ++x[0]; + ++y[0].z[0]; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "UpdateExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "UpdateExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + var x = [5, 6]; + var y = [{ z: [3, 7] }]; + --x[0]; + --y[0].z[0]; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "UpdateExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "UpdateExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + var x = [5, 6]; + var y = [{ z: [3, 7] }]; + if (x[0] = 2) {} + if (y[0].z[0] = 2) {} + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 5, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 5, + }, + ], + }, + { + code: dedent` + var x = [5, 6]; + var y = [{ z: [3, 7] }]; + if (x[0]++) {} + if (y[0].z[0]++) {} + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "UpdateExpression", + line: 3, + column: 5, + }, + { + messageId: "generic", + type: "UpdateExpression", + line: 4, + column: 5, + }, + ], + }, + { + code: dedent` + var x = [5, 6]; + var y = [{ z: [3, 7] }]; + x.length = 5; + y[0].z.length = 1; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + // Disallowed array mutation methods. + { + code: dedent` + var x = [5, 6]; + x.copyWithin(0, 1, 2); + x.fill(3); + x.pop(); + x.push(3); + x.reverse(); + x.shift(); + x.sort(); + x.splice(0, 1, 9); + x.unshift(6); + var y = [{ z: [3, 7] }]; + y[0].z.copyWithin(0, 1, 2); + y[0].z.fill(3); + y[0].z.pop(); + y[0].z.push(3); + y[0].z.reverse(); + y[0].z.shift(); + y[0].z.sort(); + y[0].z.splice(0, 1, 9); + y[0].z.unshift(6);`, + optionsSet: [[{ assumeTypes: true }]], + errors: [ + { + messageId: "array", + type: "CallExpression", + line: 2, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 3, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 4, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 5, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 6, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 7, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 8, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 9, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 10, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 12, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 13, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 14, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 15, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 16, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 17, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 18, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 19, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 20, + column: 1, + }, + ], + }, + // Disallowed array mutation methods to be chained to the creation of an array + // if `ignoreImmediateMutation` is false. + { + code: dedent` + [0, 1, 2].copyWithin(0, 1, 2); + [0, 1, 2].fill(3); + [0, 1, 2].pop(); + [0, 1, 2].push(3); + [0, 1, 2].reverse(); + [0, 1, 2].shift(); + [0, 1, 2].sort(); + [0, 1, 2].splice(0, 1, 9); + [0, 1, 2].unshift(6)`, + optionsSet: [[{ ignoreImmediateMutation: false }]], + errors: [ + { + messageId: "array", + type: "CallExpression", + line: 1, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 2, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 3, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 4, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 5, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 6, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 7, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 8, + column: 1, + }, + { + messageId: "array", + type: "CallExpression", + line: 9, + column: 1, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/immutable-data/es3/array/valid.ts b/tests/rules/immutable-data/es3/array/valid.ts new file mode 100644 index 000000000..cee76982c --- /dev/null +++ b/tests/rules/immutable-data/es3/array/valid.ts @@ -0,0 +1,208 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // Allowed non-array mutation patterns. + { + code: dedent` + var foo = function () {}; + var bar = { + x: 1, + y: foo + }; + var x = 0; + x = 4; + x += 1; + x -= 1; + x++; + x--; + ++x; + --x; + if (x = 2) {} + if (x++) {}`, + optionsSet: [[]], + }, + // Allow array non-mutation methods + { + code: dedent` + var x = [5, 6]; + var y = [{ z: [3, 7] }]; + + x.concat([3, 4]); + x.includes(2); + x.indexOf(1); + x.join(', '); + x.lastIndexOf(0); + x.slice(1, 2); + x.toString(); + x.toLocaleString("en", {timeZone: "UTC"}); + + y[0].z.concat([3, 4]); + y[0].z.includes(2); + y[0].z.indexOf(1); + y[0].z.join(', '); + y[0].z.lastIndexOf(0); + y[0].z.slice(1, 2); + y[0].z.toString(); + y[0].z.toLocaleString("en", {timeZone: "UTC"});`, + optionsSet: [[]], + }, + // Allowed array mutation methods to be chained to the creation of an array. + { + code: dedent` + [0, 1, 2].copyWithin(0, 1, 2); + [0, 1, 2].fill(3); + [0, 1, 2].pop(); + [0, 1, 2].push(3); + [0, 1, 2].reverse(); + [0, 1, 2].shift(); + [0, 1, 2].sort(); + [0, 1, 2].splice(0, 1, 9); + [0, 1, 2].unshift(6); + + new Array(5).copyWithin(0, 1, 2); + new Array(5).fill(3); + new Array(5).pop(); + new Array(5).push(3); + new Array(5).reverse(); + new Array(5).shift(); + new Array(5).sort(); + new Array(5).splice(0, 1, 9); + new Array(5).unshift(6);`, + optionsSet: [[]], + }, + // Allowed array mutation methods to be chained to array constructor functions. + { + code: dedent` + Array.of(0, 1, 2).copyWithin(0, 1, 2); + Array.of(0, 1, 2).fill(3); + Array.of(0, 1, 2).pop(); + Array.of(0, 1, 2).push(3); + Array.of(0, 1, 2).reverse(); + Array.of(0, 1, 2).shift(); + Array.of(0, 1, 2).sort(); + Array.of(0, 1, 2).splice(0, 1, 9); + Array.of(0, 1, 2).unshift(6); + + Array.from({ length: 10 }).copyWithin(0, 1, 2); + Array.from({ length: 10 }).fill(3); + Array.from({ length: 10 }).pop(); + Array.from({ length: 10 }).push(3); + Array.from({ length: 10 }).reverse(); + Array.from({ length: 10 }).shift(); + Array.from({ length: 10 }).sort(); + Array.from({ length: 10 }).splice(0, 1, 9); + Array.from({ length: 10 }).unshift(6);`, + optionsSet: [[]], + }, + // Allowed array mutation methods to be chained to array accessor/iteration methods. + { + code: dedent` + x.slice().copyWithin(0, 1, 2); + x.slice().fill(3); + x.slice().pop(); + x.slice().push(3); + x.slice().reverse(); + x.slice().shift(); + x.slice().sort(); + x.slice().splice(0, 1, 9); + x.slice().unshift(6); + + x.concat([1, 2, 3]).copyWithin(0, 1, 2); + x.concat([1, 2, 3]).fill(3); + x.concat([1, 2, 3]).pop(); + x.concat([1, 2, 3]).push(3); + x.concat([1, 2, 3]).reverse(); + x.concat([1, 2, 3]).shift(); + x.concat([1, 2, 3]).sort(); + x.concat([1, 2, 3]).splice(0, 1, 9); + x.concat([1, 2, 3]).unshift(6); + + x.filter(function (v) { return v > 1; }).copyWithin(0, 1, 2); + x.filter(function (v) { return v > 1; }).fill(3); + x.filter(function (v) { return v > 1; }).pop(); + x.filter(function (v) { return v > 1; }).push(3); + x.filter(function (v) { return v > 1; }).reverse(); + x.filter(function (v) { return v > 1; }).shift(); + x.filter(function (v) { return v > 1; }).sort(); + x.filter(function (v) { return v > 1; }).splice(0, 1, 9); + x.filter(function (v) { return v > 1; }).unshift(6); + + x.map(function (v) { return v * 2; }).copyWithin(0, 1, 2); + x.map(function (v) { return v * 2; }).fill(3); + x.map(function (v) { return v * 2; }).pop(); + x.map(function (v) { return v * 2; }).push(3); + x.map(function (v) { return v * 2; }).reverse(); + x.map(function (v) { return v * 2; }).shift(); + x.map(function (v) { return v * 2; }).sort(); + x.map(function (v) { return v * 2; }).splice(0, 1, 9); + x.map(function (v) { return v * 2; }).unshift(6); + + x.reduce(function (r, v) { return r.concat([v + 1]); }, []).copyWithin(0, 1, 2); + x.reduce(function (r, v) { return r.concat([v + 1]); }, []).fill(3); + x.reduce(function (r, v) { return r.concat([v + 1]); }, []).pop(); + x.reduce(function (r, v) { return r.concat([v + 1]); }, []).push(3); + x.reduce(function (r, v) { return r.concat([v + 1]); }, []).reverse(); + x.reduce(function (r, v) { return r.concat([v + 1]); }, []).shift(); + x.reduce(function (r, v) { return r.concat([v + 1]); }, []).sort(); + x.reduce(function (r, v) { return r.concat([v + 1]); }, []).splice(0, 1, 9); + x.reduce(function (r, v) { return r.concat([v + 1]); }, []).unshift(6); + + x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).copyWithin(0, 1, 2); + x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).fill(3); + x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).pop(); + x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).push(3); + x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).reverse(); + x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).shift(); + x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).sort(); + x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).splice(0, 1, 9); + x.reduceRight(function (r, v) { return r.concat([v + 1]); }, []).unshift(6);`, + optionsSet: [[]], + }, + // Don't catch calls of array mutation methods on non-array objects. + { + code: dedent` + var z = { + copyWithin: function () {}, + fill: function () {}, + pop: function () {}, + push: function () {}, + reverse: function () {}, + shift: function () {}, + sort: function () {}, + splice: function () {}, + unshift: function () {} + }; + + z.copyWithin(); + z.fill(); + z.pop(); + z.push(); + z.reverse(); + z.shift(); + z.sort(); + z.splice(); + z.unshift();`, + optionsSet: [[{ assumeTypes: false }]], + }, + { + code: dedent` + var mutableX = [0, 1]; + mutableX.copyWithin(0, 1, 2); + mutableX.fill(3); + mutableX.pop(); + mutableX.push(3); + mutableX.reverse(); + mutableX.shift(); + mutableX.sort(); + mutableX.splice(0, 1, 9); + mutableX.unshift(6);`, + optionsSet: [ + [{ ignorePattern: "^mutable" }], + [{ ignoreAccessorPattern: "mutable*" }], + ], + }, +]; + +export default tests; diff --git a/tests/rules/immutable-data/es3/index.ts b/tests/rules/immutable-data/es3/index.ts new file mode 100644 index 000000000..4cf7f63ee --- /dev/null +++ b/tests/rules/immutable-data/es3/index.ts @@ -0,0 +1,7 @@ +import array from "./array"; +import object from "./object"; + +export default { + valid: [...array.valid, ...object.valid], + invalid: [...array.invalid, ...object.invalid], +}; diff --git a/tests/rules/immutable-data/es3/object/index.ts b/tests/rules/immutable-data/es3/object/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/immutable-data/es3/object/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/immutable-data/es3/object/invalid.ts b/tests/rules/immutable-data/es3/object/invalid.ts new file mode 100644 index 000000000..54e3b877f --- /dev/null +++ b/tests/rules/immutable-data/es3/object/invalid.ts @@ -0,0 +1,215 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // Disallowed object mutation patterns. + { + code: dedent` + var x = {a: 1}; + x.foo = "bar"; + x["foo"] = "bar"; + x.a += 1; + x.a -= 1; + x.a *= 1; + x.a /= 1; + x.a %= 1; + x.a <<= 1; + x.a >>= 1; + x.a >>>= 1; + x.a &= 1; + x.a |= 1; + x.a ^= 1; + delete x.a; + delete x["a"]; + x.a++; + x.a--; + ++x.a; + --x.a; + if (x.a = 2) {} + if (x.a++) {}`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 2, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 5, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 6, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 7, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 8, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 9, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 10, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 11, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 12, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 13, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 14, + column: 1, + }, + { + messageId: "generic", + type: "UnaryExpression", + line: 15, + column: 1, + }, + { + messageId: "generic", + type: "UnaryExpression", + line: 16, + column: 1, + }, + { + messageId: "generic", + type: "UpdateExpression", + line: 17, + column: 1, + }, + { + messageId: "generic", + type: "UpdateExpression", + line: 18, + column: 1, + }, + { + messageId: "generic", + type: "UpdateExpression", + line: 19, + column: 1, + }, + { + messageId: "generic", + type: "UpdateExpression", + line: 20, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 21, + column: 5, + }, + { + messageId: "generic", + type: "UpdateExpression", + line: 22, + column: 5, + }, + ], + }, + // Disallow Object.assign on identifers. + { + code: dedent` + var x = { msg1: "hello", obj: { a: 1, b: 2} }; + + var a = Object.assign(x, { msg2: "world" }); + var b = Object.assign(x.obj, { msg2: "world" });`, + optionsSet: [[]], + errors: [ + { + messageId: "object", + type: "CallExpression", + line: 3, + column: 9, + }, + { + messageId: "object", + type: "CallExpression", + line: 4, + column: 9, + }, + ], + }, + // Disallow other object mutation methods. + { + code: dedent` + var foo = { a: 1 }; + Object.defineProperties(foo, { b: { value: 2, writable: false }}); + Object.defineProperty(foo, "c", { value: 3, writable: false }); + Object.setPrototypeOf(foo, null);`, + optionsSet: [[{ assumeTypes: true }]], + errors: [ + { + messageId: "object", + type: "CallExpression", + line: 2, + column: 1, + }, + { + messageId: "object", + type: "CallExpression", + line: 3, + column: 1, + }, + { + messageId: "object", + type: "CallExpression", + line: 4, + column: 1, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/immutable-data/es3/object/valid.ts b/tests/rules/immutable-data/es3/object/valid.ts new file mode 100644 index 000000000..11cacac9d --- /dev/null +++ b/tests/rules/immutable-data/es3/object/valid.ts @@ -0,0 +1,55 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // Allowed non-object mutation patterns. + { + code: dedent` + var y = x.a; + var z = x["a"]; + if (x.a && y.a) {} + var w = ~x.a; + if (!x.a) {}`, + optionsSet: [[]], + }, + // Allow Object.assign() on non identifiers. + { + code: dedent` + var x = { msg1: "hello", obj: { a: 1, b: 2}, func: function() {} }; + var bar = function(a, b, c) { return { a: a, b: b, c: c }; }; + + var a = Object.assign({}, { msg: "hello world" }); + var b = Object.assign(bar(1, 2, 3), { d: 4 }); + var c = Object.assign(x.func(), { d: 4 });`, + optionsSet: [[]], + }, + // IgnorePattern - objects. + { + code: dedent` + var mutableVar = { a: 1 }; + delete mutableVar.a;`, + optionsSet: [[{ ignorePattern: ["^mutable"] }]], + }, + { + code: dedent` + var mutableVar = { a: 1 }; + Object.assign(mutableVar, { b: 2 });`, + optionsSet: [[{ ignorePattern: ["^mutable"] }]], + }, + // IgnoreAccessorPattern - objects. + { + code: dedent` + var mutableVar = { a: 1 }; + mutableVar.a = 0; + mutableVar.a++;`, + optionsSet: [ + [{ ignoreAccessorPattern: ["**.mutable*.a"] }], + [{ ignoreAccessorPattern: ["**.mutable*.*"] }], + [{ ignoreAccessorPattern: ["**.mutable*.*.**"] }], + [{ ignoreAccessorPattern: ["**.mutable*.**"] }], + ], + }, +]; + +export default tests; diff --git a/tests/rules/immutable-data/es6/array/index.ts b/tests/rules/immutable-data/es6/array/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/immutable-data/es6/array/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/immutable-data/es6/array/invalid.ts b/tests/rules/immutable-data/es6/array/invalid.ts new file mode 100644 index 000000000..f3589247b --- /dev/null +++ b/tests/rules/immutable-data/es6/array/invalid.ts @@ -0,0 +1,238 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + const x = [5, 6]; + const y = [{ z: [3, 7] }]; + x[0] *= 2; + y[0].z[0] *= 2; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + const x = [5, 6]; + const y = [{ z: [3, 7] }]; + x[0] **= 2; + y[0].z[0] **= 2; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + const x = [5, 6]; + const y = [{ z: [3, 7] }]; + x[0] /= 1; + y[0].z[0] /= 1; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + const x = [5, 6]; + const y = [{ z: [3, 7] }]; + x[0] %= 1; + y[0].z[0] %= 1; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + const x = [5, 6]; + const y = [{ z: [3, 7] }]; + x[0] <<= 1; + y[0].z[0] <<= 1; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + const x = [5, 6]; + const y = [{ z: [3, 7] }]; + x[0] >>= 1; + y[0].z[0] >>= 1; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + const x = [5, 6]; + const y = [{ z: [3, 7] }]; + x[0] >>>= 1; + y[0].z[0] >>>= 1; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + const x = [5, 6]; + const y = [{ z: [3, 7] }]; + x[0] &= 1; + y[0].z[0] &= 1; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + const x = [5, 6]; + const y = [{ z: [3, 7] }]; + x[0] |= 1; + y[0].z[0] |= 1; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, + { + code: dedent` + const x = [5, 6]; + const y = [{ z: [3, 7] }]; + x[0] ^= 1; + y[0].z[0] ^= 1; + `, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 3, + column: 1, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 1, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/immutable-data/es6/array/valid.ts b/tests/rules/immutable-data/es6/array/valid.ts new file mode 100644 index 000000000..70da95a95 --- /dev/null +++ b/tests/rules/immutable-data/es6/array/valid.ts @@ -0,0 +1,23 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + const x = 0; + x *= 1; + x **= 1; + x /= 1; + x %= 1; + x <<= 1; + x >>= 1; + x >>>= 1; + x &= 1; + x |= 1; + x ^= 1;`, + optionsSet: [[]], + }, +]; + +export default tests; diff --git a/tests/rules/immutable-data/es6/index.ts b/tests/rules/immutable-data/es6/index.ts new file mode 100644 index 000000000..4cf7f63ee --- /dev/null +++ b/tests/rules/immutable-data/es6/index.ts @@ -0,0 +1,7 @@ +import array from "./array"; +import object from "./object"; + +export default { + valid: [...array.valid, ...object.valid], + invalid: [...array.invalid, ...object.invalid], +}; diff --git a/tests/rules/immutable-data/es6/object/index.ts b/tests/rules/immutable-data/es6/object/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/immutable-data/es6/object/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/immutable-data/es6/object/invalid.ts b/tests/rules/immutable-data/es6/object/invalid.ts new file mode 100644 index 000000000..de1ca3cc5 --- /dev/null +++ b/tests/rules/immutable-data/es6/object/invalid.ts @@ -0,0 +1,73 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + const x = {a: 1}; + x.a **= 1;`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 2, + column: 1, + }, + ], + }, + // No mutation in class methods. + { + code: dedent` + class Klass { + bar = 1; + baz: string; + + constructor() { + this.baz = "hello"; + } + + zoo() { + this.bar = 2; + this.baz = 3; + } + }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 10, + column: 5, + }, + { + messageId: "generic", + type: "AssignmentExpression", + line: 11, + column: 5, + }, + ], + }, + // Catch non-field mutation in classes. + { + code: dedent` + class Klass { + mutate() { + let data = { prop: 0 }; + data.prop = 1; + } + }`, + optionsSet: [[{ ignoreClass: "fieldsOnly" }]], + errors: [ + { + messageId: "generic", + type: "AssignmentExpression", + line: 4, + column: 5, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/immutable-data/es6/object/valid.ts b/tests/rules/immutable-data/es6/object/valid.ts new file mode 100644 index 000000000..ad776ffec --- /dev/null +++ b/tests/rules/immutable-data/es6/object/valid.ts @@ -0,0 +1,45 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // Allow initialization of class members in constructor + { + code: dedent` + class Klass { + bar = 1; + baz: string; + constructor() { + this.baz = "hello"; + } + }`, + optionsSet: [[]], + }, + // IgnoreAccessorPattern - classes. + { + code: dedent` + class Klass { + mutate() { + this.mutableField = 0; + } + }`, + optionsSet: [ + [{ ignoreAccessorPattern: ["this.*.**"] }], + [{ ignoreAccessorPattern: ["**.mutable*"] }], + [{ ignoreAccessorPattern: ["**.mutable*.**"] }], + ], + }, + // Ignore class + { + code: dedent` + class Klass { + baz: string; + mutate() { + this.baz = "hello"; + } + }`, + optionsSet: [[{ ignoreClass: true }], [{ ignoreClass: "fieldsOnly" }]], + }, +]; + +export default tests; diff --git a/tests/rules/immutable-data/index.test.ts b/tests/rules/immutable-data/index.test.ts new file mode 100644 index 000000000..833c88e6c --- /dev/null +++ b/tests/rules/immutable-data/index.test.ts @@ -0,0 +1,11 @@ +import { name, rule } from "~/rules/immutable-data"; +import { testUsing } from "~/tests/helpers/testers"; + +import es3Tests from "./es3"; +import es6Tests from "./es6"; + +testUsing.typescript(name, rule, es6Tests); +testUsing.typescript(name, rule, es3Tests); + +testUsing.es6(name, rule, es6Tests); +testUsing.es3(name, rule, es3Tests); diff --git a/tests/rules/index.test.ts b/tests/rules/index.test.ts index bb027f501..a2d4f1c72 100644 --- a/tests/rules/index.test.ts +++ b/tests/rules/index.test.ts @@ -1,15 +1,13 @@ +import test from "ava"; import * as fs from "fs"; import { rules } from "~/rules"; -describe("./src/rules/index.ts", () => { - const rulesNames: ReadonlyArray = Object.keys(rules); - const files: ReadonlyArray = fs - .readdirSync("./src/rules") - .filter((file) => file !== "index.ts" && file.endsWith(".ts")); +const rulesNames: ReadonlyArray = Object.keys(rules); +const files: ReadonlyArray = fs + .readdirSync("./src/rules") + .filter((file) => file !== "index.ts" && file.endsWith(".ts")); - it("imports all available rule modules", () => { - expect.assertions(1); - expect(rulesNames).toHaveLength(files.length); - }); +test("all rule files are imported", (t) => { + t.is(rulesNames.length, files.length); }); diff --git a/tests/rules/no-class.test.ts b/tests/rules/no-class.test.ts deleted file mode 100644 index ed5a6568d..000000000 --- a/tests/rules/no-class.test.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * @file Tests for no-class. - */ - -import { RuleTester } from "eslint"; - -import { name, rule } from "~/src/rules/no-class"; -import { es6, typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const valid: ReadonlyArray = []; - -// Invalid test cases. -const invalid: ReadonlyArray = [ - { - code: "class Foo {}", - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "ClassDeclaration", - line: 1, - column: 1, - }, - ], - }, - { - code: "const klass = class {}", - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "ClassExpression", - line: 1, - column: 15, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); - -describe("JavaScript (es6)", () => { - const ruleTester = new RuleTester(es6); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); diff --git a/tests/rules/no-class.test/es6/index.ts b/tests/rules/no-class.test/es6/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-class.test/es6/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-class.test/es6/invalid.ts b/tests/rules/no-class.test/es6/invalid.ts new file mode 100644 index 000000000..e4fc42c81 --- /dev/null +++ b/tests/rules/no-class.test/es6/invalid.ts @@ -0,0 +1,30 @@ +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: "class Foo {}", + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "ClassDeclaration", + line: 1, + column: 1, + }, + ], + }, + { + code: "const klass = class {}", + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "ClassExpression", + line: 1, + column: 15, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-class.test/es6/valid.ts b/tests/rules/no-class.test/es6/valid.ts new file mode 100644 index 000000000..63d495610 --- /dev/null +++ b/tests/rules/no-class.test/es6/valid.ts @@ -0,0 +1,5 @@ +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = []; + +export default tests; diff --git a/tests/rules/no-class.test/index.test.ts b/tests/rules/no-class.test/index.test.ts new file mode 100644 index 000000000..c4caef99a --- /dev/null +++ b/tests/rules/no-class.test/index.test.ts @@ -0,0 +1,8 @@ +import { name, rule } from "~/rules/no-class"; +import { testUsing } from "~/tests/helpers/testers"; + +import es6Tests from "./es6"; + +testUsing.typescript(name, rule, es6Tests); + +testUsing.es6(name, rule, es6Tests); diff --git a/tests/rules/no-conditional-statement.test.ts b/tests/rules/no-conditional-statement.test.ts deleted file mode 100644 index dd61d101c..000000000 --- a/tests/rules/no-conditional-statement.test.ts +++ /dev/null @@ -1,451 +0,0 @@ -/** - * @file Tests for no-conditional-statement. - */ - -import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/no-conditional-statement"; -import { es3, typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const es3Valid: ReadonlyArray = [ - { - code: dedent` - function foo(i) { - if (i === 1) { - return 1; - } - }`, - optionsSet: [[{ allowReturningBranches: true }]], - }, - { - code: dedent` - function foo(i) { - if (i === 1) { - return 1; - } else { - return 0; - } - }`, - optionsSet: [ - [{ allowReturningBranches: true }], - [{ allowReturningBranches: "ifExhaustive" }], - ], - }, - { - code: dedent` - function foo(i) { - switch(i) { - case "a": - return 1; - case "b": - case "c": - return 2; - } - }`, - optionsSet: [[{ allowReturningBranches: true }]], - }, - { - code: dedent` - function foo(i) { - switch(i) { - case "a": - return 1; - case "b": - return 2; - default: - return 3; - } - }`, - optionsSet: [ - [{ allowReturningBranches: true }], - [{ allowReturningBranches: "ifExhaustive" }], - ], - }, - // Check throws - { - code: dedent` - function foo(i) { - if (i === 1) { - throw 1; - } - }`, - optionsSet: [[{ allowReturningBranches: true }]], - }, - { - code: dedent` - function foo(i) { - if (i === 1) { - throw 1; - } else { - throw 2; - } - }`, - optionsSet: [ - [{ allowReturningBranches: true }], - [{ allowReturningBranches: "ifExhaustive" }], - ], - }, - { - code: dedent` - function foo(i) { - switch(i) { - case "a": - throw 1; - case "b": - case "c": - throw 2; - } - }`, - optionsSet: [[{ allowReturningBranches: true }]], - }, - { - code: dedent` - function foo(i) { - switch(i) { - case "a": - throw 1; - case "b": - throw 2; - default: - throw 3; - } - }`, - optionsSet: [ - [{ allowReturningBranches: true }], - [{ allowReturningBranches: "ifExhaustive" }], - ], - }, -]; - -// Invalid test cases. -const es3Invalid: ReadonlyArray = [ - { - code: dedent` - if (i === 1) { - x = 2; - }`, - optionsSet: [[]], - errors: [ - { - messageId: "unexpectedIf", - type: "IfStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: dedent` - var x = "c"; - var y = ""; - switch(x) { - case "a": - y = 1; - break; - case "b": - y = 2; - break; - default: - y = 3; - break; - }`, - optionsSet: [[]], - errors: [ - { - messageId: "unexpectedSwitch", - type: "SwitchStatement", - line: 3, - column: 1, - }, - ], - }, - { - code: dedent` - function foo(i) { - if (i === 1) { - return 1; - } - return 0; - }`, - optionsSet: [[]], - errors: [ - { - messageId: "unexpectedIf", - type: "IfStatement", - line: 2, - column: 3, - }, - ], - }, - { - code: dedent` - function foo(i) { - switch(i) { - case "a": - return 1; - case "b": - return 2; - default: - return 3; - } - }`, - optionsSet: [[]], - errors: [ - { - messageId: "unexpectedSwitch", - type: "SwitchStatement", - line: 2, - column: 3, - }, - ], - }, - { - code: dedent` - function foo(i) { - if (i === 1) { - console.log("bar"); - } - if (i === 2) console.log("baz"); - else return 3; - return 0; - }`, - optionsSet: [[{ allowReturningBranches: true }]], - errors: [ - { - messageId: "incompleteBranch", - type: "BlockStatement", - line: 2, - column: 16, - }, - { - messageId: "incompleteBranch", - type: "ExpressionStatement", - line: 5, - column: 16, - }, - ], - }, - { - code: dedent` - function foo(i) { - switch(i) { - case "a": - return 1; - case "b": - return 2; - default: - break; - } - }`, - optionsSet: [[{ allowReturningBranches: true }]], - errors: [ - { - messageId: "incompleteBranch", - type: "SwitchCase", - line: 7, - column: 5, - }, - ], - }, - { - code: dedent` - function foo(x, y) { - if (x > 0) { - if (y < 100) { - return 1; - } else { - console.log("bar"); - } - } - }`, - optionsSet: [[{ allowReturningBranches: true }]], - errors: [ - { - messageId: "incompleteBranch", - type: "BlockStatement", - line: 5, - column: 12, - }, - ], - }, - { - code: dedent` - function foo(i) { - if (i === 1) { - return 1; - } - }`, - optionsSet: [[{ allowReturningBranches: "ifExhaustive" }]], - errors: [ - { - messageId: "incompleteIf", - type: "IfStatement", - line: 2, - column: 3, - }, - ], - }, - { - code: dedent` - function foo(i) { - if (i === 1) { - return 1; - } else { - console.log(1); - } - }`, - optionsSet: [[{ allowReturningBranches: "ifExhaustive" }]], - errors: [ - { - messageId: "incompleteBranch", - type: "BlockStatement", - line: 4, - column: 10, - }, - ], - }, - { - code: dedent` - function foo(i) { - switch(i) { - case "a": - return 1; - case "b": - return 2; - } - }`, - optionsSet: [[{ allowReturningBranches: "ifExhaustive" }]], - errors: [ - { - messageId: "incompleteSwitch", - type: "SwitchStatement", - line: 2, - column: 3, - }, - ], - }, - { - code: dedent` - function foo(i) { - switch(i) { - case "a": - return 1; - case "b": - return 2; - default: - break; - } - }`, - optionsSet: [[{ allowReturningBranches: "ifExhaustive" }]], - errors: [ - { - messageId: "incompleteBranch", - type: "SwitchCase", - line: 7, - column: 5, - }, - ], - }, -]; - -const tsValid: ReadonlyArray = [ - ...es3Valid, - // Check never - { - code: dedent` - declare function neverReturn(): never; - function foo(i) { - if (i === 1) { - neverReturn(); - } - }`, - optionsSet: [[{ allowReturningBranches: true }]], - }, - { - code: dedent` - declare function neverReturn(): never; - function foo(i) { - if (i === 1) { - neverReturn(); - } else { - neverReturn(); - } - }`, - optionsSet: [ - [{ allowReturningBranches: true }], - [{ allowReturningBranches: "ifExhaustive" }], - ], - }, - { - code: dedent` - declare function neverReturn(): never; - function foo(i) { - switch(i) { - case "a": - neverReturn(); - case "b": - case "c": - neverReturn(); - } - }`, - optionsSet: [[{ allowReturningBranches: true }]], - }, - { - code: dedent` - declare function neverReturn(): never; - function foo(i) { - switch(i) { - case "a": - neverReturn(); - case "b": - neverReturn(); - default: - neverReturn(); - } - }`, - optionsSet: [ - [{ allowReturningBranches: true }], - [{ allowReturningBranches: "ifExhaustive" }], - ], - }, - // Exhaustive type test. - { - code: dedent` - type T = "a" | "b"; - function foo(i: T) { - switch(i) { - case "a": - return 1; - case "b": - return 2; - } - }`, - optionsSet: [[{ allowReturningBranches: "ifExhaustive" }]], - }, -]; - -const tsInvalid: ReadonlyArray = [...es3Invalid]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(tsValid), - invalid: processInvalidTestCase(tsInvalid), - }); -}); - -describe("JavaScript (es3)", () => { - const ruleTester = new RuleTester(es3); - ruleTester.run(name, rule, { - valid: processValidTestCase(es3Valid), - invalid: processInvalidTestCase(es3Invalid), - }); -}); diff --git a/tests/rules/no-conditional-statement/es3/index.ts b/tests/rules/no-conditional-statement/es3/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-conditional-statement/es3/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-conditional-statement/es3/invalid.ts b/tests/rules/no-conditional-statement/es3/invalid.ts new file mode 100644 index 000000000..0fda99bef --- /dev/null +++ b/tests/rules/no-conditional-statement/es3/invalid.ts @@ -0,0 +1,235 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + if (i === 1) { + x = 2; + }`, + optionsSet: [[]], + errors: [ + { + messageId: "unexpectedIf", + type: "IfStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: dedent` + var x = "c"; + var y = ""; + switch(x) { + case "a": + y = 1; + break; + case "b": + y = 2; + break; + default: + y = 3; + break; + }`, + optionsSet: [[]], + errors: [ + { + messageId: "unexpectedSwitch", + type: "SwitchStatement", + line: 3, + column: 1, + }, + ], + }, + { + code: dedent` + function foo(i) { + if (i === 1) { + return 1; + } + return 0; + }`, + optionsSet: [[]], + errors: [ + { + messageId: "unexpectedIf", + type: "IfStatement", + line: 2, + column: 3, + }, + ], + }, + { + code: dedent` + function foo(i) { + switch(i) { + case "a": + return 1; + case "b": + return 2; + default: + return 3; + } + }`, + optionsSet: [[]], + errors: [ + { + messageId: "unexpectedSwitch", + type: "SwitchStatement", + line: 2, + column: 3, + }, + ], + }, + { + code: dedent` + function foo(i) { + if (i === 1) { + console.log("bar"); + } + if (i === 2) console.log("baz"); + else return 3; + return 0; + }`, + optionsSet: [[{ allowReturningBranches: true }]], + errors: [ + { + messageId: "incompleteBranch", + type: "BlockStatement", + line: 2, + column: 16, + }, + { + messageId: "incompleteBranch", + type: "ExpressionStatement", + line: 5, + column: 16, + }, + ], + }, + { + code: dedent` + function foo(i) { + switch(i) { + case "a": + return 1; + case "b": + return 2; + default: + break; + } + }`, + optionsSet: [[{ allowReturningBranches: true }]], + errors: [ + { + messageId: "incompleteBranch", + type: "SwitchCase", + line: 7, + column: 5, + }, + ], + }, + { + code: dedent` + function foo(x, y) { + if (x > 0) { + if (y < 100) { + return 1; + } else { + console.log("bar"); + } + } + }`, + optionsSet: [[{ allowReturningBranches: true }]], + errors: [ + { + messageId: "incompleteBranch", + type: "BlockStatement", + line: 5, + column: 12, + }, + ], + }, + { + code: dedent` + function foo(i) { + if (i === 1) { + return 1; + } + }`, + optionsSet: [[{ allowReturningBranches: "ifExhaustive" }]], + errors: [ + { + messageId: "incompleteIf", + type: "IfStatement", + line: 2, + column: 3, + }, + ], + }, + { + code: dedent` + function foo(i) { + if (i === 1) { + return 1; + } else { + console.log(1); + } + }`, + optionsSet: [[{ allowReturningBranches: "ifExhaustive" }]], + errors: [ + { + messageId: "incompleteBranch", + type: "BlockStatement", + line: 4, + column: 10, + }, + ], + }, + { + code: dedent` + function foo(i) { + switch(i) { + case "a": + return 1; + case "b": + return 2; + } + }`, + optionsSet: [[{ allowReturningBranches: "ifExhaustive" }]], + errors: [ + { + messageId: "incompleteSwitch", + type: "SwitchStatement", + line: 2, + column: 3, + }, + ], + }, + { + code: dedent` + function foo(i) { + switch(i) { + case "a": + return 1; + case "b": + return 2; + default: + break; + } + }`, + optionsSet: [[{ allowReturningBranches: "ifExhaustive" }]], + errors: [ + { + messageId: "incompleteBranch", + type: "SwitchCase", + line: 7, + column: 5, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-conditional-statement/es3/valid.ts b/tests/rules/no-conditional-statement/es3/valid.ts new file mode 100644 index 000000000..3d58498d0 --- /dev/null +++ b/tests/rules/no-conditional-statement/es3/valid.ts @@ -0,0 +1,61 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + function foo(i) { + if (i === 1) { + return 1; + } + }`, + optionsSet: [[{ allowReturningBranches: true }]], + }, + { + code: dedent` + function foo(i) { + if (i === 1) { + return 1; + } else { + return 0; + } + }`, + optionsSet: [ + [{ allowReturningBranches: true }], + [{ allowReturningBranches: "ifExhaustive" }], + ], + }, + { + code: dedent` + function foo(i) { + switch(i) { + case "a": + return 1; + case "b": + case "c": + return 2; + } + }`, + optionsSet: [[{ allowReturningBranches: true }]], + }, + { + code: dedent` + function foo(i) { + switch(i) { + case "a": + return 1; + case "b": + return 2; + default: + return 3; + } + }`, + optionsSet: [ + [{ allowReturningBranches: true }], + [{ allowReturningBranches: "ifExhaustive" }], + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-conditional-statement/index.test.ts b/tests/rules/no-conditional-statement/index.test.ts new file mode 100644 index 000000000..aa4be22f2 --- /dev/null +++ b/tests/rules/no-conditional-statement/index.test.ts @@ -0,0 +1,10 @@ +import { name, rule } from "~/rules/no-conditional-statement"; +import { testUsing } from "~/tests/helpers/testers"; + +// import tsTests from "./ts"; +import es3Tests from "./es3"; + +// testUsing.typescript(name, rule, ts); +testUsing.typescript(name, rule, es3Tests); + +testUsing.es3(name, rule, es3Tests); diff --git a/tests/rules/no-conditional-statement/ts/index.ts b/tests/rules/no-conditional-statement/ts/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-conditional-statement/ts/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-conditional-statement/ts/invalid.ts b/tests/rules/no-conditional-statement/ts/invalid.ts new file mode 100644 index 000000000..ee59eaa26 --- /dev/null +++ b/tests/rules/no-conditional-statement/ts/invalid.ts @@ -0,0 +1,5 @@ +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = []; + +export default tests; diff --git a/tests/rules/no-conditional-statement/ts/valid.ts b/tests/rules/no-conditional-statement/ts/valid.ts new file mode 100644 index 000000000..de8237953 --- /dev/null +++ b/tests/rules/no-conditional-statement/ts/valid.ts @@ -0,0 +1,151 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // Exhaustive type test. + { + code: dedent` + type T = "a" | "b"; + function foo(i: T) { + switch(i) { + case "a": + return 1; + case "b": + return 2; + } + }`, + optionsSet: [[{ allowReturningBranches: "ifExhaustive" }]], + }, + // Check throws + { + code: dedent` + function foo(i) { + if (i === 1) { + throw 1; + } + }`, + optionsSet: [[{ allowReturningBranches: true }]], + }, + { + code: dedent` + function foo(i) { + if (i === 1) { + throw 1; + } else { + throw 2; + } + }`, + optionsSet: [ + [{ allowReturningBranches: true }], + [{ allowReturningBranches: "ifExhaustive" }], + ], + }, + { + code: dedent` + function foo(i) { + switch(i) { + case "a": + throw 1; + case "b": + case "c": + throw 2; + } + }`, + optionsSet: [[{ allowReturningBranches: true }]], + }, + { + code: dedent` + function foo(i) { + switch(i) { + case "a": + throw 1; + case "b": + throw 2; + default: + throw 3; + } + }`, + optionsSet: [ + [{ allowReturningBranches: true }], + [{ allowReturningBranches: "ifExhaustive" }], + ], + }, + // Check never + { + code: dedent` + declare function neverReturn(): never; + function foo(i) { + if (i === 1) { + neverReturn(); + } + }`, + optionsSet: [[{ allowReturningBranches: true }]], + }, + { + code: dedent` + declare function neverReturn(): never; + function foo(i) { + if (i === 1) { + neverReturn(); + } else { + neverReturn(); + } + }`, + optionsSet: [ + [{ allowReturningBranches: true }], + [{ allowReturningBranches: "ifExhaustive" }], + ], + }, + { + code: dedent` + declare function neverReturn(): never; + function foo(i) { + switch(i) { + case "a": + neverReturn(); + case "b": + case "c": + neverReturn(); + } + }`, + optionsSet: [[{ allowReturningBranches: true }]], + }, + { + code: dedent` + declare function neverReturn(): never; + function foo(i) { + switch(i) { + case "a": + neverReturn(); + case "b": + neverReturn(); + default: + neverReturn(); + } + }`, + optionsSet: [ + [{ allowReturningBranches: true }], + [{ allowReturningBranches: "ifExhaustive" }], + ], + }, + // Exhaustive type test. + { + code: dedent` + type T = "a" | "b"; + function foo(i: T) { + switch(i) { + case "a": + return 1; + case "b": + return 2; + } + }`, + optionsSet: [ + [{ allowReturningBranches: true }], + [{ allowReturningBranches: "ifExhaustive" }], + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-expression-statement.test.ts b/tests/rules/no-expression-statement.test.ts deleted file mode 100644 index 37a521498..000000000 --- a/tests/rules/no-expression-statement.test.ts +++ /dev/null @@ -1,83 +0,0 @@ -/** - * @file Tests for no-expression-statement. - */ - -import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/no-expression-statement"; -import { es3, typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const valid: ReadonlyArray = [ - // Defining variable should still be allowed. - { - code: `var x = [];`, - optionsSet: [[]], - }, - // Allowed expressions should not cause failures. - { - code: dedent` - console.log("yo"); - console.error("yo");`, - optionsSet: [[{ ignorePattern: "^console\\." }]], - }, - // Allow specifying directive prologues. - { - code: `"use strict"`, - optionsSet: [[]], - }, -]; - -// Invalid test cases. -const invalid: ReadonlyArray = [ - { - code: dedent` - var x = []; - x.push(1);`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "ExpressionStatement", - line: 2, - column: 1, - }, - ], - }, - // Non-allowed expressions should cause failures. - { - code: `console.trace();`, - optionsSet: [[{ ignorePattern: "^console\\.log" }]], - errors: [ - { - messageId: "generic", - type: "ExpressionStatement", - line: 1, - column: 1, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); - -describe("JavaScript (es3)", () => { - const ruleTester = new RuleTester(es3); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); diff --git a/tests/rules/no-expression-statement/es3/index.ts b/tests/rules/no-expression-statement/es3/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-expression-statement/es3/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-expression-statement/es3/invalid.ts b/tests/rules/no-expression-statement/es3/invalid.ts new file mode 100644 index 000000000..ea47da83d --- /dev/null +++ b/tests/rules/no-expression-statement/es3/invalid.ts @@ -0,0 +1,35 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + var x = []; + x.push(1);`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "ExpressionStatement", + line: 2, + column: 1, + }, + ], + }, + // Non-allowed expressions should cause failures. + { + code: `console.trace();`, + optionsSet: [[{ ignorePattern: "^console\\.log" }]], + errors: [ + { + messageId: "generic", + type: "ExpressionStatement", + line: 1, + column: 1, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-expression-statement/es3/valid.ts b/tests/rules/no-expression-statement/es3/valid.ts new file mode 100644 index 000000000..249157a09 --- /dev/null +++ b/tests/rules/no-expression-statement/es3/valid.ts @@ -0,0 +1,25 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // Defining variable should still be allowed. + { + code: `var x = [];`, + optionsSet: [[]], + }, + // Allowed expressions should not cause failures. + { + code: dedent` + console.log("yo"); + console.error("yo");`, + optionsSet: [[{ ignorePattern: "^console\\." }]], + }, + // Allow specifying directive prologues. + { + code: `"use strict"`, + optionsSet: [[]], + }, +]; + +export default tests; diff --git a/tests/rules/no-expression-statement/index.test.ts b/tests/rules/no-expression-statement/index.test.ts new file mode 100644 index 000000000..6657c73cb --- /dev/null +++ b/tests/rules/no-expression-statement/index.test.ts @@ -0,0 +1,8 @@ +import { name, rule } from "~/rules/no-expression-statement"; +import { testUsing } from "~/tests/helpers/testers"; + +import es3Tests from "./es3"; + +testUsing.typescript(name, rule, es3Tests); + +testUsing.es3(name, rule, es3Tests); diff --git a/tests/rules/no-let.test.ts b/tests/rules/no-let.test.ts deleted file mode 100644 index 75d25fc4a..000000000 --- a/tests/rules/no-let.test.ts +++ /dev/null @@ -1,329 +0,0 @@ -/** - * @file Tests for no-let. - */ - -import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/no-let"; -import { es6, typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const valid: ReadonlyArray = [ - { - code: dedent` - function foo() { - let x; - let y = 0; - }`, - optionsSet: [[{ allowLocalMutation: true }]], - }, - { - code: dedent` - const foo = () => { - let x; - let y = 0; - }`, - optionsSet: [[{ allowLocalMutation: true }]], - }, - { - code: dedent` - class Foo { - foo() { - let x; - let y = 0; - } - }`, - optionsSet: [[{ allowLocalMutation: true }]], - }, - { - code: dedent` - let mutable; - let mutableX`, - optionsSet: [[{ ignorePattern: "^mutable" }]], - }, - { - code: dedent` - let mutable = 0; - let mutableX = 0`, - optionsSet: [[{ ignorePattern: "^mutable" }]], - }, - { - code: `for (let mutableX = 0; x < 1; x++);`, - optionsSet: [[{ ignorePattern: "^mutable" }]], - }, - { - code: `for (let mutableX in {});`, - optionsSet: [[{ ignorePattern: "^mutable" }]], - }, - { - code: `for (let mutableX of []);`, - optionsSet: [[{ ignorePattern: "^mutable" }]], - }, - { - code: dedent` - function foo() { - let mutableX; - let mutableY = 0; - }`, - optionsSet: [[{ ignorePattern: "^mutable" }]], - }, - { - code: dedent` - const foo = () => { - let mutableX; - let mutableY = 0; - }`, - optionsSet: [[{ ignorePattern: "^mutable" }]], - }, - { - code: dedent` - class Foo { - foo() { - let mutableX; - let mutableY = 0; - } - }`, - optionsSet: [[{ ignorePattern: "^mutable" }]], - }, - { - code: dedent` - let Mutable; - let xMutable`, - optionsSet: [[{ ignorePattern: "Mutable$" }]], - }, - { - code: dedent` - let Mutable = 0; - let xMutable = 0`, - optionsSet: [[{ ignorePattern: "Mutable$" }]], - }, - { - code: `for (let xMutable = 0; x < 1; x++);`, - optionsSet: [[{ ignorePattern: "Mutable$" }]], - }, - { - code: `for (let xMutable in {});`, - optionsSet: [[{ ignorePattern: "Mutable$" }]], - }, - { - code: `for (let xMutable of []);`, - optionsSet: [[{ ignorePattern: "Mutable$" }]], - }, - { - code: dedent` - function foo() { - let xMutable; - let yMutable = 0; - }`, - optionsSet: [[{ ignorePattern: "Mutable$" }]], - }, - { - code: dedent` - const foo = () => { - let xMutable; - let yMutable = 0; - }`, - optionsSet: [[{ ignorePattern: "Mutable$" }]], - }, - { - code: dedent` - class Foo { - foo() { - let xMutable; - let yMutable = 0; - } - }`, - optionsSet: [[{ ignorePattern: "Mutable$" }]], - }, -]; - -// Invalid test cases. -const invalid: ReadonlyArray = [ - { - code: `let x;`, - optionsSet: [ - [], - [{ allowLocalMutation: true }], - [{ ignorePattern: "^mutable" }], - ], - errors: [ - { - messageId: "generic", - type: "VariableDeclaration", - line: 1, - column: 1, - }, - ], - }, - { - code: `let x = 0;`, - optionsSet: [ - [], - [{ allowLocalMutation: true }], - [{ ignorePattern: "^mutable" }], - ], - errors: [ - { - messageId: "generic", - type: "VariableDeclaration", - line: 1, - column: 1, - }, - ], - }, - { - code: `for (let x = 0; x < 1; x++);`, - optionsSet: [ - [], - [{ allowLocalMutation: true }], - [{ ignorePattern: "^mutable" }], - ], - errors: [ - { - messageId: "generic", - type: "VariableDeclaration", - line: 1, - column: 6, - }, - ], - }, - { - code: `for (let x = 0, y = 0; x < 1; x++);`, - optionsSet: [ - [], - [{ allowLocalMutation: true }], - [{ ignorePattern: "^mutable" }], - ], - errors: [ - { - messageId: "generic", - type: "VariableDeclaration", - line: 1, - column: 6, - }, - ], - }, - { - code: `for (let x in {});`, - optionsSet: [ - [], - [{ allowLocalMutation: true }], - [{ ignorePattern: "^mutable" }], - ], - errors: [ - { - messageId: "generic", - type: "VariableDeclaration", - line: 1, - column: 6, - }, - ], - }, - { - code: `for (let x of []);`, - optionsSet: [ - [], - [{ allowLocalMutation: true }], - [{ ignorePattern: "^mutable" }], - ], - errors: [ - { - messageId: "generic", - type: "VariableDeclaration", - line: 1, - column: 6, - }, - ], - }, - { - code: dedent` - function foo() { - let x; - let y = 0; - }`, - optionsSet: [[], [{ ignorePattern: "^mutable" }]], - errors: [ - { - messageId: "generic", - type: "VariableDeclaration", - line: 2, - column: 3, - }, - { - messageId: "generic", - type: "VariableDeclaration", - line: 3, - column: 3, - }, - ], - }, - { - code: dedent` - const foo = () => { - let x; - let y = 0; - }`, - optionsSet: [[], [{ ignorePattern: "^mutable" }]], - errors: [ - { - messageId: "generic", - type: "VariableDeclaration", - line: 2, - column: 3, - }, - { - messageId: "generic", - type: "VariableDeclaration", - line: 3, - column: 3, - }, - ], - }, - { - code: dedent` - class Foo { - foo() { - let x; - let y = 0; - } - }`, - optionsSet: [[], [{ ignorePattern: "^mutable" }]], - errors: [ - { - messageId: "generic", - type: "VariableDeclaration", - line: 3, - column: 5, - }, - { - messageId: "generic", - type: "VariableDeclaration", - line: 4, - column: 5, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); - -describe("JavaScript (es6)", () => { - const ruleTester = new RuleTester(es6); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); diff --git a/tests/rules/no-let/es6/index.ts b/tests/rules/no-let/es6/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-let/es6/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-let/es6/invalid.ts b/tests/rules/no-let/es6/invalid.ts new file mode 100644 index 000000000..e15c04fba --- /dev/null +++ b/tests/rules/no-let/es6/invalid.ts @@ -0,0 +1,172 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: `let x;`, + optionsSet: [ + [], + [{ allowLocalMutation: true }], + [{ ignorePattern: "^mutable" }], + ], + errors: [ + { + messageId: "generic", + type: "VariableDeclaration", + line: 1, + column: 1, + }, + ], + }, + { + code: `let x = 0;`, + optionsSet: [ + [], + [{ allowLocalMutation: true }], + [{ ignorePattern: "^mutable" }], + ], + errors: [ + { + messageId: "generic", + type: "VariableDeclaration", + line: 1, + column: 1, + }, + ], + }, + { + code: `for (let x = 0; x < 1; x++);`, + optionsSet: [ + [], + [{ allowLocalMutation: true }], + [{ ignorePattern: "^mutable" }], + ], + errors: [ + { + messageId: "generic", + type: "VariableDeclaration", + line: 1, + column: 6, + }, + ], + }, + { + code: `for (let x = 0, y = 0; x < 1; x++);`, + optionsSet: [ + [], + [{ allowLocalMutation: true }], + [{ ignorePattern: "^mutable" }], + ], + errors: [ + { + messageId: "generic", + type: "VariableDeclaration", + line: 1, + column: 6, + }, + ], + }, + { + code: `for (let x in {});`, + optionsSet: [ + [], + [{ allowLocalMutation: true }], + [{ ignorePattern: "^mutable" }], + ], + errors: [ + { + messageId: "generic", + type: "VariableDeclaration", + line: 1, + column: 6, + }, + ], + }, + { + code: `for (let x of []);`, + optionsSet: [ + [], + [{ allowLocalMutation: true }], + [{ ignorePattern: "^mutable" }], + ], + errors: [ + { + messageId: "generic", + type: "VariableDeclaration", + line: 1, + column: 6, + }, + ], + }, + { + code: dedent` + function foo() { + let x; + let y = 0; + }`, + optionsSet: [[], [{ ignorePattern: "^mutable" }]], + errors: [ + { + messageId: "generic", + type: "VariableDeclaration", + line: 2, + column: 3, + }, + { + messageId: "generic", + type: "VariableDeclaration", + line: 3, + column: 3, + }, + ], + }, + { + code: dedent` + const foo = () => { + let x; + let y = 0; + }`, + optionsSet: [[], [{ ignorePattern: "^mutable" }]], + errors: [ + { + messageId: "generic", + type: "VariableDeclaration", + line: 2, + column: 3, + }, + { + messageId: "generic", + type: "VariableDeclaration", + line: 3, + column: 3, + }, + ], + }, + { + code: dedent` + class Foo { + foo() { + let x; + let y = 0; + } + }`, + optionsSet: [[], [{ ignorePattern: "^mutable" }]], + errors: [ + { + messageId: "generic", + type: "VariableDeclaration", + line: 3, + column: 5, + }, + { + messageId: "generic", + type: "VariableDeclaration", + line: 4, + column: 5, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-let/es6/valid.ts b/tests/rules/no-let/es6/valid.ts new file mode 100644 index 000000000..5ab51c39c --- /dev/null +++ b/tests/rules/no-let/es6/valid.ts @@ -0,0 +1,134 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + function foo() { + let x; + let y = 0; + }`, + optionsSet: [[{ allowLocalMutation: true }]], + }, + { + code: dedent` + const foo = () => { + let x; + let y = 0; + }`, + optionsSet: [[{ allowLocalMutation: true }]], + }, + { + code: dedent` + class Foo { + foo() { + let x; + let y = 0; + } + }`, + optionsSet: [[{ allowLocalMutation: true }]], + }, + { + code: dedent` + let mutable; + let mutableX`, + optionsSet: [[{ ignorePattern: "^mutable" }]], + }, + { + code: dedent` + let mutable = 0; + let mutableX = 0`, + optionsSet: [[{ ignorePattern: "^mutable" }]], + }, + { + code: `for (let mutableX = 0; x < 1; x++);`, + optionsSet: [[{ ignorePattern: "^mutable" }]], + }, + { + code: `for (let mutableX in {});`, + optionsSet: [[{ ignorePattern: "^mutable" }]], + }, + { + code: `for (let mutableX of []);`, + optionsSet: [[{ ignorePattern: "^mutable" }]], + }, + { + code: dedent` + function foo() { + let mutableX; + let mutableY = 0; + }`, + optionsSet: [[{ ignorePattern: "^mutable" }]], + }, + { + code: dedent` + const foo = () => { + let mutableX; + let mutableY = 0; + }`, + optionsSet: [[{ ignorePattern: "^mutable" }]], + }, + { + code: dedent` + class Foo { + foo() { + let mutableX; + let mutableY = 0; + } + }`, + optionsSet: [[{ ignorePattern: "^mutable" }]], + }, + { + code: dedent` + let Mutable; + let xMutable`, + optionsSet: [[{ ignorePattern: "Mutable$" }]], + }, + { + code: dedent` + let Mutable = 0; + let xMutable = 0`, + optionsSet: [[{ ignorePattern: "Mutable$" }]], + }, + { + code: `for (let xMutable = 0; x < 1; x++);`, + optionsSet: [[{ ignorePattern: "Mutable$" }]], + }, + { + code: `for (let xMutable in {});`, + optionsSet: [[{ ignorePattern: "Mutable$" }]], + }, + { + code: `for (let xMutable of []);`, + optionsSet: [[{ ignorePattern: "Mutable$" }]], + }, + { + code: dedent` + function foo() { + let xMutable; + let yMutable = 0; + }`, + optionsSet: [[{ ignorePattern: "Mutable$" }]], + }, + { + code: dedent` + const foo = () => { + let xMutable; + let yMutable = 0; + }`, + optionsSet: [[{ ignorePattern: "Mutable$" }]], + }, + { + code: dedent` + class Foo { + foo() { + let xMutable; + let yMutable = 0; + } + }`, + optionsSet: [[{ ignorePattern: "Mutable$" }]], + }, +]; + +export default tests; diff --git a/tests/rules/no-let/index.test.ts b/tests/rules/no-let/index.test.ts new file mode 100644 index 000000000..7e42cec37 --- /dev/null +++ b/tests/rules/no-let/index.test.ts @@ -0,0 +1,8 @@ +import { name, rule } from "~/rules/no-let"; +import { testUsing } from "~/tests/helpers/testers"; + +import es6Tests from "./es6"; + +testUsing.typescript(name, rule, es6Tests); + +testUsing.es6(name, rule, es6Tests); diff --git a/tests/rules/no-loop-statement.test.ts b/tests/rules/no-loop-statement.test.ts deleted file mode 100644 index 0ae7ed1ef..000000000 --- a/tests/rules/no-loop-statement.test.ts +++ /dev/null @@ -1,153 +0,0 @@ -/** - * @file Tests for no-loop. - */ - -import { RuleTester } from "eslint"; - -import { name, rule } from "~/src/rules/no-loop-statement"; -import { es3, es6, typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const valid: ReadonlyArray = []; - -// Invalid test cases. -const invalid: ReadonlyArray = [ - { - code: `for (const x = 0; x < 10; x++) { console.log(x); }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "ForStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: `for (const x in y) { console.log(x); }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "ForInStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: `for (const x of y) { console.log(x); }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "ForOfStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: `while (true) { console.log("a"); }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "WhileStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: `do { console.log("a"); } while (true)`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "DoWhileStatement", - line: 1, - column: 1, - }, - ], - }, -]; -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); - -describe("JavaScript (es6)", () => { - const ruleTester = new RuleTester(es6); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); - -describe("JavaScript (es3)", () => { - const ruleTester = new RuleTester(es3); - ruleTester.run(name, rule, { - valid: processValidTestCase([]), - invalid: processInvalidTestCase([ - { - code: `for (var x = 0; x < 10; x++) { console.log(x); }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "ForStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: `for (var x in y) { console.log(x); }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "ForInStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: `while (true) { console.log("a"); }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "WhileStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: `do { console.log("a"); } while (true)`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "DoWhileStatement", - line: 1, - column: 1, - }, - ], - }, - ]), - }); -}); diff --git a/tests/rules/no-loop-statement/es3/index.ts b/tests/rules/no-loop-statement/es3/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-loop-statement/es3/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-loop-statement/es3/invalid.ts b/tests/rules/no-loop-statement/es3/invalid.ts new file mode 100644 index 000000000..ae337412c --- /dev/null +++ b/tests/rules/no-loop-statement/es3/invalid.ts @@ -0,0 +1,54 @@ +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: `for (var x = 0; x < 10; x++) { console.log(x); }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "ForStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: `for (var x in y) { console.log(x); }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "ForInStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: `while (true) { console.log("a"); }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "WhileStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: `do { console.log("a"); } while (true)`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "DoWhileStatement", + line: 1, + column: 1, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-loop-statement/es3/valid.ts b/tests/rules/no-loop-statement/es3/valid.ts new file mode 100644 index 000000000..63d495610 --- /dev/null +++ b/tests/rules/no-loop-statement/es3/valid.ts @@ -0,0 +1,5 @@ +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = []; + +export default tests; diff --git a/tests/rules/no-loop-statement/es6/index.ts b/tests/rules/no-loop-statement/es6/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-loop-statement/es6/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-loop-statement/es6/invalid.ts b/tests/rules/no-loop-statement/es6/invalid.ts new file mode 100644 index 000000000..29b9e0fb5 --- /dev/null +++ b/tests/rules/no-loop-statement/es6/invalid.ts @@ -0,0 +1,66 @@ +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: `for (const x = 0; x < 10; x++) { console.log(x); }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "ForStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: `for (const x in y) { console.log(x); }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "ForInStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: `for (const x of y) { console.log(x); }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "ForOfStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: `while (true) { console.log("a"); }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "WhileStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: `do { console.log("a"); } while (true)`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "DoWhileStatement", + line: 1, + column: 1, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-loop-statement/es6/valid.ts b/tests/rules/no-loop-statement/es6/valid.ts new file mode 100644 index 000000000..63d495610 --- /dev/null +++ b/tests/rules/no-loop-statement/es6/valid.ts @@ -0,0 +1,5 @@ +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = []; + +export default tests; diff --git a/tests/rules/no-loop-statement/index.test.ts b/tests/rules/no-loop-statement/index.test.ts new file mode 100644 index 000000000..1572ed562 --- /dev/null +++ b/tests/rules/no-loop-statement/index.test.ts @@ -0,0 +1,11 @@ +import { name, rule } from "~/rules/no-loop-statement"; +import { testUsing } from "~/tests/helpers/testers"; + +import es3Tests from "./es3"; +import es6Tests from "./es6"; + +testUsing.typescript(name, rule, es6Tests); +testUsing.typescript(name, rule, es3Tests); + +testUsing.es6(name, rule, es6Tests); +testUsing.es3(name, rule, es3Tests); diff --git a/tests/rules/no-method-signature.test.ts b/tests/rules/no-method-signature.test.ts deleted file mode 100644 index 2525f7e2e..000000000 --- a/tests/rules/no-method-signature.test.ts +++ /dev/null @@ -1,75 +0,0 @@ -/** - * @file Tests for no-method-signature. - */ - -import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/no-method-signature"; -import { typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const valid: ReadonlyArray = [ - { - code: dedent` - interface Foo { - bar: (a: number, b: string) => number; - }`, - optionsSet: [[]], - }, - { - code: dedent` - type Foo2 = { - bar: (a: number, b: string) => number - }`, - optionsSet: [[]], - }, -]; - -// Invalid test cases. -const invalid: ReadonlyArray = [ - { - code: dedent` - interface Foo { - bar(a: number, b: string): number; - }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "TSMethodSignature", - line: 2, - column: 3, - }, - ], - }, - { - code: dedent` - type Foo2 = { - bar(a: number, b: string): number - }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "TSMethodSignature", - line: 2, - column: 3, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); diff --git a/tests/rules/no-method-signature/index.test.ts b/tests/rules/no-method-signature/index.test.ts new file mode 100644 index 000000000..419e8b61e --- /dev/null +++ b/tests/rules/no-method-signature/index.test.ts @@ -0,0 +1,6 @@ +import { name, rule } from "~/rules/no-method-signature"; +import { testUsing } from "~/tests/helpers/testers"; + +import tsTests from "./ts"; + +testUsing.typescript(name, rule, tsTests); diff --git a/tests/rules/no-method-signature/ts/index.ts b/tests/rules/no-method-signature/ts/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-method-signature/ts/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-method-signature/ts/invalid.ts b/tests/rules/no-method-signature/ts/invalid.ts new file mode 100644 index 000000000..81f536d89 --- /dev/null +++ b/tests/rules/no-method-signature/ts/invalid.ts @@ -0,0 +1,38 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + interface Foo { + bar(a: number, b: string): number; + }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "TSMethodSignature", + line: 2, + column: 3, + }, + ], + }, + { + code: dedent` + type Foo2 = { + bar(a: number, b: string): number + }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "TSMethodSignature", + line: 2, + column: 3, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-method-signature/ts/valid.ts b/tests/rules/no-method-signature/ts/valid.ts new file mode 100644 index 000000000..70c58af60 --- /dev/null +++ b/tests/rules/no-method-signature/ts/valid.ts @@ -0,0 +1,22 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + interface Foo { + bar: (a: number, b: string) => number; + }`, + optionsSet: [[]], + }, + { + code: dedent` + type Foo2 = { + bar: (a: number, b: string) => number + }`, + optionsSet: [[]], + }, +]; + +export default tests; diff --git a/tests/rules/no-mixed-type.test.ts b/tests/rules/no-mixed-type.test.ts deleted file mode 100644 index 180b18fa7..000000000 --- a/tests/rules/no-mixed-type.test.ts +++ /dev/null @@ -1,180 +0,0 @@ -/** - * @file Tests for no-mixed-type. - */ - -import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/no-mixed-type"; -import { typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const valid: ReadonlyArray = [ - // Only properties should not produce failures. - { - code: dedent` - type Foo = { - bar: string; - zoo: number; - };`, - optionsSet: [[], [{ checkInterfaces: false }]], - }, - { - code: dedent` - interface Foo { - bar: string; - zoo: number; - }`, - optionsSet: [[], [{ checkTypeLiterals: false }]], - }, - // Only functions should not produce failures - { - code: dedent` - type Foo = { - bar: string; - zoo: number; - };`, - optionsSet: [[], [{ checkInterfaces: false }]], - }, - { - code: dedent` - interface Foo { - bar: string; - zoo: number; - }`, - optionsSet: [[], [{ checkTypeLiterals: false }]], - }, - // Only indexer should not produce failures - { - code: dedent` - type Foo = { - [key: string]: string; - };`, - optionsSet: [[], [{ checkInterfaces: false }]], - }, - { - code: dedent` - interface Foo { - [key: string]: string; - }`, - optionsSet: [[], [{ checkTypeLiterals: false }]], - }, - // Check Off. - { - code: dedent` - type Foo = { - bar: string; - zoo(): number; - };`, - optionsSet: [[{ checkTypeLiterals: false }]], - }, - { - code: dedent` - interface Foo { - bar: string; - zoo(): number; - }`, - optionsSet: [[{ checkInterfaces: false }]], - }, - // Mixing properties and functions (PropertySignature) should produce failures. - { - code: dedent` - type Foo = { - bar: string; - zoo: () => number; - };`, - optionsSet: [[{ checkTypeLiterals: false }]], - }, - { - code: dedent` - interface Foo { - bar: string; - zoo: () => number; - }`, - optionsSet: [[{ checkInterfaces: false }]], - }, -]; - -// Invalid test cases. -const invalid: ReadonlyArray = [ - // Mixing properties and methods (MethodSignature) should produce failures. - { - code: dedent` - type Foo = { - bar: string; - zoo(): number; - };`, - optionsSet: [[], [{ checkInterfaces: false }]], - errors: [ - { - messageId: "generic", - type: "TSTypeAliasDeclaration", - line: 1, - column: 1, - }, - ], - }, - { - code: dedent` - interface Foo { - bar: string; - zoo(): number; - }`, - optionsSet: [[], [{ checkTypeLiterals: false }]], - errors: [ - { - messageId: "generic", - type: "TSInterfaceDeclaration", - line: 1, - column: 1, - }, - ], - }, - // Mixing properties and functions (PropertySignature) should produce failures. - { - code: dedent` - type Foo = { - bar: string; - zoo: () => number; - };`, - optionsSet: [[], [{ checkInterfaces: false }]], - errors: [ - { - messageId: "generic", - type: "TSTypeAliasDeclaration", - line: 1, - column: 1, - }, - ], - }, - { - code: dedent` - interface Foo { - bar: string; - zoo: () => number; - }`, - optionsSet: [[], [{ checkTypeLiterals: false }]], - errors: [ - { - messageId: "generic", - type: "TSInterfaceDeclaration", - line: 1, - column: 1, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); diff --git a/tests/rules/no-mixed-type/index.test.ts b/tests/rules/no-mixed-type/index.test.ts new file mode 100644 index 000000000..007df2bf0 --- /dev/null +++ b/tests/rules/no-mixed-type/index.test.ts @@ -0,0 +1,6 @@ +import { name, rule } from "~/rules/no-mixed-type"; +import { testUsing } from "~/tests/helpers/testers"; + +import tsTests from "./ts"; + +testUsing.typescript(name, rule, tsTests); diff --git a/tests/rules/no-mixed-type/ts/index.ts b/tests/rules/no-mixed-type/ts/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-mixed-type/ts/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-mixed-type/ts/invalid.ts b/tests/rules/no-mixed-type/ts/invalid.ts new file mode 100644 index 000000000..c1b10f274 --- /dev/null +++ b/tests/rules/no-mixed-type/ts/invalid.ts @@ -0,0 +1,74 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // Mixing properties and methods (MethodSignature) should produce failures. + { + code: dedent` + type Foo = { + bar: string; + zoo(): number; + };`, + optionsSet: [[], [{ checkInterfaces: false }]], + errors: [ + { + messageId: "generic", + type: "TSTypeAliasDeclaration", + line: 1, + column: 1, + }, + ], + }, + { + code: dedent` + interface Foo { + bar: string; + zoo(): number; + }`, + optionsSet: [[], [{ checkTypeLiterals: false }]], + errors: [ + { + messageId: "generic", + type: "TSInterfaceDeclaration", + line: 1, + column: 1, + }, + ], + }, + // Mixing properties and functions (PropertySignature) should produce failures. + { + code: dedent` + type Foo = { + bar: string; + zoo: () => number; + };`, + optionsSet: [[], [{ checkInterfaces: false }]], + errors: [ + { + messageId: "generic", + type: "TSTypeAliasDeclaration", + line: 1, + column: 1, + }, + ], + }, + { + code: dedent` + interface Foo { + bar: string; + zoo: () => number; + }`, + optionsSet: [[], [{ checkTypeLiterals: false }]], + errors: [ + { + messageId: "generic", + type: "TSInterfaceDeclaration", + line: 1, + column: 1, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-mixed-type/ts/valid.ts b/tests/rules/no-mixed-type/ts/valid.ts new file mode 100644 index 000000000..8c716a141 --- /dev/null +++ b/tests/rules/no-mixed-type/ts/valid.ts @@ -0,0 +1,91 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // Only properties should not produce failures. + { + code: dedent` + type Foo = { + bar: string; + zoo: number; + };`, + optionsSet: [[], [{ checkInterfaces: false }]], + }, + { + code: dedent` + interface Foo { + bar: string; + zoo: number; + }`, + optionsSet: [[], [{ checkTypeLiterals: false }]], + }, + // Only functions should not produce failures + { + code: dedent` + type Foo = { + bar: string; + zoo: number; + };`, + optionsSet: [[], [{ checkInterfaces: false }]], + }, + { + code: dedent` + interface Foo { + bar: string; + zoo: number; + }`, + optionsSet: [[], [{ checkTypeLiterals: false }]], + }, + // Only indexer should not produce failures + { + code: dedent` + type Foo = { + [key: string]: string; + };`, + optionsSet: [[], [{ checkInterfaces: false }]], + }, + { + code: dedent` + interface Foo { + [key: string]: string; + }`, + optionsSet: [[], [{ checkTypeLiterals: false }]], + }, + // Check Off. + { + code: dedent` + type Foo = { + bar: string; + zoo(): number; + };`, + optionsSet: [[{ checkTypeLiterals: false }]], + }, + { + code: dedent` + interface Foo { + bar: string; + zoo(): number; + }`, + optionsSet: [[{ checkInterfaces: false }]], + }, + // Mixing properties and functions (PropertySignature) should produce failures. + { + code: dedent` + type Foo = { + bar: string; + zoo: () => number; + };`, + optionsSet: [[{ checkTypeLiterals: false }]], + }, + { + code: dedent` + interface Foo { + bar: string; + zoo: () => number; + }`, + optionsSet: [[{ checkInterfaces: false }]], + }, +]; + +export default tests; diff --git a/tests/rules/no-promise-reject.test.ts b/tests/rules/no-promise-reject.test.ts deleted file mode 100644 index 6d736149d..000000000 --- a/tests/rules/no-promise-reject.test.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @file Tests for no-promise-reject. - */ - -import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/no-promise-reject"; -import { es6, typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const valid: ReadonlyArray = [ - { - code: dedent` - function bar() { - if (Math.random() > 0.5) { - return Promise.resolve(new Error("foo")) - } - return Promise.resolve(10) - }`, - optionsSet: [[]], - }, -]; - -// Invalid test cases. -const invalid: ReadonlyArray = [ - { - code: dedent` - function foo() { - if (Math.random() > 0.5) { - return Promise.reject(new Error("bar")) - } - return Promise.resolve(10) - }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "CallExpression", - line: 3, - column: 14, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); - -describe("JavaScript (es6)", () => { - const ruleTester = new RuleTester(es6); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); diff --git a/tests/rules/no-promise-reject/es6/index.ts b/tests/rules/no-promise-reject/es6/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-promise-reject/es6/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-promise-reject/es6/invalid.ts b/tests/rules/no-promise-reject/es6/invalid.ts new file mode 100644 index 000000000..a1f2522e9 --- /dev/null +++ b/tests/rules/no-promise-reject/es6/invalid.ts @@ -0,0 +1,26 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + function foo() { + if (Math.random() > 0.5) { + return Promise.reject(new Error("bar")) + } + return Promise.resolve(10) + }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "CallExpression", + line: 3, + column: 14, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-promise-reject/es6/valid.ts b/tests/rules/no-promise-reject/es6/valid.ts new file mode 100644 index 000000000..a3439cf89 --- /dev/null +++ b/tests/rules/no-promise-reject/es6/valid.ts @@ -0,0 +1,18 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + function bar() { + if (Math.random() > 0.5) { + return Promise.resolve(new Error("foo")) + } + return Promise.resolve(10) + }`, + optionsSet: [[]], + }, +]; + +export default tests; diff --git a/tests/rules/no-promise-reject/index.test.ts b/tests/rules/no-promise-reject/index.test.ts new file mode 100644 index 000000000..fdb76e9a1 --- /dev/null +++ b/tests/rules/no-promise-reject/index.test.ts @@ -0,0 +1,8 @@ +import { name, rule } from "~/rules/no-promise-reject"; +import { testUsing } from "~/tests/helpers/testers"; + +import es6Tests from "./es6"; + +testUsing.typescript(name, rule, es6Tests); + +testUsing.es6(name, rule, es6Tests); diff --git a/tests/rules/no-return-void.test.ts b/tests/rules/no-return-void.test.ts deleted file mode 100644 index 4425b6504..000000000 --- a/tests/rules/no-return-void.test.ts +++ /dev/null @@ -1,135 +0,0 @@ -/** - * @file Tests for no-return-void. - */ - -import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/no-return-void"; -import { typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const valid: ReadonlyArray = [ - { - code: dedent` - function foo(bar) { - return bar + 1; - }`, - optionsSet: [[], [{ allowNull: false }], [{ allowUndefined: false }]], - }, - { - code: dedent` - function foo(bar: number): number { - return bar + 1; - }`, - optionsSet: [[], [{ allowNull: false }], [{ allowUndefined: false }]], - }, - // Not testing implicit return types, therefore this is valid. - { - code: dedent` - function foo(bar) { - console.log(bar); - }`, - optionsSet: [[], [{ allowNull: false }], [{ allowUndefined: false }]], - }, - // Allow null. - { - code: dedent` - function foo(): null { - return null; - }`, - optionsSet: [[], [{ allowNull: true }], [{ allowUndefined: false }]], - }, - // Allow undefined. - { - code: dedent` - function foo(): undefined { - return undefined; - }`, - optionsSet: [[], [{ allowNull: false }], [{ allowUndefined: true }]], - }, -]; - -// Invalid test cases. -const invalid: ReadonlyArray = [ - // Disallow void. - { - code: dedent` - function foo(bar: number): void { - console.log(bar); - }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "TSTypeAnnotation", - line: 1, - column: 26, - }, - ], - }, - // Disallow undefined. - { - code: dedent` - function foo(bar: number): undefined { - console.log(bar); - return undefined; - }`, - optionsSet: [[{ allowUndefined: false }]], - errors: [ - { - messageId: "generic", - type: "TSTypeAnnotation", - line: 1, - column: 26, - }, - ], - }, - // Disallow null. - { - code: dedent` - function foo(bar: number): null { - console.log(bar); - return null; - }`, - optionsSet: [[{ allowNull: false }]], - errors: [ - { - messageId: "generic", - type: "TSTypeAnnotation", - line: 1, - column: 26, - }, - ], - }, - // Disallow higher-order function void. - { - code: dedent` - function foo(bar: number): (baz: number) => void { - return baz => { console.log(bar, baz); } - }`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "TSTypeAnnotation", - line: 1, - column: 42, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); diff --git a/tests/rules/no-return-void/index.test.ts b/tests/rules/no-return-void/index.test.ts new file mode 100644 index 000000000..93243b4d8 --- /dev/null +++ b/tests/rules/no-return-void/index.test.ts @@ -0,0 +1,6 @@ +import { name, rule } from "~/rules/no-return-void"; +import { testUsing } from "~/tests/helpers/testers"; + +import tsTests from "./ts"; + +testUsing.typescript(name, rule, tsTests); diff --git a/tests/rules/no-return-void/ts/index.ts b/tests/rules/no-return-void/ts/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-return-void/ts/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-return-void/ts/invalid.ts b/tests/rules/no-return-void/ts/invalid.ts new file mode 100644 index 000000000..f1b378d73 --- /dev/null +++ b/tests/rules/no-return-void/ts/invalid.ts @@ -0,0 +1,74 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // Disallow void. + { + code: dedent` + function foo(bar: number): void { + console.log(bar); + }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "TSTypeAnnotation", + line: 1, + column: 26, + }, + ], + }, + // Disallow undefined. + { + code: dedent` + function foo(bar: number): undefined { + console.log(bar); + return undefined; + }`, + optionsSet: [[{ allowUndefined: false }]], + errors: [ + { + messageId: "generic", + type: "TSTypeAnnotation", + line: 1, + column: 26, + }, + ], + }, + // Disallow null. + { + code: dedent` + function foo(bar: number): null { + console.log(bar); + return null; + }`, + optionsSet: [[{ allowNull: false }]], + errors: [ + { + messageId: "generic", + type: "TSTypeAnnotation", + line: 1, + column: 26, + }, + ], + }, + // Disallow higher-order function void. + { + code: dedent` + function foo(bar: number): (baz: number) => void { + return baz => { console.log(bar, baz); } + }`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "TSTypeAnnotation", + line: 1, + column: 42, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-return-void/ts/valid.ts b/tests/rules/no-return-void/ts/valid.ts new file mode 100644 index 000000000..1f354633d --- /dev/null +++ b/tests/rules/no-return-void/ts/valid.ts @@ -0,0 +1,46 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: dedent` + function foo(bar) { + return bar + 1; + }`, + optionsSet: [[], [{ allowNull: false }], [{ allowUndefined: false }]], + }, + { + code: dedent` + function foo(bar: number): number { + return bar + 1; + }`, + optionsSet: [[], [{ allowNull: false }], [{ allowUndefined: false }]], + }, + // Not testing implicit return types, therefore this is valid. + { + code: dedent` + function foo(bar) { + console.log(bar); + }`, + optionsSet: [[], [{ allowNull: false }], [{ allowUndefined: false }]], + }, + // Allow null. + { + code: dedent` + function foo(): null { + return null; + }`, + optionsSet: [[], [{ allowNull: true }], [{ allowUndefined: false }]], + }, + // Allow undefined. + { + code: dedent` + function foo(): undefined { + return undefined; + }`, + optionsSet: [[], [{ allowNull: false }], [{ allowUndefined: true }]], + }, +]; + +export default tests; diff --git a/tests/rules/no-this-expression.test.ts b/tests/rules/no-this-expression.test.ts deleted file mode 100644 index c9594856c..000000000 --- a/tests/rules/no-this-expression.test.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @file Tests for no-this-expression. - */ - -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/no-this-expression"; -import { es3, typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const valid: ReadonlyArray = [ - { - code: `var x = 0;`, - optionsSet: [[]], - }, -]; - -// Invalid test cases. -const invalid: ReadonlyArray = [ - { - code: `this.x = 0;`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "ThisExpression", - line: 1, - column: 1, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); - -describe("JavaScript (es3)", () => { - const ruleTester = new RuleTester(es3); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); diff --git a/tests/rules/no-this-expression/es3/index.ts b/tests/rules/no-this-expression/es3/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-this-expression/es3/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-this-expression/es3/invalid.ts b/tests/rules/no-this-expression/es3/invalid.ts new file mode 100644 index 000000000..a4e8b1c50 --- /dev/null +++ b/tests/rules/no-this-expression/es3/invalid.ts @@ -0,0 +1,18 @@ +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: `this.x = 0;`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "ThisExpression", + line: 1, + column: 1, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-this-expression/es3/valid.ts b/tests/rules/no-this-expression/es3/valid.ts new file mode 100644 index 000000000..97c941fa7 --- /dev/null +++ b/tests/rules/no-this-expression/es3/valid.ts @@ -0,0 +1,10 @@ +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: `var x = 0;`, + optionsSet: [[]], + }, +]; + +export default tests; diff --git a/tests/rules/no-this-expression/index.test.ts b/tests/rules/no-this-expression/index.test.ts new file mode 100644 index 000000000..6589a9b72 --- /dev/null +++ b/tests/rules/no-this-expression/index.test.ts @@ -0,0 +1,8 @@ +import { name, rule } from "~/rules/no-this-expression"; +import { testUsing } from "~/tests/helpers/testers"; + +import es3Tests from "./es3"; + +testUsing.typescript(name, rule, es3Tests); + +testUsing.es3(name, rule, es3Tests); diff --git a/tests/rules/no-throw-statement.test.ts b/tests/rules/no-throw-statement.test.ts deleted file mode 100644 index cca0848c0..000000000 --- a/tests/rules/no-throw-statement.test.ts +++ /dev/null @@ -1,73 +0,0 @@ -/** - * @file Tests for no-throw-statement. - */ - -import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/no-throw-statement"; -import { es3, typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const valid: ReadonlyArray = []; - -// Invalid test cases. -const invalid: ReadonlyArray = [ - { - code: `throw 'error';`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - type: "ThrowStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: `throw new Error();`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - line: 1, - column: 1, - }, - ], - }, - { - code: dedent` - var error = new Error(); - throw error;`, - optionsSet: [[]], - errors: [ - { - messageId: "generic", - line: 2, - column: 1, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); -describe("JavaScript (es3)", () => { - const ruleTester = new RuleTester(es3); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); diff --git a/tests/rules/no-throw-statement/es3/index.ts b/tests/rules/no-throw-statement/es3/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-throw-statement/es3/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-throw-statement/es3/invalid.ts b/tests/rules/no-throw-statement/es3/invalid.ts new file mode 100644 index 000000000..270a8c02c --- /dev/null +++ b/tests/rules/no-throw-statement/es3/invalid.ts @@ -0,0 +1,44 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: `throw 'error';`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + type: "ThrowStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: `throw new Error();`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + line: 1, + column: 1, + }, + ], + }, + { + code: dedent` + var error = new Error(); + throw error;`, + optionsSet: [[]], + errors: [ + { + messageId: "generic", + line: 2, + column: 1, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-throw-statement/es3/valid.ts b/tests/rules/no-throw-statement/es3/valid.ts new file mode 100644 index 000000000..63d495610 --- /dev/null +++ b/tests/rules/no-throw-statement/es3/valid.ts @@ -0,0 +1,5 @@ +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = []; + +export default tests; diff --git a/tests/rules/no-throw-statement/index.test.ts b/tests/rules/no-throw-statement/index.test.ts new file mode 100644 index 000000000..99b83756e --- /dev/null +++ b/tests/rules/no-throw-statement/index.test.ts @@ -0,0 +1,8 @@ +import { name, rule } from "~/rules/no-throw-statement"; +import { testUsing } from "~/tests/helpers/testers"; + +import es3Tests from "./es3"; + +testUsing.typescript(name, rule, es3Tests); + +testUsing.es3(name, rule, es3Tests); diff --git a/tests/rules/no-try-statement.test.ts b/tests/rules/no-try-statement.test.ts deleted file mode 100644 index fa6942546..000000000 --- a/tests/rules/no-try-statement.test.ts +++ /dev/null @@ -1,110 +0,0 @@ -/** - * @file Tests for no-try-statement. - */ - -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/no-try-statement"; -import { es3, typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const valid: ReadonlyArray = [ - { - code: `var x = 0;`, - optionsSet: [[]], - }, - { - code: `try {} catch (e) {}`, - optionsSet: [[{ allowCatch: true }]], - }, - { - code: `try {} finally {}`, - optionsSet: [[{ allowFinally: true }]], - }, -]; - -// Invalid test cases. -const invalid: ReadonlyArray = [ - { - code: `try {} catch (e) {}`, - optionsSet: [[]], - errors: [ - { - messageId: "catch", - type: "TryStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: `try {} catch (e) {} finally {}`, - optionsSet: [[]], - errors: [ - { - messageId: "catch", - type: "TryStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: `try {} catch (e) {} finally {}`, - optionsSet: [[{ allowCatch: true }]], - errors: [ - { - messageId: "finally", - type: "TryStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: `try {} catch (e) {} finally {}`, - optionsSet: [[{ allowFinally: true }]], - errors: [ - { - messageId: "catch", - type: "TryStatement", - line: 1, - column: 1, - }, - ], - }, - { - code: `try {} finally {}`, - optionsSet: [[]], - errors: [ - { - messageId: "finally", - type: "TryStatement", - line: 1, - column: 1, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); - -describe("JavaScript (es3)", () => { - const ruleTester = new RuleTester(es3); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); diff --git a/tests/rules/no-try-statement/es3/index.ts b/tests/rules/no-try-statement/es3/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/no-try-statement/es3/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/no-try-statement/es3/invalid.ts b/tests/rules/no-try-statement/es3/invalid.ts new file mode 100644 index 000000000..3cb9a81ba --- /dev/null +++ b/tests/rules/no-try-statement/es3/invalid.ts @@ -0,0 +1,66 @@ +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: `try {} catch (e) {}`, + optionsSet: [[]], + errors: [ + { + messageId: "catch", + type: "TryStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: `try {} catch (e) {} finally {}`, + optionsSet: [[]], + errors: [ + { + messageId: "catch", + type: "TryStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: `try {} catch (e) {} finally {}`, + optionsSet: [[{ allowCatch: true }]], + errors: [ + { + messageId: "finally", + type: "TryStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: `try {} catch (e) {} finally {}`, + optionsSet: [[{ allowFinally: true }]], + errors: [ + { + messageId: "catch", + type: "TryStatement", + line: 1, + column: 1, + }, + ], + }, + { + code: `try {} finally {}`, + optionsSet: [[]], + errors: [ + { + messageId: "finally", + type: "TryStatement", + line: 1, + column: 1, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/no-try-statement/es3/valid.ts b/tests/rules/no-try-statement/es3/valid.ts new file mode 100644 index 000000000..528f4d2fb --- /dev/null +++ b/tests/rules/no-try-statement/es3/valid.ts @@ -0,0 +1,18 @@ +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + code: `var x = 0;`, + optionsSet: [[]], + }, + { + code: `try {} catch (e) {}`, + optionsSet: [[{ allowCatch: true }]], + }, + { + code: `try {} finally {}`, + optionsSet: [[{ allowFinally: true }]], + }, +]; + +export default tests; diff --git a/tests/rules/no-try-statement/index.test.ts b/tests/rules/no-try-statement/index.test.ts new file mode 100644 index 000000000..5e78de444 --- /dev/null +++ b/tests/rules/no-try-statement/index.test.ts @@ -0,0 +1,8 @@ +import { name, rule } from "~/rules/no-try-statement"; +import { testUsing } from "~/tests/helpers/testers"; + +import es3Tests from "./es3"; + +testUsing.typescript(name, rule, es3Tests); + +testUsing.es3(name, rule, es3Tests); diff --git a/tests/rules/prefer-readonly-type/index.test.ts b/tests/rules/prefer-readonly-type/index.test.ts new file mode 100644 index 000000000..57fd248d0 --- /dev/null +++ b/tests/rules/prefer-readonly-type/index.test.ts @@ -0,0 +1,6 @@ +import { name, rule } from "~/rules/prefer-readonly-type"; +import { testUsing } from "~/tests/helpers/testers"; + +import tsTests from "./ts"; + +testUsing.typescript(name, rule, tsTests); diff --git a/tests/rules/prefer-readonly-type/ts/index.ts b/tests/rules/prefer-readonly-type/ts/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/prefer-readonly-type/ts/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/prefer-readonly-type.test.ts b/tests/rules/prefer-readonly-type/ts/invalid.ts similarity index 61% rename from tests/rules/prefer-readonly-type.test.ts rename to tests/rules/prefer-readonly-type/ts/invalid.ts index fc3fbeb9e..26be07fda 100644 --- a/tests/rules/prefer-readonly-type.test.ts +++ b/tests/rules/prefer-readonly-type/ts/invalid.ts @@ -1,421 +1,8 @@ -/** - * @file Tests for prefer-readonly-type. - */ - import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/prefer-readonly-type"; -import { typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; -// Valid test cases. -const valid: ReadonlyArray = [ - // Should not fail on explicit ReadonlyArray parameter. - { - code: dedent` - function foo(...numbers: ReadonlyArray) { - }`, - optionsSet: [[]], - }, - { - code: dedent` - function foo(...numbers: readonly number[]) { - }`, - optionsSet: [[]], - }, - // Should not fail on explicit ReadonlyArray return type. - { - code: dedent` - function foo(): ReadonlyArray { - return [1, 2, 3]; - }`, - optionsSet: [[]], - }, - { - code: dedent` - const foo = (): ReadonlyArray => { - return [1, 2, 3]; - }`, - optionsSet: [[]], - }, - // ReadonlyArray Tuple. - { - code: dedent` - function foo(tuple: readonly [number, string, readonly [number, string]]) { - }`, - optionsSet: [[]], - }, - // Should not fail on ReadonlyArray type alias. - { - code: `type Foo = ReadonlyArray;`, - optionsSet: [[]], - }, - // Should not fail on ReadonlyArray type alias in local type. - { - code: dedent` - function foo() { - type Foo = ReadonlyArray; - }`, - optionsSet: [[]], - }, - // Should not fail on ReadonlyArray in variable declaration. - { - code: `const foo: ReadonlyArray = [];`, - optionsSet: [[]], - }, - // Allow return type. - { - code: dedent` - function foo(...numbers: ReadonlyArray): Array {} - function bar(...numbers: readonly number[]): number[] {}`, - optionsSet: [[{ allowMutableReturnType: true }]], - }, - // Allow return type. - { - code: dedent` - const foo = function(...numbers: ReadonlyArray): Array {} - const bar = function(...numbers: readonly number[]): number[] {}`, - optionsSet: [[{ allowMutableReturnType: true }]], - }, - // Allow return type. - { - code: dedent` - const foo = (...numbers: ReadonlyArray): Array => {} - const bar = (...numbers: readonly number[]): number[] => {}`, - optionsSet: [[{ allowMutableReturnType: true }]], - }, - // Allow return type. - { - code: dedent` - class Foo { - foo(...numbers: ReadonlyArray): Array { - } - } - class Bar { - foo(...numbers: readonly number[]): number[] { - } - }`, - optionsSet: [[{ allowMutableReturnType: true }]], - }, - // Allow return type with Type Arguments. - { - code: dedent` - function foo(...numbers: ReadonlyArray): Promise> {} - function foo(...numbers: ReadonlyArray): Promise {}`, - optionsSet: [[{ allowMutableReturnType: true }]], - }, - // Allow return type with deep Type Arguments. - { - code: dedent` - type Foo = { readonly x: T; }; - function foo(...numbers: ReadonlyArray): Promise>> {} - function foo(...numbers: ReadonlyArray): Promise> {}`, - optionsSet: [[{ allowMutableReturnType: true }]], - }, - // Allow return type with Type Arguments in a tuple. - { - code: dedent` - function foo(...numbers: ReadonlyArray): readonly [number, Array, number] {} - function foo(...numbers: ReadonlyArray): readonly [number, number[], number] {}`, - optionsSet: [[{ allowMutableReturnType: true }]], - }, - // Allow return type with Type Arguments Union. - { - code: dedent` - function foo(...numbers: ReadonlyArray): { readonly a: Array } | { readonly b: string[] } {}`, - optionsSet: [[{ allowMutableReturnType: true }]], - }, - // Allow return type with Type Arguments Intersection. - { - code: dedent` - function foo(...numbers: ReadonlyArray): { readonly a: Array } & { readonly b: string[] } {}`, - optionsSet: [[{ allowMutableReturnType: true }]], - }, - // Allow return type with Type Arguments Conditional. - { - code: dedent` - function foo(x: T): T extends Array ? string : number[] {}`, - optionsSet: [[{ allowMutableReturnType: true }]], - }, - // Allow inline mutable return type. - { - code: dedent` - function foo(bar: string): { baz: number } { - return 1 as any; - }`, - optionsSet: [[{ allowMutableReturnType: true }]], - }, - // Should not fail on implicit ReadonlyArray type in variable declaration. - { - code: dedent` - const foo = [1, 2, 3] as const`, - optionsSet: [[{ checkImplicit: true }]], - }, - // Should not fail on implicit Array. - { - code: dedent` - const foo = [1, 2, 3] - function bar(param = [1, 2, 3]) {}`, - optionsSet: [[]], - }, - // Interface with readonly modifiers should not produce failures. - { - code: dedent` - interface Foo { - readonly a: number, - readonly b: ReadonlyArray, - readonly c: () => string, - readonly d: { readonly [key: string]: string }, - readonly [key: string]: string, - }`, - optionsSet: [[]], - }, - // PropertySignature and IndexSignature members without readonly modifier - // should produce failures. Also verify that nested members are checked. - { - code: dedent` - interface Foo { - readonly a: number, - readonly b: ReadonlyArray, - readonly c: () => string, - readonly d: { readonly [key: string]: string }, - readonly [key: string]: string, - readonly e: { - readonly a: number, - readonly b: ReadonlyArray, - readonly c: () => string, - readonly d: { readonly [key: string]: string }, - readonly [key: string]: string, - } - }`, - optionsSet: [[]], - }, - // Class with parameter properties. - { - code: dedent` - class Klass { - constructor ( - nonParameterProp: string, - readonly readonlyProp: string, - public readonly publicReadonlyProp: string, - protected readonly protectedReadonlyProp: string, - private readonly privateReadonlyProp: string, - ) { } - }`, - optionsSet: [[]], - }, - // CallSignature and MethodSignature cannot have readonly modifiers and should - // not produce failures. - { - code: dedent` - interface Foo { - (): void - foo(): void - }`, - optionsSet: [[]], - }, - // The literal with indexer with readonly modifier should not produce failures. - { - code: `let foo: { readonly [key: string]: number };`, - optionsSet: [[]], - }, - // Type literal in array template parameter with readonly should not produce failures. - { - code: `type foo = ReadonlyArray<{ readonly type: string, readonly code: string }>;`, - optionsSet: [[]], - }, - // Type literal with readonly on members should not produce failures. - { - code: dedent` - let foo: { - readonly a: number, - readonly b: ReadonlyArray, - readonly c: () => string, - readonly d: { readonly [key: string]: string } - readonly [key: string]: string - };`, - optionsSet: [[]], - }, - // Mapped types with readonly on members should not produce failures. - { - code: dedent` - const func = (x: { readonly [key in string]: number }) => {}`, - optionsSet: [[]], - }, - // Ignore Class Fields. - { - code: dedent` - class Klass { - foo: number; - private bar: number; - static baz: number; - private static qux: number; - }`, - optionsSet: [[{ ignoreClass: true }], [{ ignoreClass: "fieldsOnly" }]], - }, - // Ignore Classes. - { - code: dedent` - class Klass { - foo() { - let bar: { - foo: number; - }; - } - }`, - optionsSet: [[{ ignoreClass: true }]], - }, - // Ignore Interfaces. - { - code: dedent` - interface Foo { - foo: number, - bar: ReadonlyArray, - baz: () => string, - qux: { [key: string]: string } - }`, - optionsSet: [[{ ignoreInterface: true }]], - }, - // Allow Local. - { - code: dedent` - function foo() { - let foo: { - a: number, - b: ReadonlyArray, - c: () => string, - d: { [key: string]: string }, - [key: string]: string, - readonly d: { - a: number, - b: ReadonlyArray, - c: () => string, - d: { [key: string]: string }, - [key: string]: string, - } - } - };`, - optionsSet: [[{ allowLocalMutation: true }]], - }, - // Ignore Prefix. - { - code: dedent` - let mutableFoo: string[] = [];`, - optionsSet: [[{ ignorePattern: "^mutable" }]], - }, - { - code: dedent` - let foo: { - mutableA: number, - mutableB: ReadonlyArray, - mutableC: () => string, - mutableD: { readonly [key: string]: string }, - mutableE: { - mutableA: number, - mutableB: ReadonlyArray, - mutableC: () => string, - mutableD: { readonly [key: string]: string }, - } - };`, - optionsSet: [[{ ignorePattern: "^mutable" }]], - }, - { - code: dedent` - class Klass { - mutableA: string; - private mutableB: string; - }`, - optionsSet: [[{ ignorePattern: "^mutable" }]], - }, - // Ignore Suffix. - { - code: dedent` - let fooMutable: string[] = [];`, - optionsSet: [[{ ignorePattern: "Mutable$" }]], - }, - { - code: dedent` - let foo: { - aMutable: number, - bMutable: ReadonlyArray, - cMutable: () => string, - dMutable: { readonly [key: string]: string }, - eMutable: { - aMutable: number, - bMutable: ReadonlyArray, - cMutable: () => string, - dMutable: { readonly [key: string]: string }, - } - };`, - optionsSet: [[{ ignorePattern: "Mutable$" }]], - }, - { - code: dedent` - class Klass { - AMutable: string; - private BMutable: string; - }`, - optionsSet: [[{ ignorePattern: "Mutable$" }]], - }, - // Allow mutable TSIndexSignature. - { - code: dedent` - const mutableResult: { - [key: string]: string - } = {};`, - optionsSet: [[{ ignorePattern: "^mutable" }]], - }, - // Ignore Mutable Collections (Array, Tuple, Set, Map) - { - code: dedent`type Foo = Array;`, - optionsSet: [[{ ignoreCollections: true }]], - }, - { - code: dedent`const Foo: number[] = [];`, - optionsSet: [[{ ignoreCollections: true }]], - }, - { - code: dedent`const Foo = []`, - optionsSet: [[{ ignoreCollections: true, checkImplicit: true }]], - }, - { - code: dedent`type Foo = [string, string];`, - optionsSet: [[{ ignoreCollections: true }]], - }, - { - code: dedent`const Foo: [string, string] = ['foo', 'bar'];`, - optionsSet: [[{ ignoreCollections: true }]], - }, - { - code: dedent`const Foo = ['foo', 'bar'];`, - optionsSet: [[{ ignoreCollections: true, checkImplicit: true }]], - }, - { - code: dedent`type Foo = Set;`, - optionsSet: [[{ ignoreCollections: true }]], - }, - { - code: dedent`const Foo: Set = new Set();`, - optionsSet: [[{ ignoreCollections: true }]], - }, - { - code: dedent`type Foo = Map;`, - optionsSet: [[{ ignoreCollections: true }]], - }, - { - code: dedent`const Foo: Map = new Map();`, - optionsSet: [[{ ignoreCollections: true }]], - }, -]; +import type { InvalidTestCase } from "~/tests/helpers/util"; -// Invalid test cases. -const invalid: ReadonlyArray = [ +const tests: ReadonlyArray = [ { code: dedent` function foo(...numbers: number[]) { @@ -1317,10 +904,4 @@ const invalid: ReadonlyArray = [ }, ]; -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(valid), - invalid: processInvalidTestCase(invalid), - }); -}); +export default tests; diff --git a/tests/rules/prefer-readonly-type/ts/valid.ts b/tests/rules/prefer-readonly-type/ts/valid.ts new file mode 100644 index 000000000..88954c8aa --- /dev/null +++ b/tests/rules/prefer-readonly-type/ts/valid.ts @@ -0,0 +1,392 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // Should not fail on explicit ReadonlyArray parameter. + { + code: dedent` + function foo(...numbers: ReadonlyArray) { + }`, + optionsSet: [[]], + }, + { + code: dedent` + function foo(...numbers: readonly number[]) { + }`, + optionsSet: [[]], + }, + // Should not fail on explicit ReadonlyArray return type. + { + code: dedent` + function foo(): ReadonlyArray { + return [1, 2, 3]; + }`, + optionsSet: [[]], + }, + { + code: dedent` + const foo = (): ReadonlyArray => { + return [1, 2, 3]; + }`, + optionsSet: [[]], + }, + // ReadonlyArray Tuple. + { + code: dedent` + function foo(tuple: readonly [number, string, readonly [number, string]]) { + }`, + optionsSet: [[]], + }, + // Should not fail on ReadonlyArray type alias. + { + code: `type Foo = ReadonlyArray;`, + optionsSet: [[]], + }, + // Should not fail on ReadonlyArray type alias in local type. + { + code: dedent` + function foo() { + type Foo = ReadonlyArray; + }`, + optionsSet: [[]], + }, + // Should not fail on ReadonlyArray in variable declaration. + { + code: `const foo: ReadonlyArray = [];`, + optionsSet: [[]], + }, + // Allow return type. + { + code: dedent` + function foo(...numbers: ReadonlyArray): Array {} + function bar(...numbers: readonly number[]): number[] {}`, + optionsSet: [[{ allowMutableReturnType: true }]], + }, + // Allow return type. + { + code: dedent` + const foo = function(...numbers: ReadonlyArray): Array {} + const bar = function(...numbers: readonly number[]): number[] {}`, + optionsSet: [[{ allowMutableReturnType: true }]], + }, + // Allow return type. + { + code: dedent` + const foo = (...numbers: ReadonlyArray): Array => {} + const bar = (...numbers: readonly number[]): number[] => {}`, + optionsSet: [[{ allowMutableReturnType: true }]], + }, + // Allow return type. + { + code: dedent` + class Foo { + foo(...numbers: ReadonlyArray): Array { + } + } + class Bar { + foo(...numbers: readonly number[]): number[] { + } + }`, + optionsSet: [[{ allowMutableReturnType: true }]], + }, + // Allow return type with Type Arguments. + { + code: dedent` + function foo(...numbers: ReadonlyArray): Promise> {} + function foo(...numbers: ReadonlyArray): Promise {}`, + optionsSet: [[{ allowMutableReturnType: true }]], + }, + // Allow return type with deep Type Arguments. + { + code: dedent` + type Foo = { readonly x: T; }; + function foo(...numbers: ReadonlyArray): Promise>> {} + function foo(...numbers: ReadonlyArray): Promise> {}`, + optionsSet: [[{ allowMutableReturnType: true }]], + }, + // Allow return type with Type Arguments in a tuple. + { + code: dedent` + function foo(...numbers: ReadonlyArray): readonly [number, Array, number] {} + function foo(...numbers: ReadonlyArray): readonly [number, number[], number] {}`, + optionsSet: [[{ allowMutableReturnType: true }]], + }, + // Allow return type with Type Arguments Union. + { + code: dedent` + function foo(...numbers: ReadonlyArray): { readonly a: Array } | { readonly b: string[] } {}`, + optionsSet: [[{ allowMutableReturnType: true }]], + }, + // Allow return type with Type Arguments Intersection. + { + code: dedent` + function foo(...numbers: ReadonlyArray): { readonly a: Array } & { readonly b: string[] } {}`, + optionsSet: [[{ allowMutableReturnType: true }]], + }, + // Allow return type with Type Arguments Conditional. + { + code: dedent` + function foo(x: T): T extends Array ? string : number[] {}`, + optionsSet: [[{ allowMutableReturnType: true }]], + }, + // Allow inline mutable return type. + { + code: dedent` + function foo(bar: string): { baz: number } { + return 1 as any; + }`, + optionsSet: [[{ allowMutableReturnType: true }]], + }, + // Should not fail on implicit ReadonlyArray type in variable declaration. + { + code: dedent` + const foo = [1, 2, 3] as const`, + optionsSet: [[{ checkImplicit: true }]], + }, + // Should not fail on implicit Array. + { + code: dedent` + const foo = [1, 2, 3] + function bar(param = [1, 2, 3]) {}`, + optionsSet: [[]], + }, + // Interface with readonly modifiers should not produce failures. + { + code: dedent` + interface Foo { + readonly a: number, + readonly b: ReadonlyArray, + readonly c: () => string, + readonly d: { readonly [key: string]: string }, + readonly [key: string]: string, + }`, + optionsSet: [[]], + }, + // PropertySignature and IndexSignature members without readonly modifier + // should produce failures. Also verify that nested members are checked. + { + code: dedent` + interface Foo { + readonly a: number, + readonly b: ReadonlyArray, + readonly c: () => string, + readonly d: { readonly [key: string]: string }, + readonly [key: string]: string, + readonly e: { + readonly a: number, + readonly b: ReadonlyArray, + readonly c: () => string, + readonly d: { readonly [key: string]: string }, + readonly [key: string]: string, + } + }`, + optionsSet: [[]], + }, + // Class with parameter properties. + { + code: dedent` + class Klass { + constructor ( + nonParameterProp: string, + readonly readonlyProp: string, + public readonly publicReadonlyProp: string, + protected readonly protectedReadonlyProp: string, + private readonly privateReadonlyProp: string, + ) { } + }`, + optionsSet: [[]], + }, + // CallSignature and MethodSignature cannot have readonly modifiers and should + // not produce failures. + { + code: dedent` + interface Foo { + (): void + foo(): void + }`, + optionsSet: [[]], + }, + // The literal with indexer with readonly modifier should not produce failures. + { + code: `let foo: { readonly [key: string]: number };`, + optionsSet: [[]], + }, + // Type literal in array template parameter with readonly should not produce failures. + { + code: `type foo = ReadonlyArray<{ readonly type: string, readonly code: string }>;`, + optionsSet: [[]], + }, + // Type literal with readonly on members should not produce failures. + { + code: dedent` + let foo: { + readonly a: number, + readonly b: ReadonlyArray, + readonly c: () => string, + readonly d: { readonly [key: string]: string } + readonly [key: string]: string + };`, + optionsSet: [[]], + }, + // Mapped types with readonly on members should not produce failures. + { + code: dedent` + const func = (x: { readonly [key in string]: number }) => {}`, + optionsSet: [[]], + }, + // Ignore Classes. + { + code: dedent` + class Klass { + foo: number; + private bar: number; + static baz: number; + private static qux: number; + }`, + optionsSet: [[{ ignoreClass: true }]], + }, + // Ignore Interfaces. + { + code: dedent` + interface Foo { + foo: number, + bar: ReadonlyArray, + baz: () => string, + qux: { [key: string]: string } + }`, + optionsSet: [[{ ignoreInterface: true }]], + }, + // Allow Local. + { + code: dedent` + function foo() { + let foo: { + a: number, + b: ReadonlyArray, + c: () => string, + d: { [key: string]: string }, + [key: string]: string, + readonly d: { + a: number, + b: ReadonlyArray, + c: () => string, + d: { [key: string]: string }, + [key: string]: string, + } + } + };`, + optionsSet: [[{ allowLocalMutation: true }]], + }, + // Ignore Prefix. + { + code: dedent` + let mutableFoo: string[] = [];`, + optionsSet: [[{ ignorePattern: "^mutable" }]], + }, + { + code: dedent` + let foo: { + mutableA: number, + mutableB: ReadonlyArray, + mutableC: () => string, + mutableD: { readonly [key: string]: string }, + mutableE: { + mutableA: number, + mutableB: ReadonlyArray, + mutableC: () => string, + mutableD: { readonly [key: string]: string }, + } + };`, + optionsSet: [[{ ignorePattern: "^mutable" }]], + }, + { + code: dedent` + class Klass { + mutableA: string; + private mutableB: string; + }`, + optionsSet: [[{ ignorePattern: "^mutable" }]], + }, + // Ignore Suffix. + { + code: dedent` + let fooMutable: string[] = [];`, + optionsSet: [[{ ignorePattern: "Mutable$" }]], + }, + { + code: dedent` + let foo: { + aMutable: number, + bMutable: ReadonlyArray, + cMutable: () => string, + dMutable: { readonly [key: string]: string }, + eMutable: { + aMutable: number, + bMutable: ReadonlyArray, + cMutable: () => string, + dMutable: { readonly [key: string]: string }, + } + };`, + optionsSet: [[{ ignorePattern: "Mutable$" }]], + }, + { + code: dedent` + class Klass { + AMutable: string; + private BMutable: string; + }`, + optionsSet: [[{ ignorePattern: "Mutable$" }]], + }, + // Allow mutable TSIndexSignature. + { + code: dedent` + const mutableResult: { + [key: string]: string + } = {};`, + optionsSet: [[{ ignorePattern: "^mutable" }]], + }, + // Ignore Mutable Collections (Array, Tuple, Set, Map) + { + code: dedent`type Foo = Array;`, + optionsSet: [[{ ignoreCollections: true }]], + }, + { + code: dedent`const Foo: number[] = [];`, + optionsSet: [[{ ignoreCollections: true }]], + }, + { + code: dedent`const Foo = []`, + optionsSet: [[{ ignoreCollections: true, checkImplicit: true }]], + }, + { + code: dedent`type Foo = [string, string];`, + optionsSet: [[{ ignoreCollections: true }]], + }, + { + code: dedent`const Foo: [string, string] = ['foo', 'bar'];`, + optionsSet: [[{ ignoreCollections: true }]], + }, + { + code: dedent`const Foo = ['foo', 'bar'];`, + optionsSet: [[{ ignoreCollections: true, checkImplicit: true }]], + }, + { + code: dedent`type Foo = Set;`, + optionsSet: [[{ ignoreCollections: true }]], + }, + { + code: dedent`const Foo: Set = new Set();`, + optionsSet: [[{ ignoreCollections: true }]], + }, + { + code: dedent`type Foo = Map;`, + optionsSet: [[{ ignoreCollections: true }]], + }, + { + code: dedent`const Foo: Map = new Map();`, + optionsSet: [[{ ignoreCollections: true }]], + }, +]; + +export default tests; diff --git a/tests/rules/prefer-tacit.test.ts b/tests/rules/prefer-tacit.test.ts deleted file mode 100644 index 3abe95da3..000000000 --- a/tests/rules/prefer-tacit.test.ts +++ /dev/null @@ -1,223 +0,0 @@ -/** - * @file Tests for prefer-tacit. - */ - -import dedent from "dedent"; -import { RuleTester } from "eslint"; - -import { name, rule } from "~/rules/prefer-tacit"; -import { es6, typescript } from "~/tests/helpers/configs"; -import type { InvalidTestCase, ValidTestCase } from "~/tests/helpers/util"; -import { - describeTsOnly, - processInvalidTestCase, - processValidTestCase, -} from "~/tests/helpers/util"; - -// Valid test cases. -const es6Valid: ReadonlyArray = [ - { - // No typedef for `f` therefore no error (when not assuming types). - code: `const foo = x => f(x);`, - optionsSet: [[]], - }, -]; - -// Valid test cases. -const tsValid: ReadonlyArray = [ - ...es6Valid, - // FunctionDeclaration. - { - code: dedent` - function f(x, y) {} - const foo = x => f(x);`, - optionsSet: [[]], - }, - // FunctionExpression. - { - code: dedent` - const f = function(x, y) {} - const foo = x => f(x);`, - optionsSet: [[]], - }, - // ArrowFunction. - { - code: dedent` - const f = (x, y) => {} - const foo = x => f(x);`, - optionsSet: [[]], - }, - // TypeAlias. - { - code: dedent` - type F = (x, y) => {}; - const f = undefined as unknown as F; - const foo = x => f(x);`, - optionsSet: [[]], - }, -]; - -// Valid test cases. -const es6Invalid: ReadonlyArray = [ - { - // No typedef but assuming types. - // No fixer. - code: `const foo = x => f(x);`, - optionsSet: [[{ assumeTypes: { allowFixer: false } }]], - errors: [ - { - messageId: "generic", - type: "ArrowFunctionExpression", - line: 1, - column: 13, - }, - ], - }, - { - // No typedef but assuming types. - // With fixer. - code: `const foo = x => f(x);`, - optionsSet: [[{ assumeTypes: { allowFixer: true } }]], - output: dedent` - const foo = f;`, - errors: [ - { - messageId: "generic", - type: "ArrowFunctionExpression", - line: 1, - column: 13, - }, - ], - }, - // Default parameters. - { - code: dedent` - function f(x, y = 10) {} - const foo = x => f(x);`, - optionsSet: [[{ assumeTypes: { allowFixer: true } }]], - output: dedent` - function f(x, y = 10) {} - const foo = f;`, - errors: [ - { - messageId: "generic", - type: "ArrowFunctionExpression", - line: 2, - column: 13, - }, - ], - }, -]; - -// Invalid test cases. -const tsInvalid: ReadonlyArray = [ - ...es6Invalid, - // FunctionDeclaration. - { - code: dedent` - function f(x) {} - const foo = x => f(x);`, - optionsSet: [[]], - output: dedent` - function f(x) {} - const foo = f;`, - errors: [ - { - messageId: "generic", - type: "ArrowFunctionExpression", - line: 2, - column: 13, - }, - ], - }, - // FunctionExpression. - { - code: dedent` - const f = function(x) {} - const foo = x => f(x);`, - optionsSet: [[]], - output: dedent` - const f = function(x) {} - const foo = f;`, - errors: [ - { - messageId: "generic", - type: "ArrowFunctionExpression", - line: 2, - column: 13, - }, - ], - }, - // ArrowFunction. - { - code: dedent` - const f = x => {} - const foo = x => f(x);`, - optionsSet: [[]], - output: dedent` - const f = x => {} - const foo = f;`, - errors: [ - { - messageId: "generic", - type: "ArrowFunctionExpression", - line: 2, - column: 13, - }, - ], - }, - // TypeAlias. - { - code: dedent` - type F = (x) => {}; - const f = undefined as unknown as F; - const foo = x => f(x);`, - optionsSet: [[]], - output: dedent` - type F = (x) => {}; - const f = undefined as unknown as F; - const foo = f;`, - errors: [ - { - messageId: "generic", - type: "ArrowFunctionExpression", - line: 3, - column: 13, - }, - ], - }, - // Optional parameters. - { - code: dedent` - function f(x: number, y?: number) {} - const foo = x => f(x);`, - optionsSet: [[]], - output: dedent` - function f(x: number, y?: number) {} - const foo = f;`, - errors: [ - { - messageId: "generic", - type: "ArrowFunctionExpression", - line: 2, - column: 13, - }, - ], - }, -]; - -describeTsOnly("TypeScript", () => { - const ruleTester = new RuleTester(typescript); - ruleTester.run(name, rule, { - valid: processValidTestCase(tsValid), - invalid: processInvalidTestCase(tsInvalid), - }); -}); - -describe("JavaScript (es6)", () => { - const ruleTester = new RuleTester(es6); - ruleTester.run(name, rule, { - valid: processValidTestCase(es6Valid), - invalid: processInvalidTestCase(es6Invalid), - }); -}); diff --git a/tests/rules/prefer-tacit/es3/index.ts b/tests/rules/prefer-tacit/es3/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/prefer-tacit/es3/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/prefer-tacit/es3/invalid.ts b/tests/rules/prefer-tacit/es3/invalid.ts new file mode 100644 index 000000000..9f16fda38 --- /dev/null +++ b/tests/rules/prefer-tacit/es3/invalid.ts @@ -0,0 +1,36 @@ +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // { + // // No typedef but assuming types. + // // No fixer. + // code: "var foo = function(x) { f(x); }", + // optionsSet: [[{ assumeTypes: { allowFixer: false } }]], + // errors: [ + // { + // messageId: "generic", + // type: "ArrowFunctionExpression", + // line: 1, + // column: 13, + // }, + // ], + // }, + // { + // // No typedef but assuming types. + // // With fixer. + // code: "var foo = function(x) { f(x); }", + // optionsSet: [[{ assumeTypes: { allowFixer: true } }]], + // output: dedent` + // var foo = f;`, + // errors: [ + // { + // messageId: "generic", + // type: "ArrowFunctionExpression", + // line: 1, + // column: 13, + // }, + // ], + // }, +]; + +export default tests; diff --git a/tests/rules/prefer-tacit/es3/valid.ts b/tests/rules/prefer-tacit/es3/valid.ts new file mode 100644 index 000000000..d33f71468 --- /dev/null +++ b/tests/rules/prefer-tacit/es3/valid.ts @@ -0,0 +1,16 @@ +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + // No typedef for `f` therefore no error (when not assuming types). + code: "function foo(x) { f(x); }", + optionsSet: [[]], + }, + { + // No typedef for `f` therefore no error (when not assuming types). + code: "var foo = function(x) { f(x); }", + optionsSet: [[]], + }, +]; + +export default tests; diff --git a/tests/rules/prefer-tacit/es6/index.ts b/tests/rules/prefer-tacit/es6/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/prefer-tacit/es6/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/prefer-tacit/es6/invalid.ts b/tests/rules/prefer-tacit/es6/invalid.ts new file mode 100644 index 000000000..b39d623ef --- /dev/null +++ b/tests/rules/prefer-tacit/es6/invalid.ts @@ -0,0 +1,56 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + // No typedef but assuming types. + // No fixer. + code: `const foo = x => f(x);`, + optionsSet: [[{ assumeTypes: { allowFixer: false } }]], + errors: [ + { + messageId: "generic", + type: "ArrowFunctionExpression", + line: 1, + column: 13, + }, + ], + }, + { + // No typedef but assuming types. + // With fixer. + code: `const foo = x => f(x);`, + optionsSet: [[{ assumeTypes: { allowFixer: true } }]], + output: dedent` + const foo = f;`, + errors: [ + { + messageId: "generic", + type: "ArrowFunctionExpression", + line: 1, + column: 13, + }, + ], + }, + // Default parameters. + { + code: dedent` + function f(x, y = 10) {} + const foo = x => f(x);`, + optionsSet: [[{ assumeTypes: { allowFixer: true } }]], + output: dedent` + function f(x, y = 10) {} + const foo = f;`, + errors: [ + { + messageId: "generic", + type: "ArrowFunctionExpression", + line: 2, + column: 13, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/prefer-tacit/es6/valid.ts b/tests/rules/prefer-tacit/es6/valid.ts new file mode 100644 index 000000000..81bbdb06b --- /dev/null +++ b/tests/rules/prefer-tacit/es6/valid.ts @@ -0,0 +1,11 @@ +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + { + // No typedef for `f` therefore no error (when not assuming types). + code: `const foo = x => f(x);`, + optionsSet: [[]], + }, +]; + +export default tests; diff --git a/tests/rules/prefer-tacit/index.test.ts b/tests/rules/prefer-tacit/index.test.ts new file mode 100644 index 000000000..81454a90b --- /dev/null +++ b/tests/rules/prefer-tacit/index.test.ts @@ -0,0 +1,11 @@ +import { name, rule } from "~/rules/prefer-tacit"; +import { testUsing } from "~/tests/helpers/testers"; + +import es3Tests from "./es3"; +import es6Tests from "./es6"; +import tsTests from "./ts"; + +testUsing.typescript(name, rule, tsTests); + +testUsing.es6(name, rule, es6Tests); +testUsing.es3(name, rule, es3Tests); diff --git a/tests/rules/prefer-tacit/ts/index.ts b/tests/rules/prefer-tacit/ts/index.ts new file mode 100644 index 000000000..40a005f71 --- /dev/null +++ b/tests/rules/prefer-tacit/ts/index.ts @@ -0,0 +1,7 @@ +import invalid from "./invalid"; +import valid from "./valid"; + +export default { + valid, + invalid, +}; diff --git a/tests/rules/prefer-tacit/ts/invalid.ts b/tests/rules/prefer-tacit/ts/invalid.ts new file mode 100644 index 000000000..3f1989ccb --- /dev/null +++ b/tests/rules/prefer-tacit/ts/invalid.ts @@ -0,0 +1,100 @@ +import dedent from "dedent"; + +import type { InvalidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // FunctionDeclaration. + { + code: dedent` + function f(x) {} + const foo = x => f(x);`, + optionsSet: [[]], + output: dedent` + function f(x) {} + const foo = f;`, + errors: [ + { + messageId: "generic", + type: "ArrowFunctionExpression", + line: 2, + column: 13, + }, + ], + }, + // FunctionExpression. + { + code: dedent` + const f = function(x) {} + const foo = x => f(x);`, + optionsSet: [[]], + output: dedent` + const f = function(x) {} + const foo = f;`, + errors: [ + { + messageId: "generic", + type: "ArrowFunctionExpression", + line: 2, + column: 13, + }, + ], + }, + // ArrowFunction. + { + code: dedent` + const f = x => {} + const foo = x => f(x);`, + optionsSet: [[]], + output: dedent` + const f = x => {} + const foo = f;`, + errors: [ + { + messageId: "generic", + type: "ArrowFunctionExpression", + line: 2, + column: 13, + }, + ], + }, + // TypeAlias. + { + code: dedent` + type F = (x) => {}; + const f = undefined as unknown as F; + const foo = x => f(x);`, + optionsSet: [[]], + output: dedent` + type F = (x) => {}; + const f = undefined as unknown as F; + const foo = f;`, + errors: [ + { + messageId: "generic", + type: "ArrowFunctionExpression", + line: 3, + column: 13, + }, + ], + }, + // Optional parameters. + { + code: dedent` + function f(x: number, y?: number) {} + const foo = x => f(x);`, + optionsSet: [[]], + output: dedent` + function f(x: number, y?: number) {} + const foo = f;`, + errors: [ + { + messageId: "generic", + type: "ArrowFunctionExpression", + line: 2, + column: 13, + }, + ], + }, +]; + +export default tests; diff --git a/tests/rules/prefer-tacit/ts/valid.ts b/tests/rules/prefer-tacit/ts/valid.ts new file mode 100644 index 000000000..0938daf37 --- /dev/null +++ b/tests/rules/prefer-tacit/ts/valid.ts @@ -0,0 +1,37 @@ +import dedent from "dedent"; + +import type { ValidTestCase } from "~/tests/helpers/util"; + +const tests: ReadonlyArray = [ + // FunctionDeclaration. + { + code: dedent` + function f(x, y) {} + const foo = x => f(x);`, + optionsSet: [[]], + }, + // FunctionExpression. + { + code: dedent` + const f = function(x, y) {} + const foo = x => f(x);`, + optionsSet: [[]], + }, + // ArrowFunction. + { + code: dedent` + const f = (x, y) => {} + const foo = x => f(x);`, + optionsSet: [[]], + }, + // TypeAlias. + { + code: dedent` + type F = (x, y) => {}; + const f = undefined as unknown as F; + const foo = x => f(x);`, + optionsSet: [[]], + }, +]; + +export default tests; diff --git a/yarn.lock b/yarn.lock index 5d3304f2b..0e3887284 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21,27 +21,6 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz" integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== -"@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.12.10" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz" - integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.10" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.5" - "@babel/parser" "^7.12.10" - "@babel/template" "^7.12.7" - "@babel/traverse" "^7.12.10" - "@babel/types" "^7.12.10" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - semver "^5.4.1" - source-map "^0.5.0" - "@babel/core@^7.12.16": version "7.14.8" resolved "https://registry.npmjs.org/@babel/core/-/core-7.14.8.tgz" @@ -63,6 +42,27 @@ semver "^6.3.0" source-map "^0.5.0" +"@babel/core@^7.7.5": + version "7.12.10" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.12.10.tgz" + integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.10" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/eslint-parser@^7.12.16": version "7.14.7" resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.14.7.tgz" @@ -210,11 +210,6 @@ dependencies: "@babel/types" "^7.14.5" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - "@babel/helper-replace-supers@^7.12.1": version "7.12.5" resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz" @@ -314,7 +309,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.7", "@babel/parser@^7.7.0": +"@babel/parser@^7.12.10", "@babel/parser@^7.12.7", "@babel/parser@^7.7.0": version "7.12.10" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.12.10.tgz" integrity sha512-PJdRPwyoOqFAWfLytxrWwGrAxghCgh/yTNCYciOz8QgjflA7aZhECPZAa2VUedKg2+QMWkI0L9lynh2SNmNEgA== @@ -324,91 +319,7 @@ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz" integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA== -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz" - integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.12.1" - resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz" - integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.3.3": +"@babel/template@^7.10.4", "@babel/template@^7.12.7": version "7.12.7" resolved "https://registry.npmjs.org/@babel/template/-/template-7.12.7.tgz" integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== @@ -426,7 +337,7 @@ "@babel/parser" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.7.0": +"@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.7.0": version "7.12.10" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.10.tgz" integrity sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg== @@ -456,7 +367,7 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.7.0": +"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.7.0": version "7.12.10" resolved "https://registry.npmjs.org/@babel/types/-/types-7.12.10.tgz" integrity sha512-sf6wboJV5mGyip2hIpDSKsr80RszPinEFjsHTalMxZAZkoQ2/2yQzxlcFN52SJqsyPfLtPmenL4g2KB3KJXPDw== @@ -473,18 +384,12 @@ "@babel/helper-validator-identifier" "^7.14.8" to-fast-properties "^2.0.0" -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== +"@concordance/react@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@concordance/react/-/react-2.0.0.tgz#aef913f27474c53731f4fd79cc2f54897de90fde" + integrity sha512-huLSkUuM2/P+U0uy2WwlKuixMsTODD8p4JVQBI4VKeopkiN0C7M3N9XYVawb4M+4spN5RrO/eLhk7KoQX6nsfA== dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" + arrify "^1.0.1" "@es-joy/jsdoccomment@0.9.0-alpha.1": version "0.9.0-alpha.1" @@ -535,182 +440,18 @@ js-yaml "^3.13.1" resolve-from "^5.0.0" +"@istanbuljs/nyc-config-typescript@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@istanbuljs/nyc-config-typescript/-/nyc-config-typescript-1.0.1.tgz#55172f5663b3635586add21b14d42ca94a163d58" + integrity sha512-/gz6LgVpky205LuoOfwEZmnUtaSmdk0QIMcNFj9OvxhiMhPpKftMgZmGN7jNj7jR+lr8IB1Yks3QSSSNSxfoaQ== + dependencies: + "@istanbuljs/schema" "^0.1.2" + "@istanbuljs/schema@^0.1.2": version "0.1.2" resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz" - integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^26.6.2" - jest-util "^26.6.2" - slash "^3.0.0" - -"@jest/core@^26.6.3": - version "26.6.3" - resolved "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz" - integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/reporters" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^26.6.2" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-resolve-dependencies "^26.6.3" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - jest-watcher "^26.6.2" - micromatch "^4.0.2" - p-each-series "^2.1.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz" - integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== - dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz" - integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== - dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" - "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -"@jest/globals@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz" - integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/types" "^26.6.2" - expect "^26.6.2" - -"@jest/reporters@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz" - integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.6.2" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^7.0.0" - optionalDependencies: - node-notifier "^8.0.0" - -"@jest/source-map@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz" - integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - -"@jest/test-result@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz" - integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^26.6.3": - version "26.6.3" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz" - integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== - dependencies: - "@jest/test-result" "^26.6.2" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - -"@jest/transform@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz" - integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^26.6.2" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-regex-util "^26.0.0" - jest-util "^26.6.2" - micromatch "^4.0.2" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - "@nodelib/fs.scandir@2.1.3": version "2.1.3" resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz" @@ -788,19 +529,17 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@sinonjs/commons@^1.7.0": - version "1.8.1" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz" - integrity sha512-892K+kWUUi3cl+LlqEWIDrhvLgdL79tECi8JZUyq6IviKy/DNhuzCRlbHUjxK89f4ypPMMaFnFuR9Ie6DoIMsw== - dependencies: - type-detect "4.0.8" +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: - "@sinonjs/commons" "^1.7.0" + defer-to-connect "^1.0.1" "@tootallnate/once@1": version "1.1.2" @@ -827,39 +566,6 @@ resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz" integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.12" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz" - integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.2" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz" - integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.0" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz" - integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.11.0" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.0.tgz" - integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== - dependencies: - "@babel/types" "^7.3.0" - "@types/dedent@^0.7.0": version "0.7.0" resolved "https://registry.npmjs.org/@types/dedent/-/dedent-0.7.0.tgz" @@ -891,40 +597,6 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/graceful-fs@^4.1.2": - version "4.1.4" - resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.4.tgz" - integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.3" - resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz" - integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@26.x", "@types/jest@^26.0.19": - version "26.0.23" - resolved "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz" - integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA== - dependencies: - jest-diff "^26.0.0" - pretty-format "^26.0.0" - "@types/json-schema@*", "@types/json-schema@^7.0.7": version "7.0.7" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz" @@ -962,11 +634,6 @@ resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/prettier@^2.0.0": - version "2.1.5" - resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.1.5.tgz" - integrity sha512-UEyp8LwZ4Dg30kVU2Q3amHHyTn1jEdhCIE59ANed76GaT1Vp76DD3ZWSAxgCrw6wJ0TqeoBpqmfUHiUDPs//HQ== - "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" @@ -981,28 +648,11 @@ dependencies: rollup ">=2.0.0" -"@types/stack-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz" - integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== - "@types/unist@*", "@types/unist@^2.0.2": version "2.0.6" resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== -"@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== - -"@types/yargs@^15.0.0": - version "15.0.11" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.11.tgz" - integrity sha512-jfcNBxHFYJ4nPIacsi3woz1+kvUO6s1CyeEhtnDHBjHUMNj5UlW2GynmnSgiJJEdNg9yW5C8lfoNRZrHGv5EqA== - dependencies: - "@types/yargs-parser" "*" - "@typescript-eslint/eslint-plugin@^4.28.4": version "4.28.4" resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.4.tgz" @@ -1028,7 +678,7 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/experimental-utils@^4.0.1", "@typescript-eslint/experimental-utils@^4.9.1": +"@typescript-eslint/experimental-utils@^4.9.1": version "4.28.1" resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.1.tgz" integrity sha512-n8/ggadrZ+uyrfrSEchx3jgODdmcx7MzVM2sI3cTpI/YlfSm0+9HEUaWw3aQn2urL2KYlWYMDgn45iLfjDYB+Q== @@ -1118,37 +768,24 @@ "@typescript-eslint/types" "4.28.4" eslint-visitor-keys "^2.0.0" -abab@^2.0.3: - version "2.0.5" - resolved "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +acorn-walk@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.1.tgz#3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc" + integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w== -acorn@^7.1.1, acorn@^7.4.0: +acorn@^7.4.0: version "7.4.1" resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.4.1: +acorn@^8.0.4, acorn@^8.4.1: version "8.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== agent-base@5: @@ -1171,7 +808,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: +ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1191,18 +828,30 @@ ajv@^8.0.1: require-from-string "^2.0.2" uri-js "^4.2.2" +ansi-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + dependencies: + string-width "^3.0.0" + ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: +ansi-escapes@^4.3.0: version "4.3.1" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz" integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== dependencies: type-fest "^0.11.0" +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + ansi-regex@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz" @@ -1222,29 +871,30 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz" - integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" + normalize-path "^3.0.0" + picomatch "^2.0.4" -anymatch@^2.0.0: +append-transform@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" + integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" + default-require-extensions "^3.0.0" -anymatch@^3.0.3: - version "3.1.1" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= arg@^4.1.0: version "4.1.3" @@ -1263,27 +913,10 @@ argv@0.0.2: resolved "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz" integrity sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas= -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.0.1, arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= array-includes@^3.1.3: version "3.1.3" @@ -1301,16 +934,6 @@ array-union@^2.1.0: resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - array.prototype.flat@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz" @@ -1320,43 +943,26 @@ array.prototype.flat@^1.2.4: define-properties "^1.1.3" es-abstract "^1.18.0-next.1" -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" +arrgv@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arrgv/-/arrgv-1.0.2.tgz#025ed55a6a433cad9b604f8112fc4292715a6ec0" + integrity sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw== -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async-each@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - auto-changelog@^2.2.1: version "2.3.0" resolved "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.3.0.tgz" @@ -1368,15 +974,67 @@ auto-changelog@^2.2.1: parse-github-url "^1.0.2" semver "^6.3.0" -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== +ava@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/ava/-/ava-3.15.0.tgz#a239658ab1de8a29a243cc902e6b42e4574de2f0" + integrity sha512-HGAnk1SHPk4Sx6plFAUkzV/XC1j9+iQhOzt4vBly18/yo0AV8Oytx7mtJd/CR8igCJ5p160N/Oo/cNJi2uSeWA== + dependencies: + "@concordance/react" "^2.0.0" + acorn "^8.0.4" + acorn-walk "^8.0.0" + ansi-styles "^5.0.0" + arrgv "^1.0.2" + arrify "^2.0.1" + callsites "^3.1.0" + chalk "^4.1.0" + chokidar "^3.4.3" + chunkd "^2.0.1" + ci-info "^2.0.0" + ci-parallel-vars "^1.0.1" + clean-yaml-object "^0.1.0" + cli-cursor "^3.1.0" + cli-truncate "^2.1.0" + code-excerpt "^3.0.0" + common-path-prefix "^3.0.0" + concordance "^5.0.1" + convert-source-map "^1.7.0" + currently-unhandled "^0.4.1" + debug "^4.3.1" + del "^6.0.0" + emittery "^0.8.0" + equal-length "^1.0.0" + figures "^3.2.0" + globby "^11.0.1" + ignore-by-default "^2.0.0" + import-local "^3.0.2" + indent-string "^4.0.0" + is-error "^2.2.2" + is-plain-object "^5.0.0" + is-promise "^4.0.0" + lodash "^4.17.20" + matcher "^3.0.0" + md5-hex "^3.0.1" + mem "^8.0.0" + ms "^2.1.3" + ora "^5.2.0" + p-event "^4.2.0" + p-map "^4.0.0" + picomatch "^2.2.2" + pkg-conf "^3.1.0" + plur "^4.0.0" + pretty-ms "^7.0.1" + read-pkg "^5.2.0" + resolve-cwd "^3.0.0" + slash "^3.0.0" + source-map-support "^0.5.19" + stack-utils "^2.0.3" + strip-ansi "^6.0.0" + supertap "^2.0.0" + temp-dir "^2.0.0" + trim-off-newlines "^1.0.1" + update-notifier "^5.0.1" + write-file-atomic "^3.0.3" + yargs "^16.2.0" babel-eslint@^10.0.2: version "10.1.0" @@ -1390,111 +1048,48 @@ babel-eslint@^10.0.2: eslint-visitor-keys "^1.0.0" resolve "^1.12.0" -babel-jest@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz" - integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== - dependencies: - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz" - integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz" - integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz" - integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== - dependencies: - babel-plugin-jest-hoist "^26.6.2" - babel-preset-current-node-syntax "^1.0.0" - -babel-runtime@^6.9.2: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base@^0.11.1: - version "0.11.2" - resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: - tweetnacl "^0.14.3" + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +blueimp-md5@^2.10.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.18.0.tgz#1152be1335f0c6b3911ed9e36db54f3e6ac52935" + integrity sha512-vE52okJvzsVWhcgUHOv+69OG3Mdg151xyn41aVQN/5W5S+S43qZhxECtYLAEHMSFWX6Mv5IZrzj3T5+JqXfj5Q== -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== +boxen@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b" + integrity sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA== dependencies: - file-uri-to-path "1.0.0" + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.0" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" brace-expansion@^1.1.7: version "1.1.11" @@ -1504,43 +1099,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1: +braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - browserslist@^4.16.6: version "4.16.6" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz" @@ -1552,25 +1117,24 @@ browserslist@^4.16.6: escalade "^3.1.1" node-releases "^1.1.71" -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" +buf-compare@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" + integrity sha1-/vKNqLgROgoNtEMLC2Rntpcws0o= -bser@2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@1.x, buffer-from@^1.0.0: +buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + builtin-modules@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz" @@ -1588,20 +1152,28 @@ builtins@^2.0.0: dependencies: semver "^6.0.0" -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +caching-transform@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" + integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== + dependencies: + hasha "^5.0.0" + make-dir "^3.0.0" + package-hash "^4.0.0" + write-file-atomic "^3.0.0" call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" @@ -1611,9 +1183,9 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -callsites@^3.0.0: +callsites@^3.0.0, callsites@^3.1.0: version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase@^5.0.0, camelcase@^5.3.1: @@ -1621,9 +1193,9 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: +camelcase@^6.2.0: version "6.2.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-lite@^1.0.30001219: @@ -1631,18 +1203,6 @@ caniuse-lite@^1.0.30001219: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001246.tgz" integrity sha512-Tc+ff0Co/nFNbLOrziBXmMVtpt9S2c2Y+Z9Nk9Khj09J+0zR9ejvIW5qkZAErCbOrVODCx/MN+GpB5FNBs5GFA== -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - chalk@^2.0.0: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" @@ -1660,11 +1220,6 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - character-entities-legacy@^1.0.0: version "1.1.4" resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" @@ -1680,21 +1235,25 @@ character-reference-invalid@^1.0.0: resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== -chokidar@^1.6.0: - version "1.7.0" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz" - integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" +chokidar@^3.4.3: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "^1.0.0" + fsevents "~2.3.2" + +chunkd@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/chunkd/-/chunkd-2.0.1.tgz#49cd1d7b06992dc4f7fccd962fe2a101ee7da920" + integrity sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ== ci-info@^2.0.0: version "2.0.0" @@ -1706,20 +1265,10 @@ ci-info@^3.2.0: resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz" integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== -cjs-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz" - integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" +ci-parallel-vars@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ci-parallel-vars/-/ci-parallel-vars-1.0.1.tgz#e87ff0625ccf9d286985b29b4ada8485ca9ffbc2" + integrity sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg== clean-regexp@^1.0.0: version "1.0.0" @@ -1733,6 +1282,16 @@ clean-stack@^2.0.0: resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== +clean-yaml-object@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz#63fb110dc2ce1a84dc21f6d9334876d010ae8b68" + integrity sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g= + +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" @@ -1740,6 +1299,11 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" +cli-spinners@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" + integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== + cli-truncate@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" @@ -1757,10 +1321,33 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +code-excerpt@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-3.0.0.tgz#fcfb6748c03dba8431c19f5474747fad3f250f10" + integrity sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw== + dependencies: + convert-to-spaces "^1.0.1" codecov@^3.8.1: version "3.8.1" @@ -1773,19 +1360,6 @@ codecov@^3.8.1: teeny-request "6.0.1" urlgrey "0.4.4" -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" @@ -1815,13 +1389,6 @@ colorette@^1.2.2: resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - commander@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz" @@ -1837,42 +1404,66 @@ comment-parser@1.1.6-beta.0: resolved "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.6-beta.0.tgz" integrity sha512-q3cA8TSMyqW7wcPSYWzbO/rMahnXgzs4SLG/UIWXdEsnXTFPZkEkWAdNgPiHig2OzxgpPLOh4WwsmClDxndwHw== +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +concordance@^5.0.1: + version "5.0.4" + resolved "https://registry.yarnpkg.com/concordance/-/concordance-5.0.4.tgz#9896073261adced72f88d60e4d56f8efc4bbbbd2" + integrity sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw== + dependencies: + date-time "^3.1.0" + esutils "^2.0.3" + fast-diff "^1.2.0" + js-string-escape "^1.0.1" + lodash "^4.17.15" + md5-hex "^3.0.1" + semver "^7.3.2" + well-known-symbols "^2.0.0" + +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== + dependencies: + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" + +convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js@^2.4.0: - version "2.6.12" - resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-util-is@1.0.2, core-util-is@~1.0.0: +convert-to-spaces@^1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" + integrity sha1-fj5Iu+bZl7FBfdyihoIEtNPYVxU= + +core-assert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f" + integrity sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8= + dependencies: + buf-compare "^1.0.0" + is-error "^2.2.0" cosmiconfig@^7.0.0: version "7.0.0" @@ -1885,23 +1476,6 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cpx@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz" - integrity sha1-GFvgGFEdhycN7czCkxceN2VauI8= - dependencies: - babel-runtime "^6.9.2" - chokidar "^1.6.0" - duplexer "^0.1.1" - glob "^7.0.5" - glob2base "^0.0.12" - minimatch "^3.0.2" - mkdirp "^0.5.1" - resolve "^1.1.7" - safe-buffer "^5.0.1" - shell-quote "^1.6.1" - subarg "^1.0.0" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" @@ -1914,17 +1488,6 @@ cross-env@^7.0.3: dependencies: cross-spawn "^7.0.1" -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" @@ -1934,38 +1497,24 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= dependencies: - assert-plus "^1.0.0" + array-find-index "^1.0.1" -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== +date-time@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/date-time/-/date-time-3.1.0.tgz#0d1e934d170579f481ed8df1e2b8ff70ee845e1e" + integrity sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg== dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" + time-zone "^1.0.0" debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1: version "4.3.1" @@ -1974,7 +1523,7 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1: dependencies: ms "2.1.2" -debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: +debug@^2.6.9: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -2000,31 +1549,59 @@ decamelize@^1.2.0: resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decimal.js@^10.2.0: - version "10.2.1" - resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz" - integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" dedent@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= -deep-is@^0.1.3, deep-is@~0.1.3: +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3: version "0.1.3" resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deep-strict-equal@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz#4a078147a8ab57f6a0d4f5547243cd22f44eb4e4" + integrity sha1-SgeBR6irV/ag1PVUckPNIvROtOQ= + dependencies: + core-assert "^0.2.0" + deepmerge@^4.0.0, deepmerge@^4.2.2: version "4.2.2" resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +default-require-extensions@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" + integrity sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg== + dependencies: + strip-bom "^4.0.0" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" @@ -2032,42 +1609,19 @@ define-properties@^1.1.3: dependencies: object-keys "^1.0.12" -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== +del@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-6.0.0.tgz#0b40d0332cea743f1614f818be4feb717714c952" + integrity sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ== dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" diff@^4.0.1: version "4.0.2" @@ -2095,35 +1649,32 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: - webidl-conversions "^5.0.0" - -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + is-obj "^2.0.0" -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= electron-to-chromium@^1.3.723: version "1.3.784" resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.784.tgz" integrity sha512-JTPxdUibkefeomWNaYs8lI/x/Zb4cOhZWX+d7kpzsNKzUd07pNuo/AcHeNJ/qgEchxM1IAxda9aaGUhKN/poOg== -emittery@^0.7.1: - version "0.7.2" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz" - integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== +emittery@^0.8.0: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== emoji-regex@^8.0.0: version "8.0.0" @@ -2137,6 +1688,13 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enhance-visitors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/enhance-visitors/-/enhance-visitors-1.0.0.tgz#aa945d05da465672a1ebd38fee2ed3da8518e95a" + integrity sha1-qpRdBdpGVnKh69OP7i7T2oUY6Vo= + dependencies: + lodash "^4.13.1" + enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" @@ -2144,6 +1702,11 @@ enquirer@^2.3.5, enquirer@^2.3.6: dependencies: ansi-colors "^4.1.1" +equal-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c" + integrity sha1-IcoRLUirJLTh5//A5TOdMf38J0w= + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" @@ -2202,11 +1765,21 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es6-error@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" @@ -2222,17 +1795,10 @@ escape-string-regexp@^4.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^1.14.1: - version "1.14.3" - resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" +eslint-ava-rule-tester@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-ava-rule-tester/-/eslint-ava-rule-tester-4.0.0.tgz#f64124bd971b256f77d6dbfdbf57bd770a0ea326" + integrity sha512-bR0ogk+1Orb/+rj17MyuRObhcepqAXnwQJUpPO0pdTLwwdzjOqzqyWl4o/kHQTnwCOwcGvkBPS59KVbbCFCVRg== eslint-config-prettier@^8.3.0: version "8.3.0" @@ -2266,6 +1832,21 @@ eslint-module-utils@^2.6.1: debug "^3.2.7" pkg-dir "^2.0.0" +eslint-plugin-ava@^12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-ava/-/eslint-plugin-ava-12.0.0.tgz#451f0fe4a86db3b43e017db83401ea9de4221e52" + integrity sha512-v8/GY1IWQn2nOBdVtD/6e0Y6A9PRFjY86a1m5r5FUel+C7iyoQVt7gKqaAc1iRXcQkZq2DDG0aTiQptgnq51cA== + dependencies: + deep-strict-equal "^0.2.0" + enhance-visitors "^1.0.0" + eslint-utils "^2.1.0" + espree "^7.3.1" + espurify "^2.0.1" + import-modules "^2.1.0" + micro-spelling-correcter "^1.1.1" + pkg-dir "^5.0.0" + resolve-from "^5.0.0" + eslint-plugin-es@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz" @@ -2310,13 +1891,6 @@ eslint-plugin-import@^2.23.4: resolve "^1.20.0" tsconfig-paths "^3.9.0" -eslint-plugin-jest@^24.4.0: - version "24.4.0" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.4.0.tgz" - integrity sha512-8qnt/hgtZ94E9dA6viqfViKBfkJwFHXgJmTWlMGDgunw1XJEGqm3eiPjDsTanM3/u/3Az82nyQM9GX7PM/QGmg== - dependencies: - "@typescript-eslint/experimental-utils" "^4.0.1" - eslint-plugin-jsdoc@^35.5.1: version "35.5.1" resolved "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-35.5.1.tgz" @@ -2510,11 +2084,16 @@ espree@^8.0.0: acorn-jsx "^5.3.1" eslint-visitor-keys "^3.0.0" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +espurify@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/espurify/-/espurify-2.1.1.tgz#afb043f22fac908d991dd25f7bf40bcf03935b9c" + integrity sha512-zttWvnkhcDyGOhSH4vO2qCBILpdCMv/MX8lp4cqgRkQoDRGK2oZxi2GfWhlP2dIXmk7BaKeOTuzbHhyC68o8XQ== + esquery@^1.3.1, esquery@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" @@ -2529,7 +2108,7 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.1.1: version "4.3.0" resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== @@ -2549,30 +2128,12 @@ estree-walker@^2.0.1: resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== -esutils@^2.0.2: +esutils@^2.0.2, esutils@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^4.0.0, execa@^4.1.0: +execa@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== @@ -2587,109 +2148,14 @@ execa@^4.0.0, execa@^4.1.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - -expect@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz" - integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== - dependencies: - "@jest/types" "^26.6.2" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-diff@^1.1.2: +fast-diff@^1.1.2, fast-diff@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-glob@^3.1.1: @@ -2704,12 +2170,12 @@ fast-glob@^3.1.1: micromatch "^4.0.2" picomatch "^2.2.1" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -2721,13 +2187,6 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - figures@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" @@ -2742,37 +2201,6 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - fill-range@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" @@ -2780,10 +2208,14 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-index@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz" - integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ= +find-cache-dir@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" @@ -2792,6 +2224,13 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" @@ -2800,6 +2239,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" @@ -2813,53 +2260,25 @@ flatted@^3.1.0: resolved "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz" integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" + cross-spawn "^7.0.0" + signal-exit "^3.0.2" -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" +fromentries@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" + integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.0.0: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.1.2, fsevents@~2.3.2: +fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -2879,9 +2298,9 @@ gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: @@ -2903,62 +2322,28 @@ get-package-type@^0.1.0: resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== -get-stream@^4.0.0: +get-stream@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" -get-stream@^5.0.0: +get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - -glob-parent@^5.1.0, glob-parent@^5.1.2: +glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" -glob2base@^0.0.12: - version "0.0.12" - resolved "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz" - integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY= - dependencies: - find-index "^0.1.1" - -glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.7" resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -2970,6 +2355,13 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl once "^1.3.0" path-is-absolute "^1.0.0" +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== + dependencies: + ini "2.0.0" + globals@^11.1.0: version "11.12.0" resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" @@ -2982,7 +2374,7 @@ globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" -globby@^11.0.3: +globby@^11.0.1, globby@^11.0.3: version "11.0.4" resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz" integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== @@ -2994,16 +2386,33 @@ globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.2.4: +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.15: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +graceful-fs@^4.1.2, graceful-fs@^4.2.4: version "4.2.4" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - handlebars@^4.7.3: version "4.7.6" resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz" @@ -3016,19 +2425,6 @@ handlebars@^4.7.3: optionalDependencies: uglify-js "^3.1.4" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" @@ -3054,36 +2450,10 @@ has-symbols@^1.0.2: resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== has@^1.0.3: version "1.0.3" @@ -3092,23 +2462,29 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasha@^5.0.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" + integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== + dependencies: + is-stream "^2.0.0" + type-fest "^0.8.0" + hosted-git-info@^2.1.4: version "2.8.8" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + http-proxy-agent@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" @@ -3118,15 +2494,6 @@ http-proxy-agent@^4.0.0: agent-base "6" debug "4" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - https-proxy-agent@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz" @@ -3145,12 +2512,15 @@ husky@^6.0.0: resolved "https://registry.npmjs.org/husky/-/husky-6.0.0.tgz" integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ== -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore-by-default@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-2.0.0.tgz#537092018540640459569fe7c8c7a408af581146" + integrity sha512-+mQSgMRiFD3L3AOxLYOCxjIq4OnAmo5CIuC+lj5ehCJcPtV++QacEV7FdpzvYxH6DaOySWzQU6RR0lPLy37ckA== ignore-walk@3.0.3: version "3.0.3" @@ -3177,6 +2547,11 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + import-local@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz" @@ -3185,7 +2560,12 @@ import-local@^3.0.2: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" -imurmurhash@^0.1.4: +import-modules@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-modules/-/import-modules-2.1.0.tgz#abe7df297cb6c1f19b57246eb8b8bd9664b6d8c2" + integrity sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A== + +imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= @@ -3203,34 +2583,30 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +ini@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + interpret@^1.0.0: version "1.4.0" resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" +irregular-plurals@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-3.3.0.tgz#67d0715d4361a60d9fd9ee80af3881c631a31ee2" + integrity sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g== is-alphabetical@^1.0.0: version "1.0.4" @@ -3255,12 +2631,12 @@ is-bigint@^1.0.1: resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz" integrity sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA== -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - binary-extensions "^1.0.0" + binary-extensions "^2.0.0" is-boolean-object@^1.1.0: version "1.1.1" @@ -3269,11 +2645,6 @@ is-boolean-object@^1.1.0: dependencies: call-bind "^1.0.2" -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - is-builtin-module@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz" @@ -3312,20 +2683,6 @@ is-core-module@^2.2.0, is-core-module@^2.4.0: dependencies: has "^1.0.3" -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - is-date-object@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz" @@ -3336,81 +2693,27 @@ is-decimal@^1.0.0: resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= +is-error@^2.2.0, is-error@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.2.tgz#c10ade187b3c93510c5470a5567833ee25649843" + integrity sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg== is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -3422,6 +2725,19 @@ is-hexadecimal@^1.0.0: resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== + dependencies: + global-dirs "^3.0.0" + is-path-inside "^3.0.2" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" @@ -3432,30 +2748,16 @@ is-negative-zero@^2.0.1: resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz" integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== +is-npm@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" + integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== + is-number-object@^1.0.4: version "1.0.5" resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz" integrity sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw== -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" @@ -3466,27 +2768,30 @@ is-obj@^1.0.1: resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== -is-potential-custom-element-name@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz" - integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-promise@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" + integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== is-reference@^1.2.1: version "1.2.1" @@ -3515,11 +2820,6 @@ is-regexp@^1.0.0: resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - is-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz" @@ -3549,56 +2849,44 @@ is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== isexe@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^3.0.0: +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: version "3.0.0" resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: +istanbul-lib-hook@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" + integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== + dependencies: + append-transform "^2.0.0" + +istanbul-lib-instrument@^4.0.0: version "4.0.3" resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz" integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== @@ -3608,6 +2896,19 @@ istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: istanbul-lib-coverage "^3.0.0" semver "^6.3.0" +istanbul-lib-processinfo@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz#e1426514662244b2f25df728e8fd1ba35fe53b9c" + integrity sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw== + dependencies: + archy "^1.0.0" + cross-spawn "^7.0.0" + istanbul-lib-coverage "^3.0.0-alpha.1" + make-dir "^3.0.0" + p-map "^3.0.0" + rimraf "^3.0.0" + uuid "^3.3.3" + istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" @@ -3634,378 +2935,10 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz" - integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== - dependencies: - "@jest/types" "^26.6.2" - execa "^4.0.0" - throat "^5.0.0" - -jest-cli@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz" - integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== - dependencies: - "@jest/core" "^26.6.3" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.6.3" - jest-util "^26.6.2" - jest-validate "^26.6.2" - prompts "^2.0.1" - yargs "^15.4.1" - -jest-config@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz" - integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.3" - "@jest/types" "^26.6.2" - babel-jest "^26.6.3" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.2" - jest-environment-node "^26.6.2" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.3" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - micromatch "^4.0.2" - pretty-format "^26.6.2" - -jest-diff@^26.0.0, jest-diff@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz" - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== - dependencies: - detect-newline "^3.0.0" - -jest-each@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz" - integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.6.2" - pretty-format "^26.6.2" - -jest-environment-jsdom@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz" - integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - jsdom "^16.4.0" - -jest-environment-node@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz" - integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-haste-map@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz" - integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== - dependencies: - "@jest/types" "^26.6.2" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz" - integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^26.6.2" - is-generator-fn "^2.0.0" - jest-each "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - pretty-format "^26.6.2" - throat "^5.0.0" - -jest-leak-detector@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz" - integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== - dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-matcher-utils@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz" - integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== - dependencies: - chalk "^4.0.0" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz" - integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" - slash "^3.0.0" - stack-utils "^2.0.2" - -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz" - integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz" - integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== - -jest-resolve-dependencies@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz" - integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== - dependencies: - "@jest/types" "^26.6.2" - jest-regex-util "^26.0.0" - jest-snapshot "^26.6.2" - -jest-resolve@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz" - integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.6.2" - read-pkg-up "^7.0.1" - resolve "^1.18.1" - slash "^3.0.0" - -jest-runner@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz" - integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-docblock "^26.0.0" - jest-haste-map "^26.6.2" - jest-leak-detector "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - jest-runtime "^26.6.3" - jest-util "^26.6.2" - jest-worker "^26.6.2" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz" - integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/globals" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - cjs-module-lexer "^0.6.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.4.1" - -jest-serializer@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz" - integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz" - integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.0.0" - chalk "^4.0.0" - expect "^26.6.2" - graceful-fs "^4.2.4" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - natural-compare "^1.4.0" - pretty-format "^26.6.2" - semver "^7.3.2" - -jest-util@^26.1.0, jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz" - integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" - -jest-validate@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== - dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.6.2" - -jest-watcher@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz" - integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== - dependencies: - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^26.6.2" - string-length "^4.0.1" - -jest-worker@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@^26.6.3: - version "26.6.3" - resolved "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz" - integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== - dependencies: - "@jest/core" "^26.6.3" - import-local "^3.0.2" - jest-cli "^26.6.3" +js-string-escape@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef" + integrity sha1-4mJbrbwNZ8dTPp7cEGjFh65BN+8= js-tokens@^4.0.0: version "4.0.0" @@ -4020,61 +2953,29 @@ js-yaml@3.14.0: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.13.1: +js-yaml@^3.13.1, js-yaml@^3.14.0: version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - jsdoc-type-pratt-parser@1.0.4, jsdoc-type-pratt-parser@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.0.4.tgz" integrity sha512-jzmW9gokeq9+bHPDR1nCeidMyFUikdZlbOhKzh9+/nJqB75XhpNKec1/UuxW5c4+O+Pi31Gc/dCboyfSm/pSpQ== -jsdom@^16.4.0: - version "16.4.0" - resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.4.0.tgz" - integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== - dependencies: - abab "^2.0.3" - acorn "^7.1.1" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.2.0" - data-urls "^2.0.0" - decimal.js "^10.2.0" - domexception "^2.0.1" - escodegen "^1.14.1" - html-encoding-sniffer "^2.0.1" - is-potential-custom-element-name "^1.0.0" - nwsapi "^2.2.0" - parse5 "5.1.1" - request "^2.88.2" - request-promise-native "^1.0.8" - saxes "^5.0.0" - symbol-tree "^3.2.4" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - ws "^7.2.3" - xml-name-validator "^3.0.0" - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" @@ -4095,11 +2996,6 @@ json-schema-traverse@^1.0.0: resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - json-schema@^0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.3.0.tgz" @@ -4110,18 +3006,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json5@2.x, json5@^2.1.2: - version "2.1.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" - json5@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" @@ -4129,6 +3013,13 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + json5@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz" @@ -4136,49 +3027,24 @@ json5@^2.2.0: dependencies: minimist "^1.2.5" -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" +jsonc-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" + integrity sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA== -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: - is-buffer "^1.1.5" + json-buffer "3.0.0" -kind-of@^5.0.0: +latest-version@^5.1.0: version "5.1.0" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" levn@^0.4.1: version "0.4.1" @@ -4188,14 +3054,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz" @@ -4246,6 +3104,17 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" +load-json-file@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-5.3.0.tgz#4d3c1e01fa1c03ea78a60ac7af932c9ce53403f3" + integrity sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw== + dependencies: + graceful-fs "^4.1.15" + parse-json "^4.0.0" + pify "^4.0.1" + strip-bom "^3.0.0" + type-fest "^0.3.0" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" @@ -4254,6 +3123,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" @@ -4261,34 +3138,36 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@^4.17.19, lodash@^4.17.21: +lodash@^4.13.1, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21: version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@^4.0.0: @@ -4298,6 +3177,14 @@ log-symbols@^4.0.0: dependencies: chalk "^4.0.0" +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + log-update@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz" @@ -4308,6 +3195,16 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" @@ -4322,41 +3219,38 @@ magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.4" -make-dir@^3.0.0: +make-dir@^3.0.0, make-dir@^3.0.2: version "3.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" -make-error@1.x, make-error@^1.1.1: +make-error@^1.1.1: version "1.3.6" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= +map-age-cleaner@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + p-defer "^1.0.0" -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= +matcher@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" + integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== dependencies: - object-visit "^1.0.0" + escape-string-regexp "^4.0.0" -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== +md5-hex@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-3.0.1.tgz#be3741b510591434b2784d79e556eefc2c9a8e5c" + integrity sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw== + dependencies: + blueimp-md5 "^2.10.0" mdast-util-from-markdown@^0.8.5: version "0.8.5" @@ -4374,6 +3268,14 @@ mdast-util-to-string@^2.0.0: resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz" integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== +mem@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" + integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== + dependencies: + map-age-cleaner "^0.1.3" + mimic-fn "^3.1.0" + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" @@ -4384,6 +3286,11 @@ merge2@^1.3.0: resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +micro-spelling-correcter@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/micro-spelling-correcter/-/micro-spelling-correcter-1.1.1.tgz#805a06a26ccfcad8f3e5c6a1ac5ff29d4530166e" + integrity sha512-lkJ3Rj/mtjlRcHk6YyCbvZhyWTOzdBvTHsxMmZSk5jxN1YyVSQ+JETAom55mdzfcyDrY/49Z7UCW760BK30crg== + micromark@~2.11.0: version "2.11.4" resolved "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz" @@ -4392,44 +3299,6 @@ micromark@~2.11.0: debug "^4.0.0" parse-entities "^2.0.0" -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - micromatch@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz" @@ -4438,55 +3307,33 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.27" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@^3.0.2, minimatch@^3.0.4: +mimic-fn@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@1.x: - version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mkdirp@^0.5.1: - version "0.5.5" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -4497,9 +3344,9 @@ ms@2.1.2: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@^2.1.1, ms@^2.1.3: version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multimap@^1.1.0: @@ -4507,28 +3354,6 @@ multimap@^1.1.0: resolved "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz" integrity sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw== -nan@^2.12.1: - version "2.14.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" - integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" @@ -4539,37 +3364,17 @@ neo-async@^2.6.0: resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - node-fetch@^2.2.0, node-fetch@^2.6.0: version "2.6.1" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.0.tgz" - integrity sha512-46z7DUmcjoYdaWyXouuFNNfUo6eFa94t23c53c+lG/9Cvauk4a98rAUp9672X5dxGdQmLpPzTxzu8f/OeEPaFA== +node-preload@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" + integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" + process-on-spawn "^1.0.0" node-releases@^1.1.71: version "1.1.73" @@ -4586,24 +3391,15 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== npm-run-path@^4.0.0: version "4.0.1" @@ -4612,24 +3408,38 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= +nyc@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" + integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + caching-transform "^4.0.0" + convert-source-map "^1.7.0" + decamelize "^1.2.0" + find-cache-dir "^3.2.0" + find-up "^4.1.0" + foreground-child "^2.0.0" + get-package-type "^0.1.0" + glob "^7.1.6" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-hook "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-processinfo "^2.0.2" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + make-dir "^3.0.0" + node-preload "^0.2.1" + p-map "^3.0.0" + process-on-spawn "^1.0.0" + resolve-from "^5.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + spawn-wrap "^2.0.0" + test-exclude "^6.0.0" + yargs "^15.0.2" object-inspect@^1.10.3: version "1.11.0" @@ -4646,13 +3456,6 @@ object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - object.assign@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" @@ -4663,21 +3466,6 @@ object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - object.values@^1.1.3: version "1.1.4" resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz" @@ -4701,18 +3489,6 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - optionator@^0.9.1: version "0.9.1" resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" @@ -4725,10 +3501,37 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== +ora@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-event@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" + integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== + dependencies: + p-timeout "^3.1.0" p-finally@^1.0.0: version "1.0.0" @@ -4742,13 +3545,20 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" @@ -4756,6 +3566,13 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" @@ -4763,6 +3580,20 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + p-map@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" @@ -4770,6 +3601,13 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" +p-timeout@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" @@ -4780,6 +3618,26 @@ p-try@^2.0.0: resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-hash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" + integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== + dependencies: + graceful-fs "^4.1.15" + hasha "^5.0.0" + lodash.flattendeep "^4.4.0" + release-zalgo "^1.0.0" + +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" @@ -4804,16 +3662,6 @@ parse-github-url@^1.0.2: resolved "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz" integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" @@ -4832,15 +3680,10 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse5@5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +parse-ms@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" + integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== path-exists@^3.0.0: version "3.0.0" @@ -4857,11 +3700,6 @@ path-is-absolute@^1.0.0: resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" @@ -4884,11 +3722,6 @@ path-type@^4.0.0: resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: version "2.2.2" resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz" @@ -4899,12 +3732,18 @@ pify@^3.0.0: resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pirates@^4.0.1: +pify@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pkg-conf@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-3.1.0.tgz#d9f9c75ea1bae0e77938cde045b276dac7cc69ae" + integrity sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ== dependencies: - node-modules-regexp "^1.0.0" + find-up "^3.0.0" + load-json-file "^5.2.0" pkg-dir@^2.0.0: version "2.0.0" @@ -4913,13 +3752,20 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" -pkg-dir@^4.2.0: +pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz" @@ -4934,30 +3780,27 @@ please-upgrade-node@^3.2.0: dependencies: semver-compare "^1.0.0" +plur@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/plur/-/plur-4.0.0.tgz#729aedb08f452645fe8c58ef115bf16b0a73ef84" + integrity sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg== + dependencies: + irregular-plurals "^3.2.0" + pluralize@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= prettier-linter-helpers@^1.0.0: version "1.0.0" @@ -4971,39 +3814,25 @@ prettier@^2.2.1: resolved "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz" integrity sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ== -pretty-format@^26.0.0, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== +pretty-ms@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" + integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" + parse-ms "^2.1.0" -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process-on-spawn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" + integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== + dependencies: + fromentries "^1.2.0" progress@^2.0.0: version "2.0.3" resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -prompts@^2.0.1: - version "2.4.0" - resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz" - integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - pump@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" @@ -5012,29 +3841,27 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.1.1" resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== +pupa@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" + escape-goat "^2.0.0" -react-is@^17.0.1: - version "17.0.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.1.tgz" - integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== +rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" read-pkg-up@^3.0.0: version "3.0.0" @@ -5072,27 +3899,21 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.2: - version "2.3.7" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== +readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" -readdirp@^2.0.0: - version "2.2.1" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" + picomatch "^2.2.1" rechoir@^0.6.2: version "0.6.2" @@ -5101,26 +3922,6 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - regexp-tree@^0.1.20, regexp-tree@^0.1.23, regexp-tree@~0.1.1: version "0.1.23" resolved "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.23.tgz" @@ -5136,62 +3937,26 @@ regextras@^0.8.0: resolved "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz" integrity sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ== -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.5.2, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= +registry-auth-token@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== + dependencies: + rc "^1.2.8" -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== dependencies: - lodash "^4.17.19" + rc "^1.2.8" -request-promise-native@^1.0.8: - version "1.0.9" - resolved "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" +release-zalgo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" + integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= + dependencies: + es6-error "^4.0.1" require-directory@^2.1.1: version "2.1.1" @@ -5230,12 +3995,7 @@ resolve-from@^5.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.19.0: version "1.19.0" resolved "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz" integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== @@ -5251,6 +4011,13 @@ resolve@^1.10.1, resolve@^1.20.0: is-core-module "^2.2.0" path-parse "^1.0.6" +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" @@ -5259,11 +4026,6 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - reusify@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" @@ -5293,11 +4055,6 @@ rollup@>=2.0.0, rollup@^2.34.2: optionalDependencies: fsevents "~2.3.2" -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - run-parallel@^1.1.9: version "1.1.10" resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz" @@ -5310,22 +4067,15 @@ rxjs@^6.6.3: dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.2: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex@^2.1.1: version "2.1.1" @@ -5339,84 +4089,54 @@ safe-resolve@^1.0.0: resolved "https://registry.npmjs.org/safe-resolve/-/safe-resolve-1.0.0.tgz" integrity sha1-/jT40p16O+z9JJ0KqKeZtcPPZVk= -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -saxes@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== + dependencies: + semver "^6.3.0" + "semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: version "5.7.1" resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.x, semver@^7.2.1: +semver@^6.0.0, semver@^6.1.0, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.2.1: version "7.3.4" resolved "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.2, semver@^7.3.5: +semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: lru-cache "^6.0.0" +serialize-error@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" + integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== + dependencies: + type-fest "^0.13.1" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" @@ -5424,21 +4144,11 @@ shebang-command@^2.0.0: dependencies: shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.6.1: - version "1.7.2" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - shelljs@^0.8.3: version "0.8.4" resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz" @@ -5448,21 +4158,11 @@ shelljs@^0.8.3: interpret "^1.0.0" rechoir "^0.6.2" -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - slash@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" @@ -5486,80 +4186,41 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.17, source-map-support@^0.5.6: +source-map-support@^0.5.17, source-map-support@^0.5.19: version "0.5.19" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.6: +source-map@^0.5.0: version "0.5.7" resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - sourcemap-codec@^1.4.4: version "1.4.8" resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== +spawn-wrap@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" + integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== + dependencies: + foreground-child "^2.0.0" + is-windows "^1.0.2" + make-dir "^3.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + which "^2.0.1" + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" @@ -5586,53 +4247,18 @@ spdx-license-ids@^3.0.0: resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz" integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stack-utils@^2.0.2: +stack-utils@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== dependencies: escape-string-regexp "^2.0.0" -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - stream-events@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz" @@ -5645,12 +4271,22 @@ string-argv@0.3.1: resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -string-length@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.1.tgz" - integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.0.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== dependencies: - char-regex "^1.0.2" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" string-width@^4.1.0, string-width@^4.2.0: @@ -5678,12 +4314,12 @@ string.prototype.trimstart@^1.0.3, string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - safe-buffer "~5.1.0" + safe-buffer "~5.2.0" stringify-object@^3.3.0: version "3.3.0" @@ -5694,6 +4330,13 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + strip-ansi@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" @@ -5711,11 +4354,6 @@ strip-bom@^4.0.0: resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" @@ -5726,17 +4364,26 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + stubs@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz" integrity sha1-6NK6H6nJBXAwPAMLaQD31fiavls= -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz" - integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= +supertap@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supertap/-/supertap-2.0.0.tgz#8b587d6e14b8e885fa5183a9c45abf429feb9f7f" + integrity sha512-jRzcXlCeDYvKoZGA5oRhYyR3jUIYu0enkSxtmAgHRlD7HwrovTpH4bDSi0py9FtuA8si9cW/fKommJHuaoDHJA== dependencies: - minimist "^1.1.0" + arrify "^2.0.1" + indent-string "^4.0.0" + js-yaml "^3.14.0" + serialize-error "^7.0.1" + strip-ansi "^6.0.0" supports-color@^5.3.0: version "5.5.0" @@ -5745,26 +4392,13 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - table@^6.0.9: version "6.7.1" resolved "https://registry.npmjs.org/table/-/table-6.7.1.tgz" @@ -5788,13 +4422,10 @@ teeny-request@6.0.1: stream-events "^1.0.5" uuid "^3.3.2" -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== test-exclude@^6.0.0: version "6.0.0" @@ -5810,40 +4441,25 @@ text-table@^0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - through@^2.3.8: version "2.3.8" resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= +time-zone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d" + integrity sha1-mcW/VZWJZq9tBtg73zgA3IL67F0= to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== to-regex-range@^5.0.1: version "5.0.1" @@ -5852,56 +4468,10 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== - dependencies: - punycode "^2.1.1" - -ts-jest@^26.4.4: - version "26.4.4" - resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-26.4.4.tgz" - integrity sha512-3lFWKbLxJm34QxyVNNCgXX1u4o/RV0myvA2y2Bxm46iGIjKlaY0own9gIckbjZJPn+WaJEnfPPJ20HHGpoq4yg== - dependencies: - "@types/jest" "26.x" - bs-logger "0.x" - buffer-from "1.x" - fast-json-stable-stringify "2.x" - jest-util "^26.1.0" - json5 "2.x" - lodash.memoize "4.x" - make-error "1.x" - mkdirp "1.x" - semver "7.x" - yargs-parser "20.x" +trim-off-newlines@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= ts-node@^10.1.0: version "10.1.0" @@ -5919,6 +4489,11 @@ ts-node@^10.1.0: source-map-support "^0.5.17" yn "3.1.1" +tsc-prog@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tsc-prog/-/tsc-prog-2.2.1.tgz#7ea892e1628f1ef93ae6f4d0a97c8a9518e4b408" + integrity sha512-whYQUQjB+wm9c2FoikigaBVnXesgAjIYXgHrbzlK+Etg9L657a92MSUcbi5hrD/YBaRmjuDcTIQVZmo/f74OZQ== + tsconfig-paths@^3.10.1: version "3.10.1" resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz" @@ -5955,18 +4530,6 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" @@ -5974,34 +4537,32 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - type-fest@^0.11.0: version "0.11.0" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + type-fest@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== -type-fest@^0.8.1: +type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== @@ -6033,15 +4594,12 @@ unbox-primitive@^1.0.1: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" + crypto-random-string "^2.0.0" unist-util-stringify-position@^2.0.0: version "2.0.3" @@ -6050,13 +4608,25 @@ unist-util-stringify-position@^2.0.0: dependencies: "@types/unist" "^2.0.2" -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= +update-notifier@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" + integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== dependencies: - has-value "^0.3.1" - isobject "^3.0.0" + boxen "^5.0.0" + chalk "^4.1.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.4.0" + is-npm "^5.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.1.0" + pupa "^2.1.1" + semver "^7.3.4" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" uri-js@^4.2.2: version "4.4.0" @@ -6065,50 +4635,33 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" urlgrey@0.4.4: version "0.4.4" resolved "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz" integrity sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8= -use@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@~1.0.1: +util-deprecate@^1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -uuid@^3.3.2: +uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuid@^8.3.0: - version "8.3.2" - resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - v8-compile-cache@^2.0.3: version "2.2.0" resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz" integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== -v8-to-istanbul@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz" - integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" @@ -6117,66 +4670,17 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -verror@1.10.0: - version "1.10.0" - resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= dependencies: - browser-process-hrtime "^1.0.0" + defaults "^1.0.3" -w3c-xmlserializer@^2.0.0: +well-known-symbols@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^8.0.0: - version "8.4.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz" - integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^6.1.0" + resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-2.0.0.tgz#e9c7c07dbd132b7b84212c8174391ec1f9871ba5" + integrity sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q== which-boxed-primitive@^1.0.2: version "1.0.2" @@ -6194,21 +4698,21 @@ which-module@^2.0.0: resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.9: - version "1.3.1" - resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -word-wrap@^1.2.3, word-wrap@~1.2.3: +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +word-wrap@^1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -6227,14 +4731,23 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^3.0.0: +write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" @@ -6242,26 +4755,21 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.2.3: - version "7.4.1" - resolved "https://registry.npmjs.org/ws/-/ws-7.4.1.tgz" - integrity sha512-pTsP8UAfhy3sk1lSk/O/s4tjD0CRwvMnzvwr4OKGX7ZvqZtUyx4KIJB5JWbkykPoc55tixMGgTNoh3k4FkNGFQ== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== y18n@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz" integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" @@ -6272,11 +4780,6 @@ yaml@^1.10.0: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@20.x: - version "20.2.4" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" @@ -6285,9 +4788,14 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^15.4.1: +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^15.0.2: version "15.4.1" - resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: cliui "^6.0.0" @@ -6302,7 +4810,25 @@ yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yn@3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From df9fe59530ef31ed5a6103bb328c739d804f474c Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Sun, 25 Jul 2021 04:34:39 +1200 Subject: [PATCH 11/20] chore: rename the test tsconfig file to avoid ides using it as an actual tsconfig file --- scripts/compile-tests.ts | 4 ++-- tests/helpers/configs.ts | 2 +- tests/helpers/{tsconfig.json => test-tsconfig.json} | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename tests/helpers/{tsconfig.json => test-tsconfig.json} (100%) diff --git a/scripts/compile-tests.ts b/scripts/compile-tests.ts index ffaa2c176..c8256905d 100644 --- a/scripts/compile-tests.ts +++ b/scripts/compile-tests.ts @@ -53,8 +53,8 @@ async function createTestsTsConfig() { */ async function createTestsHelpersTsConfig() { return fs.copyFile( - "tests/helpers/tsconfig.json", - "build/tests/helpers/tsconfig.json" + "tests/helpers/test-tsconfig.json", + "build/tests/helpers/test-tsconfig.json" ); } diff --git a/tests/helpers/configs.ts b/tests/helpers/configs.ts index 4f8dc9cdc..82d9bc5df 100644 --- a/tests/helpers/configs.ts +++ b/tests/helpers/configs.ts @@ -12,7 +12,7 @@ export const configs = { parser: require.resolve(typescriptParser), parserOptions: { sourceType: "module", - project: path.join(__dirname, "./tsconfig.json"), + project: path.join(__dirname, "./test-tsconfig.json"), }, } as Linter.Config, diff --git a/tests/helpers/tsconfig.json b/tests/helpers/test-tsconfig.json similarity index 100% rename from tests/helpers/tsconfig.json rename to tests/helpers/test-tsconfig.json From e96541b7b296070621f08d6c56752f4c04affaaf Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Mon, 26 Jul 2021 04:48:37 +1200 Subject: [PATCH 12/20] feat(external-recommended): update recommended external rules removed: - @typescript-eslint/explicit-function-return-type added: - @typescript-eslint/prefer-readonly - @typescript-eslint/prefer-readonly-parameter-types - @typescript-eslint/switch-exhaustiveness-check - @typescript-eslint/prefer-const BREAKING CHANGE: update recommended external rules --- src/configs/external-recommended.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/configs/external-recommended.ts b/src/configs/external-recommended.ts index aa35238b9..9a2e2de91 100644 --- a/src/configs/external-recommended.ts +++ b/src/configs/external-recommended.ts @@ -10,14 +10,9 @@ const config: Linter.Config = { { files: ["*.ts", "*.tsx"], rules: { - "@typescript-eslint/explicit-function-return-type": [ - "error", - { - allowExpressions: true, - allowTypedFunctionExpressions: true, - allowHigherOrderFunctions: true, - }, - ], + "@typescript-eslint/prefer-readonly": "error", + "@typescript-eslint/prefer-readonly-parameter-types": "warn", + "@typescript-eslint/switch-exhaustiveness-check": "error", }, }, ], From dd0e499c1f6013c5c26678f771d2a389d594fe44 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Mon, 26 Jul 2021 04:57:47 +1200 Subject: [PATCH 13/20] feat: add stylistic rules to lite and recommended rule sets fix #171 --- README.md | 12 ++++++------ src/configs/functional.ts | 2 ++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6f827df36..c3261c81e 100644 --- a/README.md +++ b/README.md @@ -203,11 +203,11 @@ The [below section](#supported-rules) gives details on which rules are enabled b :see_no_evil: = `no-object-orientation` Ruleset. -| Name | Description | :see_no_evil: | :hear_no_evil: | :speak_no_evil: | :wrench: | :blue_heart: | -| ------------------------------------------------------------ | ------------------------------------------------------------------------ | :------------------------------------------------------: | :--------------------------------------: | :----------------------------------------------: | :------: | :---------------: | -| [`no-class`](./docs/rules/no-class.md) | Disallow classes | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | | -| [`no-mixed-type`](./docs/rules/no-mixed-type.md) | Restrict types so that only members of the same kind are allowed in them | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | :thought_balloon: | -| [`no-this-expression`](./docs/rules/no-this-expression.md) | Disallow `this` access | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | | +| Name | Description | :see_no_evil: | :hear_no_evil: | :speak_no_evil: | :wrench: | :blue_heart: | +| ---------------------------------------------------------- | ------------------------------------------------------------------------ | :------------------------------------------------------: | :--------------------------------------: | :----------------------------------------------: | :------: | :---------------: | +| [`no-class`](./docs/rules/no-class.md) | Disallow classes | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | | +| [`no-mixed-type`](./docs/rules/no-mixed-type.md) | Restrict types so that only members of the same kind are allowed in them | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | :thought_balloon: | +| [`no-this-expression`](./docs/rules/no-this-expression.md) | Disallow `this` access | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | | ### No Statements Rules @@ -244,7 +244,7 @@ The [below section](#supported-rules) gives details on which rules are enabled b | Name | Description | :see_no_evil: | :hear_no_evil: | :speak_no_evil: | :wrench: | :blue_heart: | | ---------------------------------------------- | ----------------------- | :------------------------------------------: | :--------------------------------------: | :----------------------------------------------: | :------: | :----------: | -| [`prefer-tacit`](./docs/rules/prefer-tacit.md) | Tacit/Point-Free style. | :heavy_check_mark: | | | :wrench: | :blue_heart: | +| [`prefer-tacit`](./docs/rules/prefer-tacit.md) | Tacit/Point-Free style. | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :wrench: | :blue_heart: | ## Recommended standard rules diff --git a/src/configs/functional.ts b/src/configs/functional.ts index ce9280ed7..474d3e34b 100644 --- a/src/configs/functional.ts +++ b/src/configs/functional.ts @@ -6,6 +6,7 @@ import noExceptions from "~/configs/no-exceptions"; import noMutations from "~/configs/no-mutations"; import noObjectOrientation from "~/configs/no-object-orientation"; import noStatements from "~/configs/no-statements"; +import stylistic from "~/configs/stylistic"; const config: Linter.Config = deepMerge([ currying, @@ -13,6 +14,7 @@ const config: Linter.Config = deepMerge([ noExceptions, noObjectOrientation, noStatements, + stylistic, ]); export default config; From 62b1242bc32ad78684bf989ec64b170c59fafd86 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Tue, 27 Jul 2021 00:07:25 +1200 Subject: [PATCH 14/20] chore: update vscode launch config for ava --- .vscode/launch.json | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 620098634..37bb309a7 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -7,13 +7,15 @@ { "type": "node", "request": "launch", - "name": "Jest Test Current Test File", - "program": "${workspaceFolder}/node_modules/.bin/jest", + "name": "AVA Test Current Test File", + "program": "${workspaceFolder}/node_modules/.bin/ava", "args": [ - "--runInBand", - "--no-coverage", "${relativeFile}" ], + "outputCapture": "std", + "skipFiles": [ + "/**/*.js" + ], "sourceMaps": true, "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", From 5ce1f0f3274058514ef02d19d431fbf6ce1048e3 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Tue, 27 Jul 2021 00:18:42 +1200 Subject: [PATCH 15/20] chore: fix testing of work file --- .vscode/launch.json | 3 +++ ava.config.js | 3 ++- package.json | 2 +- tests/rules/{_work.test.ts => work.test.ts} | 0 4 files changed, 6 insertions(+), 2 deletions(-) rename tests/rules/{_work.test.ts => work.test.ts} (100%) diff --git a/.vscode/launch.json b/.vscode/launch.json index 37bb309a7..32d87b5cc 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -16,6 +16,9 @@ "skipFiles": [ "/**/*.js" ], + "env": { + "TEST_ALL_FILE": "1" + }, "sourceMaps": true, "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", diff --git a/ava.config.js b/ava.config.js index 98a7249e0..74b29490c 100644 --- a/ava.config.js +++ b/ava.config.js @@ -14,9 +14,10 @@ function getBoolean(value) { } const useCompiledTests = getBoolean(process.env.USE_COMPILED_TESTS); +const testAllFile = getBoolean(process.env.TEST_ALL_FILE); const avaCommonConfig = { - files: ["tests/**/!(_)*.test.*"], + files: testAllFile ? ["tests/**/*.test.*"] : ["tests/**/!(work)*.test.*"], timeout: "5m", }; diff --git a/package.json b/package.json index 9f1dd3424..808fba627 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "lint": "eslint .", "lint-fix": "yarn lint --fix", "test": "nyc ava", - "test-work": "ava 'tests/rules/_work.test.ts'", + "test-work": "TEST_ALL_FILE=1 ava", "verify": "yarn build && yarn lint && yarn build-tests && yarn test-compiled && rimraf build", "preversion": "yarn verify", "version": "auto-changelog -p && git add CHANGELOG.md", diff --git a/tests/rules/_work.test.ts b/tests/rules/work.test.ts similarity index 100% rename from tests/rules/_work.test.ts rename to tests/rules/work.test.ts From f10e4cc85f813d7aced989ce9e8d933f376013d9 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Fri, 30 Jul 2021 13:31:35 +1200 Subject: [PATCH 16/20] style: remove useless catch --- package.json | 2 +- scripts/compile-tests.ts | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 808fba627..3af1ef93c 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ }, "devDependencies": { "@istanbuljs/nyc-config-typescript": "^1.0.1", - "@rebeccastevens/eslint-config": "^1.0.10", + "@rebeccastevens/eslint-config": "^1.0.12", "@rollup/plugin-commonjs": "^17.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^11.0.0", diff --git a/scripts/compile-tests.ts b/scripts/compile-tests.ts index c8256905d..2dfd38843 100644 --- a/scripts/compile-tests.ts +++ b/scripts/compile-tests.ts @@ -59,4 +59,4 @@ async function createTestsHelpersTsConfig() { } // Run the script. -run().catch((error) => void console.error(error)); +void run(); diff --git a/yarn.lock b/yarn.lock index 0e3887284..a9efabffc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -473,10 +473,10 @@ "@nodelib/fs.scandir" "2.1.3" fastq "^1.6.0" -"@rebeccastevens/eslint-config@^1.0.10": - version "1.0.10" - resolved "https://registry.npmjs.org/@rebeccastevens/eslint-config/-/eslint-config-1.0.10.tgz" - integrity sha512-VW7zpKL0mrclSjOZfIoFXADemr7kfcHz8Ev3WmG0ZmD/IKONzStJHOzJR57Y6uc/MZvtHCw1ILt3XmuZmoVVaw== +"@rebeccastevens/eslint-config@^1.0.12": + version "1.0.12" + resolved "https://registry.yarnpkg.com/@rebeccastevens/eslint-config/-/eslint-config-1.0.12.tgz#d3f2ebfc6f03c63eddb450c26ef30f43edd4f715" + integrity sha512-uUBUBbYMLlilC5kSdo8eJLdO/Sk5wvODBM14iemm8VM5KXvELXqagtqxigA4xmlrZFSXXGpFz7c85WifwsstEg== dependencies: deepmerge "^4.0.0" From c4ccf3dd3ea1126e9cba7b7032ef00c353df2450 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Sat, 31 Jul 2021 18:28:21 +1200 Subject: [PATCH 17/20] docs: update readme for recommended standard rules --- README.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index c3261c81e..80b63e20c 100644 --- a/README.md +++ b/README.md @@ -264,17 +264,20 @@ Without this rule, function parameters are mutable. This rule is helpful when converting from an imperative code style to a functional one. -### [@typescript-eslint/explicit-function-return-type](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/explicit-function-return-type.md) +### [@typescript-eslint/prefer-readonly](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-readonly.md) -For performance reasons, eslint-plugin-functional does not check implicit return types. So for example this function will return a mutable array but will not be detected: +This rule is helpful when working with classes. -```js -function foo() { - return [1, 2, 3]; -} -``` +### [@typescript-eslint/prefer-readonly-parameter-types](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-readonly-parameter-types.md) + +Functional functions must not modify any data passed into them. +This rule marks mutable parameters as a violation as they prevent readonly versions of that data from being passed in. + +However, due to many 3rd-party libraries only providing mutable versions of their types, often it can not be easy to satisfy this rule. Thus by default we only enable this rule with the "warn" serverity rather than "error". + +### [@typescript-eslint/switch-exhaustiveness-check](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/switch-exhaustiveness-check.md) -To avoid this situation you can enable `@typescript-eslint/explicit-function-return-type`. Now the above function is forced to declare the return type and the mutability will be detected. +Although our [no-conditional-statement](./docs/rules/no-conditional-statement.md) rule also performs this check, this rule has a fixer that will implement the unimplemented cases which can be useful. ## How to contribute From a37f2d39daa21aefc0aad1be5f8dd301e0f841bb Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Mon, 26 Jul 2021 05:44:35 +1200 Subject: [PATCH 18/20] feat(prefer-readonly-type): turn option "allowMutableReturnType" on by default BREAKING CHANGE: allowMutableReturnType is now on by default re #153 --- docs/rules/prefer-readonly-type.md | 2 +- src/rules/prefer-readonly-type.ts | 2 +- .../rules/prefer-readonly-type/ts/invalid.ts | 316 ++++++++++++++---- tests/rules/prefer-readonly-type/ts/valid.ts | 40 +-- 4 files changed, 273 insertions(+), 87 deletions(-) diff --git a/docs/rules/prefer-readonly-type.md b/docs/rules/prefer-readonly-type.md index 1043c89c2..c7db101a2 100644 --- a/docs/rules/prefer-readonly-type.md +++ b/docs/rules/prefer-readonly-type.md @@ -106,7 +106,7 @@ The default options: ```ts { allowLocalMutation: false, - allowMutableReturnType: false, + allowMutableReturnType: true, checkImplicit: false, ignoreClass: false, ignoreInterface: false, diff --git a/src/rules/prefer-readonly-type.ts b/src/rules/prefer-readonly-type.ts index 82fb28086..31a993e52 100644 --- a/src/rules/prefer-readonly-type.ts +++ b/src/rules/prefer-readonly-type.ts @@ -75,7 +75,7 @@ const defaultOptions: Options = { ignoreInterface: false, ignoreCollections: false, allowLocalMutation: false, - allowMutableReturnType: false, + allowMutableReturnType: true, }; // The possible error messages. diff --git a/tests/rules/prefer-readonly-type/ts/invalid.ts b/tests/rules/prefer-readonly-type/ts/invalid.ts index 26be07fda..dedae2fd0 100644 --- a/tests/rules/prefer-readonly-type/ts/invalid.ts +++ b/tests/rules/prefer-readonly-type/ts/invalid.ts @@ -125,18 +125,12 @@ const tests: ReadonlyArray = [ }`, optionsSet: [[]], output: dedent` - function foo(): ReadonlyArray { + function foo(): Array { interface Foo { readonly bar: ReadonlyArray } }`, errors: [ - { - messageId: "type", - type: "TSTypeReference", - line: 1, - column: 17, - }, { messageId: "type", type: "TSTypeReference", @@ -155,18 +149,12 @@ const tests: ReadonlyArray = [ }`, optionsSet: [[]], output: dedent` - const foo = (): ReadonlyArray => { + const foo = (): Array => { interface Foo { readonly bar: ReadonlyArray } }`, errors: [ - { - messageId: "type", - type: "TSTypeReference", - line: 1, - column: 17, - }, { messageId: "type", type: "TSTypeReference", @@ -175,38 +163,6 @@ const tests: ReadonlyArray = [ }, ], }, - // Should fail on shorthand syntax Array type as return type. - { - code: dedent` - function foo(): number[] { - }`, - optionsSet: [[]], - output: dedent` - function foo(): readonly number[] { - }`, - errors: [ - { - messageId: "array", - type: "TSArrayType", - line: 1, - column: 17, - }, - ], - }, - // Should fail on shorthand syntax Array type as return type. - { - code: `const foo = (): number[] => {}`, - optionsSet: [[]], - output: `const foo = (): readonly number[] => {}`, - errors: [ - { - messageId: "array", - type: "TSArrayType", - line: 1, - column: 17, - }, - ], - }, // Should fail inside function. { code: dedent` @@ -331,7 +287,7 @@ const tests: ReadonlyArray = [ readonly baz: ReadonlyArray } ): { - readonly bar: ReadonlyArray, + readonly bar: Array, readonly baz: ReadonlyArray } { let foo: { @@ -350,12 +306,6 @@ const tests: ReadonlyArray = [ line: 3, column: 19, }, - { - messageId: "type", - type: "TSTypeReference", - line: 7, - column: 17, - }, { messageId: "type", type: "TSTypeReference", @@ -651,17 +601,11 @@ const tests: ReadonlyArray = [ // Function Index Signatures. { code: dedent` - function foo(): { [source: string]: string } { - return undefined; - } function bar(param: { [source: string]: string }): void { return undefined; }`, optionsSet: [[]], output: dedent` - function foo(): { readonly [source: string]: string } { - return undefined; - } function bar(param: { readonly [source: string]: string }): void { return undefined; }`, @@ -670,12 +614,6 @@ const tests: ReadonlyArray = [ messageId: "property", type: "TSIndexSignature", line: 1, - column: 19, - }, - { - messageId: "property", - type: "TSIndexSignature", - line: 4, column: 23, }, ], @@ -902,6 +840,254 @@ const tests: ReadonlyArray = [ }, ], }, + // Don't allow mutable return type. + { + code: dedent` + function foo(...numbers: ReadonlyArray): Array {} + function bar(...numbers: readonly number[]): number[] {}`, + optionsSet: [[{ allowMutableReturnType: false }]], + output: dedent` + function foo(...numbers: ReadonlyArray): ReadonlyArray {} + function bar(...numbers: readonly number[]): readonly number[] {}`, + errors: [ + { + messageId: "type", + type: "TSTypeReference", + line: 1, + column: 50, + }, + { + messageId: "array", + type: "TSArrayType", + line: 2, + column: 46, + }, + ], + }, + // Don't allow mutable return type. + { + code: dedent` + const foo = function(...numbers: ReadonlyArray): Array {} + const bar = function(...numbers: readonly number[]): number[] {}`, + optionsSet: [[{ allowMutableReturnType: false }]], + output: dedent` + const foo = function(...numbers: ReadonlyArray): ReadonlyArray {} + const bar = function(...numbers: readonly number[]): readonly number[] {}`, + errors: [ + { + messageId: "type", + type: "TSTypeReference", + line: 1, + column: 58, + }, + { + messageId: "array", + type: "TSArrayType", + line: 2, + column: 54, + }, + ], + }, + // Don't allow mutable return type. + { + code: dedent` + const foo = (...numbers: ReadonlyArray): Array => {} + const bar = (...numbers: readonly number[]): number[] => {}`, + optionsSet: [[{ allowMutableReturnType: false }]], + output: dedent` + const foo = (...numbers: ReadonlyArray): ReadonlyArray => {} + const bar = (...numbers: readonly number[]): readonly number[] => {}`, + errors: [ + { + messageId: "type", + type: "TSTypeReference", + line: 1, + column: 50, + }, + { + messageId: "array", + type: "TSArrayType", + line: 2, + column: 46, + }, + ], + }, + // Don't allow mutable return type. + { + code: dedent` + class Foo { + foo(...numbers: ReadonlyArray): Array { + } + } + class Bar { + foo(...numbers: readonly number[]): number[] { + } + }`, + optionsSet: [[{ allowMutableReturnType: false }]], + output: dedent` + class Foo { + foo(...numbers: ReadonlyArray): ReadonlyArray { + } + } + class Bar { + foo(...numbers: readonly number[]): readonly number[] { + } + }`, + errors: [ + { + messageId: "type", + type: "TSTypeReference", + line: 2, + column: 43, + }, + { + messageId: "array", + type: "TSArrayType", + line: 6, + column: 39, + }, + ], + }, + // Don't allow mutable return type with Type Arguments. + { + code: dedent` + function foo(...numbers: ReadonlyArray): Promise> {} + function foo(...numbers: ReadonlyArray): Promise {}`, + optionsSet: [[{ allowMutableReturnType: false }]], + output: dedent` + function foo(...numbers: ReadonlyArray): Promise> {} + function foo(...numbers: ReadonlyArray): Promise {}`, + errors: [ + { + messageId: "type", + type: "TSTypeReference", + line: 1, + column: 58, + }, + { + messageId: "array", + type: "TSArrayType", + line: 2, + column: 58, + }, + ], + }, + // Don't allow mutable return type with deep Type Arguments. + { + code: dedent` + type Foo = { readonly x: T; }; + function foo(...numbers: ReadonlyArray): Promise>> {} + function foo(...numbers: ReadonlyArray): Promise> {}`, + optionsSet: [[{ allowMutableReturnType: false }]], + output: dedent` + type Foo = { readonly x: T; }; + function foo(...numbers: ReadonlyArray): Promise>> {} + function foo(...numbers: ReadonlyArray): Promise> {}`, + errors: [ + { + messageId: "type", + type: "TSTypeReference", + line: 2, + column: 62, + }, + { + messageId: "array", + type: "TSArrayType", + line: 3, + column: 62, + }, + ], + }, + // Don't allow mutable return type with Type Arguments in a tuple. + { + code: dedent` + function foo(...numbers: ReadonlyArray): readonly [number, Array, number] {} + function foo(...numbers: ReadonlyArray): readonly [number, number[], number] {}`, + optionsSet: [[{ allowMutableReturnType: false }]], + output: dedent` + function foo(...numbers: ReadonlyArray): readonly [number, ReadonlyArray, number] {} + function foo(...numbers: ReadonlyArray): readonly [number, readonly number[], number] {}`, + errors: [ + { + messageId: "type", + type: "TSTypeReference", + line: 1, + column: 68, + }, + { + messageId: "array", + type: "TSArrayType", + line: 2, + column: 68, + }, + ], + }, + // Don't allow mutable return type with Type Arguments Union. + { + code: dedent` + function foo(...numbers: ReadonlyArray): { readonly a: Array } | { readonly b: string[] } {}`, + optionsSet: [[{ allowMutableReturnType: false }]], + output: dedent` + function foo(...numbers: ReadonlyArray): { readonly a: ReadonlyArray } | { readonly b: readonly string[] } {}`, + errors: [ + { + messageId: "type", + type: "TSTypeReference", + line: 1, + column: 64, + }, + { + messageId: "array", + type: "TSArrayType", + line: 1, + column: 96, + }, + ], + }, + // Don't allow mutable return type with Type Arguments Intersection. + { + code: dedent` + function foo(...numbers: ReadonlyArray): { readonly a: Array } & { readonly b: string[] } {}`, + optionsSet: [[{ allowMutableReturnType: false }]], + output: dedent` + function foo(...numbers: ReadonlyArray): { readonly a: ReadonlyArray } & { readonly b: readonly string[] } {}`, + errors: [ + { + messageId: "type", + type: "TSTypeReference", + line: 1, + column: 64, + }, + { + messageId: "array", + type: "TSArrayType", + line: 1, + column: 96, + }, + ], + }, + // Don't allow mutable return type with Type Arguments Conditional. + { + code: dedent` + function foo(x: T): T extends Array ? string : number[] {}`, + optionsSet: [[{ allowMutableReturnType: false }]], + output: dedent` + function foo(x: T): T extends ReadonlyArray ? string : readonly number[] {}`, + errors: [ + { + messageId: "type", + type: "TSTypeReference", + line: 1, + column: 34, + }, + { + messageId: "array", + type: "TSArrayType", + line: 1, + column: 59, + }, + ], + }, ]; export default tests; diff --git a/tests/rules/prefer-readonly-type/ts/valid.ts b/tests/rules/prefer-readonly-type/ts/valid.ts index 88954c8aa..a6613133a 100644 --- a/tests/rules/prefer-readonly-type/ts/valid.ts +++ b/tests/rules/prefer-readonly-type/ts/valid.ts @@ -56,28 +56,28 @@ const tests: ReadonlyArray = [ code: `const foo: ReadonlyArray = [];`, optionsSet: [[]], }, - // Allow return type. + // Allow mutable return type. { code: dedent` function foo(...numbers: ReadonlyArray): Array {} function bar(...numbers: readonly number[]): number[] {}`, - optionsSet: [[{ allowMutableReturnType: true }]], + optionsSet: [], }, - // Allow return type. + // Allow mutable return type. { code: dedent` const foo = function(...numbers: ReadonlyArray): Array {} const bar = function(...numbers: readonly number[]): number[] {}`, - optionsSet: [[{ allowMutableReturnType: true }]], + optionsSet: [], }, - // Allow return type. + // Allow mutable return type. { code: dedent` const foo = (...numbers: ReadonlyArray): Array => {} const bar = (...numbers: readonly number[]): number[] => {}`, - optionsSet: [[{ allowMutableReturnType: true }]], + optionsSet: [], }, - // Allow return type. + // Allow mutable return type. { code: dedent` class Foo { @@ -88,47 +88,47 @@ const tests: ReadonlyArray = [ foo(...numbers: readonly number[]): number[] { } }`, - optionsSet: [[{ allowMutableReturnType: true }]], + optionsSet: [], }, - // Allow return type with Type Arguments. + // Allow mutable return type with Type Arguments. { code: dedent` function foo(...numbers: ReadonlyArray): Promise> {} function foo(...numbers: ReadonlyArray): Promise {}`, - optionsSet: [[{ allowMutableReturnType: true }]], + optionsSet: [], }, - // Allow return type with deep Type Arguments. + // Allow mutable return type with deep Type Arguments. { code: dedent` type Foo = { readonly x: T; }; function foo(...numbers: ReadonlyArray): Promise>> {} function foo(...numbers: ReadonlyArray): Promise> {}`, - optionsSet: [[{ allowMutableReturnType: true }]], + optionsSet: [], }, - // Allow return type with Type Arguments in a tuple. + // Allow mutable return type with Type Arguments in a tuple. { code: dedent` function foo(...numbers: ReadonlyArray): readonly [number, Array, number] {} function foo(...numbers: ReadonlyArray): readonly [number, number[], number] {}`, - optionsSet: [[{ allowMutableReturnType: true }]], + optionsSet: [], }, - // Allow return type with Type Arguments Union. + // Allow mutable return type with Type Arguments Union. { code: dedent` function foo(...numbers: ReadonlyArray): { readonly a: Array } | { readonly b: string[] } {}`, - optionsSet: [[{ allowMutableReturnType: true }]], + optionsSet: [], }, - // Allow return type with Type Arguments Intersection. + // Allow mutable return type with Type Arguments Intersection. { code: dedent` function foo(...numbers: ReadonlyArray): { readonly a: Array } & { readonly b: string[] } {}`, - optionsSet: [[{ allowMutableReturnType: true }]], + optionsSet: [], }, - // Allow return type with Type Arguments Conditional. + // Allow mutable return type with Type Arguments Conditional. { code: dedent` function foo(x: T): T extends Array ? string : number[] {}`, - optionsSet: [[{ allowMutableReturnType: true }]], + optionsSet: [], }, // Allow inline mutable return type. { From 929ba5f7604eb74d7f02a8c09b3068efc9973849 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Mon, 26 Jul 2021 08:08:13 +1200 Subject: [PATCH 19/20] test(prefer-readonly-type): update rule test for new behavior re #153 --- .../rules/prefer-readonly-type/ts/invalid.ts | 188 ++++++++---------- tests/rules/prefer-readonly-type/ts/valid.ts | 18 +- 2 files changed, 87 insertions(+), 119 deletions(-) diff --git a/tests/rules/prefer-readonly-type/ts/invalid.ts b/tests/rules/prefer-readonly-type/ts/invalid.ts index dedae2fd0..e770fa6bd 100644 --- a/tests/rules/prefer-readonly-type/ts/invalid.ts +++ b/tests/rules/prefer-readonly-type/ts/invalid.ts @@ -314,88 +314,6 @@ const tests: ReadonlyArray = [ }, ], }, - // Should fail on Array type alias. - { - code: `type Foo = Array;`, - optionsSet: [[]], - output: `type Foo = ReadonlyArray;`, - errors: [ - { - messageId: "type", - type: "TSTypeReference", - line: 1, - column: 12, - }, - ], - }, - // Should fail on Array as type member. - { - code: dedent` - function foo() { - type Foo = { - readonly bar: Array - } - }`, - optionsSet: [[]], - output: dedent` - function foo() { - type Foo = { - readonly bar: ReadonlyArray - } - }`, - errors: [ - { - messageId: "type", - type: "TSTypeReference", - line: 3, - column: 19, - }, - ], - }, - // Should fail on Array type alias in local type. - { - code: dedent` - function foo() { - type Foo = Array; - }`, - optionsSet: [[]], - output: dedent` - function foo() { - type Foo = ReadonlyArray; - }`, - errors: [ - { - messageId: "type", - type: "TSTypeReference", - line: 2, - column: 14, - }, - ], - }, - // Should fail on Array as type member in local type. - { - code: dedent` - function foo() { - type Foo = { - readonly bar: Array - } - }`, - optionsSet: [[]], - output: dedent` - function foo() { - type Foo = { - readonly bar: ReadonlyArray - } - }`, - errors: [ - { - messageId: "type", - type: "TSTypeReference", - line: 3, - column: 19, - }, - ], - }, // Should fail on Array type in variable declaration. { code: `const foo: Array = [];`, @@ -632,34 +550,6 @@ const tests: ReadonlyArray = [ }, ], }, - // Type literal in property template parameter without readonly should produce failures. - { - code: dedent` - type foo = ReadonlyArray<{ - type: string, - code: string, - }>;`, - optionsSet: [[]], - output: dedent` - type foo = ReadonlyArray<{ - readonly type: string, - readonly code: string, - }>;`, - errors: [ - { - messageId: "property", - type: "TSPropertySignature", - line: 2, - column: 3, - }, - { - messageId: "property", - type: "TSPropertySignature", - line: 3, - column: 3, - }, - ], - }, // Type literal without readonly on members should produce failures. // Also verify that nested members are checked. { @@ -1088,6 +978,84 @@ const tests: ReadonlyArray = [ }, ], }, + // Should fail when using an mutable type alias in variable declaration. + { + code: dedent` + type Foo = Array; + let foo: Foo;`, + optionsSet: [[]], + errors: [ + { + messageId: "type", + type: "TSTypeReference", + line: 2, + column: 20, + }, + ], + }, + // Should fail when using an mutable type alias in function param. + { + code: dedent` + type Foo = Array; + function foo(param: Foo) {}`, + optionsSet: [[]], + errors: [ + { + messageId: "type", + type: "TSTypeReference", + line: 2, + column: 20, + }, + ], + }, + // Should fail when using an mutable type alias of type literal without readonly modifer in variable declaration. + { + code: dedent` + type Foo = ReadonlyArray<{ + type: string, + code: string, + }>; + let foo: Foo;`, + optionsSet: [[]], + errors: [ + { + messageId: "property", + type: "TSPropertySignature", + line: 2, + column: 3, + }, + { + messageId: "property", + type: "TSPropertySignature", + line: 3, + column: 3, + }, + ], + }, + // Should fail when using an mutable type alias of type literal without readonly modifer in function param. + { + code: dedent` + type Foo = ReadonlyArray<{ + type: string, + code: string, + }>; + function foo(param: Foo) {}`, + optionsSet: [[]], + errors: [ + { + messageId: "property", + type: "TSPropertySignature", + line: 2, + column: 3, + }, + { + messageId: "property", + type: "TSPropertySignature", + line: 3, + column: 3, + }, + ], + }, ]; export default tests; diff --git a/tests/rules/prefer-readonly-type/ts/valid.ts b/tests/rules/prefer-readonly-type/ts/valid.ts index a6613133a..f6c8723fe 100644 --- a/tests/rules/prefer-readonly-type/ts/valid.ts +++ b/tests/rules/prefer-readonly-type/ts/valid.ts @@ -38,16 +38,16 @@ const tests: ReadonlyArray = [ }`, optionsSet: [[]], }, - // Should not fail on ReadonlyArray type alias. + // Should not fail on type alias. { - code: `type Foo = ReadonlyArray;`, + code: `type Foo = Array;`, optionsSet: [[]], }, - // Should not fail on ReadonlyArray type alias in local type. + // Should not fail on type alias in local type. { code: dedent` function foo() { - type Foo = ReadonlyArray; + type Foo = Array; }`, optionsSet: [[]], }, @@ -214,7 +214,7 @@ const tests: ReadonlyArray = [ }, // Type literal in array template parameter with readonly should not produce failures. { - code: `type foo = ReadonlyArray<{ readonly type: string, readonly code: string }>;`, + code: `let foo: ReadonlyArray<{ readonly type: string, readonly code: string }>;`, optionsSet: [[]], }, // Type literal with readonly on members should not produce failures. @@ -348,7 +348,7 @@ const tests: ReadonlyArray = [ }, // Ignore Mutable Collections (Array, Tuple, Set, Map) { - code: dedent`type Foo = Array;`, + code: dedent`let Foo: Array;`, optionsSet: [[{ ignoreCollections: true }]], }, { @@ -360,7 +360,7 @@ const tests: ReadonlyArray = [ optionsSet: [[{ ignoreCollections: true, checkImplicit: true }]], }, { - code: dedent`type Foo = [string, string];`, + code: dedent`let Foo: [string, string];`, optionsSet: [[{ ignoreCollections: true }]], }, { @@ -372,7 +372,7 @@ const tests: ReadonlyArray = [ optionsSet: [[{ ignoreCollections: true, checkImplicit: true }]], }, { - code: dedent`type Foo = Set;`, + code: dedent`let Foo: Set;`, optionsSet: [[{ ignoreCollections: true }]], }, { @@ -380,7 +380,7 @@ const tests: ReadonlyArray = [ optionsSet: [[{ ignoreCollections: true }]], }, { - code: dedent`type Foo = Map;`, + code: dedent`let Foo: Map;`, optionsSet: [[{ ignoreCollections: true }]], }, { From 0e75bbe44c67b87fdef4718adef115519aaac5e7 Mon Sep 17 00:00:00 2001 From: Rebecca Stevens Date: Mon, 26 Jul 2021 08:09:47 +1200 Subject: [PATCH 20/20] fix: don't mark type aliases as violations re #153 --- src/rules/prefer-readonly-type.ts | 50 ++++++++++++++++--------------- src/util/tree.ts | 8 +++++ src/util/typeguard.ts | 6 ++++ 3 files changed, 40 insertions(+), 24 deletions(-) diff --git a/src/rules/prefer-readonly-type.ts b/src/rules/prefer-readonly-type.ts index 31a993e52..dd407ca72 100644 --- a/src/rules/prefer-readonly-type.ts +++ b/src/rules/prefer-readonly-type.ts @@ -16,7 +16,7 @@ import { } from "~/common/ignore-options"; import type { RuleContext, RuleMetaData, RuleResult } from "~/util/rule"; import { createRule, getTypeOfNode } from "~/util/rule"; -import { isInReturnType } from "~/util/tree"; +import { isInReturnType, isInTSTypeAliasDeclaration } from "~/util/tree"; import { isArrayType, isAssignmentPattern, @@ -185,33 +185,35 @@ function checkTypeReference( context: RuleContext, options: Options ): RuleResult { - if (isIdentifier(node.typeName)) { - if ( - options.ignoreCollections && - mutableTypeRegex.test(node.typeName.name) - ) { - return { - context, - descriptors: [], - }; - } - const immutableType = mutableToImmutableTypes.get(node.typeName.name); + if ( + !isIdentifier(node.typeName) || + (options.ignoreCollections && mutableTypeRegex.test(node.typeName.name)) || + isInTSTypeAliasDeclaration(node) + ) { return { context, - descriptors: - immutableType !== undefined && - immutableType.length > 0 && - (!options.allowMutableReturnType || !isInReturnType(node)) - ? [ - { - node, - messageId: "type", - fix: (fixer) => fixer.replaceText(node.typeName, immutableType), - }, - ] - : [], + descriptors: [], + }; + } + + const immutableType = mutableToImmutableTypes.get(node.typeName.name); + if ( + immutableType !== undefined && + immutableType.length > 0 && + (!options.allowMutableReturnType || !isInReturnType(node)) + ) { + return { + context, + descriptors: [ + { + node, + messageId: "type", + fix: (fixer) => fixer.replaceText(node.typeName, immutableType), + }, + ], }; } + return { context, descriptors: [], diff --git a/src/util/tree.ts b/src/util/tree.ts index 88cf73dae..56e8a0b27 100644 --- a/src/util/tree.ts +++ b/src/util/tree.ts @@ -10,6 +10,7 @@ import { isMethodDefinition, isProperty, isTSInterfaceBody, + isTSTypeAliasDeclaration, } from "./typeguard"; /** @@ -81,6 +82,13 @@ export function isInReturnType(node: TSESTree.Node): boolean { ); } +/** + * Is the given node in a TS Type Alias Declaration. + */ +export function isInTSTypeAliasDeclaration(node: TSESTree.Node): boolean { + return getAncestorOfType(isTSTypeAliasDeclaration, node) !== null; +} + /** * Is the given identifier a property of an object? */ diff --git a/src/util/typeguard.ts b/src/util/typeguard.ts index a3c2260e2..165e82fba 100644 --- a/src/util/typeguard.ts +++ b/src/util/typeguard.ts @@ -234,6 +234,12 @@ export function isTSTupleType( return node.type === AST_NODE_TYPES.TSTupleType; } +export function isTSTypeAliasDeclaration( + node: TSESTree.Node +): node is TSESTree.TSTypeAliasDeclaration { + return node.type === AST_NODE_TYPES.TSTypeAliasDeclaration; +} + export function isTSTypeAnnotation( node: TSESTree.Node ): node is TSESTree.TSTypeAnnotation {