diff --git a/.eslintignore b/.eslintignore index b6d6b197..a067adde 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,5 +1,3 @@ -# ignore files that have typescript import -typescript/** src/configurationType.ts src/configurationTypeCache.jsonc playground.ts diff --git a/.eslintrc.json b/.eslintrc.json index b4718a06..78e9aa64 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,6 +1,61 @@ { "extends": "zardoy", "rules": { - "curly": "off" - } + "curly": "off", + "import/no-deprecated": "off", + // investigate why it is soooo slow... + "import/no-named-as-default": "off", + "import/no-named-as-default-member": "off", + "default-case": "off", + "sonarjs/no-duplicate-string": "off", + "@typescript-eslint/naming-convention": "off", + "no-empty-function": "off", + "no-useless-return": "off", + "no-template-curly-in-string": "off", + "@typescript-eslint/no-explicit-any": "off", + // better to fix rule + "unicorn/consistent-destructuring": "off", + "@typescript-eslint/no-restricted-imports": [ + "error", + { + "patterns": [ + { + "group": [ + "typescript*", + "!../*" + ], + "message": "Use global ts type and variable instead" + // "allowTypeImports": true + } + ] + } + ] + }, + "overrides": [ + { + "files": "typescript/**", + "parserOptions": { + "project": "typescript/tsconfig.json" + }, + "rules": { + "@typescript-eslint/padding-line-between-statements": "off", + "arrow-body-style": "off", + "import/no-extraneous-dependencies": "off", + "@typescript-eslint/no-loop-func": "off", + // always used intentionally as workaround for possibly undefined types (to not declare super complex types - cases) + "@typescript-eslint/no-unnecessary-boolean-literal-compare": "off", + // todo configure instead + "complexity": "off", + "max-params": "off", + "max-depth": "off", + "@typescript-eslint/dot-notation": "off", + "no-bitwise": "off", + // todo just not sure + "@typescript-eslint/prefer-regexp-exec": "off", + "no-negated-condition": "off", + "@typescript-eslint/prefer-nullish-coalescing": "off", + "unicorn/prefer-set-has": "off" + } + } + ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 1b4e9960..dac34fc6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,23 +6,8 @@ } }, "tsEssentialPlugins.suggestions.ignoreAutoImports": [ - "typescript-full" - ], - "betterSnippets.customSnippets": [ - { - "name": "SyntaxKind", - "body": "ts.SyntaxKind", - "when": {} - }, - { - "name": "logKind", - "body": "console.log(ts.SyntaxKind[${1:node}!.kind])", - "when": { - "locations": [ - "lineStart" - ], - } - } + "typescript-full", + "@volar/language-service/*" ], "githubPullRequests.ignoredPullRequestBranches": [ "develop" diff --git a/package.json b/package.json index c07c18a1..9c6ba560 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,11 @@ "command": "goToNodeBySyntaxKindWithinSelection", "title": "Go to Node by Syntax Kind Within Selection", "category": "TS Essentials" + }, + { + "command": "insertNameOfCompletion", + "title": "Insert Name of Completion", + "category": "TS Essentials" } ], "keybindings": [ @@ -98,7 +103,7 @@ "watch-plugin": "node buildTsPlugin.mjs --watch", "build": "tsc && tsc -p typescript --noEmit && vscode-framework build && pnpm build-plugin", "build-plugin": "node buildTsPlugin.mjs && node buildTsPlugin.mjs --browser", - "lint": "eslint src/**", + "lint": "eslint {src/**,typescript/src/**}", "test": "pnpm test-plugin --run && pnpm integration-test", "test-plugin": "vitest --globals --dir typescript/test/ --environment ts-plugin", "integration-test": "node integration/prerun.mjs && tsc -p tsconfig.test.json && node testsOut/runTests.js", @@ -119,7 +124,7 @@ "tsm": "^2.3.0", "type-fest": "^2.13.1", "typed-jsonfile": "^0.2.1", - "typescript": "^4.9.3", + "typescript": "^5.0.2", "vite": "^4.1.1", "vitest": "^0.26.0", "vitest-environment-ts-plugin": "./vitest-environment-ts-plugin", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a92fc52..5c13694c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: 5.4 +lockfileVersion: '6.0' overrides: esbuild: ^0.15.15 @@ -6,128 +6,182 @@ overrides: importers: .: - specifiers: - '@milahu/patch-package-with-pnpm-support': ^6.4.8 - '@types/chai': ^4.3.3 - '@types/fs-extra': ^9.0.13 - '@types/glob': ^8.0.0 - '@types/lodash': ^4.14.182 - '@types/mocha': ^9.1.1 - '@types/node': ^16.11.21 - '@types/pluralize': ^0.0.29 - '@types/semver': ^7.3.13 - '@types/vscode': 1.72.0 - '@volar/language-server': 1.3.0-alpha.3 - '@volar/language-service': 1.3.0-alpha.3 - '@volar/vue-language-core': ^1.2.0-patch.2 - '@vscode/emmet-helper': ^2.8.4 - '@vscode/test-electron': ^2.1.5 - '@zardoy/tsconfig': ^1.3.1 - '@zardoy/utils': ^0.0.9 - '@zardoy/vscode-utils': ^0.0.47 - chai: ^4.3.6 - change-case: ^4.1.2 - chokidar: ^3.5.3 - chokidar-cli: ^3.0.0 - delay: ^5.0.0 - esbuild: ^0.15.15 - escape-string-regexp: ^5.0.0 - eslint: ^8.7.0 - eslint-config-zardoy: ^0.2.12 - fs-extra: ^10.1.0 - glob: ^8.0.3 - got: ^12.5.3 - got-cjs: npm:got@^11.x - lodash: ^4.17.21 - lodash.get: ^4.4.2 - lodash.throttle: ^4.1.1 - mocha: ^10.0.0 - modify-json-file: ^1.2.2 - npm-run-all: ^4.1.5 - path-browserify: ^1.0.1 - pluralize: github:plurals/pluralize#36f03cd2d573fa6d23e12e1529fa4627e2af74b4 - rambda: ^7.2.1 - require-from-string: ^2.0.2 - semver: ^7.3.8 - string-dedent: ^3.0.1 - ts-expose-internals: ^4.9.3 - ts-simple-type: ^1.0.7 - tsm: ^2.3.0 - type-fest: ^2.13.1 - typed-jsonfile: ^0.2.1 - typescript: ^4.9.3 - unleashed-typescript: ^1.3.0 - vite: ^4.1.1 - vitest: ^0.26.0 - vitest-environment-ts-plugin: ./vitest-environment-ts-plugin - vscode-framework: ^0.0.18 - vscode-manifest: ^0.0.4 - vscode-uri: ^3.0.6 - dependencies: - '@types/chai': 4.3.3 - '@types/glob': 8.0.0 - '@types/lodash': 4.14.182 - '@types/mocha': 9.1.1 - '@types/pluralize': 0.0.29 - '@volar/language-server': 1.3.0-alpha.3 - '@volar/language-service': 1.3.0-alpha.3 - '@volar/vue-language-core': 1.2.0-patch.2 - '@vscode/emmet-helper': 2.8.4 - '@vscode/test-electron': 2.1.5 - '@zardoy/utils': 0.0.9 - '@zardoy/vscode-utils': 0.0.47_q3dzlsegmrs367wpqi3skrbzhq - chai: 4.3.6 - change-case: 4.1.2 - chokidar: 3.5.3 - chokidar-cli: 3.0.0 - delay: 5.0.0 - escape-string-regexp: 5.0.0 - eslint: 8.7.0 - eslint-config-zardoy: 0.2.12_f2hryljuvpua6e2voooci5naoy - glob: 8.0.3 - lodash: 4.17.21 - lodash.get: 4.4.2 - lodash.throttle: 4.1.1 - mocha: 10.0.0 - modify-json-file: 1.2.2 - npm-run-all: 4.1.5 - path-browserify: 1.0.1 - pluralize: github.com/plurals/pluralize/36f03cd2d573fa6d23e12e1529fa4627e2af74b4 - rambda: 7.2.1 - require-from-string: 2.0.2 - semver: 7.3.8 - string-dedent: 3.0.1 - ts-expose-internals: 4.9.3 - ts-simple-type: 1.0.7 - unleashed-typescript: 1.3.0_typescript@4.9.3 - vscode-framework: 0.0.18_37hwwvsstfvtglssqblfqfuf2i - vscode-uri: 3.0.6 + dependencies: + '@types/chai': + specifier: ^4.3.3 + version: 4.3.3 + '@types/glob': + specifier: ^8.0.0 + version: 8.0.0 + '@types/lodash': + specifier: ^4.14.182 + version: 4.14.182 + '@types/mocha': + specifier: ^9.1.1 + version: 9.1.1 + '@types/pluralize': + specifier: ^0.0.29 + version: 0.0.29 + '@volar/language-server': + specifier: 1.3.0-alpha.3 + version: 1.3.0-alpha.3 + '@volar/language-service': + specifier: 1.3.0-alpha.3 + version: 1.3.0-alpha.3 + '@volar/vue-language-core': + specifier: ^1.2.0-patch.2 + version: 1.2.0-patch.2 + '@vscode/emmet-helper': + specifier: ^2.8.4 + version: 2.8.4 + '@vscode/test-electron': + specifier: ^2.1.5 + version: 2.1.5 + '@zardoy/utils': + specifier: ^0.0.9 + version: 0.0.9 + '@zardoy/vscode-utils': + specifier: ^0.0.47 + version: 0.0.47(@types/vscode@1.72.0)(esbuild@0.15.18)(vscode-framework@0.0.18) + chai: + specifier: ^4.3.6 + version: 4.3.6 + change-case: + specifier: ^4.1.2 + version: 4.1.2 + chokidar: + specifier: ^3.5.3 + version: 3.5.3 + chokidar-cli: + specifier: ^3.0.0 + version: 3.0.0 + delay: + specifier: ^5.0.0 + version: 5.0.0 + escape-string-regexp: + specifier: ^5.0.0 + version: 5.0.0 + eslint: + specifier: ^8.7.0 + version: 8.7.0 + eslint-config-zardoy: + specifier: ^0.2.12 + version: 0.2.12(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.32.2)(eslint@8.7.0)(typescript@5.0.2) + glob: + specifier: ^8.0.3 + version: 8.0.3 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + lodash.get: + specifier: ^4.4.2 + version: 4.4.2 + lodash.throttle: + specifier: ^4.1.1 + version: 4.1.1 + mocha: + specifier: ^10.0.0 + version: 10.0.0 + modify-json-file: + specifier: ^1.2.2 + version: 1.2.2 + npm-run-all: + specifier: ^4.1.5 + version: 4.1.5 + path-browserify: + specifier: ^1.0.1 + version: 1.0.1 + pluralize: + specifier: github:plurals/pluralize#36f03cd2d573fa6d23e12e1529fa4627e2af74b4 + version: github.com/plurals/pluralize/36f03cd2d573fa6d23e12e1529fa4627e2af74b4 + rambda: + specifier: ^7.2.1 + version: 7.2.1 + require-from-string: + specifier: ^2.0.2 + version: 2.0.2 + semver: + specifier: ^7.3.8 + version: 7.3.8 + string-dedent: + specifier: ^3.0.1 + version: 3.0.1 + ts-expose-internals: + specifier: ^4.9.3 + version: 4.9.3 + ts-simple-type: + specifier: ^1.0.7 + version: 1.0.7 + unleashed-typescript: + specifier: ^1.3.0 + version: 1.3.0(typescript@5.0.2) + vscode-framework: + specifier: ^0.0.18 + version: 0.0.18(@types/vscode@1.72.0)(typescript@5.0.2) + vscode-uri: + specifier: ^3.0.6 + version: 3.0.6 devDependencies: - '@milahu/patch-package-with-pnpm-support': 6.4.10 - '@types/fs-extra': 9.0.13 - '@types/node': 16.11.21 - '@types/semver': 7.3.13 - '@types/vscode': 1.72.0 - '@zardoy/tsconfig': 1.3.1_typescript@4.9.3 - esbuild: 0.15.18 - fs-extra: 10.1.0 - got: 12.5.3 - got-cjs: /got/11.8.6 - tsm: 2.3.0 - type-fest: 2.13.1 - typed-jsonfile: 0.2.1 - typescript: 4.9.3 - vite: 4.1.1_@types+node@16.11.21 - vitest: 0.26.3 - vitest-environment-ts-plugin: link:vitest-environment-ts-plugin - vscode-manifest: 0.0.4 - - typescript: - specifiers: {} + '@milahu/patch-package-with-pnpm-support': + specifier: ^6.4.8 + version: 6.4.10 + '@types/fs-extra': + specifier: ^9.0.13 + version: 9.0.13 + '@types/node': + specifier: ^16.11.21 + version: 16.11.21 + '@types/semver': + specifier: ^7.3.13 + version: 7.3.13 + '@types/vscode': + specifier: 1.72.0 + version: 1.72.0 + '@zardoy/tsconfig': + specifier: ^1.3.1 + version: 1.3.1(typescript@5.0.2) + esbuild: + specifier: ^0.15.15 + version: 0.15.18 + fs-extra: + specifier: ^10.1.0 + version: 10.1.0 + got: + specifier: ^12.5.3 + version: 12.5.3 + got-cjs: + specifier: npm:got@^11.x + version: /got@11.8.6 + tsm: + specifier: ^2.3.0 + version: 2.3.0 + type-fest: + specifier: ^2.13.1 + version: 2.13.1 + typed-jsonfile: + specifier: ^0.2.1 + version: 0.2.1 + typescript: + specifier: ^5.0.2 + version: 5.0.2 + vite: + specifier: ^4.1.1 + version: 4.1.1(@types/node@16.11.21) + vitest: + specifier: ^0.26.0 + version: 0.26.3 + vitest-environment-ts-plugin: + specifier: ./vitest-environment-ts-plugin + version: link:vitest-environment-ts-plugin + vscode-manifest: + specifier: ^0.0.4 + version: 0.0.4 + + typescript: {} packages: - /@ampproject/remapping/2.2.0: + /@ampproject/remapping@2.2.0: resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} engines: {node: '>=6.0.0'} dependencies: @@ -135,33 +189,33 @@ packages: '@jridgewell/trace-mapping': 0.3.15 dev: false - /@babel/code-frame/7.16.7: + /@babel/code-frame@7.16.7: resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.16.10 dev: false - /@babel/code-frame/7.18.6: + /@babel/code-frame@7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 dev: false - /@babel/compat-data/7.19.1: + /@babel/compat-data@7.19.1: resolution: {integrity: sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==} engines: {node: '>=6.9.0'} dev: false - /@babel/core/7.19.1: + /@babel/core@7.19.1: resolution: {integrity: sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 '@babel/generator': 7.19.0 - '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.19.1 + '@babel/helper-compilation-targets': 7.19.1(@babel/core@7.19.1) '@babel/helper-module-transforms': 7.19.0 '@babel/helpers': 7.19.0 '@babel/parser': 7.19.1 @@ -169,7 +223,7 @@ packages: '@babel/traverse': 7.19.1 '@babel/types': 7.19.0 convert-source-map: 1.8.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.1 semver: 6.3.0 @@ -177,7 +231,7 @@ packages: - supports-color dev: false - /@babel/eslint-parser/7.19.1_6hx3hyhers76i66xm5abue7hwu: + /@babel/eslint-parser@7.19.1(@babel/core@7.19.1)(eslint@8.7.0): resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -191,7 +245,7 @@ packages: semver: 6.3.0 dev: false - /@babel/generator/7.19.0: + /@babel/generator@7.19.0: resolution: {integrity: sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==} engines: {node: '>=6.9.0'} dependencies: @@ -200,7 +254,7 @@ packages: jsesc: 2.5.2 dev: false - /@babel/helper-compilation-targets/7.19.1_@babel+core@7.19.1: + /@babel/helper-compilation-targets@7.19.1(@babel/core@7.19.1): resolution: {integrity: sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -213,12 +267,12 @@ packages: semver: 6.3.0 dev: false - /@babel/helper-environment-visitor/7.18.9: + /@babel/helper-environment-visitor@7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} dev: false - /@babel/helper-function-name/7.19.0: + /@babel/helper-function-name@7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: @@ -226,21 +280,21 @@ packages: '@babel/types': 7.19.0 dev: false - /@babel/helper-hoist-variables/7.18.6: + /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.0 dev: false - /@babel/helper-module-imports/7.18.6: + /@babel/helper-module-imports@7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.0 dev: false - /@babel/helper-module-transforms/7.19.0: + /@babel/helper-module-transforms@7.19.0: resolution: {integrity: sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==} engines: {node: '>=6.9.0'} dependencies: @@ -256,36 +310,36 @@ packages: - supports-color dev: false - /@babel/helper-simple-access/7.18.6: + /@babel/helper-simple-access@7.18.6: resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.0 dev: false - /@babel/helper-split-export-declaration/7.18.6: + /@babel/helper-split-export-declaration@7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.0 dev: false - /@babel/helper-string-parser/7.18.10: + /@babel/helper-string-parser@7.18.10: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} engines: {node: '>=6.9.0'} dev: false - /@babel/helper-validator-identifier/7.19.1: + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} dev: false - /@babel/helper-validator-option/7.18.6: + /@babel/helper-validator-option@7.18.6: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} dev: false - /@babel/helpers/7.19.0: + /@babel/helpers@7.19.0: resolution: {integrity: sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==} engines: {node: '>=6.9.0'} dependencies: @@ -296,7 +350,7 @@ packages: - supports-color dev: false - /@babel/highlight/7.16.10: + /@babel/highlight@7.16.10: resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} engines: {node: '>=6.9.0'} dependencies: @@ -305,7 +359,7 @@ packages: js-tokens: 4.0.0 dev: false - /@babel/highlight/7.18.6: + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: @@ -314,15 +368,14 @@ packages: js-tokens: 4.0.0 dev: false - /@babel/parser/7.19.1: + /@babel/parser@7.19.1: resolution: {integrity: sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==} engines: {node: '>=6.0.0'} - hasBin: true dependencies: '@babel/types': 7.19.0 dev: false - /@babel/template/7.18.10: + /@babel/template@7.18.10: resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} dependencies: @@ -331,7 +384,7 @@ packages: '@babel/types': 7.19.0 dev: false - /@babel/traverse/7.19.1: + /@babel/traverse@7.19.1: resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==} engines: {node: '>=6.9.0'} dependencies: @@ -343,13 +396,13 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/parser': 7.19.1 '@babel/types': 7.19.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color dev: false - /@babel/types/7.19.0: + /@babel/types@7.19.0: resolution: {integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==} engines: {node: '>=6.9.0'} dependencies: @@ -358,35 +411,35 @@ packages: to-fast-properties: 2.0.0 dev: false - /@cspotcode/source-map-consumer/0.8.0: + /@cspotcode/source-map-consumer@0.8.0: resolution: {integrity: sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==} engines: {node: '>= 12'} dev: false - /@cspotcode/source-map-support/0.7.0: + /@cspotcode/source-map-support@0.7.0: resolution: {integrity: sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==} engines: {node: '>=12'} dependencies: '@cspotcode/source-map-consumer': 0.8.0 dev: false - /@emmetio/abbreviation/2.2.3: + /@emmetio/abbreviation@2.2.3: resolution: {integrity: sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==} dependencies: '@emmetio/scanner': 1.0.0 dev: false - /@emmetio/css-abbreviation/2.1.4: + /@emmetio/css-abbreviation@2.1.4: resolution: {integrity: sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==} dependencies: '@emmetio/scanner': 1.0.0 dev: false - /@emmetio/scanner/1.0.0: + /@emmetio/scanner@1.0.0: resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} dev: false - /@esbuild/android-arm/0.15.18: + /@esbuild/android-arm@0.15.18: resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} engines: {node: '>=12'} cpu: [arm] @@ -394,7 +447,7 @@ packages: requiresBuild: true optional: true - /@esbuild/linux-loong64/0.15.18: + /@esbuild/linux-loong64@0.15.18: resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} engines: {node: '>=12'} cpu: [loong64] @@ -402,12 +455,12 @@ packages: requiresBuild: true optional: true - /@eslint/eslintrc/1.0.5: + /@eslint/eslintrc@1.0.5: resolution: {integrity: sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) espree: 9.3.0 globals: 13.12.0 ignore: 4.0.6 @@ -419,22 +472,22 @@ packages: - supports-color dev: false - /@humanwhocodes/config-array/0.9.2: + /@humanwhocodes/config-array@0.9.2: resolution: {integrity: sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color dev: false - /@humanwhocodes/object-schema/1.2.1: + /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: false - /@jridgewell/gen-mapping/0.1.1: + /@jridgewell/gen-mapping@0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} dependencies: @@ -442,7 +495,7 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: false - /@jridgewell/gen-mapping/0.3.2: + /@jridgewell/gen-mapping@0.3.2: resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} engines: {node: '>=6.0.0'} dependencies: @@ -451,32 +504,32 @@ packages: '@jridgewell/trace-mapping': 0.3.15 dev: false - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} dev: false - /@jridgewell/set-array/1.1.2: + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} dev: false - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: false - /@jridgewell/trace-mapping/0.3.15: + /@jridgewell/trace-mapping@0.3.15: resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: false - /@koa/router/10.1.1: + /@koa/router@10.1.1: resolution: {integrity: sha512-ORNjq5z4EmQPriKbR0ER3k4Gh7YGNhWDL7JBW+8wXDrHLbWYKYSJaOJ9aN06npF5tbTxe2JBOsurpJDAvjiXKw==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) http-errors: 1.8.1 koa-compose: 4.1.0 methods: 1.1.2 @@ -485,18 +538,16 @@ packages: - supports-color dev: false - /@mark.probst/unicode-properties/1.1.0: + /@mark.probst/unicode-properties@1.1.0: resolution: {integrity: sha512-7AQsO0hMmpqDledV7AhBuSYqYPFsKP9PaltMecX9nlnsyFxqtsqUg9/pvB2L/jxvskrDrNkdKYz2KTbQznCtng==} dependencies: brfs: 1.6.1 unicode-trie: 0.3.1 dev: false - /@milahu/patch-package-with-pnpm-support/6.4.10: + /@milahu/patch-package-with-pnpm-support@6.4.10: resolution: {integrity: sha512-v39Gi8NffnZsxbg0EPVEKGiHA6LAzhbCHyWjT/J9QCuwUvoMihPBjtUzUA+jLBDQZcwIezzsy/g84l6BJDK4Xw==} engines: {npm: '>5'} - deprecated: the package was renamed to @milahu/patch-package - hasBin: true dependencies: '@types/dashdash': 1.14.1 '@yarnpkg/lockfile': 1.1.0 @@ -515,13 +566,13 @@ packages: tmp: 0.2.1 dev: true - /@nicolo-ribaudo/eslint-scope-5-internals/5.1.1-v1: + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} dependencies: eslint-scope: 5.1.1 dev: false - /@nodelib/fs.scandir/2.1.5: + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: @@ -529,12 +580,12 @@ packages: run-parallel: 1.2.0 dev: false - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} dev: false - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: @@ -542,7 +593,7 @@ packages: fastq: 1.13.0 dev: false - /@prisma/debug/3.8.1: + /@prisma/debug@3.8.1: resolution: {integrity: sha512-ft4VPTYME1UBJ7trfrBuF2w9jX1ipDy786T9fAEskNGb+y26gPDqz5fiEWc2kgHNeVdz/qTI/V3wXILRyEcgxQ==} dependencies: '@types/debug': 4.1.7 @@ -550,40 +601,40 @@ packages: strip-ansi: 6.0.1 dev: false - /@rushstack/eslint-patch/1.2.0: + /@rushstack/eslint-patch@1.2.0: resolution: {integrity: sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==} dev: false - /@sindresorhus/is/4.6.0: + /@sindresorhus/is@4.6.0: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} dev: true - /@sindresorhus/is/5.3.0: + /@sindresorhus/is@5.3.0: resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==} engines: {node: '>=14.16'} dev: true - /@szmarczak/http-timer/4.0.6: + /@szmarczak/http-timer@4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} dependencies: defer-to-connect: 2.0.1 dev: true - /@szmarczak/http-timer/5.0.1: + /@szmarczak/http-timer@5.0.1: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} dependencies: defer-to-connect: 2.0.1 dev: true - /@tootallnate/once/1.1.2: + /@tootallnate/once@1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} dev: false - /@ts-morph/common/0.11.1: + /@ts-morph/common@0.11.1: resolution: {integrity: sha512-7hWZS0NRpEsNV8vWJzg7FEz6V8MaLNeJOmwmghqUXTpzk16V1LLZhdo+4QvE/+zv4cVci0OviuJFnqhEfoV3+g==} dependencies: fast-glob: 3.2.11 @@ -592,23 +643,23 @@ packages: path-browserify: 1.0.1 dev: false - /@tsconfig/node10/1.0.8: + /@tsconfig/node10@1.0.8: resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} dev: false - /@tsconfig/node12/1.0.9: + /@tsconfig/node12@1.0.9: resolution: {integrity: sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==} dev: false - /@tsconfig/node14/1.0.1: + /@tsconfig/node14@1.0.1: resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==} dev: false - /@tsconfig/node16/1.0.2: + /@tsconfig/node16@1.0.2: resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} dev: false - /@types/cacheable-request/6.0.3: + /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: '@types/http-cache-semantics': 4.0.1 @@ -617,115 +668,115 @@ packages: '@types/responselike': 1.0.0 dev: true - /@types/chai-subset/1.3.3: + /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: '@types/chai': 4.3.4 dev: true - /@types/chai/4.3.3: + /@types/chai@4.3.3: resolution: {integrity: sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==} dev: false - /@types/chai/4.3.4: + /@types/chai@4.3.4: resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} dev: true - /@types/dashdash/1.14.1: + /@types/dashdash@1.14.1: resolution: {integrity: sha512-3UAiw52g6LARDS9I5lpYwUzj/nBuMvor/0BWiza7ibuOIEaNIo+m3whnVBLLj/ue0DzlcX+96c24YdZCuDwOiQ==} dev: true - /@types/debug/4.1.7: + /@types/debug@4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: '@types/ms': 0.7.31 dev: false - /@types/fs-extra/9.0.13: + /@types/fs-extra@9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: '@types/node': 16.11.21 dev: true - /@types/glob/8.0.0: + /@types/glob@8.0.0: resolution: {integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==} dependencies: '@types/minimatch': 5.1.2 '@types/node': 16.11.21 dev: false - /@types/http-cache-semantics/4.0.1: + /@types/http-cache-semantics@4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} dev: true - /@types/json-schema/7.0.9: + /@types/json-schema@7.0.9: resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} dev: false - /@types/json5/0.0.29: + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: false - /@types/jsonfile/6.0.1: + /@types/jsonfile@6.0.1: resolution: {integrity: sha512-SSCc8i9yl6vjgXSyZb0uEodk3UjXuWd55t1D+Ie1zuTx7ml+2AEj0Xyomi3NBz1gCBsZVyWWnXOLXowS1ufhEw==} dependencies: '@types/node': 16.18.3 dev: false - /@types/keyv/3.1.4: + /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: '@types/node': 16.18.3 dev: true - /@types/lodash/4.14.182: + /@types/lodash@4.14.182: resolution: {integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==} dev: false - /@types/minimatch/5.1.2: + /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: false - /@types/mocha/9.1.1: + /@types/mocha@9.1.1: resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} dev: false - /@types/ms/0.7.31: + /@types/ms@0.7.31: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false - /@types/node/16.11.21: + /@types/node@16.11.21: resolution: {integrity: sha512-Pf8M1XD9i1ksZEcCP8vuSNwooJ/bZapNmIzpmsMaL+jMI+8mEYU3PKvs+xDNuQcJWF/x24WzY4qxLtB0zNow9A==} - /@types/node/16.18.3: + /@types/node@16.18.3: resolution: {integrity: sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==} - /@types/normalize-package-data/2.4.1: + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: false - /@types/parse-json/4.0.0: + /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} dev: false - /@types/pluralize/0.0.29: + /@types/pluralize@0.0.29: resolution: {integrity: sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA==} dev: false - /@types/responselike/1.0.0: + /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: '@types/node': 16.18.3 dev: true - /@types/semver/7.3.13: + /@types/semver@7.3.13: resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true - /@types/vscode/1.72.0: + /@types/vscode@1.72.0: resolution: {integrity: sha512-WvHluhUo+lQvE3I4wUagRpnkHuysB4qSyOQUyIAS9n9PYMJjepzTUD8Jyks0YeXoPD0UGctjqp2u84/b3v6Ydw==} - /@types/yauzl/2.10.0: + /@types/yauzl@2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: @@ -733,7 +784,7 @@ packages: dev: false optional: true - /@typescript-eslint/eslint-plugin/5.37.0_6oh6r4lha3rjc52e3df7nthyau: + /@typescript-eslint/eslint-plugin@5.37.0(@typescript-eslint/parser@5.37.0)(eslint@8.7.0)(typescript@5.0.2): resolution: {integrity: sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -744,23 +795,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.37.0_f2hryljuvpua6e2voooci5naoy + '@typescript-eslint/parser': 5.37.0(eslint@8.7.0)(typescript@5.0.2) '@typescript-eslint/scope-manager': 5.37.0 - '@typescript-eslint/type-utils': 5.37.0_f2hryljuvpua6e2voooci5naoy - '@typescript-eslint/utils': 5.37.0_f2hryljuvpua6e2voooci5naoy - debug: 4.3.4 + '@typescript-eslint/type-utils': 5.37.0(eslint@8.7.0)(typescript@5.0.2) + '@typescript-eslint/utils': 5.37.0(eslint@8.7.0)(typescript@5.0.2) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.7.0 functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.3 - typescript: 4.9.3 + tsutils: 3.21.0(typescript@5.0.2) + typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/parser/5.37.0_f2hryljuvpua6e2voooci5naoy: + /@typescript-eslint/parser@5.37.0(eslint@8.7.0)(typescript@5.0.2): resolution: {integrity: sha512-01VzI/ipYKuaG5PkE5+qyJ6m02fVALmMPY3Qq5BHflDx3y4VobbLdHQkSMg9VPRS4KdNt4oYTMaomFoHonBGAw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -772,15 +823,15 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.37.0 '@typescript-eslint/types': 5.37.0 - '@typescript-eslint/typescript-estree': 5.37.0_typescript@4.9.3 - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 5.37.0(typescript@5.0.2) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.7.0 - typescript: 4.9.3 + typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/scope-manager/5.37.0: + /@typescript-eslint/scope-manager@5.37.0: resolution: {integrity: sha512-F67MqrmSXGd/eZnujjtkPgBQzgespu/iCZ+54Ok9X5tALb9L2v3G+QBSoWkXG0p3lcTJsL+iXz5eLUEdSiJU9Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -788,7 +839,7 @@ packages: '@typescript-eslint/visitor-keys': 5.37.0 dev: false - /@typescript-eslint/type-utils/5.37.0_f2hryljuvpua6e2voooci5naoy: + /@typescript-eslint/type-utils@5.37.0(eslint@8.7.0)(typescript@5.0.2): resolution: {integrity: sha512-BSx/O0Z0SXOF5tY0bNTBcDEKz2Ec20GVYvq/H/XNKiUorUFilH7NPbFUuiiyzWaSdN3PA8JV0OvYx0gH/5aFAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -798,22 +849,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.37.0_typescript@4.9.3 - '@typescript-eslint/utils': 5.37.0_f2hryljuvpua6e2voooci5naoy - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 5.37.0(typescript@5.0.2) + '@typescript-eslint/utils': 5.37.0(eslint@8.7.0)(typescript@5.0.2) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.7.0 - tsutils: 3.21.0_typescript@4.9.3 - typescript: 4.9.3 + tsutils: 3.21.0(typescript@5.0.2) + typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/types/5.37.0: + /@typescript-eslint/types@5.37.0: resolution: {integrity: sha512-3frIJiTa5+tCb2iqR/bf7XwU20lnU05r/sgPJnRpwvfZaqCJBrl8Q/mw9vr3NrNdB/XtVyMA0eppRMMBqdJ1bA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /@typescript-eslint/typescript-estree/5.37.0_typescript@4.9.3: + /@typescript-eslint/typescript-estree@5.37.0(typescript@5.0.2): resolution: {integrity: sha512-JkFoFIt/cx59iqEDSgIGnQpCTRv96MQnXCYvJi7QhBC24uyuzbD8wVbajMB1b9x4I0octYFJ3OwjAwNqk1AjDA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -824,17 +875,17 @@ packages: dependencies: '@typescript-eslint/types': 5.37.0 '@typescript-eslint/visitor-keys': 5.37.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.3 - typescript: 4.9.3 + tsutils: 3.21.0(typescript@5.0.2) + typescript: 5.0.2 transitivePeerDependencies: - supports-color dev: false - /@typescript-eslint/utils/5.37.0_f2hryljuvpua6e2voooci5naoy: + /@typescript-eslint/utils@5.37.0(eslint@8.7.0)(typescript@5.0.2): resolution: {integrity: sha512-jUEJoQrWbZhmikbcWSMDuUSxEE7ID2W/QCV/uz10WtQqfOuKZUqFGjqLJ+qhDd17rjgp+QJPqTdPIBWwoob2NQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -843,16 +894,16 @@ packages: '@types/json-schema': 7.0.9 '@typescript-eslint/scope-manager': 5.37.0 '@typescript-eslint/types': 5.37.0 - '@typescript-eslint/typescript-estree': 5.37.0_typescript@4.9.3 + '@typescript-eslint/typescript-estree': 5.37.0(typescript@5.0.2) eslint: 8.7.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.7.0 + eslint-utils: 3.0.0(eslint@8.7.0) transitivePeerDependencies: - supports-color - typescript dev: false - /@typescript-eslint/visitor-keys/5.37.0: + /@typescript-eslint/visitor-keys@5.37.0: resolution: {integrity: sha512-Hp7rT4cENBPIzMwrlehLW/28EVCOcE9U1Z1BQTc8EA8v5qpr7GRGuG+U58V5tTY48zvUOA3KHvw3rA8tY9fbdA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -860,23 +911,23 @@ packages: eslint-visitor-keys: 3.3.0 dev: false - /@ungap/promise-all-settled/1.1.2: + /@ungap/promise-all-settled@1.1.2: resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} dev: false - /@volar/language-core/1.3.0-alpha.0: + /@volar/language-core@1.3.0-alpha.0: resolution: {integrity: sha512-W3uMzecHPcbwddPu4SJpUcPakRBK/y/BP+U0U6NiPpUX1tONLC4yCawt+QBJqtgJ+sfD6ztf5PyvPL3hQRqfOA==} dependencies: '@volar/source-map': 1.3.0-alpha.0 dev: false - /@volar/language-core/1.3.0-alpha.3: + /@volar/language-core@1.3.0-alpha.3: resolution: {integrity: sha512-DJtCfK57vXnk1q8Vx3z7wWfKXJvOelrdETzIZM7NQW43KUqYXYLQHMz+nfppfV2G2cvxw+wBq9nobLdBuPR3Vg==} dependencies: '@volar/source-map': 1.3.0-alpha.3 dev: false - /@volar/language-server/1.3.0-alpha.3: + /@volar/language-server@1.3.0-alpha.3: resolution: {integrity: sha512-qFBb/nvZFD8DOLtBbTxk3y11+jtM+3zRYH3AxiKXlBlZESCGUgO8lQXeDZYd0zszRPQ3dBmtN+oBjxQfYpvlRw==} dependencies: '@volar/language-core': 1.3.0-alpha.3 @@ -892,7 +943,7 @@ packages: vscode-uri: 3.0.7 dev: false - /@volar/language-service/1.3.0-alpha.3: + /@volar/language-service@1.3.0-alpha.3: resolution: {integrity: sha512-TTIzdu0kG9+EygYddzmuOdbwuNb0A5Wf3Eh4lpk52aEDW9x2GEQmOtnENvaK6wRtBPZnSsI+rlhqQaZAq/hk/Q==} dependencies: '@volar/language-core': 1.3.0-alpha.3 @@ -906,32 +957,32 @@ packages: vscode-uri: 3.0.7 dev: false - /@volar/shared/1.3.0-alpha.3: + /@volar/shared@1.3.0-alpha.3: resolution: {integrity: sha512-laNURk/qkRJStxyNy0DVFMr8drqQv5ZXXuOHk/QCGI4/hiNfk94a3vIFtCIbtw/TOETcV6s9nJP7JMwd8xr2lw==} dependencies: typesafe-path: 0.2.2 vscode-uri: 3.0.7 dev: false - /@volar/source-map/1.3.0-alpha.0: + /@volar/source-map@1.3.0-alpha.0: resolution: {integrity: sha512-jSdizxWFvDTvkPYZnO6ew3sBZUnS0abKCbuopkc0JrIlFbznWC/fPH3iPFIMS8/IIkRxq1Jh9VVG60SmtsdaMQ==} dependencies: muggle-string: 0.2.2 dev: false - /@volar/source-map/1.3.0-alpha.3: + /@volar/source-map@1.3.0-alpha.3: resolution: {integrity: sha512-ob+uDsg/qjrEKTHyoM2KKhRV5oe4Z2N4vcQzy6LXwdgpsyJfRrK5ijbJ5GcqsA71nwpZkyyILMY40Z0Nbk7cGg==} dependencies: muggle-string: 0.2.2 dev: false - /@volar/typescript-faster/1.3.0-alpha.3: + /@volar/typescript-faster@1.3.0-alpha.3: resolution: {integrity: sha512-0iOUOyfaUJKDqU2Hd3xC1r1M6L4S+Yg8rNOR3AC8/hZ3PeGca3JzdFffOwfAZYbsQZcp+lHDYj9K8emku4zhIg==} dependencies: semver: 7.3.8 dev: false - /@volar/vue-language-core/1.2.0-patch.2: + /@volar/vue-language-core@1.2.0-patch.2: resolution: {integrity: sha512-Vkfki166pbYpd7lG/FblbkNELbQmz3NzIFbQVcd7WUIvkse2dXCHzhx7RQnlkchQ+dNbCfF30VkVkxHoZy4ZCA==} dependencies: '@volar/language-core': 1.3.0-alpha.0 @@ -945,7 +996,7 @@ packages: vue-template-compiler: 2.7.14 dev: false - /@vscode/emmet-helper/2.8.4: + /@vscode/emmet-helper@2.8.4: resolution: {integrity: sha512-lUki5QLS47bz/U8IlG9VQ+1lfxMtxMZENmU5nu4Z71eOD5j9FK0SmYGL5NiVJg9WBWeAU0VxRADMY2Qpq7BfVg==} dependencies: emmet: 2.3.6 @@ -956,11 +1007,11 @@ packages: vscode-uri: 2.1.2 dev: false - /@vscode/l10n/0.0.11: + /@vscode/l10n@0.0.11: resolution: {integrity: sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==} dev: false - /@vscode/test-electron/2.1.5: + /@vscode/test-electron@2.1.5: resolution: {integrity: sha512-O/ioqFpV+RvKbRykX2ItYPnbcZ4Hk5V0rY4uhQjQTLhGL9WZUvS7exzuYQCCI+ilSqJpctvxq2llTfGXf9UnnA==} engines: {node: '>=8.9.3'} dependencies: @@ -972,10 +1023,9 @@ packages: - supports-color dev: false - /@vscode/test-web/0.0.15: + /@vscode/test-web@0.0.15: resolution: {integrity: sha512-jYuDcoG66xXEnZnmrHuRkOdZj4BAk/BFzsqa8c/ASFP4Rkua6bCHIDUqii7sVOdmtf2YuTbI3nSqzmn4YvTUfw==} engines: {node: '>=8.9.3'} - hasBin: true dependencies: '@koa/router': 10.1.1 decompress: 4.2.1 @@ -995,7 +1045,7 @@ packages: - utf-8-validate dev: false - /@vue/compiler-core/3.2.47: + /@vue/compiler-core@3.2.47: resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} dependencies: '@babel/parser': 7.19.1 @@ -1004,14 +1054,14 @@ packages: source-map: 0.6.1 dev: false - /@vue/compiler-dom/3.2.47: + /@vue/compiler-dom@3.2.47: resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} dependencies: '@vue/compiler-core': 3.2.47 '@vue/shared': 3.2.47 dev: false - /@vue/compiler-sfc/3.2.47: + /@vue/compiler-sfc@3.2.47: resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} dependencies: '@babel/parser': 7.19.1 @@ -1026,14 +1076,14 @@ packages: source-map: 0.6.1 dev: false - /@vue/compiler-ssr/3.2.47: + /@vue/compiler-ssr@3.2.47: resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} dependencies: '@vue/compiler-dom': 3.2.47 '@vue/shared': 3.2.47 dev: false - /@vue/reactivity-transform/3.2.47: + /@vue/reactivity-transform@3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} dependencies: '@babel/parser': 7.19.1 @@ -1043,30 +1093,30 @@ packages: magic-string: 0.25.9 dev: false - /@vue/reactivity/3.2.47: + /@vue/reactivity@3.2.47: resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} dependencies: '@vue/shared': 3.2.47 dev: false - /@vue/shared/3.2.47: + /@vue/shared@3.2.47: resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} dev: false - /@yarnpkg/lockfile/1.1.0: + /@yarnpkg/lockfile@1.1.0: resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} dev: true - /@zardoy/tsconfig/1.3.1_typescript@4.9.3: + /@zardoy/tsconfig@1.3.1(typescript@5.0.2): resolution: {integrity: sha512-maEmpfUbcj29RFjs8tatq7P7Ev+W2F7Ppc02mpWYA9LDa+P0mKa+fa4YcrhL1ZeY/wWCUULCOoq2WuxSwu1pyw==} engines: {node: '>=14'} peerDependencies: typescript: ^4.5.4 dependencies: - typescript: 4.9.3 + typescript: 5.0.2 dev: true - /@zardoy/utils/0.0.4: + /@zardoy/utils@0.0.4: resolution: {integrity: sha512-XByd7HzxgwJi85o3oTSJDhk6b3H4w21NYHIqX3WtQ+tGBFPLldo8rdzr31oms6coeXvPVwRmoTGkJmAyHTJQRw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -1075,7 +1125,7 @@ packages: type-fest: 2.19.0 dev: false - /@zardoy/utils/0.0.9: + /@zardoy/utils@0.0.9: resolution: {integrity: sha512-c7UJ3UC3yXXAYvZe23AFTGI1Nqes/TXvKMVnEYk/ikKF7v8d5rvuwz6dw5cTlDgz3Vpub725MIWsIloVKAPSmQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -1084,7 +1134,7 @@ packages: type-fest: 2.19.0 dev: false - /@zardoy/vscode-utils/0.0.47_q3dzlsegmrs367wpqi3skrbzhq: + /@zardoy/vscode-utils@0.0.47(@types/vscode@1.72.0)(esbuild@0.15.18)(vscode-framework@0.0.18): resolution: {integrity: sha512-0xsdTonXFxcBdsHcWgkSfJSpP9VOvOiT6oo/LuA5FOGJJI/5W6e6EDwN6Y9FahRWdrYmOfliekEMGZGk/eEWcQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true @@ -1118,12 +1168,12 @@ packages: type-fest: 2.19.0 typed-jsonfile: 0.2.1 untildify: 4.0.0 - vscode-framework: 0.0.18_37hwwvsstfvtglssqblfqfuf2i + vscode-framework: 0.0.18(@types/vscode@1.72.0)(typescript@5.0.2) vscode-manifest: 0.0.8 vscode-uri: 3.0.6 dev: false - /accepts/1.3.7: + /accepts@1.3.7: resolution: {integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==} engines: {node: '>= 0.6'} dependencies: @@ -1131,7 +1181,7 @@ packages: negotiator: 0.6.2 dev: false - /acorn-jsx/5.3.2_acorn@8.7.0: + /acorn-jsx@5.3.2(acorn@8.7.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1139,38 +1189,35 @@ packages: acorn: 8.7.0 dev: false - /acorn-walk/8.2.0: + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - /acorn/7.4.1: + /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} - hasBin: true dev: false - /acorn/8.7.0: + /acorn@8.7.0: resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} engines: {node: '>=0.4.0'} - hasBin: true dev: false - /acorn/8.8.1: + /acorn@8.8.1: resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} engines: {node: '>=0.4.0'} - hasBin: true dev: true - /agent-base/6.0.2: + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: false - /aggregate-error/3.1.0: + /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} dependencies: @@ -1178,7 +1225,7 @@ packages: indent-string: 4.0.0 dev: false - /ajv/6.12.6: + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 @@ -1187,40 +1234,40 @@ packages: uri-js: 4.4.1 dev: false - /ansi-colors/4.1.1: + /ansi-colors@4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} engines: {node: '>=6'} dev: false - /ansi-regex/4.1.1: + /ansi-regex@4.1.1: resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} engines: {node: '>=6'} dev: false - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: false - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: false - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} dev: false - /anymatch/3.1.2: + /anymatch@3.1.2: resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} engines: {node: '>= 8'} dependencies: @@ -1228,15 +1275,15 @@ packages: picomatch: 2.3.1 dev: false - /arg/4.1.3: + /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: false - /argparse/2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: false - /array-includes/3.1.5: + /array-includes@3.1.5: resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} engines: {node: '>= 0.4'} dependencies: @@ -1247,12 +1294,23 @@ packages: is-string: 1.0.7 dev: false - /array-union/2.1.0: + /array-includes@3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + get-intrinsic: 1.2.0 + is-string: 1.0.7 + dev: false + + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: false - /array.prototype.flat/1.3.0: + /array.prototype.flat@1.3.0: resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} engines: {node: '>= 0.4'} dependencies: @@ -1262,82 +1320,101 @@ packages: es-shim-unscopables: 1.0.0 dev: false - /assert-plus/1.0.0: + /array.prototype.flatmap@1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + es-shim-unscopables: 1.0.0 + dev: false + + /array.prototype.tosorted@1.1.1: + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.0 + dev: false + + /assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} dev: true - /assertion-error/1.1.0: + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - /available-typed-arrays/1.0.5: + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} dev: false - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /base64-js/1.5.1: + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false - /basic-auth/2.0.1: + /basic-auth@2.0.1: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} dependencies: safe-buffer: 5.1.2 dev: false - /big-integer/1.6.51: + /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} dev: false - /binary-extensions/2.2.0: + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} dev: false - /binary/0.3.0: + /binary@0.3.0: resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} dependencies: buffers: 0.1.1 chainsaw: 0.1.0 dev: false - /bl/1.2.3: + /bl@1.2.3: resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} dependencies: readable-stream: 2.3.7 safe-buffer: 5.2.1 dev: false - /bluebird/3.4.7: + /bluebird@3.4.7: resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} dev: false - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion/2.0.1: + /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 dev: false - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - /brfs/1.6.1: + /brfs@1.6.1: resolution: {integrity: sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==} - hasBin: true dependencies: quote-stream: 1.0.2 resolve: 1.22.1 @@ -1345,75 +1422,74 @@ packages: through2: 2.0.5 dev: false - /browser-or-node/1.3.0: + /browser-or-node@1.3.0: resolution: {integrity: sha512-0F2z/VSnLbmEeBcUrSuDH5l0HxTXdQQzLjkmBR4cYfvg1zJrKSlmIZFqyFR8oX0NrwPhy3c3HQ6i3OxMbew4Tg==} dev: false - /browser-stdout/1.3.1: + /browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} dev: false - /browserslist/4.21.4: + /browserslist@4.21.4: resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true dependencies: caniuse-lite: 1.0.30001402 electron-to-chromium: 1.4.254 node-releases: 2.0.6 - update-browserslist-db: 1.0.9_browserslist@4.21.4 + update-browserslist-db: 1.0.9(browserslist@4.21.4) dev: false - /buffer-alloc-unsafe/1.1.0: + /buffer-alloc-unsafe@1.1.0: resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} dev: false - /buffer-alloc/1.2.0: + /buffer-alloc@1.2.0: resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} dependencies: buffer-alloc-unsafe: 1.1.0 buffer-fill: 1.0.0 dev: false - /buffer-crc32/0.2.13: + /buffer-crc32@0.2.13: resolution: {integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=} dev: false - /buffer-equal/0.0.1: + /buffer-equal@0.0.1: resolution: {integrity: sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=} engines: {node: '>=0.4.0'} dev: false - /buffer-fill/1.0.0: + /buffer-fill@1.0.0: resolution: {integrity: sha1-+PeLdniYiO858gXNY39o5wISKyw=} dev: false - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /buffer-indexof-polyfill/1.0.2: + /buffer-indexof-polyfill@1.0.2: resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==} engines: {node: '>=0.10'} dev: false - /buffer/5.7.1: + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: base64-js: 1.5.1 ieee754: 1.2.1 dev: false - /buffers/0.1.1: + /buffers@0.1.1: resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} engines: {node: '>=0.2.0'} dev: false - /builtin-modules/3.3.0: + /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} dev: false - /cache-content-type/1.0.1: + /cache-content-type@1.0.1: resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} engines: {node: '>= 6.0.0'} dependencies: @@ -1421,17 +1497,17 @@ packages: ylru: 1.2.1 dev: false - /cacheable-lookup/5.0.4: + /cacheable-lookup@5.0.4: resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} engines: {node: '>=10.6.0'} dev: true - /cacheable-lookup/7.0.0: + /cacheable-lookup@7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} dev: true - /cacheable-request/10.2.3: + /cacheable-request@10.2.3: resolution: {integrity: sha512-6BehRBOs7iurNjAYN9iPazTwFDaMQavJO8W1MEm3s2pH8q/tkPTtLDRUZaweWK87WFGf2Y5wLAlaCJlR5kOz3w==} engines: {node: '>=14.16'} dependencies: @@ -1444,7 +1520,7 @@ packages: responselike: 3.0.0 dev: true - /cacheable-request/7.0.2: + /cacheable-request@7.0.2: resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} engines: {node: '>=8'} dependencies: @@ -1457,40 +1533,40 @@ packages: responselike: 2.0.1 dev: true - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.1.3 dev: false - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: false - /camel-case/4.1.2: + /camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 tslib: 2.3.1 dev: false - /camelcase/5.3.1: + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: false - /camelcase/6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: false - /caniuse-lite/1.0.30001402: + /caniuse-lite@1.0.30001402: resolution: {integrity: sha512-Mx4MlhXO5NwuvXGgVb+hg65HZ+bhUYsz8QtDGDo2QmaJS2GBX47Xfi2koL86lc8K+l+htXeTEB/Aeqvezoo6Ew==} dev: false - /capital-case/1.0.4: + /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: no-case: 3.0.4 @@ -1498,7 +1574,7 @@ packages: upper-case-first: 2.0.2 dev: false - /chai/4.3.6: + /chai@4.3.6: resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} engines: {node: '>=4'} dependencies: @@ -1511,7 +1587,7 @@ packages: type-detect: 4.0.8 dev: false - /chai/4.3.7: + /chai@4.3.7: resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: @@ -1524,13 +1600,13 @@ packages: type-detect: 4.0.8 dev: true - /chainsaw/0.1.0: + /chainsaw@0.1.0: resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} dependencies: traverse: 0.3.9 dev: false - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -1538,7 +1614,7 @@ packages: escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: @@ -1546,7 +1622,7 @@ packages: supports-color: 7.2.0 dev: false - /change-case/4.1.2: + /change-case@4.1.2: resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} dependencies: camel-case: 4.1.2 @@ -1563,13 +1639,12 @@ packages: tslib: 2.3.1 dev: false - /check-error/1.0.2: + /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} - /chokidar-cli/3.0.0: + /chokidar-cli@3.0.0: resolution: {integrity: sha512-xVW+Qeh7z15uZRxHOkP93Ux8A0xbPzwK4GaqD8dQOYc34TlkqUhVSS59fK36DOp5WdJlrRzlYSy02Ht99FjZqQ==} engines: {node: '>= 8.10.0'} - hasBin: true dependencies: chokidar: 3.5.3 lodash.debounce: 4.0.8 @@ -1577,7 +1652,7 @@ packages: yargs: 13.3.2 dev: false - /chokidar/3.5.3: + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: @@ -1592,22 +1667,22 @@ packages: fsevents: 2.3.2 dev: false - /ci-info/3.3.0: + /ci-info@3.3.0: resolution: {integrity: sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==} - /clean-regexp/1.0.0: + /clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} dependencies: escape-string-regexp: 1.0.5 dev: false - /clean-stack/2.2.0: + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} dev: false - /cliui/5.0.0: + /cliui@5.0.0: resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} dependencies: string-width: 3.1.0 @@ -1615,7 +1690,7 @@ packages: wrap-ansi: 5.1.0 dev: false - /cliui/7.0.4: + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 @@ -1623,73 +1698,73 @@ packages: wrap-ansi: 7.0.0 dev: false - /clone-response/1.0.3: + /clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} dependencies: mimic-response: 1.0.1 dev: true - /co/4.6.0: + /co@4.6.0: resolution: {integrity: sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: false - /code-block-writer/10.1.1: + /code-block-writer@10.1.1: resolution: {integrity: sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==} dev: false - /code-block-writer/11.0.0: + /code-block-writer@11.0.0: resolution: {integrity: sha512-GEqWvEWWsOvER+g9keO4ohFoD3ymwyCnqY3hoTr7GZipYFwEhMHJw+TtV0rfgRhNImM6QWZGO2XYjlJVyYT62w==} dependencies: tslib: 2.3.1 dev: false - /collection-utils/1.0.1: + /collection-utils@1.0.1: resolution: {integrity: sha512-LA2YTIlR7biSpXkKYwwuzGjwL5rjWEZVOSnvdUc7gObvWe4WkjxOpfrdhoP7Hs09YWDVfg0Mal9BpAqLfVEzQg==} dev: false - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 dev: false - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: false - /commander/2.20.3: + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: false - /commander/6.2.1: + /commander@6.2.1: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} dev: false - /commander/8.3.0: + /commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} dev: false - /commander/9.4.1: + /commander@9.4.1: resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} engines: {node: ^12.20.0 || >=14} dev: false - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /concat-stream/1.6.2: + /concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} dependencies: @@ -1699,11 +1774,11 @@ packages: typedarray: 0.0.6 dev: false - /confusing-browser-globals/1.0.10: + /confusing-browser-globals@1.0.10: resolution: {integrity: sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==} dev: false - /constant-case/3.0.4: + /constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: no-case: 3.0.4 @@ -1711,25 +1786,25 @@ packages: upper-case: 2.0.2 dev: false - /content-disposition/0.5.4: + /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 dev: false - /content-type/1.0.4: + /content-type@1.0.4: resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} engines: {node: '>= 0.6'} dev: false - /convert-source-map/1.8.0: + /convert-source-map@1.8.0: resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} dependencies: safe-buffer: 5.1.2 dev: false - /cookies/0.8.0: + /cookies@0.8.0: resolution: {integrity: sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==} engines: {node: '>= 0.8'} dependencies: @@ -1737,11 +1812,11 @@ packages: keygrip: 1.1.0 dev: false - /core-util-is/1.0.3: + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: false - /cosmiconfig/7.0.1: + /cosmiconfig@7.0.1: resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} engines: {node: '>=10'} dependencies: @@ -1752,11 +1827,11 @@ packages: yaml: 1.10.2 dev: false - /create-require/1.1.1: + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: false - /cross-spawn/6.0.5: + /cross-spawn@6.0.5: resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} engines: {node: '>=4.8'} dependencies: @@ -1767,7 +1842,7 @@ packages: which: 1.3.1 dev: false - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -1775,18 +1850,18 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /dashdash/2.0.0: + /dashdash@2.0.0: resolution: {integrity: sha512-ElMoAPlrzmF4l0OscF5pPBZv8LhUJBnwh7rHKllUOrwabAr47R1aQIIwC53rc59ycCb7k5Sj1/es+A3Bep/x5w==} engines: {node: '>=10.x'} dependencies: assert-plus: 1.0.0 dev: true - /de-indent/1.0.2: + /de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} dev: false - /debug/2.6.9: + /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' @@ -1797,7 +1872,7 @@ packages: ms: 2.0.0 dev: false - /debug/3.2.7: + /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' @@ -1808,7 +1883,7 @@ packages: ms: 2.1.3 dev: false - /debug/4.3.3: + /debug@4.3.3: resolution: {integrity: sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==} engines: {node: '>=6.0'} peerDependencies: @@ -1820,18 +1895,7 @@ packages: ms: 2.1.2 dev: false - /debug/4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /debug/4.3.4_supports-color@8.1.1: + /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -1842,26 +1906,25 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 - dev: false - /decamelize/1.2.0: + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} dev: false - /decamelize/4.0.0: + /decamelize@4.0.0: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} dev: false - /decompress-response/6.0.0: + /decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} dependencies: mimic-response: 3.1.0 dev: true - /decompress-tar/4.1.1: + /decompress-tar@4.1.1: resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==} engines: {node: '>=4'} dependencies: @@ -1870,7 +1933,7 @@ packages: tar-stream: 1.6.2 dev: false - /decompress-tarbz2/4.1.1: + /decompress-tarbz2@4.1.1: resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==} engines: {node: '>=4'} dependencies: @@ -1881,7 +1944,7 @@ packages: unbzip2-stream: 1.4.3 dev: false - /decompress-targz/4.1.1: + /decompress-targz@4.1.1: resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==} engines: {node: '>=4'} dependencies: @@ -1890,7 +1953,7 @@ packages: is-stream: 1.1.0 dev: false - /decompress-unzip/4.0.1: + /decompress-unzip@4.0.1: resolution: {integrity: sha1-3qrM39FK6vhVePczroIQ+bSEj2k=} engines: {node: '>=4'} dependencies: @@ -1900,7 +1963,7 @@ packages: yauzl: 2.10.0 dev: false - /decompress/4.2.1: + /decompress@4.2.1: resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==} engines: {node: '>=4'} dependencies: @@ -1914,39 +1977,39 @@ packages: strip-dirs: 2.1.0 dev: false - /deep-eql/3.0.1: + /deep-eql@3.0.1: resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} engines: {node: '>=0.12'} dependencies: type-detect: 4.0.8 dev: false - /deep-eql/4.1.3: + /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} dependencies: type-detect: 4.0.8 dev: true - /deep-equal/1.0.1: + /deep-equal@1.0.1: resolution: {integrity: sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=} dev: false - /deep-is/0.1.4: + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: false - /defer-to-connect/2.0.1: + /defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} dev: true - /define-lazy-prop/2.0.0: + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} dev: true - /define-properties/1.1.4: + /define-properties@1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} dependencies: @@ -1954,7 +2017,7 @@ packages: object-keys: 1.1.1 dev: false - /del/6.0.0: + /del@6.0.0: resolution: {integrity: sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==} engines: {node: '>=10'} dependencies: @@ -1968,124 +2031,124 @@ packages: slash: 3.0.0 dev: false - /delay/5.0.0: + /delay@5.0.0: resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} engines: {node: '>=10'} dev: false - /delegates/1.0.0: + /delegates@1.0.0: resolution: {integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=} dev: false - /depd/1.1.2: + /depd@1.1.2: resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=} engines: {node: '>= 0.6'} dev: false - /depd/2.0.0: + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} dev: false - /destroy/1.0.4: + /destroy@1.0.4: resolution: {integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=} dev: false - /detect-indent/6.1.0: + /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} dev: false - /diff/4.0.2: + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} dev: false - /diff/5.0.0: + /diff@5.0.0: resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} engines: {node: '>=0.3.1'} dev: false - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: false - /doctrine/2.1.0: + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} dependencies: esutils: 2.0.3 dev: false - /doctrine/3.0.0: + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: false - /dot-case/3.0.4: + /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 tslib: 2.3.1 dev: false - /duplexer2/0.1.4: + /duplexer2@0.1.4: resolution: {integrity: sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=} dependencies: readable-stream: 2.3.7 dev: false - /ee-first/1.1.1: + /ee-first@1.1.1: resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} dev: false - /electron-to-chromium/1.4.254: + /electron-to-chromium@1.4.254: resolution: {integrity: sha512-Sh/7YsHqQYkA6ZHuHMy24e6TE4eX6KZVsZb9E/DvU1nQRIrH4BflO/4k+83tfdYvDl+MObvlqHPRICzEdC9c6Q==} dev: false - /emmet/2.3.6: + /emmet@2.3.6: resolution: {integrity: sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==} dependencies: '@emmetio/abbreviation': 2.2.3 '@emmetio/css-abbreviation': 2.1.4 dev: false - /emoji-regex/7.0.3: + /emoji-regex@7.0.3: resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} dev: false - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: false - /encodeurl/1.0.2: + /encodeurl@1.0.2: resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} engines: {node: '>= 0.8'} dev: false - /encoding/0.1.13: + /encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} dependencies: iconv-lite: 0.6.3 dev: false - /end-of-stream/1.4.4: + /end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: once: 1.4.0 - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: false - /es-abstract/1.21.1: + /es-abstract@1.21.1: resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} engines: {node: '>= 0.4'} dependencies: @@ -2124,7 +2187,7 @@ packages: which-typed-array: 1.1.9 dev: false - /es-set-tostringtag/2.0.1: + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: @@ -2133,13 +2196,13 @@ packages: has-tostringtag: 1.0.0 dev: false - /es-shim-unscopables/1.0.0: + /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 dev: false - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -2148,7 +2211,7 @@ packages: is-symbol: 1.0.4 dev: false - /esbuild-android-64/0.15.18: + /esbuild-android-64@0.15.18: resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} engines: {node: '>=12'} cpu: [x64] @@ -2156,7 +2219,7 @@ packages: requiresBuild: true optional: true - /esbuild-android-arm64/0.15.18: + /esbuild-android-arm64@0.15.18: resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} engines: {node: '>=12'} cpu: [arm64] @@ -2164,7 +2227,7 @@ packages: requiresBuild: true optional: true - /esbuild-darwin-64/0.15.18: + /esbuild-darwin-64@0.15.18: resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} engines: {node: '>=12'} cpu: [x64] @@ -2172,7 +2235,7 @@ packages: requiresBuild: true optional: true - /esbuild-darwin-arm64/0.15.18: + /esbuild-darwin-arm64@0.15.18: resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} engines: {node: '>=12'} cpu: [arm64] @@ -2180,7 +2243,7 @@ packages: requiresBuild: true optional: true - /esbuild-freebsd-64/0.15.18: + /esbuild-freebsd-64@0.15.18: resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} engines: {node: '>=12'} cpu: [x64] @@ -2188,7 +2251,7 @@ packages: requiresBuild: true optional: true - /esbuild-freebsd-arm64/0.15.18: + /esbuild-freebsd-arm64@0.15.18: resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} engines: {node: '>=12'} cpu: [arm64] @@ -2196,7 +2259,7 @@ packages: requiresBuild: true optional: true - /esbuild-linux-32/0.15.18: + /esbuild-linux-32@0.15.18: resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} engines: {node: '>=12'} cpu: [ia32] @@ -2204,7 +2267,7 @@ packages: requiresBuild: true optional: true - /esbuild-linux-64/0.15.18: + /esbuild-linux-64@0.15.18: resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} engines: {node: '>=12'} cpu: [x64] @@ -2212,23 +2275,23 @@ packages: requiresBuild: true optional: true - /esbuild-linux-arm/0.15.18: - resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + /esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [linux] requiresBuild: true optional: true - /esbuild-linux-arm64/0.15.18: - resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + /esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [linux] requiresBuild: true optional: true - /esbuild-linux-mips64le/0.15.18: + /esbuild-linux-mips64le@0.15.18: resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} engines: {node: '>=12'} cpu: [mips64el] @@ -2236,7 +2299,7 @@ packages: requiresBuild: true optional: true - /esbuild-linux-ppc64le/0.15.18: + /esbuild-linux-ppc64le@0.15.18: resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} engines: {node: '>=12'} cpu: [ppc64] @@ -2244,7 +2307,7 @@ packages: requiresBuild: true optional: true - /esbuild-linux-riscv64/0.15.18: + /esbuild-linux-riscv64@0.15.18: resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} engines: {node: '>=12'} cpu: [riscv64] @@ -2252,7 +2315,7 @@ packages: requiresBuild: true optional: true - /esbuild-linux-s390x/0.15.18: + /esbuild-linux-s390x@0.15.18: resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} engines: {node: '>=12'} cpu: [s390x] @@ -2260,7 +2323,7 @@ packages: requiresBuild: true optional: true - /esbuild-netbsd-64/0.15.18: + /esbuild-netbsd-64@0.15.18: resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} engines: {node: '>=12'} cpu: [x64] @@ -2268,7 +2331,7 @@ packages: requiresBuild: true optional: true - /esbuild-openbsd-64/0.15.18: + /esbuild-openbsd-64@0.15.18: resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} engines: {node: '>=12'} cpu: [x64] @@ -2276,7 +2339,7 @@ packages: requiresBuild: true optional: true - /esbuild-sunos-64/0.15.18: + /esbuild-sunos-64@0.15.18: resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} engines: {node: '>=12'} cpu: [x64] @@ -2284,7 +2347,7 @@ packages: requiresBuild: true optional: true - /esbuild-windows-32/0.15.18: + /esbuild-windows-32@0.15.18: resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} engines: {node: '>=12'} cpu: [ia32] @@ -2292,7 +2355,7 @@ packages: requiresBuild: true optional: true - /esbuild-windows-64/0.15.18: + /esbuild-windows-64@0.15.18: resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} engines: {node: '>=12'} cpu: [x64] @@ -2300,7 +2363,7 @@ packages: requiresBuild: true optional: true - /esbuild-windows-arm64/0.15.18: + /esbuild-windows-arm64@0.15.18: resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} engines: {node: '>=12'} cpu: [arm64] @@ -2308,10 +2371,9 @@ packages: requiresBuild: true optional: true - /esbuild/0.15.18: + /esbuild@0.15.18: resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} engines: {node: '>=12'} - hasBin: true requiresBuild: true optionalDependencies: '@esbuild/android-arm': 0.15.18 @@ -2337,38 +2399,37 @@ packages: esbuild-windows-64: 0.15.18 esbuild-windows-arm64: 0.15.18 - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: false - /escape-html/1.0.3: + /escape-html@1.0.3: resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} dev: false - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - /escape-string-regexp/2.0.0: + /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} dev: false - /escape-string-regexp/4.0.0: + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: false - /escape-string-regexp/5.0.0: + /escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} dev: false - /escodegen/1.14.3: + /escodegen@1.14.3: resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} engines: {node: '>=4.0'} - hasBin: true dependencies: esprima: 4.0.1 estraverse: 4.3.0 @@ -2378,10 +2439,9 @@ packages: source-map: 0.6.1 dev: false - /escodegen/1.9.1: + /escodegen@1.9.1: resolution: {integrity: sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==} engines: {node: '>=4.0'} - hasBin: true dependencies: esprima: 3.1.3 estraverse: 4.3.0 @@ -2391,7 +2451,7 @@ packages: source-map: 0.6.1 dev: false - /eslint-config-prettier/8.5.0_eslint@8.7.0: + /eslint-config-prettier@8.5.0(eslint@8.7.0): resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true peerDependencies: @@ -2400,7 +2460,7 @@ packages: eslint: 8.7.0 dev: false - /eslint-config-xo-react/0.25.0_eslint@8.7.0: + /eslint-config-xo-react@0.25.0(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.32.2)(eslint@8.7.0): resolution: {integrity: sha512-YpABFxnoATAYtxsZQChZEbOkWqzCtcQDRdiUqHhLgG7hzbAEzPDmsRUWnTP8oTVLVFWrbgdf913b8kQJaR1cBA==} engines: {node: '>=10'} peerDependencies: @@ -2409,9 +2469,11 @@ packages: eslint-plugin-react-hooks: '>=4.2.0' dependencies: eslint: 8.7.0 + eslint-plugin-react: 7.32.2(eslint@8.7.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.7.0) dev: false - /eslint-config-xo-typescript/0.47.1_4lrl3lceg4qmyati5mdwvlfav4: + /eslint-config-xo-typescript@0.47.1(@typescript-eslint/eslint-plugin@5.37.0)(eslint@8.7.0)(typescript@5.0.2): resolution: {integrity: sha512-BkbzIltZCWp8QLekKJKG8zJ/ZGezD8Z9FaJ+hJ5PrAVUGkIPmxXLLEHCKS3ax7oOqZLYQiG+jyKfQDIEdTQgbg==} engines: {node: '>=12'} peerDependencies: @@ -2419,12 +2481,12 @@ packages: eslint: '>=8.0.0' typescript: '>=4.4' dependencies: - '@typescript-eslint/eslint-plugin': 5.37.0_6oh6r4lha3rjc52e3df7nthyau + '@typescript-eslint/eslint-plugin': 5.37.0(@typescript-eslint/parser@5.37.0)(eslint@8.7.0)(typescript@5.0.2) eslint: 8.7.0 - typescript: 4.9.3 + typescript: 5.0.2 dev: false - /eslint-config-xo/0.39.0_eslint@8.7.0: + /eslint-config-xo@0.39.0(eslint@8.7.0): resolution: {integrity: sha512-QX+ZnQgzy/UtgF8dksIiIBzpYoEKmiL0CmZ8O0Gnby7rGXg8Cny1CXirmHp1zKYIpO7BuTmtWj8eUYOsGr0IGQ==} engines: {node: '>=10'} peerDependencies: @@ -2434,7 +2496,7 @@ packages: eslint: 8.7.0 dev: false - /eslint-config-zardoy/0.2.12_f2hryljuvpua6e2voooci5naoy: + /eslint-config-zardoy@0.2.12(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.32.2)(eslint@8.7.0)(typescript@5.0.2): resolution: {integrity: sha512-zFgNruQu/0O83U8q5v8GRj1sTLWGEc2ITO4ATWOXo0zZXOY3YSsyxggUAxrYWTlWIHsKNyCFRtJ4TUaglXjnyw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: @@ -2443,6 +2505,7 @@ packages: eslint-plugin-react-hooks: ^4.3.0 eslint-plugin-vue: ^8.4.1 typescript: ^4.5.2 + vue-eslint-parser: ^8.2.0 peerDependenciesMeta: eslint-plugin-react: optional: true @@ -2454,27 +2517,28 @@ packages: optional: true dependencies: '@rushstack/eslint-patch': 1.2.0 - '@typescript-eslint/eslint-plugin': 5.37.0_6oh6r4lha3rjc52e3df7nthyau - '@typescript-eslint/parser': 5.37.0_f2hryljuvpua6e2voooci5naoy + '@typescript-eslint/eslint-plugin': 5.37.0(@typescript-eslint/parser@5.37.0)(eslint@8.7.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.37.0(eslint@8.7.0)(typescript@5.0.2) eslint: 8.7.0 - eslint-config-prettier: 8.5.0_eslint@8.7.0 - eslint-config-xo: 0.39.0_eslint@8.7.0 - eslint-config-xo-react: 0.25.0_eslint@8.7.0 - eslint-config-xo-typescript: 0.47.1_4lrl3lceg4qmyati5mdwvlfav4 - eslint-plugin-eslint-comments: 3.2.0_eslint@8.7.0 - eslint-plugin-import: 2.26.0_3sum3azglohym7vkxyrnhukgaa - eslint-plugin-node: 11.1.0_eslint@8.7.0 - eslint-plugin-sonarjs: 0.11.0_eslint@8.7.0 - eslint-plugin-unicorn: 39.0.0_eslint@8.7.0 - typescript: 4.9.3 - vue-eslint-parser: 8.3.0_eslint@8.7.0 + eslint-config-prettier: 8.5.0(eslint@8.7.0) + eslint-config-xo: 0.39.0(eslint@8.7.0) + eslint-config-xo-react: 0.25.0(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.32.2)(eslint@8.7.0) + eslint-config-xo-typescript: 0.47.1(@typescript-eslint/eslint-plugin@5.37.0)(eslint@8.7.0)(typescript@5.0.2) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.7.0) + eslint-plugin-import: 2.26.0(@typescript-eslint/parser@5.37.0)(eslint@8.7.0) + eslint-plugin-node: 11.1.0(eslint@8.7.0) + eslint-plugin-react: 7.32.2(eslint@8.7.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.7.0) + eslint-plugin-sonarjs: 0.11.0(eslint@8.7.0) + eslint-plugin-unicorn: 39.0.0(eslint@8.7.0) + typescript: 5.0.2 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: false - /eslint-import-resolver-node/0.3.6: + /eslint-import-resolver-node@0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} dependencies: debug: 3.2.7 @@ -2483,7 +2547,7 @@ packages: - supports-color dev: false - /eslint-module-utils/2.7.4_h3ekbc52v2n4jnaellvwqrtmcm: + /eslint-module-utils@2.7.4(@typescript-eslint/parser@5.37.0)(eslint-import-resolver-node@0.3.6)(eslint@8.7.0): resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==} engines: {node: '>=4'} peerDependencies: @@ -2504,7 +2568,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.37.0_f2hryljuvpua6e2voooci5naoy + '@typescript-eslint/parser': 5.37.0(eslint@8.7.0)(typescript@5.0.2) debug: 3.2.7 eslint: 8.7.0 eslint-import-resolver-node: 0.3.6 @@ -2512,7 +2576,7 @@ packages: - supports-color dev: false - /eslint-plugin-es/3.0.1_eslint@8.7.0: + /eslint-plugin-es@3.0.1(eslint@8.7.0): resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: @@ -2523,7 +2587,7 @@ packages: regexpp: 3.2.0 dev: false - /eslint-plugin-eslint-comments/3.2.0_eslint@8.7.0: + /eslint-plugin-eslint-comments@3.2.0(eslint@8.7.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: @@ -2534,7 +2598,7 @@ packages: ignore: 5.2.0 dev: false - /eslint-plugin-import/2.26.0_3sum3azglohym7vkxyrnhukgaa: + /eslint-plugin-import@2.26.0(@typescript-eslint/parser@5.37.0)(eslint@8.7.0): resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} engines: {node: '>=4'} peerDependencies: @@ -2544,14 +2608,14 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.37.0_f2hryljuvpua6e2voooci5naoy + '@typescript-eslint/parser': 5.37.0(eslint@8.7.0)(typescript@5.0.2) array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 doctrine: 2.1.0 eslint: 8.7.0 eslint-import-resolver-node: 0.3.6 - eslint-module-utils: 2.7.4_h3ekbc52v2n4jnaellvwqrtmcm + eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.37.0)(eslint-import-resolver-node@0.3.6)(eslint@8.7.0) has: 1.0.3 is-core-module: 2.9.0 is-glob: 4.0.3 @@ -2565,14 +2629,14 @@ packages: - supports-color dev: false - /eslint-plugin-node/11.1.0_eslint@8.7.0: + /eslint-plugin-node@11.1.0(eslint@8.7.0): resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=5.16.0' dependencies: eslint: 8.7.0 - eslint-plugin-es: 3.0.1_eslint@8.7.0 + eslint-plugin-es: 3.0.1(eslint@8.7.0) eslint-utils: 2.1.0 ignore: 5.2.0 minimatch: 3.1.2 @@ -2580,7 +2644,40 @@ packages: semver: 6.3.0 dev: false - /eslint-plugin-sonarjs/0.11.0_eslint@8.7.0: + /eslint-plugin-react-hooks@4.6.0(eslint@8.7.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.7.0 + dev: false + + /eslint-plugin-react@7.32.2(eslint@8.7.0): + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 + doctrine: 2.1.0 + eslint: 8.7.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: false + + /eslint-plugin-sonarjs@0.11.0(eslint@8.7.0): resolution: {integrity: sha512-ei/WuZiL0wP+qx2KrxKyZs3+eDbxiGAhFSm3GKCOOAUkg+G2ny6TSXDB2j67tvyqHefi+eoQsAgGQvz+nEtIBw==} engines: {node: '>=12'} peerDependencies: @@ -2589,7 +2686,7 @@ packages: eslint: 8.7.0 dev: false - /eslint-plugin-unicorn/39.0.0_eslint@8.7.0: + /eslint-plugin-unicorn@39.0.0(eslint@8.7.0): resolution: {integrity: sha512-fd5RK2FtYjGcIx3wra7csIE/wkkmBo22T1gZtRTsLr1Mb+KsFKJ+JOdSqhHXQUrI/JTs/Mon64cEYzTgSCbltw==} engines: {node: '>=12'} peerDependencies: @@ -2599,8 +2696,8 @@ packages: ci-info: 3.3.0 clean-regexp: 1.0.0 eslint: 8.7.0 - eslint-template-visitor: 2.3.2_eslint@8.7.0 - eslint-utils: 3.0.0_eslint@8.7.0 + eslint-template-visitor: 2.3.2(eslint@8.7.0) + eslint-utils: 3.0.0(eslint@8.7.0) esquery: 1.4.0 indent-string: 4.0.0 is-builtin-module: 3.2.0 @@ -2615,7 +2712,7 @@ packages: - supports-color dev: false - /eslint-scope/5.1.1: + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} dependencies: @@ -2623,7 +2720,7 @@ packages: estraverse: 4.3.0 dev: false - /eslint-scope/7.1.0: + /eslint-scope@7.1.0: resolution: {integrity: sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: @@ -2631,13 +2728,13 @@ packages: estraverse: 5.3.0 dev: false - /eslint-template-visitor/2.3.2_eslint@8.7.0: + /eslint-template-visitor@2.3.2(eslint@8.7.0): resolution: {integrity: sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA==} peerDependencies: eslint: '>=7.0.0' dependencies: '@babel/core': 7.19.1 - '@babel/eslint-parser': 7.19.1_6hx3hyhers76i66xm5abue7hwu + '@babel/eslint-parser': 7.19.1(@babel/core@7.19.1)(eslint@8.7.0) eslint: 8.7.0 eslint-visitor-keys: 2.1.0 esquery: 1.4.0 @@ -2646,14 +2743,14 @@ packages: - supports-color dev: false - /eslint-utils/2.1.0: + /eslint-utils@2.1.0: resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} engines: {node: '>=6'} dependencies: eslint-visitor-keys: 1.3.0 dev: false - /eslint-utils/3.0.0_eslint@8.7.0: + /eslint-utils@3.0.0(eslint@8.7.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: @@ -2663,30 +2760,29 @@ packages: eslint-visitor-keys: 2.1.0 dev: false - /eslint-visitor-keys/1.3.0: + /eslint-visitor-keys@1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} dev: false - /eslint-visitor-keys/2.1.0: + /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} dev: false - /eslint-visitor-keys/3.2.0: + /eslint-visitor-keys@3.2.0: resolution: {integrity: sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /eslint-visitor-keys/3.3.0: + /eslint-visitor-keys@3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false - /eslint/8.7.0: + /eslint@8.7.0: resolution: {integrity: sha512-ifHYzkBGrzS2iDU7KjhCAVMGCvF6M3Xfs8X8b37cgrUlDt6bWRTpRh6T/gtSXv1HJ/BUGgmjvNvOEGu85Iif7w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true dependencies: '@eslint/eslintrc': 1.0.5 '@humanwhocodes/config-array': 0.9.2 @@ -2697,7 +2793,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.0 - eslint-utils: 3.0.0_eslint@8.7.0 + eslint-utils: 3.0.0(eslint@8.7.0) eslint-visitor-keys: 3.2.0 espree: 9.3.0 esquery: 1.4.0 @@ -2727,61 +2823,59 @@ packages: - supports-color dev: false - /espree/9.3.0: + /espree@9.3.0: resolution: {integrity: sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.7.0 - acorn-jsx: 5.3.2_acorn@8.7.0 + acorn-jsx: 5.3.2(acorn@8.7.0) eslint-visitor-keys: 3.2.0 dev: false - /esprima/3.1.3: + /esprima@3.1.3: resolution: {integrity: sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=} engines: {node: '>=4'} - hasBin: true dev: false - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} - hasBin: true dev: false - /esquery/1.4.0: + /esquery@1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: false - /esrecurse/4.3.0: + /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: false - /estraverse/4.3.0: + /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} dev: false - /estraverse/5.3.0: + /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: false - /estree-walker/2.0.2: + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: false - /esutils/2.0.3: + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} dev: false - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -2796,17 +2890,16 @@ packages: strip-final-newline: 2.0.0 dev: false - /exit-hook/2.2.1: + /exit-hook@2.2.1: resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} engines: {node: '>=6'} dev: false - /extract-zip/2.0.1: + /extract-zip@2.0.1: resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} - hasBin: true dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -2815,7 +2908,7 @@ packages: - supports-color dev: false - /falafel/2.2.4: + /falafel@2.2.4: resolution: {integrity: sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==} engines: {node: '>=0.4.0'} dependencies: @@ -2825,11 +2918,11 @@ packages: object-keys: 1.1.1 dev: false - /fast-deep-equal/3.1.3: + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: false - /fast-glob/3.2.11: + /fast-glob@3.2.11: resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} engines: {node: '>=8.6.0'} dependencies: @@ -2840,67 +2933,67 @@ packages: micromatch: 4.0.4 dev: false - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: false - /fast-levenshtein/2.0.6: + /fast-levenshtein@2.0.6: resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} dev: false - /fastq/1.13.0: + /fastq@1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 dev: false - /fd-slicer/1.1.0: + /fd-slicer@1.1.0: resolution: {integrity: sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=} dependencies: pend: 1.2.0 dev: false - /file-entry-cache/6.0.1: + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: flat-cache: 3.0.4 dev: false - /file-type/3.9.0: + /file-type@3.9.0: resolution: {integrity: sha1-JXoHg4TR24CHvESdEH1SpSZyuek=} engines: {node: '>=0.10.0'} dev: false - /file-type/5.2.0: + /file-type@5.2.0: resolution: {integrity: sha1-LdvqfHP/42No365J3DOMBYwritY=} engines: {node: '>=4'} dev: false - /file-type/6.2.0: + /file-type@6.2.0: resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==} engines: {node: '>=4'} dev: false - /filesize/8.0.7: + /filesize@8.0.7: resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} engines: {node: '>= 0.4.0'} dev: false - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - /find-up/3.0.0: + /find-up@3.0.0: resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} engines: {node: '>=6'} dependencies: locate-path: 3.0.0 dev: false - /find-up/4.1.0: + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: @@ -2908,7 +3001,7 @@ packages: path-exists: 4.0.0 dev: false - /find-up/5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: @@ -2916,13 +3009,13 @@ packages: path-exists: 4.0.0 dev: false - /find-yarn-workspace-root/2.0.0: + /find-yarn-workspace-root@2.0.0: resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} dependencies: micromatch: 4.0.4 dev: true - /flat-cache/3.0.4: + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: @@ -2930,40 +3023,39 @@ packages: rimraf: 3.0.2 dev: false - /flat/5.0.2: + /flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true dev: false - /flatted/3.2.4: + /flatted@3.2.4: resolution: {integrity: sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==} dev: false - /for-each/0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: false - /foreach/2.0.5: + /foreach@2.0.5: resolution: {integrity: sha1-C+4AUBiusmDQo6865ljdATbsG5k=} dev: false - /form-data-encoder/2.1.4: + /form-data-encoder@2.1.4: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} dev: true - /fresh/0.5.2: + /fresh@0.5.2: resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} engines: {node: '>= 0.6'} dev: false - /fs-constants/1.0.0: + /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: false - /fs-extra/10.1.0: + /fs-extra@10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} dependencies: @@ -2971,17 +3063,17 @@ packages: jsonfile: 6.1.0 universalify: 2.0.0 - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true optional: true - /fstream/1.0.12: + /fstream@1.0.12: resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} engines: {node: '>=0.6'} dependencies: @@ -2991,10 +3083,10 @@ packages: rimraf: 2.7.1 dev: false - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function.prototype.name/1.1.5: + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: @@ -3004,15 +3096,15 @@ packages: functions-have-names: 1.2.3 dev: false - /functional-red-black-tree/1.0.1: + /functional-red-black-tree@1.0.1: resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} dev: false - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: false - /generated-module/0.0.2_typescript@4.9.3: + /generated-module@0.0.2(typescript@5.0.2): resolution: {integrity: sha512-7lYkwjKP3ymFvDZh4hGcALdFGyf/vZbHZNR/8qrY/FVTUBja/bMA2OzVq8HneMuKi9UFdgXBLXVDjdvdZxGLVg==} peerDependencies: typescript: ^4.4.3 @@ -3024,23 +3116,23 @@ packages: fs-extra: 10.1.0 jsonfile: 6.1.0 ts-morph: 12.2.0 - typescript: 4.9.3 + typescript: 5.0.2 dev: false - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: false - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: false - /get-func-name/2.0.0: + /get-func-name@2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} - /get-intrinsic/1.1.3: + /get-intrinsic@1.1.3: resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} dependencies: function-bind: 1.1.1 @@ -3048,7 +3140,7 @@ packages: has-symbols: 1.0.3 dev: false - /get-intrinsic/1.2.0: + /get-intrinsic@1.2.0: resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} dependencies: function-bind: 1.1.1 @@ -3056,7 +3148,7 @@ packages: has-symbols: 1.0.3 dev: false - /get-stream/2.3.1: + /get-stream@2.3.1: resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==} engines: {node: '>=0.10.0'} dependencies: @@ -3064,17 +3156,17 @@ packages: pinkie-promise: 2.0.1 dev: false - /get-stream/5.2.0: + /get-stream@5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} dependencies: pump: 3.0.0 - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - /get-symbol-description/1.0.0: + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: @@ -3082,40 +3174,40 @@ packages: get-intrinsic: 1.1.3 dev: false - /git-remote-origin-url/3.1.0: + /git-remote-origin-url@3.1.0: resolution: {integrity: sha512-yVSfaTMO7Bqk6Xx3696ufNfjdrajX7Ig9GuAeO2V3Ji7stkDoBNFldnWIAsy0qviUd0Z+X2P6ziJENKztW7cBQ==} engines: {node: '>=8'} dependencies: gitconfiglocal: 2.1.0 dev: false - /gitconfiglocal/2.1.0: + /gitconfiglocal@2.1.0: resolution: {integrity: sha512-qoerOEliJn3z+Zyn1HW2F6eoYJqKwS6MgC9cztTLUB/xLWX8gD/6T60pKn4+t/d6tP7JlybI7Z3z+I572CR/Vg==} dependencies: ini: 1.3.8 dev: false - /github-remote-info/1.0.3: + /github-remote-info@1.0.3: resolution: {integrity: sha512-7Mc+VcTyQJhWpeDNzV9Ga8qgMwrgGhNbGtxGo4RgOYGinKPAPLF/ZHLaEWw9yQSIPSUplWaySgPTwJnQu6s41A==} dependencies: git-remote-origin-url: 3.1.0 dev: false - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: false - /glob-parent/6.0.2: + /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: false - /glob/7.2.0: + /glob@7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} dependencies: fs.realpath: 1.0.0 @@ -3125,7 +3217,7 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob/8.0.3: + /glob@8.0.3: resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} engines: {node: '>=12'} dependencies: @@ -3136,26 +3228,26 @@ packages: once: 1.4.0 dev: false - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: false - /globals/13.12.0: + /globals@13.12.0: resolution: {integrity: sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: false - /globalthis/1.0.3: + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.1.4 dev: false - /globby/11.1.0: + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -3167,13 +3259,13 @@ packages: slash: 3.0.0 dev: false - /gopd/1.0.1: + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.1.3 dev: false - /got/11.8.6: + /got@11.8.6: resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} engines: {node: '>=10.19.0'} dependencies: @@ -3190,7 +3282,7 @@ packages: responselike: 2.0.1 dev: true - /got/12.5.3: + /got@12.5.3: resolution: {integrity: sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==} engines: {node: '>=14.16'} dependencies: @@ -3207,71 +3299,69 @@ packages: responselike: 3.0.0 dev: true - /graceful-fs/4.2.10: + /graceful-fs@4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} - /graceful-fs/4.2.9: + /graceful-fs@4.2.9: resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==} - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: false - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: false - /has-property-descriptors/1.0.0: + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.1.3 dev: false - /has-proto/1.0.1: + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} dev: false - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: false - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: false - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - /he/1.2.0: + /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true dev: false - /header-case/2.0.4: + /header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} dependencies: capital-case: 1.0.4 tslib: 2.3.1 dev: false - /hosted-git-info/2.8.9: + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: false - /http-assert/1.5.0: + /http-assert@1.5.0: resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} engines: {node: '>= 0.8'} dependencies: @@ -3279,11 +3369,11 @@ packages: http-errors: 1.8.1 dev: false - /http-cache-semantics/4.1.0: + /http-cache-semantics@4.1.0: resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} dev: true - /http-errors/1.6.3: + /http-errors@1.6.3: resolution: {integrity: sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=} engines: {node: '>= 0.6'} dependencies: @@ -3293,7 +3383,7 @@ packages: statuses: 1.5.0 dev: false - /http-errors/1.8.1: + /http-errors@1.8.1: resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} engines: {node: '>= 0.6'} dependencies: @@ -3304,18 +3394,18 @@ packages: toidentifier: 1.0.1 dev: false - /http-proxy-agent/4.0.1: + /http-proxy-agent@4.0.1: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} engines: {node: '>= 6'} dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: false - /http2-wrapper/1.0.3: + /http2-wrapper@1.0.3: resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} engines: {node: '>=10.19.0'} dependencies: @@ -3323,7 +3413,7 @@ packages: resolve-alpn: 1.2.1 dev: true - /http2-wrapper/2.2.0: + /http2-wrapper@2.2.0: resolution: {integrity: sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==} engines: {node: '>=10.19.0'} dependencies: @@ -3331,43 +3421,43 @@ packages: resolve-alpn: 1.2.1 dev: true - /https-proxy-agent/5.0.0: + /https-proxy-agent@5.0.0: resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: false - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: false - /iconv-lite/0.6.3: + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: false - /ieee754/1.2.1: + /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false - /ignore/4.0.6: + /ignore@4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} dev: false - /ignore/5.2.0: + /ignore@5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} dev: false - /import-fresh/3.3.0: + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} dependencies: @@ -3375,34 +3465,34 @@ packages: resolve-from: 4.0.0 dev: false - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} engines: {node: '>=0.8.19'} dev: false - /indent-string/4.0.0: + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} dev: false - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits/2.0.3: + /inherits@2.0.3: resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} dev: false - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /ini/1.3.8: + /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: false - /internal-slot/1.0.5: + /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: @@ -3411,7 +3501,7 @@ packages: side-channel: 1.0.4 dev: false - /is-array-buffer/3.0.1: + /is-array-buffer@3.0.1: resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} dependencies: call-bind: 1.0.2 @@ -3419,24 +3509,24 @@ packages: is-typed-array: 1.1.10 dev: false - /is-arrayish/0.2.1: + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: false - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: false - /is-binary-path/2.1.0: + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 dev: false - /is-boolean-object/1.1.2: + /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: @@ -3444,108 +3534,106 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-builtin-module/3.2.0: + /is-builtin-module@3.2.0: resolution: {integrity: sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==} engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 dev: false - /is-callable/1.2.7: + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: false - /is-ci/3.0.1: + /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true dependencies: ci-info: 3.3.0 dev: true - /is-core-module/2.9.0: + /is-core-module@2.9.0: resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} dependencies: has: 1.0.3 - /is-date-object/1.0.5: + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: false - /is-docker/2.2.1: + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} - hasBin: true dev: true - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} engines: {node: '>=0.10.0'} dev: false - /is-fullwidth-code-point/2.0.0: + /is-fullwidth-code-point@2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} dev: false - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: false - /is-generator-function/1.0.10: + /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: false - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: false - /is-natural-number/4.0.1: + /is-natural-number@4.0.1: resolution: {integrity: sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=} dev: false - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: false - /is-number-object/1.0.7: + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: false - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - /is-path-cwd/2.2.0: + /is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} dev: false - /is-path-inside/3.0.3: + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} dev: false - /is-plain-obj/2.1.0: + /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} dev: false - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: @@ -3553,37 +3641,37 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-shared-array-buffer/1.0.2: + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 dev: false - /is-stream/1.1.0: + /is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} dev: false - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: false - /is-string/1.0.7: + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: false - /is-symbol/1.0.4: + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: false - /is-typed-array/1.1.10: + /is-typed-array@1.1.10: resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} dependencies: @@ -3594,164 +3682,168 @@ packages: has-tostringtag: 1.0.0 dev: false - /is-unicode-supported/0.1.0: + /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} dev: false - /is-url/1.2.4: + /is-url@1.2.4: resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} dev: false - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: false - /is-wsl/2.2.0: + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} dependencies: is-docker: 2.2.1 dev: true - /isarray/1.0.0: + /isarray@1.0.0: resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} dev: false - /isarray/2.0.5: + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: false - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - /isomorphic-fetch/2.2.1: + /isomorphic-fetch@2.2.1: resolution: {integrity: sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=} dependencies: node-fetch: 1.7.3 whatwg-fetch: 3.6.2 dev: false - /jpeg-js/0.4.3: + /jpeg-js@0.4.3: resolution: {integrity: sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q==} dev: false - /js-base64/2.6.4: + /js-base64@2.6.4: resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} dev: false - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: false - /js-yaml/4.1.0: + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true dependencies: argparse: 2.0.1 dev: false - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} - hasBin: true dev: false - /json-buffer/3.0.1: + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true - /json-parse-better-errors/1.0.2: + /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} dev: false - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: false - /json-schema-traverse/0.4.1: + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: false - /json-schema-typed/7.0.3: + /json-schema-typed@7.0.3: resolution: {integrity: sha512-7DE8mpG+/fVw+dTpjbxnx47TaMnDfOI1jwft9g1VybltZCduyRQPJPvc+zzKY9WPHxhPWczyFuYa6I8Mw4iU5A==} dev: false - /json-stable-stringify-without-jsonify/1.0.1: + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} dev: false - /json-stable-stringify/1.0.1: + /json-stable-stringify@1.0.1: resolution: {integrity: sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=} dependencies: jsonify: 0.0.0 dev: false - /json5/1.0.1: + /json5@1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} - hasBin: true dependencies: minimist: 1.2.6 dev: false - /json5/2.2.1: + /json5@2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} engines: {node: '>=6'} - hasBin: true dev: false - /jsonc-parser/2.3.1: + /jsonc-parser@2.3.1: resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} dev: false - /jsonc-parser/3.0.0: + /jsonc-parser@3.0.0: resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} - /jsonc-parser/3.2.0: + /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - /jsonfile/6.1.0: + /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.10 - /jsonify/0.0.0: + /jsonify@0.0.0: resolution: {integrity: sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=} dev: false - /keygrip/1.1.0: + /jsx-ast-utils@3.3.3: + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.6 + object.assign: 4.1.4 + dev: false + + /keygrip@1.1.0: resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} engines: {node: '>= 0.6'} dependencies: tsscmp: 1.0.6 dev: false - /keyv/4.5.2: + /keyv@4.5.2: resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} dependencies: json-buffer: 3.0.1 dev: true - /klaw-sync/6.0.0: + /klaw-sync@6.0.0: resolution: {integrity: sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==} dependencies: graceful-fs: 4.2.10 dev: true - /kleur/4.1.4: + /kleur@4.1.4: resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} engines: {node: '>=6'} dev: false - /koa-compose/4.1.0: + /koa-compose@4.1.0: resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} dev: false - /koa-convert/2.0.0: + /koa-convert@2.0.0: resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} engines: {node: '>= 10'} dependencies: @@ -3759,7 +3851,7 @@ packages: koa-compose: 4.1.0 dev: false - /koa-morgan/1.0.1: + /koa-morgan@1.0.1: resolution: {integrity: sha1-CAUuDODYOdPEMXi5CluzQkvvH5k=} dependencies: morgan: 1.10.0 @@ -3767,28 +3859,28 @@ packages: - supports-color dev: false - /koa-mount/4.0.0: + /koa-mount@4.0.0: resolution: {integrity: sha512-rm71jaA/P+6HeCpoRhmCv8KVBIi0tfGuO/dMKicbQnQW/YJntJ6MnnspkodoA4QstMVEZArsCphmd0bJEtoMjQ==} engines: {node: '>= 7.6.0'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) koa-compose: 4.1.0 transitivePeerDependencies: - supports-color dev: false - /koa-send/5.0.1: + /koa-send@5.0.1: resolution: {integrity: sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==} engines: {node: '>= 8'} dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) http-errors: 1.8.1 resolve-path: 1.4.0 transitivePeerDependencies: - supports-color dev: false - /koa-static/5.0.0: + /koa-static@5.0.0: resolution: {integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==} engines: {node: '>= 7.6.0'} dependencies: @@ -3798,7 +3890,7 @@ packages: - supports-color dev: false - /koa/2.13.4: + /koa@2.13.4: resolution: {integrity: sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==} engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} dependencies: @@ -3807,7 +3899,7 @@ packages: content-disposition: 0.5.4 content-type: 1.0.4 cookies: 0.8.0 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) delegates: 1.0.0 depd: 2.0.0 destroy: 1.0.4 @@ -3829,7 +3921,7 @@ packages: - supports-color dev: false - /levn/0.3.0: + /levn@0.3.0: resolution: {integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=} engines: {node: '>= 0.8.0'} dependencies: @@ -3837,7 +3929,7 @@ packages: type-check: 0.3.2 dev: false - /levn/0.4.1: + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -3845,15 +3937,15 @@ packages: type-check: 0.4.0 dev: false - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false - /listenercount/1.0.1: + /listenercount@1.0.1: resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==} dev: false - /load-json-file/4.0.0: + /load-json-file@4.0.0: resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} engines: {node: '>=4'} dependencies: @@ -3863,12 +3955,12 @@ packages: strip-bom: 3.0.0 dev: false - /local-pkg/0.4.2: + /local-pkg@0.4.2: resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} engines: {node: '>=14'} dev: true - /locate-path/3.0.0: + /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} dependencies: @@ -3876,44 +3968,44 @@ packages: path-exists: 3.0.0 dev: false - /locate-path/5.0.0: + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 dev: false - /locate-path/6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: false - /lodash.compact/3.0.1: + /lodash.compact@3.0.1: resolution: {integrity: sha1-VAzjg3dFl1gHRx4WtKK6IeclbKU=} dev: false - /lodash.debounce/4.0.8: + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} dev: false - /lodash.get/4.4.2: + /lodash.get@4.4.2: resolution: {integrity: sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=} dev: false - /lodash.merge/4.6.2: + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: false - /lodash.throttle/4.1.1: + /lodash.throttle@4.1.1: resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} dev: false - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /log-symbols/4.1.0: + /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} dependencies: @@ -3921,197 +4013,201 @@ packages: is-unicode-supported: 0.1.0 dev: false - /loupe/2.3.4: + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + + /loupe@2.3.4: resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} dependencies: get-func-name: 2.0.0 dev: false - /loupe/2.3.6: + /loupe@2.3.6: resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 dev: true - /lower-case/2.0.2: + /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: tslib: 2.3.1 dev: false - /lowercase-keys/2.0.0: + /lowercase-keys@2.0.0: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} dev: true - /lowercase-keys/3.0.0: + /lowercase-keys@3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - /magic-string/0.22.5: + /magic-string@0.22.5: resolution: {integrity: sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==} dependencies: vlq: 0.2.3 dev: false - /magic-string/0.25.9: + /magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 dev: false - /make-dir/1.3.0: + /make-dir@1.3.0: resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} engines: {node: '>=4'} dependencies: pify: 3.0.0 dev: false - /make-error/1.3.6: + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: false - /media-typer/0.3.0: + /media-typer@0.3.0: resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} engines: {node: '>= 0.6'} dev: false - /memorystream/0.3.1: + /memorystream@0.3.1: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} dev: false - /merge-source-map/1.0.4: + /merge-source-map@1.0.4: resolution: {integrity: sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=} dependencies: source-map: 0.5.7 dev: false - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: false - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: false - /methods/1.1.2: + /methods@1.1.2: resolution: {integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=} engines: {node: '>= 0.6'} dev: false - /micromatch/4.0.4: + /micromatch@4.0.4: resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - /mime-db/1.51.0: + /mime-db@1.51.0: resolution: {integrity: sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==} engines: {node: '>= 0.6'} dev: false - /mime-types/2.1.34: + /mime-types@2.1.34: resolution: {integrity: sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.51.0 dev: false - /mime/2.6.0: + /mime@2.6.0: resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} engines: {node: '>=4.0.0'} - hasBin: true dev: false - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: false - /mimic-response/1.0.1: + /mimic-response@1.0.1: resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} engines: {node: '>=4'} dev: true - /mimic-response/3.1.0: + /mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} dev: true - /mimic-response/4.0.0: + /mimic-response@4.0.0: resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /min-indent/1.0.1: + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} dev: false - /minimatch/3.0.4: + /minimatch@3.0.4: resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} dependencies: brace-expansion: 1.1.11 dev: false - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - /minimatch/5.0.1: + /minimatch@5.0.1: resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: false - /minimatch/5.1.0: + /minimatch@5.1.0: resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: false - /minimatch/6.2.0: + /minimatch@6.2.0: resolution: {integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: false - /minimist/1.2.5: + /minimist@1.2.5: resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} dev: false - /minimist/1.2.6: + /minimist@1.2.6: resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} dev: false - /mkdirp/0.5.6: + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true dependencies: minimist: 1.2.6 dev: false - /mkdirp/1.0.4: + /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} - hasBin: true dev: false - /mlly/1.1.0: + /mlly@1.1.0: resolution: {integrity: sha512-cwzBrBfwGC1gYJyfcy8TcZU1f+dbH/T+TuOhtYP2wLv/Fb51/uV7HJQfBPtEupZ2ORLRU1EKFS/QfS3eo9+kBQ==} dependencies: acorn: 8.8.1 @@ -4120,16 +4216,15 @@ packages: ufo: 1.0.1 dev: true - /mocha/10.0.0: + /mocha@10.0.0: resolution: {integrity: sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==} engines: {node: '>= 14.0.0'} - hasBin: true dependencies: '@ungap/promise-all-settled': 1.1.2 ansi-colors: 4.1.1 browser-stdout: 1.3.1 chokidar: 3.5.3 - debug: 4.3.4_supports-color@8.1.1 + debug: 4.3.4(supports-color@8.1.1) diff: 5.0.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 @@ -4149,7 +4244,7 @@ packages: yargs-unparser: 2.0.0 dev: false - /modify-json-file/1.2.2: + /modify-json-file@1.2.2: resolution: {integrity: sha512-4CwL/8zzn8oTxm2qM+gGNFGqGS201aDecHATlS6v7o74nHcGP78ciJ5JGqauVLUbsO1DjKgUJfSGL41XWkuzJA==} engines: {node: '>=12'} dependencies: @@ -4162,7 +4257,7 @@ packages: type-fest: 2.13.1 dev: false - /morgan/1.10.0: + /morgan@1.10.0: resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} engines: {node: '>= 0.8.0'} dependencies: @@ -4175,74 +4270,71 @@ packages: - supports-color dev: false - /ms/2.0.0: + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: false - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: false - /muggle-string/0.2.2: + /muggle-string@0.2.2: resolution: {integrity: sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==} dev: false - /multimap/1.1.0: + /multimap@1.1.0: resolution: {integrity: sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==} dev: false - /nanoid/3.2.0: + /nanoid@3.2.0: resolution: {integrity: sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true dev: false - /nanoid/3.3.3: + /nanoid@3.3.3: resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true dev: false - /nanoid/3.3.4: + /nanoid@3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} dev: false - /negotiator/0.6.2: + /negotiator@0.6.2: resolution: {integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==} engines: {node: '>= 0.6'} dev: false - /nice-try/1.0.5: + /nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: false - /no-case/3.0.4: + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 tslib: 2.3.1 dev: false - /node-fetch/1.7.3: + /node-fetch@1.7.3: resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==} dependencies: encoding: 0.1.13 is-stream: 1.1.0 dev: false - /node-releases/2.0.6: + /node-releases@2.0.6: resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} dev: false - /normalize-package-data/2.5.0: + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 @@ -4251,25 +4343,24 @@ packages: validate-npm-package-license: 3.0.4 dev: false - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: false - /normalize-url/6.1.0: + /normalize-url@6.1.0: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} dev: true - /normalize-url/8.0.0: + /normalize-url@8.0.0: resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} engines: {node: '>=14.16'} dev: true - /npm-run-all/4.1.5: + /npm-run-all@4.1.5: resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} engines: {node: '>= 4'} - hasBin: true dependencies: ansi-styles: 3.2.1 chalk: 2.4.2 @@ -4282,32 +4373,32 @@ packages: string.prototype.padend: 3.1.4 dev: false - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 dev: false - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} engines: {node: '>=0.10.0'} dev: false - /object-inspect/1.12.2: + /object-inspect@1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} dev: false - /object-inspect/1.4.1: + /object-inspect@1.4.1: resolution: {integrity: sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==} dev: false - /object-keys/1.1.1: + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: false - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -4317,7 +4408,32 @@ packages: object-keys: 1.1.1 dev: false - /object.values/1.1.5: + /object.entries@1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + dev: false + + /object.fromentries@2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + dev: false + + /object.hasown@1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + dependencies: + define-properties: 1.1.4 + es-abstract: 1.21.1 + dev: false + + /object.values@1.1.5: resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} engines: {node: '>= 0.4'} dependencies: @@ -4326,35 +4442,44 @@ packages: es-abstract: 1.21.1 dev: false - /on-finished/2.3.0: + /object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + dev: false + + /on-finished@2.3.0: resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 dev: false - /on-headers/1.0.2: + /on-headers@1.0.2: resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} engines: {node: '>= 0.8'} dev: false - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 dev: false - /only/0.0.2: + /only@0.0.2: resolution: {integrity: sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=} dev: false - /open/8.4.0: + /open@8.4.0: resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} engines: {node: '>=12'} dependencies: @@ -4363,7 +4488,7 @@ packages: is-wsl: 2.2.0 dev: true - /optionator/0.8.3: + /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} dependencies: @@ -4375,7 +4500,7 @@ packages: word-wrap: 1.2.3 dev: false - /optionator/0.9.1: + /optionator@0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} dependencies: @@ -4387,86 +4512,86 @@ packages: word-wrap: 1.2.3 dev: false - /p-cancelable/2.1.1: + /p-cancelable@2.1.1: resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} engines: {node: '>=8'} dev: true - /p-cancelable/3.0.0: + /p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} dev: true - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: false - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: false - /p-locate/3.0.0: + /p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} dependencies: p-limit: 2.3.0 dev: false - /p-locate/4.1.0: + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 dev: false - /p-locate/5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: false - /p-map/4.0.0: + /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 dev: false - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} dev: false - /pako/0.2.9: + /pako@0.2.9: resolution: {integrity: sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=} dev: false - /pako/1.0.11: + /pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} dev: false - /param-case/3.0.4: + /param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 tslib: 2.3.1 dev: false - /parent-module/1.0.1: + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: false - /parse-json/4.0.0: + /parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} dependencies: @@ -4474,7 +4599,7 @@ packages: json-parse-better-errors: 1.0.2 dev: false - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -4484,129 +4609,128 @@ packages: lines-and-columns: 1.2.4 dev: false - /parseurl/1.3.3: + /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} dev: false - /pascal-case/3.1.2: + /pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 tslib: 2.3.1 dev: false - /path-browserify/1.0.1: + /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: false - /path-case/3.0.4: + /path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} dependencies: dot-case: 3.0.4 tslib: 2.3.1 dev: false - /path-exists/3.0.0: + /path-exists@3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} dev: false - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} dev: false - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-key/2.0.1: + /path-key@2.0.1: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} dev: false - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-to-regexp/6.2.0: + /path-to-regexp@6.2.0: resolution: {integrity: sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg==} dev: false - /path-type/3.0.0: + /path-type@3.0.0: resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} engines: {node: '>=4'} dependencies: pify: 3.0.0 dev: false - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: false - /pathe/0.2.0: + /pathe@0.2.0: resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} dev: true - /pathe/1.1.0: + /pathe@1.1.0: resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==} dev: true - /pathval/1.1.1: + /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - /pend/1.2.0: + /pend@1.2.0: resolution: {integrity: sha1-elfrVQpng/kRUzH89GY9XI4AelA=} dev: false - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pidtree/0.3.1: + /pidtree@0.3.1: resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} engines: {node: '>=0.10'} - hasBin: true dev: false - /pify/2.3.0: + /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} dev: false - /pify/3.0.0: + /pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} dev: false - /pinkie-promise/2.0.1: + /pinkie-promise@2.0.1: resolution: {integrity: sha1-ITXW36ejWMBprJsXh3YogihFD/o=} engines: {node: '>=0.10.0'} dependencies: pinkie: 2.0.4 dev: false - /pinkie/2.0.4: + /pinkie@2.0.4: resolution: {integrity: sha1-clVrgM+g1IqXToDnckjoDtT3+HA=} engines: {node: '>=0.10.0'} dev: false - /pkg-dir/5.0.0: + /pkg-dir@5.0.0: resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} engines: {node: '>=10'} dependencies: find-up: 5.0.0 dev: false - /pkg-types/1.0.1: + /pkg-types@1.0.1: resolution: {integrity: sha512-jHv9HB+Ho7dj6ItwppRDDl0iZRYBD0jsakHXtFgoLr+cHSF6xC+QL54sJmWxyGxOLYSHm0afhXhXcQDQqH9z8g==} dependencies: jsonc-parser: 3.2.0 @@ -4614,14 +4738,13 @@ packages: pathe: 1.1.0 dev: true - /playwright/1.14.1: + /playwright@1.14.1: resolution: {integrity: sha512-JYNjhwWcfsBkg0FMGLbFO9e58FVdmICE4k97/glIQV7cBULL7oxNjRQC7Ffe+Y70XVNnP0HSJLaA0W5SukyftQ==} engines: {node: '>=12'} - hasBin: true requiresBuild: true dependencies: commander: 6.2.1 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) extract-zip: 2.0.1 https-proxy-agent: 5.0.0 jpeg-js: 0.4.3 @@ -4640,22 +4763,22 @@ packages: - utf-8-validate dev: false - /pluralize/7.0.0: + /pluralize@7.0.0: resolution: {integrity: sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==} engines: {node: '>=4'} dev: false - /pluralize/8.0.0: + /pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} dev: false - /pngjs/5.0.0: + /pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} dev: false - /postcss/8.4.21: + /postcss@8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -4663,17 +4786,17 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /prelude-ls/1.1.2: + /prelude-ls@1.1.2: resolution: {integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=} engines: {node: '>= 0.8.0'} dev: false - /prelude-ls/1.2.1: + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: false - /pretty-format/27.4.6: + /pretty-format@27.4.6: resolution: {integrity: sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -4682,20 +4805,28 @@ packages: react-is: 17.0.2 dev: false - /process-nextick-args/1.0.7: + /process-nextick-args@1.0.7: resolution: {integrity: sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=} dev: false - /process-nextick-args/2.0.1: + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: false - /progress/2.0.3: + /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} dev: false - /proper-lockfile/4.1.2: + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: false + + /proper-lockfile@4.1.2: resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} dependencies: graceful-fs: 4.2.10 @@ -4703,31 +4834,31 @@ packages: signal-exit: 3.0.7 dev: false - /proxy-from-env/1.1.0: + /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false - /pump/3.0.0: + /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: end-of-stream: 1.4.4 once: 1.4.0 - /punycode/2.1.1: + /punycode@2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} dev: false - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: false - /quick-lru/5.1.1: + /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} dev: true - /quicktype-core/6.0.70: + /quicktype-core@6.0.70: resolution: {integrity: sha512-BMoG1omvauNhgGFzz1AkFVIC0LPXPArE6cCGI5fTeHvXKQsVUCbHt+seee2TaqUkELX9Pk6yA0s8OW8vW3kllA==} dependencies: '@mark.probst/unicode-properties': 1.1.0 @@ -4744,38 +4875,41 @@ packages: yaml: 1.10.2 dev: false - /quote-stream/1.0.2: + /quote-stream@1.0.2: resolution: {integrity: sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=} - hasBin: true dependencies: buffer-equal: 0.0.1 minimist: 1.2.5 through2: 2.0.5 dev: false - /rambda/6.9.0: + /rambda@6.9.0: resolution: {integrity: sha512-yosVdGg1hNGkXPzqGiOYNEpXKjEOxzUCg2rB0l+NKdyCaSf4z+i5ojbN0IqDSezMMf71YEglI+ZUTgTffn5afw==} dev: false - /rambda/7.2.1: + /rambda@7.2.1: resolution: {integrity: sha512-Wswj8ZvzdI3VhaGPkZAxaCTwuMmGtgWt7Zxsgyo4P+iTmVnkojvyWaOep5q3ZjMIecW0wtQa66GWxaKkZ24RAA==} dev: false - /rambda/7.4.0: + /rambda@7.4.0: resolution: {integrity: sha512-A9hihu7dUTLOUCM+I8E61V4kRXnN4DwYeK0DwCBydC1MqNI1PidyAtbtpsJlBBzK4icSctEcCQ1bGcLpBuETUQ==} dev: false - /randombytes/2.1.0: + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 dev: false - /react-is/17.0.2: + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: false + + /react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} dev: false - /read-pkg-up/7.0.1: + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} dependencies: @@ -4784,7 +4918,7 @@ packages: type-fest: 0.8.1 dev: false - /read-pkg/3.0.0: + /read-pkg@3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} dependencies: @@ -4793,7 +4927,7 @@ packages: path-type: 3.0.0 dev: false - /read-pkg/5.2.0: + /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: @@ -4803,7 +4937,7 @@ packages: type-fest: 0.6.0 dev: false - /readable-stream/2.3.0: + /readable-stream@2.3.0: resolution: {integrity: sha512-c7KMXGd4b48nN3OJ1U9qOsn6pXNzf6kLd3kdZCkg2sxAcoiufInqF0XckwEnlrcwuaYwonlNK8GQUIOC/WC7sg==} dependencies: core-util-is: 1.0.3 @@ -4815,7 +4949,7 @@ packages: util-deprecate: 1.0.2 dev: false - /readable-stream/2.3.7: + /readable-stream@2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: core-util-is: 1.0.3 @@ -4827,19 +4961,18 @@ packages: util-deprecate: 1.0.2 dev: false - /readdirp/3.6.0: + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: false - /regexp-tree/0.1.24: + /regexp-tree@0.1.24: resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} - hasBin: true dev: false - /regexp.prototype.flags/1.4.3: + /regexp.prototype.flags@1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} dependencies: @@ -4848,39 +4981,39 @@ packages: functions-have-names: 1.2.3 dev: false - /regexpp/3.2.0: + /regexpp@3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: false - /request-light/0.7.0: + /request-light@0.7.0: resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} dev: false - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: false - /require-from-string/2.0.2: + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: false - /require-main-filename/2.0.0: + /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} dev: false - /resolve-alpn/1.2.1: + /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} dev: true - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: false - /resolve-path/1.4.0: + /resolve-path@1.4.0: resolution: {integrity: sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=} engines: {node: '>= 0.8'} dependencies: @@ -4888,73 +5021,78 @@ packages: path-is-absolute: 1.0.1 dev: false - /resolve/1.22.1: + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + dependencies: + is-core-module: 2.9.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve@2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} hasBin: true dependencies: is-core-module: 2.9.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: false - /responselike/2.0.1: + /responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} dependencies: lowercase-keys: 2.0.0 dev: true - /responselike/3.0.0: + /responselike@3.0.0: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} dependencies: lowercase-keys: 3.0.0 dev: true - /retry/0.12.0: + /retry@0.12.0: resolution: {integrity: sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=} engines: {node: '>= 4'} dev: false - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: false - /rimraf/2.7.1: + /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true dependencies: glob: 7.2.0 dev: false - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true dependencies: glob: 7.2.0 - /rollup/3.15.0: + /rollup@3.15.0: resolution: {integrity: sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true optionalDependencies: fsevents: 2.3.2 dev: true - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: false - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: false - /safe-buffer/5.2.1: + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false - /safe-regex-test/1.0.0: + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 @@ -4962,41 +5100,37 @@ packages: is-regex: 1.1.4 dev: false - /safe-regex/2.1.1: + /safe-regex@2.1.1: resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} dependencies: regexp-tree: 0.1.24 dev: false - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false - /seek-bzip/1.0.6: + /seek-bzip@1.0.6: resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} - hasBin: true dependencies: commander: 2.20.3 dev: false - /semver/5.7.1: + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true dev: false - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true dev: false - /semver/7.3.8: + /semver@7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} - hasBin: true dependencies: lru-cache: 6.0.0 - /sentence-case/3.0.4: + /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: no-case: 3.0.4 @@ -5004,63 +5138,63 @@ packages: upper-case-first: 2.0.2 dev: false - /serialize-javascript/6.0.0: + /serialize-javascript@6.0.0: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 dev: false - /set-blocking/2.0.0: + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: false - /setimmediate/1.0.5: + /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: false - /setprototypeof/1.1.0: + /setprototypeof@1.1.0: resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} dev: false - /setprototypeof/1.2.0: + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} dev: false - /shallow-copy/0.0.1: + /shallow-copy@0.0.1: resolution: {integrity: sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=} dev: false - /shebang-command/1.2.0: + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 dev: false - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - /shebang-regex/1.0.0: + /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} dev: false - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shell-quote/1.8.0: + /shell-quote@1.8.0: resolution: {integrity: sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==} dev: false - /shlex/2.1.2: + /shlex@2.1.2: resolution: {integrity: sha512-Nz6gtibMVgYeMEhUjp2KuwAgqaJA1K155dU/HuDaEJUGgnmYfVtVZah+uerVWdH8UGnyahhDCgABbYTbs254+w==} dev: true - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 @@ -5068,89 +5202,87 @@ packages: object-inspect: 1.12.2 dev: false - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: false - /slash/2.0.0: + /slash@2.0.0: resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} engines: {node: '>=6'} dev: true - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: false - /snake-case/3.0.4: + /snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} dependencies: dot-case: 3.0.4 tslib: 2.3.1 dev: false - /source-map-js/1.0.2: + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - /source-map-support/0.5.21: + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map/0.5.7: + /source-map@0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} dev: false - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - requiresBuild: true - /sourcemap-codec/1.4.8: + /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead dev: false - /spdx-correct/3.1.1: + /spdx-correct@3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.12 dev: false - /spdx-exceptions/2.3.0: + /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: false - /spdx-expression-parse/3.0.1: + /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.12 dev: false - /spdx-license-ids/3.0.12: + /spdx-license-ids@3.0.12: resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} dev: false - /stack-utils/2.0.5: + /stack-utils@2.0.5: resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: false - /static-eval/2.1.0: + /static-eval@2.1.0: resolution: {integrity: sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==} dependencies: escodegen: 1.14.3 dev: false - /static-module/2.2.5: + /static-module@2.2.5: resolution: {integrity: sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==} dependencies: concat-stream: 1.6.2 @@ -5169,17 +5301,17 @@ packages: through2: 2.0.5 dev: false - /statuses/1.5.0: + /statuses@1.5.0: resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} engines: {node: '>= 0.6'} dev: false - /string-dedent/3.0.1: + /string-dedent@3.0.1: resolution: {integrity: sha512-A2zCXSgpPrpFi1lDJlDwIPYakBWeDtQZ8ZBKssB8M/WbtNEKTzsl1yCDRmHx55jSB27xZDQ6NOtRYekESWx6fw==} engines: {node: '>=0.12.0'} dev: false - /string-width/3.1.0: + /string-width@3.1.0: resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} engines: {node: '>=6'} dependencies: @@ -5188,7 +5320,7 @@ packages: strip-ansi: 5.2.0 dev: false - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -5197,7 +5329,20 @@ packages: strip-ansi: 6.0.1 dev: false - /string.prototype.padend/3.1.4: + /string.prototype.matchall@4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.21.1 + get-intrinsic: 1.2.0 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + dev: false + + /string.prototype.padend@3.1.4: resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==} engines: {node: '>= 0.4'} dependencies: @@ -5206,7 +5351,7 @@ packages: es-abstract: 1.21.1 dev: false - /string.prototype.trimend/1.0.6: + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 @@ -5214,7 +5359,7 @@ packages: es-abstract: 1.21.1 dev: false - /string.prototype.trimstart/1.0.6: + /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 @@ -5222,101 +5367,100 @@ packages: es-abstract: 1.21.1 dev: false - /string_decoder/1.0.3: + /string_decoder@1.0.3: resolution: {integrity: sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==} dependencies: safe-buffer: 5.1.2 dev: false - /string_decoder/1.1.1: + /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 dev: false - /strip-ansi/5.2.0: + /strip-ansi@5.2.0: resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} engines: {node: '>=6'} dependencies: ansi-regex: 4.1.1 dev: false - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: false - /strip-bom/3.0.0: + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: false - /strip-bom/4.0.0: + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} dev: false - /strip-dirs/2.1.0: + /strip-dirs@2.1.0: resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==} dependencies: is-natural-number: 4.0.1 dev: false - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} dev: false - /strip-indent/3.0.0: + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: false - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: false - /strip-json-trailing-commas/1.1.0: + /strip-json-trailing-commas@1.1.0: resolution: {integrity: sha512-oFze7V4LBrJXx1liTYTXg2VRhHZAqlw/4izGIkrvz/DxJV/ocp1fVKIAexslbnHvEOjngmu396O6SDkgeIdt+w==} engines: {node: '>=10.14.2'} dev: false - /strip-literal/1.0.0: + /strip-literal@1.0.0: resolution: {integrity: sha512-5o4LsH1lzBzO9UFH63AJ2ad2/S2AVx6NtjOcaz+VTT2h1RiRvbipW72z8M/lxEhcPHDBQwpDrnTF7sXy/7OwCQ==} dependencies: acorn: 8.8.1 dev: true - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: false - /supports-color/8.1.1: + /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: false - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /tar-stream/1.6.2: + /tar-stream@1.6.2: resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} engines: {node: '>= 0.8.0'} dependencies: @@ -5329,82 +5473,82 @@ packages: xtend: 4.0.2 dev: false - /text-table/0.2.0: + /text-table@0.2.0: resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} dev: false - /through/2.3.8: - resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} - dev: false - - /through2/2.0.5: + /through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: readable-stream: 2.3.7 xtend: 4.0.2 dev: false - /tiny-inflate/1.0.3: + /through@2.3.8: + resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} + dev: false + + /tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} dev: false - /tinybench/2.3.1: + /tinybench@2.3.1: resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} dev: true - /tinypool/0.3.1: + /tinypool@0.3.1: resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==} engines: {node: '>=14.0.0'} dev: true - /tinyspy/1.0.2: + /tinyspy@1.0.2: resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} engines: {node: '>=14.0.0'} dev: true - /tmp/0.2.1: + /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} engines: {node: '>=8.17.0'} dependencies: rimraf: 3.0.2 dev: true - /to-buffer/1.1.1: + /to-buffer@1.1.1: resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} dev: false - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} dev: false - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - /toidentifier/1.0.1: + /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} dev: false - /traverse/0.3.9: + /traverse@0.3.9: resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} dev: false - /ts-expose-internals/4.9.3: + /ts-expose-internals@4.9.3: resolution: {integrity: sha512-UoJaBLpLKMIQBdYhLyZtFaYbQ10sZhTqhXDU/VXhUk50xcmeTuJXqnU/ZQ5bdkLeXuPLS/6KKsQspTETV1zfRg==} dev: false - /ts-morph/12.2.0: + /ts-morph@12.2.0: resolution: {integrity: sha512-WHXLtFDcIRwoqaiu0elAoZ/AmI+SwwDafnPKjgJmdwJ2gRVO0jMKBt88rV2liT/c6MTsXyuWbGFiHe9MRddWJw==} dependencies: '@ts-morph/common': 0.11.1 code-block-writer: 10.1.1 dev: false - /ts-node/10.4.0_n7asb5bp3qbeq7zyaoqx3q2q5y: + /ts-node@10.4.0(@types/node@16.18.3)(typescript@4.2.4): resolution: {integrity: sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==} hasBin: true peerDependencies: @@ -5434,11 +5578,11 @@ packages: yn: 3.1.1 dev: false - /ts-simple-type/1.0.7: + /ts-simple-type@1.0.7: resolution: {integrity: sha512-zKmsCQs4dZaeSKjEA7pLFDv7FHHqAFLPd0Mr//OIJvu8M+4p4bgSFJwZSEBEg3ec9W7RzRz1vi8giiX0+mheBQ==} dev: false - /tsconfig-paths/3.14.1: + /tsconfig-paths@3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: '@types/json5': 0.0.29 @@ -5447,85 +5591,84 @@ packages: strip-bom: 3.0.0 dev: false - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: false - /tslib/2.3.1: + /tslib@2.3.1: resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} dev: false - /tsm/2.3.0: + /tsm@2.3.0: resolution: {integrity: sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==} engines: {node: '>=12'} - hasBin: true dependencies: esbuild: 0.15.18 dev: true - /tsscmp/1.0.6: + /tsscmp@1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} dev: false - /tsutils/3.21.0_typescript@4.9.3: + /tsutils@3.21.0(typescript@5.0.2): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.9.3 + typescript: 5.0.2 dev: false - /type-check/0.3.2: + /type-check@0.3.2: resolution: {integrity: sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.1.2 dev: false - /type-check/0.4.0: + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: false - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - /type-fest/0.20.2: + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: false - /type-fest/0.6.0: + /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} dev: false - /type-fest/0.8.1: + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: false - /type-fest/2.13.1: + /type-fest@2.13.1: resolution: {integrity: sha512-hXYyrPFwETT2swFLHeoKtJrvSF/ftG/sA15/8nGaLuaDGfVAaq8DYFpu4yOyV4tzp082WqnTEoMsm3flKMI2FQ==} engines: {node: '>=12.20'} - /type-fest/2.19.0: + /type-fest@2.19.0: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} dev: false - /type-fest/2.3.4: + /type-fest@2.3.4: resolution: {integrity: sha512-2UdQc7cx8F4Ky81Xj7NYQKPhZVtDFbtorrkairIW66rW7xQj5msAhioXa04HqEdP4MD4K2G6QAF7Zyiw/Hju1Q==} engines: {node: '>=12.20'} dev: false - /type-is/1.6.18: + /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} dependencies: @@ -5533,7 +5676,7 @@ packages: mime-types: 2.1.34 dev: false - /typed-array-length/1.0.4: + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 @@ -5541,7 +5684,7 @@ packages: is-typed-array: 1.1.10 dev: false - /typed-jsonfile/0.2.1: + /typed-jsonfile@0.2.1: resolution: {integrity: sha512-8G2jqDOjg2reeq0Af3LYb1hY9bbmDYdnleAPQ6o74IPBJ5OxTjbG89TNoXGVGhy1+M16oFHmLIFfMEthQo3lYA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -5549,7 +5692,7 @@ packages: jsonfile: 6.1.0 type-fest: 2.13.1 - /typed-vscode/0.0.5_37hwwvsstfvtglssqblfqfuf2i: + /typed-vscode@0.0.5(@types/vscode@1.72.0)(typescript@5.0.2): resolution: {integrity: sha512-BJpELW+Q35iWc6t/Na0ZGprG1jwGgFb3U+71UIDKjxEp+LZZKatMzoBSuPoO/saTeSzMY8YinGsglkgru8u9jg==} engines: {node: ^14.13.1 || >=16.0.0} hasBin: true @@ -5562,7 +5705,7 @@ packages: commander: 8.3.0 cosmiconfig: 7.0.1 fs-extra: 10.1.0 - generated-module: 0.0.2_typescript@4.9.3 + generated-module: 0.0.2(typescript@5.0.2) lodash: 4.17.21 quicktype-core: 6.0.70 type-fest: 2.13.1 @@ -5571,23 +5714,22 @@ packages: - typescript dev: false - /typedarray/0.0.6: + /typedarray@0.0.6: resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} dev: false - /typesafe-path/0.2.2: + /typesafe-path@0.2.2: resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} dev: false - /typescript-json-schema/0.51.0: + /typescript-json-schema@0.51.0: resolution: {integrity: sha512-POhWbUNs2oaBti1W9k/JwS+uDsaZD9J/KQiZ/iXRQEOD0lTn9VmshIls9tn+A9X6O+smPjeEz5NEy6WTkCCzrQ==} - hasBin: true dependencies: '@types/json-schema': 7.0.9 '@types/node': 16.18.3 glob: 7.2.0 json-stable-stringify: 1.0.1 - ts-node: 10.4.0_n7asb5bp3qbeq7zyaoqx3q2q5y + ts-node: 10.4.0(@types/node@16.18.3)(typescript@4.2.4) typescript: 4.2.4 yargs: 17.3.1 transitivePeerDependencies: @@ -5595,22 +5737,20 @@ packages: - '@swc/wasm' dev: false - /typescript/4.2.4: + /typescript@4.2.4: resolution: {integrity: sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==} engines: {node: '>=4.2.0'} - hasBin: true dev: false - /typescript/4.9.3: - resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} - engines: {node: '>=4.2.0'} - hasBin: true + /typescript@5.0.2: + resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} + engines: {node: '>=12.20'} - /ufo/1.0.1: + /ufo@1.0.1: resolution: {integrity: sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==} dev: true - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -5619,25 +5759,25 @@ packages: which-boxed-primitive: 1.0.2 dev: false - /unbzip2-stream/1.4.3: + /unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} dependencies: buffer: 5.7.1 through: 2.3.8 dev: false - /unicode-trie/0.3.1: + /unicode-trie@0.3.1: resolution: {integrity: sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=} dependencies: pako: 0.2.9 tiny-inflate: 1.0.3 dev: false - /universalify/2.0.0: + /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - /unleashed-typescript/1.3.0_typescript@4.9.3: + /unleashed-typescript@1.3.0(typescript@5.0.2): resolution: {integrity: sha512-ORMwdtBlEQTD4Dl+HkPVfwnIG5wKBqQn72INfCHGN8dgZ3AFKwv1m7a4tL1JEGLwCUzFVH3sq/nDxPjDmvlWwg==} engines: {node: '>=12', pnpm: '>=6'} hasBin: true @@ -5645,15 +5785,15 @@ packages: peerDependencies: typescript: '*' dependencies: - typescript: 4.9.3 + typescript: 5.0.2 dev: false - /untildify/4.0.0: + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} dev: false - /unzipper/0.10.11: + /unzipper@0.10.11: resolution: {integrity: sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==} dependencies: big-integer: 1.6.51 @@ -5668,7 +5808,7 @@ packages: setimmediate: 1.0.5 dev: false - /update-browserslist-db/1.0.9_browserslist@4.21.4: + /update-browserslist-db@1.0.9(browserslist@4.21.4): resolution: {integrity: sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==} hasBin: true peerDependencies: @@ -5679,59 +5819,58 @@ packages: picocolors: 1.0.0 dev: false - /upper-case-first/2.0.2: + /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} dependencies: tslib: 2.3.1 dev: false - /upper-case/2.0.2: + /upper-case@2.0.2: resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} dependencies: tslib: 2.3.1 dev: false - /uri-js/4.4.1: + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 dev: false - /urijs/1.19.7: + /urijs@1.19.7: resolution: {integrity: sha512-Id+IKjdU0Hx+7Zx717jwLPsPeUqz7rAtuVBRLLs+qn+J2nf9NGITWVCxcijgYxBqe83C7sqsQPs6H1pyz3x9gA==} dev: false - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} dev: false - /v8-compile-cache/2.3.0: + /v8-compile-cache@2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: false - /validate-npm-package-license/3.0.4: + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.1.1 spdx-expression-parse: 3.0.1 dev: false - /vary/1.1.2: + /vary@1.1.2: resolution: {integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=} engines: {node: '>= 0.8'} dev: false - /vite-node/0.26.3_@types+node@16.18.3: + /vite-node@0.26.3(@types/node@16.18.3): resolution: {integrity: sha512-Te2bq0Bfvq6XiO718I+1EinMjpNYKws6SNHKOmVbILAQimKoZKDd+IZLlkaYcBXPpK3HFe2U80k8Zw+m3w/a2w==} engines: {node: '>=v14.16.0'} - hasBin: true dependencies: - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) mlly: 1.1.0 pathe: 0.2.0 source-map: 0.6.1 source-map-support: 0.5.21 - vite: 4.1.1_@types+node@16.18.3 + vite: 4.1.1(@types/node@16.18.3) transitivePeerDependencies: - '@types/node' - less @@ -5742,7 +5881,7 @@ packages: - terser dev: true - /vite/4.1.1_@types+node@16.11.21: + /vite@4.1.1(@types/node@16.11.21): resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -5776,7 +5915,7 @@ packages: fsevents: 2.3.2 dev: true - /vite/4.1.1_@types+node@16.18.3: + /vite@4.1.1(@types/node@16.18.3): resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -5810,7 +5949,7 @@ packages: fsevents: 2.3.2 dev: true - /vitest/0.26.3: + /vitest@0.26.3: resolution: {integrity: sha512-FmHxU9aUCxTi23keF3vxb/Qp0lYXaaJ+jRLGOUmMS3qVTOJvgGE+f1VArupA6pEhaG2Ans4X+zV9dqM5WISMbg==} engines: {node: '>=v14.16.0'} hasBin: true @@ -5838,15 +5977,15 @@ packages: acorn: 8.8.1 acorn-walk: 8.2.0 chai: 4.3.7 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) local-pkg: 0.4.2 source-map: 0.6.1 strip-literal: 1.0.0 tinybench: 2.3.1 tinypool: 0.3.1 tinyspy: 1.0.2 - vite: 4.1.1_@types+node@16.18.3 - vite-node: 0.26.3_@types+node@16.18.3 + vite: 4.1.1(@types/node@16.18.3) + vite-node: 0.26.3(@types/node@16.18.3) transitivePeerDependencies: - less - sass @@ -5856,11 +5995,11 @@ packages: - terser dev: true - /vlq/0.2.3: + /vlq@0.2.3: resolution: {integrity: sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==} dev: false - /vscode-extra/0.0.4_@types+vscode@1.72.0: + /vscode-extra@0.0.4(@types/vscode@1.72.0): resolution: {integrity: sha512-dI435DBqb9VSGX0HpapJN5jSg3hXXU9y6hlmXIJAiI3sF2YpEZjC+aZncn1NkkuUmbT0IY19cQOjQiez8mmJ7A==} engines: {node: '"^12.20.0 || ^14.13.1 || >=16.0.0"'} peerDependencies: @@ -5870,7 +6009,7 @@ packages: lodash: 4.17.21 dev: false - /vscode-framework/0.0.18_37hwwvsstfvtglssqblfqfuf2i: + /vscode-framework@0.0.18(@types/vscode@1.72.0)(typescript@5.0.2): resolution: {integrity: sha512-9Vp/KVboUFtEGc7vKNXQb5YK1B27JBeZ67U+Yi5aH9ZvtM9fERydbL+n2p+GS2oGf9x3pyT2bEfF3j/sXojHig==} engines: {node: ^14.13.1 || >=16.0.0} hasBin: true @@ -5893,7 +6032,7 @@ packages: exit-hook: 2.2.1 filesize: 8.0.7 fs-extra: 10.1.0 - generated-module: 0.0.2_typescript@4.9.3 + generated-module: 0.0.2(typescript@5.0.2) github-remote-info: 1.0.3 globby: 11.1.0 jsonfile: 6.1.0 @@ -5903,9 +6042,9 @@ packages: pkg-dir: 5.0.0 pretty-format: 27.4.6 typed-jsonfile: 0.2.1 - typed-vscode: 0.0.5_37hwwvsstfvtglssqblfqfuf2i + typed-vscode: 0.0.5(@types/vscode@1.72.0)(typescript@5.0.2) typescript-json-schema: 0.51.0 - vscode-extra: 0.0.4_@types+vscode@1.72.0 + vscode-extra: 0.0.4(@types/vscode@1.72.0) vscode-manifest: 0.0.8 ws: 8.4.2 transitivePeerDependencies: @@ -5917,7 +6056,7 @@ packages: - utf-8-validate dev: false - /vscode-html-languageservice/5.0.4: + /vscode-html-languageservice@5.0.4: resolution: {integrity: sha512-tvrySfpglu4B2rQgWGVO/IL+skvU7kBkQotRlxA7ocSyRXOZUd6GA13XHkxo8LPe07KWjeoBlN1aVGqdfTK4xA==} dependencies: '@vscode/l10n': 0.0.11 @@ -5926,7 +6065,7 @@ packages: vscode-uri: 3.0.7 dev: false - /vscode-json-languageservice/5.3.1: + /vscode-json-languageservice@5.3.1: resolution: {integrity: sha512-tPRf/2LOBS6uFflFLABdj8T3ol2/QgZ0kpzZHFCs+cbxpnjBNiCo+rfh3th0dtdytq5dSnWo5iFJj99zF6jZWQ==} dependencies: '@vscode/l10n': 0.0.11 @@ -5936,48 +6075,47 @@ packages: vscode-uri: 3.0.7 dev: false - /vscode-jsonrpc/8.1.0: + /vscode-jsonrpc@8.1.0: resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==} engines: {node: '>=14.0.0'} dev: false - /vscode-languageserver-protocol/3.17.3: + /vscode-languageserver-protocol@3.17.3: resolution: {integrity: sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==} dependencies: vscode-jsonrpc: 8.1.0 vscode-languageserver-types: 3.17.3 dev: false - /vscode-languageserver-textdocument/1.0.4: + /vscode-languageserver-textdocument@1.0.4: resolution: {integrity: sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==} dev: false - /vscode-languageserver-textdocument/1.0.8: + /vscode-languageserver-textdocument@1.0.8: resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==} dev: false - /vscode-languageserver-types/3.16.0: + /vscode-languageserver-types@3.16.0: resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} dev: false - /vscode-languageserver-types/3.17.3: + /vscode-languageserver-types@3.17.3: resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==} dev: false - /vscode-languageserver/8.1.0: + /vscode-languageserver@8.1.0: resolution: {integrity: sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==} - hasBin: true dependencies: vscode-languageserver-protocol: 3.17.3 dev: false - /vscode-manifest/0.0.4: + /vscode-manifest@0.0.4: resolution: {integrity: sha512-DqeCLPd+rXIH3LQGICI6ZjW6aiNwQP7Kf1T+OUOa+G0288WizpEf9EYoQs0RSbq+b/LH0MlNmIrdM8Ea3bUsLA==} dependencies: lodash: 4.17.21 dev: true - /vscode-manifest/0.0.8: + /vscode-manifest@0.0.8: resolution: {integrity: sha512-HX0dXboRrVXi0sSwoJpHt6WNKCIhWYw0EZ/alxSk/HVeQnmj9KkjLYFyN5IZnTKdRjarCzQQ2qQLoMaEE6oajg==} engines: {node: '"^12.20.0 || ^14.13.1 || >=16.0.0"'} dependencies: @@ -5987,52 +6125,34 @@ packages: type-fest: 2.3.4 dev: false - /vscode-nls/5.0.1: + /vscode-nls@5.0.1: resolution: {integrity: sha512-hHQV6iig+M21lTdItKPkJAaWrxALQb/nqpVffakO4knJOh3DrU2SXOMzUzNgo1eADPzu3qSsJY1weCzvR52q9A==} dev: false - /vscode-uri/2.1.2: + /vscode-uri@2.1.2: resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} dev: false - /vscode-uri/3.0.6: + /vscode-uri@3.0.6: resolution: {integrity: sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ==} dev: false - /vscode-uri/3.0.7: + /vscode-uri@3.0.7: resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==} dev: false - /vue-eslint-parser/8.3.0_eslint@8.7.0: - resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - dependencies: - debug: 4.3.4 - eslint: 8.7.0 - eslint-scope: 7.1.0 - eslint-visitor-keys: 3.3.0 - espree: 9.3.0 - esquery: 1.4.0 - lodash: 4.17.21 - semver: 7.3.8 - transitivePeerDependencies: - - supports-color - dev: false - - /vue-template-compiler/2.7.14: + /vue-template-compiler@2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} dependencies: de-indent: 1.0.2 he: 1.2.0 dev: false - /whatwg-fetch/3.6.2: + /whatwg-fetch@3.6.2: resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==} dev: false - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -6042,11 +6162,11 @@ packages: is-symbol: 1.0.4 dev: false - /which-module/2.0.0: + /which-module@2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} dev: false - /which-typed-array/1.1.9: + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: @@ -6058,34 +6178,32 @@ packages: is-typed-array: 1.1.10 dev: false - /which/1.3.1: + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true dependencies: isexe: 2.0.0 dev: false - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} - hasBin: true dependencies: isexe: 2.0.0 - /word-wrap/1.2.3: + /word-wrap@1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} dev: false - /wordwrap/1.0.0: + /wordwrap@1.0.0: resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=} dev: false - /workerpool/6.2.1: + /workerpool@6.2.1: resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} dev: false - /wrap-ansi/5.1.0: + /wrap-ansi@5.1.0: resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} engines: {node: '>=6'} dependencies: @@ -6094,7 +6212,7 @@ packages: strip-ansi: 5.2.0 dev: false - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -6103,10 +6221,10 @@ packages: strip-ansi: 6.0.1 dev: false - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /ws/7.5.6: + /ws@7.5.6: resolution: {integrity: sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==} engines: {node: '>=8.3.0'} peerDependencies: @@ -6119,7 +6237,7 @@ packages: optional: true dev: false - /ws/8.4.2: + /ws@8.4.2: resolution: {integrity: sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==} engines: {node: '>=10.0.0'} peerDependencies: @@ -6132,46 +6250,46 @@ packages: optional: true dev: false - /xtend/4.0.2: + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} dev: false - /y18n/4.0.3: + /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} dev: false - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: false - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yaml/1.10.2: + /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} dev: false - /yargs-parser/13.1.2: + /yargs-parser@13.1.2: resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} dependencies: camelcase: 5.3.1 decamelize: 1.2.0 dev: false - /yargs-parser/20.2.4: + /yargs-parser@20.2.4: resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} engines: {node: '>=10'} dev: false - /yargs-parser/21.0.0: + /yargs-parser@21.0.0: resolution: {integrity: sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==} engines: {node: '>=12'} dev: false - /yargs-unparser/2.0.0: + /yargs-unparser@2.0.0: resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} engines: {node: '>=10'} dependencies: @@ -6181,7 +6299,7 @@ packages: is-plain-obj: 2.1.0 dev: false - /yargs/13.3.2: + /yargs@13.3.2: resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} dependencies: cliui: 5.0.0 @@ -6196,7 +6314,7 @@ packages: yargs-parser: 13.1.2 dev: false - /yargs/16.2.0: + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: @@ -6209,7 +6327,7 @@ packages: yargs-parser: 20.2.4 dev: false - /yargs/17.3.1: + /yargs@17.3.1: resolution: {integrity: sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==} engines: {node: '>=12'} dependencies: @@ -6222,30 +6340,30 @@ packages: yargs-parser: 21.0.0 dev: false - /yauzl/2.10.0: + /yauzl@2.10.0: resolution: {integrity: sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=} dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 dev: false - /yazl/2.5.1: + /yazl@2.5.1: resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==} dependencies: buffer-crc32: 0.2.13 dev: false - /ylru/1.2.1: + /ylru@1.2.1: resolution: {integrity: sha512-faQrqNMzcPCHGVC2aaOINk13K+aaBDUPjGWl0teOXywElLjyVAB6Oe2jj62jHYtwsU49jXhScYbvPENK+6zAvQ==} engines: {node: '>= 4.0.0'} dev: false - /yn/3.1.1: + /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} dev: false - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: false diff --git a/src/configurationType.ts b/src/configurationType.ts index ccc0eab5..4b1a4c92 100644 --- a/src/configurationType.ts +++ b/src/configurationType.ts @@ -195,10 +195,23 @@ export type Configuration = { * @default false */ enableFileDefinitions: boolean + /** + * When not in node_modules, show skip showing references from node_modules + * @default false + * @recommended + */ + skipNodeModulesReferences: boolean /** * @default true * */ 'removeCodeFixes.enable': boolean + /** + * Also rename name of default or namespace import on refactor caused by file move / rename + * Probably will be enabled by default in future + * @default false + * @recommended + */ + renameImportNameOfFileRename: boolean /** * Additional file extension to include in completions (suggestions) * diff --git a/src/figIntegration.ts b/src/figIntegration.ts index 17b5cb15..f5018425 100644 --- a/src/figIntegration.ts +++ b/src/figIntegration.ts @@ -6,12 +6,11 @@ import { watchExtensionSettings } from '@zardoy/vscode-utils/build/settings' let integrationActivated = false const possiblyActivateFigIntegration = async () => { if (integrationActivated) return - // eslint-disable-next-line sonarjs/no-duplicate-string if (getExtensionSetting('figIntegration.enableWhenStartsWith').length === 0) return integrationActivated = true // todo I think would be good to support zx package $ but not sure if needed - const figExtension = vscode.extensions.getExtension('undefined_publisher.fig-unreleased') + const figExtension = vscode.extensions.all.find(({ id }) => id.endsWith('.fig-unreleased')) if (!figExtension) return const api = await figExtension.activate() diff --git a/src/onCompletionAccepted.ts b/src/onCompletionAccepted.ts index e016ad9d..00cd1cef 100644 --- a/src/onCompletionAccepted.ts +++ b/src/onCompletionAccepted.ts @@ -13,7 +13,7 @@ export default (tsApi: { onCompletionAccepted }) => { let onCompletionAcceptedOverride: ((item: any) => void) | undefined // eslint-disable-next-line complexity - tsApi.onCompletionAccepted(async (item: vscode.CompletionItem & { document: vscode.TextDocument }) => { + tsApi.onCompletionAccepted(async (item: vscode.CompletionItem & { document: vscode.TextDocument; tsEntry }) => { if (onCompletionAcceptedOverride) { onCompletionAcceptedOverride(item) return @@ -36,57 +36,56 @@ export default (tsApi: { onCompletionAccepted }) => { return } - const enableMethodSnippets = vscode.workspace.getConfiguration(process.env.IDS_PREFIX, item.document).get('enableMethodSnippets') - - if (enableMethodSnippets && /* snippet by vscode or by us to ignore pos */ typeof insertText !== 'object') { + if (/* snippet is by vscode or by us to ignore pos */ typeof insertText !== 'object') { const editor = getActiveRegularEditor()! - const startPos = editor.selection.start - const nextSymbol = editor.document.getText(new vscode.Range(startPos, startPos.translate(0, 1))) - if (!['(', '.', '`'].includes(nextSymbol)) { - // all-in handling - const controller = new AbortController() - inFlightMethodSnippetOperation = controller - const params: RequestResponseTypes['getFullMethodSnippet'] | undefined = await sendCommand('getFullMethodSnippet', { - inputOptions: { - acceptAmbiguous: lastAcceptedAmbiguousMethodSnippetSuggestion === suggestionName, - } satisfies RequestOptionsTypes['getFullMethodSnippet'], + if (item.tsEntry.source) { + await new Promise(resolve => { + vscode.workspace.onDidChangeTextDocument(({ document }) => { + if (editor.document !== document) return + resolve() + }) }) + await new Promise(resolve => { + setTimeout(resolve, 0) + }) + } - if (controller.signal.aborted) return - if (params === 'ambiguous') { - lastAcceptedAmbiguousMethodSnippetSuggestion = suggestionName - return - } - - if (!params) { - return - } + const documentation = typeof item.documentation === 'object' ? item.documentation.value : item.documentation + const dataMarker = ''))) + const { methodSnippet: params, isAmbiguous } = parsed + if (!params) return - const replaceArguments = getExtensionSetting('methodSnippets.replaceArguments') - - const snippet = new vscode.SnippetString('') - snippet.appendText('(') - // todo maybe when have optional (skipped), add a way to leave trailing , with tabstop (previous behavior) - for (const [i, param] of params.entries()) { - const replacer = replaceArguments[param.replace(/\?$/, '')] - if (replacer === null) continue - if (replacer) { - useReplacer(snippet, replacer) - } else { - snippet.appendPlaceholder(param) - } + if (isAmbiguous && lastAcceptedAmbiguousMethodSnippetSuggestion !== suggestionName) { + lastAcceptedAmbiguousMethodSnippetSuggestion = suggestionName + return + } - if (i !== params.length - 1) snippet.appendText(', ') + const replaceArguments = getExtensionSetting('methodSnippets.replaceArguments') + + const snippet = new vscode.SnippetString('') + snippet.appendText('(') + // todo maybe when have optional (skipped), add a way to leave trailing , with tabstop (previous behavior) + for (const [i, param] of params.entries()) { + const replacer = replaceArguments[param.replace(/\?$/, '')] + if (replacer === null) continue + if (replacer) { + useReplacer(snippet, replacer) + } else { + snippet.appendPlaceholder(param) } - snippet.appendText(')') - void editor.insertSnippet(snippet, undefined, { - undoStopAfter: false, - undoStopBefore: false, - }) - if (vscode.workspace.getConfiguration('editor.parameterHints').get('enabled') && params.length > 0) { - void vscode.commands.executeCommand('editor.action.triggerParameterHints') - } + if (i !== params.length - 1) snippet.appendText(', ') + } + + snippet.appendText(')') + void editor.insertSnippet(snippet, undefined, { + undoStopAfter: false, + undoStopBefore: false, + }) + if (vscode.workspace.getConfiguration('editor.parameterHints').get('enabled') && params.length > 0) { + void vscode.commands.executeCommand('editor.action.triggerParameterHints') } } }) diff --git a/src/specialCommands.ts b/src/specialCommands.ts index d6dd6a23..fde747d2 100644 --- a/src/specialCommands.ts +++ b/src/specialCommands.ts @@ -1,4 +1,3 @@ -/* eslint-disable unicorn/consistent-destructuring */ import * as vscode from 'vscode' import { getActiveRegularEditor } from '@zardoy/vscode-utils' import { getExtensionCommandId, registerExtensionCommand, VSCodeQuickPickItem } from 'vscode-framework' @@ -238,4 +237,12 @@ export default () => { }) await vscode.commands.executeCommand(preview ? 'acceptRenameInputWithPreview' : 'acceptRenameInput') }) + + registerExtensionCommand('insertNameOfCompletion', async () => { + const editor = vscode.window.activeTextEditor + if (!editor) return + const result = await sendCommand('getLastResolvedCompletion') + if (!result) return + await editor.insertSnippet(new vscode.SnippetString().appendText(result.name)) + }) } diff --git a/tsconfig.json b/tsconfig.json index c450fcd8..0e44df00 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,5 +10,6 @@ // type-check sources "include": [ "src", + "typescript/src/ts.d.ts" ] } diff --git a/typescript/scripts/patchModules.ts b/typescript/scripts/patchModules.ts index 36a62585..af9a97bf 100644 --- a/typescript/scripts/patchModules.ts +++ b/typescript/scripts/patchModules.ts @@ -4,7 +4,8 @@ import { join } from 'path' const tsInternalsVersion = JSON.parse(await readFile('node_modules/ts-expose-internals/package.json', 'utf8')).version const tsVersion = JSON.parse(await readFile('node_modules/typescript/package.json', 'utf8')).version if (tsInternalsVersion !== tsVersion) { - throw new Error(`Different versions of ts-expose-internals ${tsInternalsVersion} and typescript ${tsVersion} packages`) + // TODO + // throw new Error(`Different versions of ts-expose-internals ${tsInternalsVersion} and typescript ${tsVersion} packages`) } console.log('Patching ts-expose-internals...') const tsExposedInternalsFilePath = join(process.cwd(), 'node_modules/ts-expose-internals/typescript.d.ts') diff --git a/typescript/src/adjustAutoImports.ts b/typescript/src/adjustAutoImports.ts index 0e95f965..91b5b182 100644 --- a/typescript/src/adjustAutoImports.ts +++ b/typescript/src/adjustAutoImports.ts @@ -88,7 +88,7 @@ export const findIndexOfAutoImportSpec = (ignoreAutoImportsSetting: ParsedIgnore if (!symbols.includes(symbol)) continue return i } - return + return undefined } export const shouldChangeSortingOfAutoImport = (symbolName: string, c: GetConfig) => { @@ -98,7 +98,7 @@ export const shouldChangeSortingOfAutoImport = (symbolName: string, c: GetConfig export const changeSortingOfAutoImport = (c: GetConfig, symbolName: string): ((module: string) => number) => { const arr = c('autoImport.changeSorting')[symbolName] - if (!arr || !arr.length) return () => 0 + if (!arr || arr.length === 0) return () => 0 const maxIndex = arr.length return module => { let actualIndex = arr.findIndex(x => { diff --git a/typescript/src/codeActions/custom/changeStringReplaceToRegex.ts b/typescript/src/codeActions/custom/changeStringReplaceToRegex.ts index 092428a6..a1bb00b7 100644 --- a/typescript/src/codeActions/custom/changeStringReplaceToRegex.ts +++ b/typescript/src/codeActions/custom/changeStringReplaceToRegex.ts @@ -1,5 +1,5 @@ -import { CodeAction } from '../getCodeActions' import escapeStringRegexp from 'escape-string-regexp' +import { CodeAction } from '../getCodeActions' import { getChangesTracker } from '../../utils' export default { diff --git a/typescript/src/codeActions/custom/objectSwapKeysAndValues.ts b/typescript/src/codeActions/custom/objectSwapKeysAndValues.ts index 360c24df..a66dc09b 100644 --- a/typescript/src/codeActions/custom/objectSwapKeysAndValues.ts +++ b/typescript/src/codeActions/custom/objectSwapKeysAndValues.ts @@ -42,18 +42,20 @@ export default { if (!name || ts.isPrivateIdentifier(name)) continue const initializerText = printNodeForObjectKey(initializer) if (!initializerText) continue - edits.push({ - newText: initializerText, - span: nodeToSpan(name), - }) - edits.push({ - newText: ts.isComputedPropertyName(name) - ? name.expression.getText() - : ts.isIdentifier(name) - ? /* TODO quote preference */ `'${name.text}'` - : name.getText(), - span: nodeToSpan(initializer), - }) + edits.push( + { + newText: initializerText, + span: nodeToSpan(name), + }, + { + newText: ts.isComputedPropertyName(name) + ? name.expression.getText() + : ts.isIdentifier(name) + ? /* TODO quote preference */ `'${name.text}'` + : name.getText(), + span: nodeToSpan(initializer), + }, + ) } return { edits: [ diff --git a/typescript/src/codeActions/custom/toggleBraces.ts b/typescript/src/codeActions/custom/toggleBraces.ts index f8caaa2b..7b6d526f 100644 --- a/typescript/src/codeActions/custom/toggleBraces.ts +++ b/typescript/src/codeActions/custom/toggleBraces.ts @@ -1,4 +1,3 @@ -import { Statement } from 'typescript/lib/tsserverlibrary' import { findChildContainingPosition, findClosestParent, getIndentFromPos } from '../../utils' import { ApplyCodeAction, CodeAction } from '../getCodeActions' @@ -18,7 +17,7 @@ const tryToApply: ApplyCodeAction = (sourceFile, pos, range) => { [], ) if (!closestBlock) return - let wrapNode: Statement | undefined + let wrapNode: ts.Statement | undefined if (ts.isForStatement(closestBlock) || ts.isForOfStatement(closestBlock) || ts.isForInStatement(closestBlock) || ts.isWhileStatement(closestBlock)) { wrapNode = closestBlock.statement } else if (ts.isIfStatement(closestBlock)) { diff --git a/typescript/src/codeActions/decorateProxy.ts b/typescript/src/codeActions/decorateProxy.ts index 0441e91b..a6442105 100644 --- a/typescript/src/codeActions/decorateProxy.ts +++ b/typescript/src/codeActions/decorateProxy.ts @@ -12,7 +12,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, previousGetCodeActionsResult.value = compact( prior.flatMap(refactor => { const actions = refactor.actions.filter(action => !action.notApplicableReason).map(action => action.description) - if (!actions.length) return + if (actions.length === 0) return return actions.map(action => ({ description: refactor.description, name: action })) }), ) diff --git a/typescript/src/codeActions/extended/addMissingProperties.ts b/typescript/src/codeActions/extended/addMissingProperties.ts index c1e4238a..6c014078 100644 --- a/typescript/src/codeActions/extended/addMissingProperties.ts +++ b/typescript/src/codeActions/extended/addMissingProperties.ts @@ -16,7 +16,7 @@ export default { } // general patterns if (param.type && ts.isTypeLiteralNode(param.type) && param.type.members) { - const hasMembers = param.type.members.length !== 0 + const hasMembers = param.type.members.length > 0 const insertPos = param.type.members.at(-1)?.end ?? param.type.end - 1 const insertComma = hasMembers && sourceFile.getFullText().slice(insertPos - 1, insertPos) !== ',' let insertText = node.text diff --git a/typescript/src/codeActions/functionExtractors.ts b/typescript/src/codeActions/functionExtractors.ts index 4ba25f81..a4c26550 100644 --- a/typescript/src/codeActions/functionExtractors.ts +++ b/typescript/src/codeActions/functionExtractors.ts @@ -100,7 +100,7 @@ export const handleFunctionRefactorEdits = ( if (actionName.endsWith('_jsx')) { const lines = oldFunctionText.trimStart().split('\n') const oldFunctionSignature = lines[0]! - const componentName = tsFull.getUniqueName('ExtractedComponent', sourceFile as FullSourceFile) + const componentName = tsFull.getUniqueName('ExtractedComponent', sourceFile as unknown as FullSourceFile) const newFunctionSignature = changeArgumentsToDestructured(oldFunctionSignature, formatOptions, sourceFile, componentName) const insertChange = textChanges.at(-2)! @@ -120,7 +120,7 @@ export const handleFunctionRefactorEdits = ( }, { span: functionChange.span, - newText: oldFunctionText.match(/\s*/)![0] + newFunctionSignature.slice(0, -2) + '\n' + lines.slice(1).join('\n'), + newText: `${oldFunctionText.match(/\s*/)![0] + newFunctionSignature.slice(0, -2)}\n${lines.slice(1).join('\n')}`, }, ], }, @@ -137,7 +137,7 @@ export const handleFunctionRefactorEdits = ( functionChange.newText = oldFunctionText .replace(/function /, 'const ') .replace('(', ' = (') - .replace(/\{\n/, '=> {\n') + .replace(/{\n/, '=> {\n') const isLocal = actionName.endsWith('_local_arrow') // to think: maybe reuse ts getNodeToInsertPropertyBefore instead? @@ -150,7 +150,7 @@ export const handleFunctionRefactorEdits = ( functionChange.span.start = constantAdd.span.start const indent = constantAdd.newText.match(/^\s*/)![0] // fix indent - functionChange.newText = dedentString(functionChange.newText, indent, true) + '\n' + functionChange.newText = `${dedentString(functionChange.newText, indent, true)}\n` } // global scope diff --git a/typescript/src/codeActions/getCodeActions.ts b/typescript/src/codeActions/getCodeActions.ts index fab96a21..6279a97c 100644 --- a/typescript/src/codeActions/getCodeActions.ts +++ b/typescript/src/codeActions/getCodeActions.ts @@ -1,11 +1,11 @@ import { compact } from '@zardoy/utils' +import { Except } from 'type-fest' import { findChildContainingExactPosition, findChildContainingPosition } from '../utils' +import { ApplyExtendedCodeActionResult, IpcExtendedCodeAction } from '../ipcTypes' import objectSwapKeysAndValues from './custom/objectSwapKeysAndValues' import changeStringReplaceToRegex from './custom/changeStringReplaceToRegex' import splitDeclarationAndInitialization from './custom/splitDeclarationAndInitialization' import addMissingProperties from './extended/addMissingProperties' -import { ApplyExtendedCodeActionResult, IpcExtendedCodeAction } from '../ipcTypes' -import { Except } from 'type-fest' const codeActions: CodeAction[] = [objectSwapKeysAndValues, changeStringReplaceToRegex, splitDeclarationAndInitialization] const extendedCodeActions: ExtendedCodeAction[] = [addMissingProperties] @@ -83,7 +83,7 @@ export const getExtendedCodeActions = ( sourceFile, } if (applyCodeActionTitle) { - const codeAction = extendedCodeActions.find(codeAction => codeAction.title === applyCodeActionTitle) as ExtendedCodeAction | undefined + const codeAction = extendedCodeActions.find(codeAction => codeAction.title === applyCodeActionTitle) return codeAction!.tryToApply(tryToApplyOptions) as T extends undefined ? never : ApplyExtendedCodeActionResult } return compact( @@ -144,7 +144,7 @@ export default ( const requestingEdit: any = requestingEditsId ? appliableCodeActions.find(({ id }) => id === requestingEditsId) : null return { info: - (appliableCodeActions.length && { + (appliableCodeActions.length > 0 && { actions: appliableCodeActions.map(({ id, name, kind }) => ({ description: name, kind, diff --git a/typescript/src/codeActions/improveBuiltin.ts b/typescript/src/codeActions/improveBuiltin.ts index 532994d4..53b96ad2 100644 --- a/typescript/src/codeActions/improveBuiltin.ts +++ b/typescript/src/codeActions/improveBuiltin.ts @@ -34,7 +34,7 @@ export default ( const namePatternRaw = c('codeActions.extractTypeInferNamePattern') const namePatternSelected = typeof namePatternRaw === 'object' ? namePatternRaw[extractToInterface ? 'interface' : 'typeAlias'] : namePatternRaw // apply name pattern to type name - typeName = tsFull.getUniqueName(namePatternSelected.replaceAll('{{name}}', typeName), sourceFile as FullSourceFile) + typeName = tsFull.getUniqueName(namePatternSelected.replaceAll('{{name}}', typeName), sourceFile as any) const newFileEdit: ts.FileTextChanges = { fileName, textChanges: textChanges.map((textChange, i) => { diff --git a/typescript/src/codeFixes.ts b/typescript/src/codeFixes.ts index 88b903d2..fc6ab578 100644 --- a/typescript/src/codeFixes.ts +++ b/typescript/src/codeFixes.ts @@ -6,11 +6,11 @@ import namespaceAutoImports from './namespaceAutoImports' export default (proxy: ts.LanguageService, languageService: ts.LanguageService, languageServiceHost: ts.LanguageServiceHost, c: GetConfig) => { proxy.getCodeFixesAtPosition = (fileName, start, end, errorCodes, formatOptions, preferences) => { - const sourceFile = languageService.getProgram()?.getSourceFile(fileName)! + const sourceFile = languageService.getProgram()!.getSourceFile(fileName)! const node = findChildContainingPosition(ts, sourceFile, start) const { Diagnostics } = tsFull - const moduleSymbolDescriptionPlaceholders: [d: any /* Diagnostic */, modulePlaceholderIndex: number, symbolNamePlaceholderIndex?: number][] = [ + const moduleSymbolDescriptionPlaceholders: Array<[d: any /* Diagnostic */, modulePlaceholderIndex: number, symbolNamePlaceholderIndex?: number]> = [ [Diagnostics.Import_0_from_1, 1, 0], [Diagnostics.Update_import_from_0, 0], [Diagnostics.Update_import_from_0, 0], @@ -22,7 +22,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, const addNamespaceImports = [] as ts.CodeFixAction[] let prior: readonly ts.CodeFixAction[] - let toUnpatch: (() => void)[] = [] + const toUnpatch: Array<() => void> = [] try { const { importFixName } = tsFull.codefix const ignoreAutoImportsSetting = getIgnoreAutoImportSetting(c) @@ -85,22 +85,21 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, prior = languageService.getCodeFixesAtPosition(fileName, start, end, errorCodes, formatOptions, preferences) setTimeout(() => { // make sure we still get code fixes, but error is still getting reported - throw err + console.error(err) }) } finally { - toUnpatch.forEach(x => x()) + for (const x of toUnpatch) x() } // todo remove when 5.0 is released after 3 months // #region fix builtin codefixes/refactorings - prior.forEach(fix => { + for (const fix of prior) { if (fix.fixName === 'fixConvertConstToLet') { const { start, length } = fix.changes[0]!.textChanges[0]!.span const fixedLength = 'const'.length as 5 fix.changes[0]!.textChanges[0]!.span.start = start + length - fixedLength fix.changes[0]!.textChanges[0]!.span.length = fixedLength } - return fix - }) + } // #endregion const semanticDiagnostics = languageService.getSemanticDiagnostics(fileName) @@ -155,12 +154,12 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, if (c('markTsCodeFixes.character')) prior = prior.map(item => ({ ...item, description: `${c('markTsCodeFixes.character')} ${item.description}` })) - prior.forEach(fix => { + for (const fix of prior) { // don't let it trigger on ctrl+s https://github.com/microsoft/vscode/blob/e8a3071ea4344d9d48ef8a4df2c097372b0c5161/extensions/typescript-language-features/src/languageFeatures/fixAll.ts#L142 if (fix.fixName === 'fixAwaitInSyncFunction') { fix.fixName = 'ignoreFixAwaitInSyncFunction' } - }) + } return prior } @@ -172,7 +171,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, const program = languageService.getProgram()! const sourceFile = program.getSourceFile(fileName)! const importAdder = tsFull.codefix.createImportAdder( - sourceFile as FullSourceFile, + sourceFile as unknown as FullSourceFile, program as any, preferences, languageServiceHost as any /* cancellationToken */, @@ -191,7 +190,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, const additionalTextChanges: ts.TextChange[] = [] for (const diagnostic of semanticDiagnostics) { if (!errorCodes.includes(diagnostic.code)) continue - const toUnpatch: (() => any)[] = [] + const toUnpatch: Array<() => any> = [] try { toUnpatch.push( patchMethod( @@ -252,12 +251,13 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, tsFull, 'forEachExternalModuleToImportFrom', oldForEachExternalModuleToImportFrom => (program, host, preferences, _useAutoImportProvider, cb) => { + // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression return oldForEachExternalModuleToImportFrom(program, host, preferences, true, cb) }, ), ) try { - importAdder.addImportFromDiagnostic({ ...diagnostic, file: sourceFile as FullSourceFile } as any, context) + importAdder.addImportFromDiagnostic({ ...diagnostic, file: sourceFile as unknown as FullSourceFile } as any, context) } catch (err) { if (err.message === 'No fixes') continue throw err diff --git a/typescript/src/completionEntryDetails.ts b/typescript/src/completionEntryDetails.ts index e527f4bc..5e205793 100644 --- a/typescript/src/completionEntryDetails.ts +++ b/typescript/src/completionEntryDetails.ts @@ -1,15 +1,22 @@ import { PrevCompletionMap, PrevCompletionsAdditionalData } from './completionsAtPosition' +import constructMethodSnippet from './constructMethodSnippet' +import { RequestResponseTypes } from './ipcTypes' import namespaceAutoImports from './namespaceAutoImports' import { GetConfig } from './types' +export const lastResolvedCompletion = { + value: undefined as undefined | RequestResponseTypes['getLastResolvedCompletion'], +} + export default function completionEntryDetails( inputArgs: Parameters, languageService: ts.LanguageService, prevCompletionsMap: PrevCompletionMap, c: GetConfig, - prevCompletionsAdittionalData: PrevCompletionsAdditionalData, + { enableMethodCompletion, completionsSymbolMap }: PrevCompletionsAdditionalData, ): ts.CompletionEntryDetails | undefined { const [fileName, position, entryName, formatOptions, source, preferences, data] = inputArgs + lastResolvedCompletion.value = { name: entryName } const program = languageService.getProgram() const sourceFile = program?.getSourceFile(fileName) if (!program || !sourceFile) return @@ -42,6 +49,21 @@ export default function completionEntryDetails( prior.displayParts = [{ kind: 'text', text: detailPrepend }, ...prior.displayParts] } if (!prior) return + const nextChar = sourceFile.getFullText().slice(position, position + 1) + + if (enableMethodCompletion && c('enableMethodSnippets') && !['(', '.', '`'].includes(nextChar)) { + const symbol = completionsSymbolMap.get(entryName)?.find(c => c.source === source)?.symbol + if (symbol) { + const resolveData = { + isAmbiguous: false, + } + const methodSnippet = constructMethodSnippet(languageService, sourceFile, position, symbol, c, resolveData) + if (methodSnippet) { + const data = JSON.stringify({ methodSnippet, isAmbiguous: resolveData.isAmbiguous }) + prior.documentation = [{ kind: 'text', text: `` }, ...(prior.documentation ?? [])] + } + } + } if (source) { const namespaceImport = namespaceAutoImports( c, @@ -60,7 +82,7 @@ export default function completionEntryDetails( prior.codeActions = [ // ...(prior.codeActions ?? []), { - description: description, + description, changes: [ { fileName, diff --git a/typescript/src/completions/addSourceDefinition.ts b/typescript/src/completions/addSourceDefinition.ts index 9454ff19..f12b2f64 100644 --- a/typescript/src/completions/addSourceDefinition.ts +++ b/typescript/src/completions/addSourceDefinition.ts @@ -5,14 +5,14 @@ export default (entries: ts.CompletionEntry[]) => { const { prevCompletionsMap, c } = sharedCompletionContext if (!c('displayAdditionalInfoInCompletions')) return for (const entry of entries) { - const symbol = entry['symbol'] as ts.Symbol | undefined + const { symbol } = entry if (!symbol) continue const addNodeText = (node: ts.Node) => { let text = node.getText().trim() if (ts.isBlock(node)) text = text.slice(1, -1) try { text = stringDedent(text) - } catch (e) { + } catch { // ignore } prevCompletionsMap[entry.name] = { diff --git a/typescript/src/completions/additionalTypesSuggestions.ts b/typescript/src/completions/additionalTypesSuggestions.ts index b07d9e2f..15bc1da1 100644 --- a/typescript/src/completions/additionalTypesSuggestions.ts +++ b/typescript/src/completions/additionalTypesSuggestions.ts @@ -8,25 +8,25 @@ export default (entries: ts.CompletionEntry[], program: ts.Program, node: ts.Nod node = node.parent const previousValues: string[] = [] if (node.parent.kind === ts.SyntaxKind.UnionType) { - ;(node.parent as ts.UnionTypeNode).types.forEach(type => { + for (const type of (node.parent as ts.UnionTypeNode).types) { if (ts.isLiteralTypeNode(type) && ts.isStringLiteral(type.literal)) { previousValues.push(type.literal.text) } - }) + } node = node.parent } if (ts.isTypeReferenceNode(node.parent) && node.parent.typeName.getText() === 'Omit' && node.parent.typeArguments?.[1] === node) { // Omit<..., '|'> suggestions const type = typeChecker.getTypeFromTypeNode(node.parent.typeArguments[0]!) - type.getProperties().forEach(({ name }) => { - if (previousValues.includes(name)) return + for (const { name } of type.getProperties()) { + if (previousValues.includes(name)) continue entries.push( buildStringCompletion(stringNode, { name, sortText: '', }), ) - }) + } return } } diff --git a/typescript/src/completions/adjustAutoImports.ts b/typescript/src/completions/adjustAutoImports.ts index b5926b8e..e4795b85 100644 --- a/typescript/src/completions/adjustAutoImports.ts +++ b/typescript/src/completions/adjustAutoImports.ts @@ -1,5 +1,5 @@ -import { changeSortingOfAutoImport, getIgnoreAutoImportSetting, isAutoImportEntryShouldBeIgnored, shouldChangeSortingOfAutoImport } from '../adjustAutoImports' import { sortBy } from 'rambda' +import { changeSortingOfAutoImport, getIgnoreAutoImportSetting, isAutoImportEntryShouldBeIgnored, shouldChangeSortingOfAutoImport } from '../adjustAutoImports' import { sharedCompletionContext } from './sharedContext' export default (entries: ts.CompletionEntry[]) => { diff --git a/typescript/src/completions/arrayMethods.ts b/typescript/src/completions/arrayMethods.ts index fd289055..397c01fb 100644 --- a/typescript/src/completions/arrayMethods.ts +++ b/typescript/src/completions/arrayMethods.ts @@ -1,6 +1,6 @@ +import pluralize from 'pluralize' import { GetConfig } from '../types' import { findChildContainingPosition, getLineTextBeforePos } from '../utils' -import pluralize from 'pluralize' const arrayMethodsToPatch = [ 'forEach', @@ -17,7 +17,6 @@ const arrayMethodsToPatch = [ export default (entries: ts.CompletionEntry[], position: number, sourceFile: ts.SourceFile, c: GetConfig): ts.CompletionEntry[] | undefined => { if (!c('arrayMethodsSnippets.enable')) return - /** Methods to patch */ const fullText = sourceFile.getFullText() if (fullText.slice(position, position + 1) === '(') return @@ -31,7 +30,8 @@ export default (entries: ts.CompletionEntry[], position: number, sourceFile: ts. if (!nodeBeforeDot) return const cleanSourceText = getItemNameFromNode(nodeBeforeDot)?.replace(/^(?:all)?(.+?)(?:List)?$/, '$1') - let inferredName = cleanSourceText && pluralize.singular(cleanSourceText) + if (!cleanSourceText) return + let inferredName = pluralize.singular(cleanSourceText) const defaultItemName = c('arrayMethodsSnippets.defaultItemName') // both can be undefined if (inferredName === cleanSourceText) { @@ -55,6 +55,7 @@ export default (entries: ts.CompletionEntry[], position: number, sourceFile: ts. return entries.map(entry => { if (!arrayMethodsToPatch.includes(entry.name.replace(/^★ /, ''))) { + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain if (resetRangeKinds && resetRangeKinds.includes(entry.kind) && !entry.replacementSpan) { return { ...entry, diff --git a/typescript/src/completions/boostKeywordSuggestions.ts b/typescript/src/completions/boostKeywordSuggestions.ts index 26d01e9b..9e85708f 100644 --- a/typescript/src/completions/boostKeywordSuggestions.ts +++ b/typescript/src/completions/boostKeywordSuggestions.ts @@ -12,11 +12,11 @@ export default (entries: ts.CompletionEntry[], position: number, node: ts.Node): if (!leftNode.parent.constraint) extendsKeyword = true } else if (leftNode) { if (ts.isBlock(leftNode)) { - if (ts.isTryStatement(leftNode.parent) && leftNode.parent.tryBlock === leftNode) addOrBoostKeywords.push(...['catch', 'finally']) + if (ts.isTryStatement(leftNode.parent) && leftNode.parent.tryBlock === leftNode) addOrBoostKeywords.push('catch', 'finally') else if (ts.isCatchClause(leftNode.parent) && leftNode.parent.block === leftNode) addOrBoostKeywords.push('finally') } if (leftNode.kind === ts.SyntaxKind.ExportKeyword) { - addOrBoostKeywords.push(...['const', 'function', 'default', 'from', 'let']) + addOrBoostKeywords.push('const', 'function', 'default', 'from', 'let') } } } diff --git a/typescript/src/completions/boostNameSuggestions.ts b/typescript/src/completions/boostNameSuggestions.ts index 26db70ab..a547626e 100644 --- a/typescript/src/completions/boostNameSuggestions.ts +++ b/typescript/src/completions/boostNameSuggestions.ts @@ -50,7 +50,7 @@ export default ( const notFoundIdentifiers = semanticDiagnostics .filter(({ code }) => cannotFindCodes.includes(code)) .filter(({ start, length }) => { - if ([start, length].some(x => x === undefined)) return false + if ([start, length].includes(undefined)) return false if (filterBlock === false) return true const diagnosticEnd = start! + length! const { pos, end } = filterBlock! @@ -58,7 +58,7 @@ export default ( if (diagnosticEnd > end) return false return true }) - const generalNotFoundNames = [...new Set(notFoundIdentifiers.map(({ start, length }) => fileText.slice(start!, start! + length!)))] + const generalNotFoundNames = [...new Set(notFoundIdentifiers.map(({ start, length }) => fileText.slice(start, start! + length!)))] return boostOrAddSuggestions( entries, generalNotFoundNames.map(name => ({ name, kind: ts.ScriptElementKind.warning })), diff --git a/typescript/src/completions/changeKindToFunction.ts b/typescript/src/completions/changeKindToFunction.ts index 1068cae2..6ca6d834 100644 --- a/typescript/src/completions/changeKindToFunction.ts +++ b/typescript/src/completions/changeKindToFunction.ts @@ -22,7 +22,7 @@ export default (entries: ts.CompletionEntry[]) => { ) { return } - const symbol = entry['symbol'] as ts.Symbol | undefined + const { symbol } = entry if (!symbol) return const { valueDeclaration } = symbol if (!valueDeclaration) return diff --git a/typescript/src/completions/defaultHelpers.ts b/typescript/src/completions/defaultHelpers.ts index 259fb8ca..a62ea97d 100644 --- a/typescript/src/completions/defaultHelpers.ts +++ b/typescript/src/completions/defaultHelpers.ts @@ -1,23 +1,27 @@ import { approveCast } from '../utils' export default (entries: ts.CompletionEntry[], node: ts.Node, languageService: ts.LanguageService): ts.CompletionEntry[] | void => { - if (entries.length && node) { - if (ts.isStringLiteralLike(node) && approveCast(node.parent, ts.isPropertyAssignment) && ts.isObjectLiteralExpression(node.parent.parent)) { - const typeChecker = languageService.getProgram()!.getTypeChecker()! - const type = typeChecker.getContextualType(node.parent.parent) - if (type) { - const properties = type.getProperties() - const propName = node.parent.name.getText() - const completingPropName = properties.find(({ name }) => name === propName) - const defaultValue = completingPropName?.getJsDocTags().find(({ name, text }) => name === 'default' && text?.length)?.text?.[0]?.text - if (defaultValue) { - const entryIndex = entries.findIndex(({ name, kind }) => name === defaultValue && kind === ts.ScriptElementKind.string) - if (entryIndex === -1) return - const entry = entries[entryIndex]! - const newEntries = [...entries] - newEntries.splice(entryIndex, 1, { ...entry, sortText: `z${entry.sortText}`, sourceDisplay: [{ kind: 'text', text: 'Default' }] }) - return newEntries - } + if ( + entries.length > 0 && + node && + ts.isStringLiteralLike(node) && + approveCast(node.parent, ts.isPropertyAssignment) && + ts.isObjectLiteralExpression(node.parent.parent) + ) { + const typeChecker = languageService.getProgram()!.getTypeChecker()! + const type = typeChecker.getContextualType(node.parent.parent) + if (type) { + const properties = type.getProperties() + const propName = node.parent.name.getText() + const completingPropName = properties.find(({ name }) => name === propName) + const defaultValue = completingPropName?.getJsDocTags().find(({ name, text }) => name === 'default' && text?.length)?.text?.[0]?.text + if (defaultValue) { + const entryIndex = entries.findIndex(({ name, kind }) => name === defaultValue && kind === ts.ScriptElementKind.string) + if (entryIndex === -1) return + const entry = entries[entryIndex]! + const newEntries = [...entries] + newEntries.splice(entryIndex, 1, { ...entry, sortText: `z${entry.sortText}`, sourceDisplay: [{ kind: 'text', text: 'Default' }] }) + return newEntries } } } diff --git a/typescript/src/completions/displayImportedInfo.ts b/typescript/src/completions/displayImportedInfo.ts index 3fa6b059..6a74c4b2 100644 --- a/typescript/src/completions/displayImportedInfo.ts +++ b/typescript/src/completions/displayImportedInfo.ts @@ -7,7 +7,7 @@ export default (entries: ts.CompletionEntry[]) => { if (displayImportedInfo === 'disable') return for (const entry of entries) { - const symbol = entry['symbol'] as ts.Symbol + const { symbol } = entry if (!symbol) continue const [node] = symbol.getDeclarations() ?? [] if (!node) continue @@ -24,7 +24,7 @@ export default (entries: ts.CompletionEntry[]) => { prevCompletionsMap[entry.name] ??= {} let importPath = importDeclaration.moduleSpecifier.getText() const symbolsLimit = 40 - if (importPath.length > symbolsLimit) importPath = importPath.slice(0, symbolsLimit / 2) + '...' + importPath.slice(-symbolsLimit / 2) + if (importPath.length > symbolsLimit) importPath = `${importPath.slice(0, symbolsLimit / 2)}...${importPath.slice(-symbolsLimit / 2)}` const detailPrepend = displayImportedInfo === 'short-format' ? `(from ${importPath}) ` : `Imported from ${importPath}\n\n` prevCompletionsMap[entry.name]!.detailPrepend = detailPrepend } diff --git a/typescript/src/completions/filterJsxComponents.ts b/typescript/src/completions/filterJsxComponents.ts index c2853ae9..c9db6a86 100644 --- a/typescript/src/completions/filterJsxComponents.ts +++ b/typescript/src/completions/filterJsxComponents.ts @@ -20,14 +20,14 @@ export default (entries: ts.CompletionEntry[], node: ts.Node, position: number, if (c('jsxImproveElementsSuggestions.enabled')) { let lastPart = nodeText.split('.').at(-1)! if (lastPart.startsWith('<')) lastPart = lastPart.slice(1) - const isStartingWithUpperCase = (str: string) => str[0] && str[0] === str[0].toUpperCase() + const isStartingWithUpperCase = (str: string) => str[0] && str.startsWith(str[0].toUpperCase()) // check if starts with lowercase if (isStartingWithUpperCase(lastPart)) { entries = entries.filter(entry => isStartingWithUpperCase(entry.name) && ![ts.ScriptElementKind.enumElement].includes(entry.kind)) } } - const fileName = node.getSourceFile().fileName + const { fileName } = node.getSourceFile() const interestedKinds: ts.ScriptElementKind[] = [ ts.ScriptElementKind.variableElement, ts.ScriptElementKind.functionElement, @@ -50,8 +50,8 @@ export default (entries: ts.CompletionEntry[], node: ts.Node, position: number, const addMark = (name: string) => { timings[name] ??= 0 timings[name] += nowGetter.now() - mark - timings[name + 'Count'] ??= 0 - timings[name + 'Count']++ + timings[`${name}Count`] ??= 0 + timings[`${name}Count`]++ } const getIsJsxComponentSignature = (signature: ts.Signature) => { let returnType: ts.Type | undefined = signature.getReturnType() @@ -74,9 +74,8 @@ export default (entries: ts.CompletionEntry[], node: ts.Node, position: number, const getIsEntryReactComponent = (entry: ts.CompletionEntry) => { // todo add more checks from ref https://github.com/microsoft/TypeScript/blob/e4816ed44cf9bcfe7cebb997b1f44cdb5564dac4/src/compiler/checker.ts#L30030 // todo support classes - const symbol = entry['symbol'] as ts.Symbol + const { symbol } = entry // tsFull.isCheckJsEnabledForFile(sourceFile, compilerOptions) - // symbol.declarations if (!symbol) return true // performance: symbol coming from lib cannot be JSX element, so let's skip checking them // todo other decl @@ -171,7 +170,7 @@ const getReactElementType = (program: ts.Program) => { if (ts.isInterfaceDeclaration(node) && node.name.text === 'ReactElement') { return node } - return + return undefined }) } diff --git a/typescript/src/completions/fixPropertiesSorting.ts b/typescript/src/completions/fixPropertiesSorting.ts index 818157f3..4d223717 100644 --- a/typescript/src/completions/fixPropertiesSorting.ts +++ b/typescript/src/completions/fixPropertiesSorting.ts @@ -47,12 +47,12 @@ export default (entries: ts.CompletionEntry[]) => { entries, ) // if sortText first symbol is not a number, than most probably it was highlighted by IntelliCode, keep them high - const [sortableEntries, notSortableEntries] = partition(entry => !isNaN(parseInt(entry.sortText)), interestedEntries) - const lowestSortText = Math.min(...sortableEntries.map(({ sortText }) => parseInt(sortText))) + const [sortableEntries, notSortableEntries] = partition(entry => !Number.isNaN(Number.parseInt(entry.sortText, 10)), interestedEntries) + const lowestSortText = Math.min(...sortableEntries.map(({ sortText }) => Number.parseInt(sortText, 10))) const getScore = (completion: ts.CompletionEntry) => { return ( sourceProps.indexOf(completion.name) + - (isJsxElem && (completion['symbol'] as ts.Symbol | undefined)?.declarations?.[0]?.getSourceFile().fileName.includes('@types/react') ? 10_000 : 0) + (isJsxElem && completion.symbol?.declarations?.[0]?.getSourceFile().fileName.includes('@types/react') ? 10_000 : 0) ) } // make sorted diff --git a/typescript/src/completions/inKeywordCompletions.ts b/typescript/src/completions/inKeywordCompletions.ts index cb91ef14..6a1f96c1 100644 --- a/typescript/src/completions/inKeywordCompletions.ts +++ b/typescript/src/completions/inKeywordCompletions.ts @@ -1,5 +1,5 @@ -import { sharedCompletionContext } from './sharedContext' import { buildStringCompletion } from '../utils' +import { sharedCompletionContext } from './sharedContext' export default () => { const { node, program } = sharedCompletionContext @@ -25,7 +25,7 @@ export default () => { } >() const types = type.isUnion() ? type.types : [type] - for (let [typeIndex, typeEntry] of types.entries()) { + for (const [typeIndex, typeEntry] of types.entries()) { // improved DX: not breaking other completions as TS would display error anyway if (!(typeEntry.flags & ts.TypeFlags.Object)) continue for (const prop of typeEntry.getProperties()) { @@ -40,6 +40,7 @@ export default () => { suggestionsData.get(name)!.usingDisplayIndexes.push(typeIndex + 1) // const doc = prop.getDocumentationComment(typeChecker) const declaration = prop.getDeclarations()?.[0] + if (!declaration) continue suggestionsData .get(name)! .documentations.push(`${typeIndex + 1}: ${declaration && typeChecker.typeToString(typeChecker.getTypeAtLocation(declaration))}`) @@ -67,5 +68,5 @@ export default () => { docPerCompletion, } } - return + return undefined } diff --git a/typescript/src/completions/isGoodPositionMethodCompletion.ts b/typescript/src/completions/isGoodPositionMethodCompletion.ts index 9f5a91bb..f13aec06 100644 --- a/typescript/src/completions/isGoodPositionMethodCompletion.ts +++ b/typescript/src/completions/isGoodPositionMethodCompletion.ts @@ -1,8 +1,7 @@ -import type tslib from 'typescript/lib/tsserverlibrary' import { GetConfig } from '../types' import { findChildContainingPosition, findChildContainingPositionMaxDepth } from '../utils' -export const isGoodPositionBuiltinMethodCompletion = (ts: typeof tslib, sourceFile: ts.SourceFile, position: number, c: GetConfig) => { +export const isGoodPositionMethodCompletion = (sourceFile: ts.SourceFile, position: number, c: GetConfig) => { const importClauseCandidate = findChildContainingPositionMaxDepth(sourceFile, position, 3) if (importClauseCandidate && ts.isImportClause(importClauseCandidate)) return false const textBeforePos = sourceFile.getFullText().slice(position - 1, position) @@ -22,25 +21,3 @@ export const isGoodPositionBuiltinMethodCompletion = (ts: typeof tslib, sourceFi } return true } - -export const isGoodPositionMethodCompletion = ( - ts: typeof tslib, - fileName: string, - sourceFile: ts.SourceFile, - position: number, - languageService: ts.LanguageService, - c: GetConfig, -) => { - if (!isGoodPositionBuiltinMethodCompletion(ts, sourceFile, position, c)) return false - // const { kind, displayParts } = languageService.getQuickInfoAtPosition(fileName, position) ?? {} - // console.log('kind', kind, displayParts?.map(({ text }) => text).join('')) - // switch (kind) { - // case 'var': - // case 'let': - // case 'const': - // case 'alias': - // return false - // } - // TODO check for brace here - return true -} diff --git a/typescript/src/completions/isInBannedPosition.ts b/typescript/src/completions/isInBannedPosition.ts index 5622e997..5a015729 100644 --- a/typescript/src/completions/isInBannedPosition.ts +++ b/typescript/src/completions/isInBannedPosition.ts @@ -1,5 +1,3 @@ -import type tslib from 'typescript/lib/tsserverlibrary' - export default (position: number, scriptSnapshot: ts.IScriptSnapshot, sourceFile: ts.SourceFile): boolean => { const { character } = sourceFile.getLineAndCharacterOfPosition(position) const textBeforePositionLine = scriptSnapshot?.getText(position - character, position) diff --git a/typescript/src/completions/jsdocDefault.ts b/typescript/src/completions/jsdocDefault.ts index 94126a7e..b246fcb3 100644 --- a/typescript/src/completions/jsdocDefault.ts +++ b/typescript/src/completions/jsdocDefault.ts @@ -14,11 +14,13 @@ export const getJsdocDefaultTypes = (position: number, sourceFile: ts.SourceFile try { const type = typeChecker.getTypeAtLocation(node) if (!type.isUnion()) return - const suggestions: [name: string, type: ts.Type, isLiteral: boolean][] = [] + const suggestions: Array<[name: string, type: ts.Type, isLiteral: boolean]> = [] for (const nextType of type.types) { const addSuggestions = (isLiteral: boolean, ...addSuggestions: string[]) => { suggestions.push(...addSuggestions.map(suggestion => [suggestion, nextType, isLiteral] as [string, ts.Type, boolean])) } + // TODO handle bigint + // eslint-disable-next-line @typescript-eslint/no-base-to-string if (nextType.isLiteral()) addSuggestions(true, nextType.value.toString()) else if (nextType.flags & ts.TypeFlags.BooleanLiteral) addSuggestions(true, nextType['intrinsicName']) else if (nextType.flags & ts.TypeFlags.Boolean) addSuggestions(false, 'true', 'false') @@ -31,11 +33,9 @@ export const getJsdocDefaultTypes = (position: number, sourceFile: ts.SourceFile } suggestions.sort(([nameA], [nameB]) => (sortScores[nameA] ?? 0) - (sortScores[nameB] ?? 0)) return suggestions - } catch (err) { - return - } + } catch {} - return + return undefined } export default ( diff --git a/typescript/src/completions/jsxAttributes.ts b/typescript/src/completions/jsxAttributes.ts index 6455a9e0..b4e4a7eb 100644 --- a/typescript/src/completions/jsxAttributes.ts +++ b/typescript/src/completions/jsxAttributes.ts @@ -1,6 +1,6 @@ import { compact } from '@zardoy/utils' -import { Configuration } from '../../../src/configurationType' import escapeStringRegexp from 'escape-string-regexp' +import { Configuration } from '../../../src/configurationType' export default ( entries: ts.CompletionEntry[], @@ -35,11 +35,11 @@ export default ( jsxAttributeCandidate = true node = node.parent } - if (jsxAttributeCandidate && Object.keys(jsxCompletionsMap).length && (ts.isJsxOpeningElement(node) || ts.isJsxSelfClosingElement(node))) { + if (jsxAttributeCandidate && Object.keys(jsxCompletionsMap).length > 0 && (ts.isJsxOpeningElement(node) || ts.isJsxSelfClosingElement(node))) { const tagName = node.tagName.getText() // TODO use the same perf optimization for replaceSuggestions const patchEntries: Record = {} - for (let [key, patchMethod] of Object.entries(jsxCompletionsMap)) { + for (const [key, patchMethod] of Object.entries(jsxCompletionsMap)) { const splitTagNameIdx = key.indexOf('#') if (splitTagNameIdx === -1) continue const comparingTagName = key.slice(0, splitTagNameIdx) @@ -47,11 +47,11 @@ export default ( const comparingName = key.slice(splitTagNameIdx + 1) if (comparingName.includes('*')) { const regexMatch = new RegExp(`^${escapeStringRegexp(comparingName).replaceAll('\\*', '.*')}$`) - entries.forEach(({ name, kind }, index) => { + for (const [index, { name, kind }] of entries.entries()) { if (kind === ts.ScriptElementKind.memberVariableElement && regexMatch.test(name)) { patchEntries[index] = patchMethod } - }) + } } else { // I think it needs some sort of optimization by using wordRange const indexToPatch = entries.findIndex(({ name, kind }) => kind === ts.ScriptElementKind.memberVariableElement && name === comparingName) diff --git a/typescript/src/completions/localityBonus.ts b/typescript/src/completions/localityBonus.ts index e84d748b..3695c11a 100644 --- a/typescript/src/completions/localityBonus.ts +++ b/typescript/src/completions/localityBonus.ts @@ -1,10 +1,12 @@ import { sharedCompletionContext } from './sharedContext' export default (entries: ts.CompletionEntry[]) => { - let { node, sourceFile, c } = sharedCompletionContext + const { node, sourceFile, c } = sharedCompletionContext if (!c('suggestions.localityBonus')) return const getScore = entry => { + // TODO once TS is updated resolve + // eslint-disable-next-line prefer-destructuring const symbol: ts.Symbol | undefined = entry['symbol'] if (!symbol) return const { valueDeclaration } = symbol diff --git a/typescript/src/completions/markOrRemoveGlobalLibCompletions.ts b/typescript/src/completions/markOrRemoveGlobalLibCompletions.ts index 3209082d..5a8b7c10 100644 --- a/typescript/src/completions/markOrRemoveGlobalLibCompletions.ts +++ b/typescript/src/completions/markOrRemoveGlobalLibCompletions.ts @@ -1,6 +1,6 @@ import { compact } from '@zardoy/utils' -import { GetConfig } from '../types' import { basename } from 'path-browserify' +import { GetConfig } from '../types' const isLibCompletion = (symbol: ts.Symbol) => { const fileName = symbol.declarations?.[0]?.getSourceFile().fileName @@ -16,7 +16,7 @@ export default (entries: ts.CompletionEntry[], position: number, languageService return compact( entries.map(entry => { if (entry.sourceDisplay) return entry - const symbol = entry['symbol'] as ts.Symbol | undefined + const { symbol } = entry if (!symbol) return entry const libCompletionEnding = isLibCompletion(symbol) if (!libCompletionEnding) return entry diff --git a/typescript/src/completions/objectLiteralCompletions.ts b/typescript/src/completions/objectLiteralCompletions.ts index ccc2e319..14740815 100644 --- a/typescript/src/completions/objectLiteralCompletions.ts +++ b/typescript/src/completions/objectLiteralCompletions.ts @@ -1,4 +1,5 @@ import { GetConfig } from '../types' +import { getFullTypeChecker, isTs5 } from '../utils' import { sharedCompletionContext } from './sharedContext' export default ( @@ -10,7 +11,7 @@ export default ( ): ts.CompletionEntry[] | void => { const { position } = sharedCompletionContext - if (entries.length && node) { + if (entries.length > 0 && node) { const enableMoreVariants = c('objectLiteralCompletions.moreVariants') const keepOriginal = c('objectLiteralCompletions.keepOriginal') if (!preferences.includeCompletionsWithObjectLiteralMethodSnippets && !enableMoreVariants) return @@ -23,12 +24,20 @@ export default ( entries = [...entries] const typeChecker = languageService.getProgram()!.getTypeChecker()! const objType = typeChecker.getContextualType(node) - if (!objType) return - const properties = getAllPropertiesOfType(objType, typeChecker) - for (const property of properties) { - const entry = entries.find(({ name }) => name === property.name) - if (!entry) continue - const type = typeChecker.getTypeOfSymbolAtLocation(property, node) + let oldProperties: ts.Symbol[] | undefined + if (!isTs5()) { + if (!objType) return + oldProperties = getAllPropertiesOfType(objType, typeChecker) + } + for (const entry of entries) { + let type: ts.Type | undefined + if (!isTs5()) { + const property = oldProperties!.find(property => property.name === entry.name) + if (!property) continue + type = typeChecker.getTypeOfSymbolAtLocation(property, node) + } else if (entry.symbol) { + type = typeChecker.getTypeOfSymbol(entry.symbol) + } if (!type) continue if (isFunctionType(type, typeChecker)) { if (['above', 'remove'].includes(keepOriginal) && preferences.includeCompletionsWithObjectLiteralMethodSnippets) { @@ -51,14 +60,16 @@ export default ( return [`: ${quote}$1${quote},$0`, `: ${quote}${quote},`] } const insertObjectArrayInnerText = c('objectLiteralCompletions.insertNewLine') ? '\n\t$1\n' : '$1' + const booleanCompletion = getBooleanCompletion(type, typeChecker) const completingStyleMap = [ [getQuotedSnippet, isStringCompletion], - [[': ${1|true,false|},$0', `: true/false,`], isBooleanCompletion], + [[`: ${booleanCompletion?.[0] ?? ''},`, `: ${booleanCompletion?.[0] ?? ''}`], () => booleanCompletion?.length === 1], + [[': ${1|true,false|},$0', `: true/false,`], () => booleanCompletion?.length === 2], [[`: [${insertObjectArrayInnerText}],$0`, `: [],`], isArrayCompletion], [[`: {${insertObjectArrayInnerText}},$0`, `: {},`], isObjectCompletion], ] as const const fallbackSnippet = c('objectLiteralCompletions.fallbackVariant') ? ([': $0,', ': ,'] as const) : undefined - const insertSnippetVariant = completingStyleMap.find(([, detector]) => detector(type, typeChecker))?.[0] ?? fallbackSnippet + const insertSnippetVariant = completingStyleMap.find(([, detector]) => detector(type!, typeChecker))?.[0] ?? fallbackSnippet if (!insertSnippetVariant) continue const [insertSnippetText, insertSnippetPreview] = typeof insertSnippetVariant === 'function' ? insertSnippetVariant() : insertSnippetVariant const insertText = entry.name + insertSnippetText @@ -103,31 +114,36 @@ const isStringCompletion = (type: ts.Type) => { return false } -const isBooleanCompletion = (type: ts.Type, checker: ts.TypeChecker) => { - if (type.flags & ts.TypeFlags.Undefined) return false +const getBooleanCompletion = (type: ts.Type, checker: ts.TypeChecker) => { + if (type.flags & ts.TypeFlags.Undefined) return // todo support boolean literals (boolean like) - if (type.flags & ts.TypeFlags.Boolean) return true - const trueType = (checker as unknown as FullChecker).getTrueType() - const falseType = (checker as unknown as FullChecker).getFalseType() - let seenTrueType = false - let seenFalseType = false - if (type.isUnion()) { - const match = isEverySubtype(type, type => { - if (!!(type.flags & ts.TypeFlags.Boolean)) return true - if (type === trueType) { - seenTrueType = true - return true - } - if (type === falseType) { - seenFalseType = true - return true - } - return false - }) - if (seenFalseType !== seenTrueType) return false - return match + const trueType = getFullTypeChecker(checker).getTrueType() as any + const falseType = getFullTypeChecker(checker).getFalseType() as any + const seenTypes = new Set() + if (type.flags & ts.TypeFlags.Boolean) { + seenTypes.add('true') + seenTypes.add('false') } - return false + const match = isEverySubtype({ types: type.isUnion() ? type.types : [type] } as any, type => { + if (type.flags & ts.TypeFlags.Boolean) { + seenTypes.add('true') + seenTypes.add('false') + return true + } + if (type === trueType) { + seenTypes.add('true') + return true + } + if (type === falseType) { + seenTypes.add('false') + return true + } + return false + }) + if (!match) return + + if (seenTypes.size === 0) return + return [...seenTypes.keys()] } const isArrayCompletion = (type: ts.Type, checker: ts.TypeChecker) => { @@ -166,7 +182,7 @@ export const getAllPropertiesOfType = (type: ts.Type, typeChecker: ts.TypeChecke .filter((property, i, arr) => { // perf if (objectCount === 1) return true - return !arr.find(({ name }, k) => name === property.name && i !== k) + return !arr.some(({ name }, k) => name === property.name && i !== k) }) return properties } diff --git a/typescript/src/completions/objectLiteralHelpers.ts b/typescript/src/completions/objectLiteralHelpers.ts index 271cca6b..0bc22a59 100644 --- a/typescript/src/completions/objectLiteralHelpers.ts +++ b/typescript/src/completions/objectLiteralHelpers.ts @@ -14,5 +14,5 @@ export default (node: ts.Node, entries: ts.CompletionEntry[]): ts.CompletionEntr ...entries, ] } - return + return undefined } diff --git a/typescript/src/completions/stringTemplateType.ts b/typescript/src/completions/stringTemplateType.ts index e9f6e9a8..d5a966ca 100644 --- a/typescript/src/completions/stringTemplateType.ts +++ b/typescript/src/completions/stringTemplateType.ts @@ -1,10 +1,9 @@ import { compact } from '@zardoy/utils' -import { sharedCompletionContext } from './sharedContext' import { buildStringCompletion } from '../utils' +import { sharedCompletionContext } from './sharedContext' export default (): ts.CompletionEntry[] | void => { - const { program } = sharedCompletionContext - let { node } = sharedCompletionContext + const { program, node } = sharedCompletionContext if (!node || !ts.isStringLiteralLike(node)) return const stringNode = node const checker = program.getTypeChecker()! @@ -43,5 +42,5 @@ export default (): ts.CompletionEntry[] | void => { ) } - return + return undefined } diff --git a/typescript/src/completions/switchCaseExcludeCovered.ts b/typescript/src/completions/switchCaseExcludeCovered.ts index 0104b7ee..c90ae5e4 100644 --- a/typescript/src/completions/switchCaseExcludeCovered.ts +++ b/typescript/src/completions/switchCaseExcludeCovered.ts @@ -13,21 +13,18 @@ export default (entries: ts.CompletionEntry[], position: number, sourceFile: ts. if (!ts.isCaseClause(nodeComp.parent)) nodeComp = leftNode.parent } if (enumAccessExpr === undefined) return - let currentClause: ts.CaseClause // just for type inferrence const clauses = ts.isCaseClause(nodeComp.parent) && ts.isCaseBlock(nodeComp.parent.parent) ? nodeComp.parent.parent?.clauses : undefined if (!clauses) return - currentClause = nodeComp.parent as ts.CaseClause + const currentClause = nodeComp.parent as ts.CaseClause const coveredValues: string[] = [] for (const clause of clauses) { if (ts.isDefaultClause(clause) || clause === currentClause) continue const { expression } = clause if (enumAccessExpr === null) { if (ts.isStringLiteralLike(expression)) coveredValues.push(expression.text) - } else { - if (getPropAccessExprRestText(expression) === enumAccessExpr) { - coveredValues.push((expression as ts.PropertyAccessExpression).name.text) - } + } else if (getPropAccessExprRestText(expression) === enumAccessExpr) { + coveredValues.push((expression as ts.PropertyAccessExpression).name.text) } } return entries.filter( diff --git a/typescript/src/completionsAtPosition.ts b/typescript/src/completionsAtPosition.ts index 5cae2b1d..b0a9fb0f 100644 --- a/typescript/src/completionsAtPosition.ts +++ b/typescript/src/completionsAtPosition.ts @@ -1,4 +1,6 @@ import _ from 'lodash' +import { compact } from '@zardoy/utils' +import escapeStringRegexp from 'escape-string-regexp' import inKeywordCompletions from './completions/inKeywordCompletions' // import * as emmet from '@vscode/emmet-helper' import isInBannedPosition from './completions/isInBannedPosition' @@ -6,7 +8,7 @@ import { GetConfig } from './types' import { findChildContainingExactPosition, findChildContainingPosition, isTs5, patchMethod } from './utils' import indexSignatureAccessCompletions from './completions/indexSignatureAccess' import fixPropertiesSorting from './completions/fixPropertiesSorting' -import { isGoodPositionBuiltinMethodCompletion } from './completions/isGoodPositionMethodCompletion' +import { isGoodPositionMethodCompletion } from './completions/isGoodPositionMethodCompletion' import improveJsxCompletions from './completions/jsxAttributes' import arrayMethods from './completions/arrayMethods' import prepareTextForEmmet from './specialCommands/prepareTextForEmmet' @@ -20,9 +22,7 @@ import defaultHelpers from './completions/defaultHelpers' import objectLiteralCompletions from './completions/objectLiteralCompletions' import filterJsxElements from './completions/filterJsxComponents' import markOrRemoveGlobalCompletions from './completions/markOrRemoveGlobalLibCompletions' -import { compact } from '@zardoy/utils' import adjustAutoImports from './completions/adjustAutoImports' -import escapeStringRegexp from 'escape-string-regexp' import addSourceDefinition from './completions/addSourceDefinition' import { sharedCompletionContext } from './completions/sharedContext' import displayImportedInfo from './completions/displayImportedInfo' @@ -45,6 +45,7 @@ export type PrevCompletionMap = Record< > export type PrevCompletionsAdditionalData = { enableMethodCompletion: boolean + completionsSymbolMap: Map> } type GetCompletionAtPositionReturnType = { @@ -71,8 +72,7 @@ export const getCompletionsAtPosition = ( if (!scriptSnapshot || isInBannedPosition(position, scriptSnapshot, sourceFile)) return const exactNode = findChildContainingExactPosition(sourceFile, position) const isCheckedFile = - !tsFull.isSourceFileJS(sourceFile as FullSourceFile) || - !!tsFull.isCheckJsEnabledForFile(sourceFile as FullSourceFile, additionalData.compilerOptions as any) + !tsFull.isSourceFileJS(sourceFile as any) || !!tsFull.isCheckJsEnabledForFile(sourceFile as any, additionalData.compilerOptions as any) Object.assign(sharedCompletionContext, { position, languageService, @@ -93,7 +93,6 @@ export const getCompletionsAtPosition = ( position, { ...options, - //@ts-expect-error remove when updated to ts5.0 includeSymbol: true, }, formatOptions, @@ -107,40 +106,38 @@ export const getCompletionsAtPosition = ( if (!prior) prior = { entries: [], isGlobalCompletion: false, isMemberCompletion: false, isNewIdentifierLocation: false } return true } - const hasSuggestions = prior && prior.entries.filter(({ kind }) => kind !== ts.ScriptElementKind.warning).length !== 0 + const hasSuggestions = prior?.entries.some(({ kind }) => kind !== ts.ScriptElementKind.warning) const node = findChildContainingPosition(ts, sourceFile, position) /** node that is one character behind * useful as in most cases we work with node that is behind the cursor */ const leftNode = findChildContainingPosition(ts, sourceFile, position - 1) - if (node) { - // #region Fake emmet - if ( - c('jsxPseudoEmmet.enable') && - leftNode && - prepareTextForEmmet(fileName, leftNode, sourceFile, position, languageService) !== false && - ensurePrior() && - prior - ) { - const tags = c('jsxPseudoEmmet.tags') - for (let [tag, value] of Object.entries(tags)) { - if (value === true) value = `<${tag}>$1` - prior.entries.push({ - kind: ts.ScriptElementKind.label, - name: tag, - sortText: '!5', - insertText: value, - isSnippet: true, - }) - } + if ( + node && // #region Fake emmet + c('jsxPseudoEmmet.enable') && + leftNode && + prepareTextForEmmet(fileName, leftNode, sourceFile, position, languageService) !== false && + ensurePrior() && + prior + ) { + const tags = c('jsxPseudoEmmet.tags') + for (let [tag, value] of Object.entries(tags)) { + if (value === true) value = `<${tag}>$1` + prior.entries.push({ + kind: ts.ScriptElementKind.label, + name: tag, + sortText: '!5', + insertText: value, + isSnippet: true, + }) } - // #endregion } + // #endregion if (node && !hasSuggestions && ensurePrior() && prior) { prior.entries = additionalTypesSuggestions(prior.entries, program, node) ?? prior.entries } const addSignatureAccessCompletions = hasSuggestions ? [] : indexSignatureAccessCompletions() - if (addSignatureAccessCompletions.length && ensurePrior() && prior) { + if (addSignatureAccessCompletions.length > 0 && ensurePrior() && prior) { prior.entries = [...prior.entries, ...addSignatureAccessCompletions] } @@ -326,7 +323,7 @@ export const getCompletionsAtPosition = ( processedEntries.add(entry) } - entry: for (const [i, entry] of prior!.entries.entries()) { + entry: for (const [i, entry] of prior.entries.entries()) { if (processedEntries.has(entry)) continue const { name } = entry if (!nameComparator(name)) continue @@ -345,7 +342,7 @@ export const getCompletionsAtPosition = ( } // prevent vscode-builtin wrong insertText with methods snippets enabled - const goodPositionForMethodCompletions = isGoodPositionBuiltinMethodCompletion(ts, sourceFile, position - 1, c) + const goodPositionForMethodCompletions = isGoodPositionMethodCompletion(sourceFile, position - 1, c) if (!goodPositionForMethodCompletions) { prior.entries = prior.entries.map(item => { if (item.isSnippet) return item @@ -367,20 +364,42 @@ export const getCompletionsAtPosition = ( prior.entries = prior.entries.map(({ ...entry }, index) => ({ ...entry, sortText: `${entry.sortText ?? ''}${index.toString().padStart(4, '0')}`, - symbol: undefined, })) } + + const needsCompletionsSymbolMap = c('enableMethodSnippets') + const completionsSymbolMap: PrevCompletionsAdditionalData['completionsSymbolMap'] = new Map() + if (needsCompletionsSymbolMap) { + for (const { name, source, symbol } of prior.entries) { + if (!symbol) continue + completionsSymbolMap.set(name, [ + ...(completionsSymbolMap.get(name) ?? []), + { + symbol, + source, + }, + ]) + } + } + + // Otherwise may crash Volar + prior.entries = prior.entries.map(entry => ({ + ...entry, + symbol: undefined, + })) + return { completions: prior, prevCompletionsMap, prevCompletionsAdittionalData: { enableMethodCompletion: goodPositionForMethodCompletions, + completionsSymbolMap, }, } } const patchBuiltinMethods = (c: GetConfig, languageService: ts.LanguageService, isCheckedFile: boolean) => { - if (isTs5() && (isCheckedFile || !c('additionalIncludeExtensions').length)) return + if (isTs5() && (isCheckedFile || c('additionalIncludeExtensions').length === 0)) return let addFileExtensions: string[] | undefined const getAddFileExtensions = () => { diff --git a/typescript/src/constructMethodSnippet.ts b/typescript/src/constructMethodSnippet.ts index d203ecd8..7759cb9c 100644 --- a/typescript/src/constructMethodSnippet.ts +++ b/typescript/src/constructMethodSnippet.ts @@ -4,25 +4,37 @@ import { GetConfig } from './types' import { findChildContainingExactPosition } from './utils' // todo-low-ee inspect any last arg infer -export default (languageService: ts.LanguageService, sourceFile: ts.SourceFile, position: number, c: GetConfig, acceptAmbiguous: boolean) => { - let node = findChildContainingExactPosition(sourceFile, position) - if (!node || isTypeNode(node)) return +export default ( + languageService: ts.LanguageService, + sourceFile: ts.SourceFile, + position: number, + symbol: ts.Symbol | /*for easier testing*/ undefined, + c: GetConfig, + // acceptAmbiguous: boolean, + resolveData: { + isAmbiguous: boolean + }, +) => { + let containerNode = findChildContainingExactPosition(sourceFile, position) + if (!containerNode || isTypeNode(containerNode)) return const checker = languageService.getProgram()!.getTypeChecker()! - const type = checker.getTypeAtLocation(node) + const type = symbol ? checker.getTypeOfSymbol(symbol) : checker.getTypeAtLocation(containerNode) - if (ts.isIdentifier(node)) node = node.parent - if (ts.isPropertyAccessExpression(node)) node = node.parent + if (ts.isIdentifier(containerNode)) containerNode = containerNode.parent + if (ts.isPropertyAccessExpression(containerNode)) containerNode = containerNode.parent - const isNewExpression = ts.isNewExpression(node) - if (!isNewExpression && !acceptAmbiguous && (type.getProperties().length || type.getStringIndexType() || type.getNumberIndexType())) return 'ambiguous' + const isNewExpression = ts.isNewExpression(containerNode) + if (!isNewExpression && (type.getProperties().length > 0 || type.getStringIndexType() || type.getNumberIndexType())) { + resolveData.isAmbiguous = true + } const signatures = checker.getSignaturesOfType(type, isNewExpression ? ts.SignatureKind.Construct : ts.SignatureKind.Call) // ensure node is not used below if (signatures.length === 0) return const signature = signatures[0]! // probably need to remove check as class can be instantiated inside another class, and don't really see a reason for this check - if (isNewExpression && hasPrivateOrProtectedModifier(signature.getDeclaration().modifiers)) return + if (isNewExpression && hasPrivateOrProtectedModifier((signature.getDeclaration() as ts.ConstructorDeclaration).modifiers)) return if (signatures.length > 1 && c('methodSnippets.multipleSignatures') === 'empty') { return [''] } @@ -38,8 +50,7 @@ export default (languageService: ts.LanguageService, sourceFile: ts.SourceFile, const paramsToInsert = compact( (skipMode === 'all' ? [] : parameters).map(param => { const valueDeclaration = param.valueDeclaration as ts.ParameterDeclaration | undefined - const isOptional = - valueDeclaration && (valueDeclaration.questionToken || valueDeclaration.initializer || valueDeclaration.dotDotDotToken) ? true : false + const isOptional = !!(valueDeclaration && (valueDeclaration.questionToken || valueDeclaration.initializer || valueDeclaration.dotDotDotToken)) switch (skipMode) { case 'only-rest': if (valueDeclaration?.dotDotDotToken) return undefined @@ -47,8 +58,10 @@ export default (languageService: ts.LanguageService, sourceFile: ts.SourceFile, case 'optional-and-rest': if (isOptional) return undefined break + case 'all': + case 'no-skip': } - const voidType = (checker as unknown as FullChecker).getVoidType() + const voidType = (checker as unknown as FullChecker).getVoidType() as any const parameterType = valueDeclaration && checker.getTypeOfSymbolAtLocation(param, valueDeclaration) isVoidOrNotMap.push( !!( diff --git a/typescript/src/decorateFormatFeatures.ts b/typescript/src/decorateFormatFeatures.ts index 75570f8f..3508c8e5 100644 --- a/typescript/src/decorateFormatFeatures.ts +++ b/typescript/src/decorateFormatFeatures.ts @@ -31,11 +31,9 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, return isInsideIgnoredRegion } - for (const method of [ - 'getFormattingEditsForDocument', - 'getFormattingEditsForRange', - 'getFormattingEditsAfterKeystroke', - ] satisfies (keyof ts.LanguageService)[]) { + for (const method of ['getFormattingEditsForDocument', 'getFormattingEditsForRange', 'getFormattingEditsAfterKeystroke'] satisfies Array< + keyof ts.LanguageService + >) { proxy[method] = (...args) => { const textChanges: ts.TextChange[] = (languageService[method] as any)(...args) const fileName = args[0] diff --git a/typescript/src/decorateProxy.ts b/typescript/src/decorateProxy.ts index 5f70b43c..704d5d4a 100644 --- a/typescript/src/decorateProxy.ts +++ b/typescript/src/decorateProxy.ts @@ -1,3 +1,6 @@ +import lodashGet from 'lodash.get' +import { camelCase } from 'change-case' +import _ from 'lodash' import { getCompletionsAtPosition, PrevCompletionMap, PrevCompletionsAdditionalData } from './completionsAtPosition' import { RequestOptionsTypes, TriggerCharacterCommand } from './ipcTypes' import { getNavTreeItems } from './getPatchedNavTree' @@ -10,11 +13,11 @@ import decorateDefinitions from './definitions' import decorateDocumentHighlights from './documentHighlights' import completionEntryDetails from './completionEntryDetails' import { GetConfig } from './types' -import lodashGet from 'lodash.get' import decorateWorkspaceSymbolSearch from './workspaceSymbolSearch' import decorateFormatFeatures from './decorateFormatFeatures' import libDomPatching from './libDomPatching' import decorateSignatureHelp from './decorateSignatureHelp' +import { approveCast, findChildContainingExactPosition } from './utils' /** @internal */ export const thisPluginMarker = '__essentialPluginsMarker__' @@ -45,7 +48,50 @@ export const decorateLanguageService = ( let prevCompletionsMap: PrevCompletionMap let prevCompletionsAdittionalData: PrevCompletionsAdditionalData - // eslint-disable-next-line complexity + + proxy.getEditsForFileRename = (oldFilePath, newFilePath, formatOptions, preferences) => { + let edits = languageService.getEditsForFileRename(oldFilePath, newFilePath, formatOptions, preferences) + if (c('renameImportNameOfFileRename')) { + const predictedNameFromPath = (p: string) => camelCase(p.split(/[/\\]/g).pop()!.replace(/\..+/, '')) + const oldPredictedName = predictedNameFromPath(oldFilePath) + const newPredictedName = predictedNameFromPath(newFilePath) + for (const edit of edits) { + const possiblyAddRename = (identifier: ts.Identifier | undefined) => { + if (identifier?.text !== oldPredictedName) return + const sourceFile = languageService.getProgram()!.getSourceFile(edit.fileName)! + const newRenameEdits = proxy.findRenameLocations(edit.fileName, identifier.pos, false, false) ?? [] + if (!newRenameEdits) return + // maybe cancel symbol rename on collision instead? + const newInsertName = tsFull.getUniqueName(newPredictedName, sourceFile as any) + const addEdits = Object.entries(_.groupBy(newRenameEdits, ({ fileName }) => fileName)).map( + ([fileName, changes]): ts.FileTextChanges => ({ + fileName, + textChanges: changes.map( + ({ prefixText = '', suffixText = '', textSpan }): ts.TextChange => ({ + newText: prefixText + newInsertName + suffixText, + span: textSpan, + }), + ), + }), + ) + edits = [...edits, ...addEdits] + } + for (const textChange of edit.textChanges) { + const node = findChildContainingExactPosition(languageService.getProgram()!.getSourceFile(edit.fileName)!, textChange.span.start) + if (!node) continue + if (node && ts.isStringLiteral(node) && ts.isImportDeclaration(node.parent) && node.parent.importClause) { + const { importClause } = node.parent + possiblyAddRename(importClause?.name) + if (approveCast(importClause.namedBindings, ts.isNamespaceImport)) { + possiblyAddRename(importClause.namedBindings.name) + } + } + } + } + } + return edits + } + proxy.getCompletionsAtPosition = (fileName, position, options, formatOptions) => { if (options?.triggerCharacter && typeof options.triggerCharacter !== 'string') { return languageService.getCompletionsAtPosition(fileName, position, options) @@ -119,15 +165,14 @@ export const decorateLanguageService = ( libDomPatching(languageServiceHost, c) - if (pluginSpecificSyntaxServerConfigCheck) { - if (!__WEB__) { - // dedicated syntax server (which is enabled by default), which fires navtree doesn't seem to receive onConfigurationChanged - // so we forced to communicate via fs - const config = JSON.parse(ts.sys.readFile(require('path').join(__dirname, '../../plugin-config.json'), 'utf8') ?? '{}') - proxy.getNavigationTree = fileName => { - if (c('patchOutline') || config.patchOutline) return getNavTreeItems(languageService, languageServiceHost, fileName, config.outline) - return languageService.getNavigationTree(fileName) - } + if (pluginSpecificSyntaxServerConfigCheck && !__WEB__) { + // dedicated syntax server (which is enabled by default), which fires navtree doesn't seem to receive onConfigurationChanged + // so we forced to communicate via fs + // eslint-disable-next-line @typescript-eslint/no-require-imports + const config = JSON.parse(ts.sys.readFile(require('path').join(__dirname, '../../plugin-config.json'), 'utf8') ?? '{}') + proxy.getNavigationTree = fileName => { + if (c('patchOutline') || config.patchOutline) return getNavTreeItems(languageService, languageServiceHost, fileName, config.outline) + return languageService.getNavigationTree(fileName) } } diff --git a/typescript/src/decorateSignatureHelp.ts b/typescript/src/decorateSignatureHelp.ts index df250750..9f83d933 100644 --- a/typescript/src/decorateSignatureHelp.ts +++ b/typescript/src/decorateSignatureHelp.ts @@ -47,7 +47,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, const returnStatement = ts.findAncestor(node, node => { return ts.isBlock(node) ? 'quit' : ts.isReturnStatement(node) - }) ?? tsFull.findPrecedingToken?.(position, sourceFile as FullSourceFile)?.kind === ts.SyntaxKind.ReturnKeyword + }) ?? (tsFull.findPrecedingToken?.(position, sourceFile as any)?.kind as any) === ts.SyntaxKind.ReturnKeyword return languageService.getSignatureHelpItems( fileName, diff --git a/typescript/src/definitions.ts b/typescript/src/definitions.ts index ee2c2e22..5b330498 100644 --- a/typescript/src/definitions.ts +++ b/typescript/src/definitions.ts @@ -1,7 +1,6 @@ +import { join } from 'path-browserify' import { GetConfig } from './types' import { findChildContainingExactPosition } from './utils' -import { join } from 'path-browserify' -import { ModuleDeclaration } from 'typescript' export default (proxy: ts.LanguageService, languageService: ts.LanguageService, languageServiceHost: ts.LanguageServiceHost, c: GetConfig) => { proxy.getDefinitionAndBoundSpan = (fileName, position) => { @@ -52,7 +51,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, const interestedMember = properties?.find(property => property.name === node.text) if (interestedMember) { const definitions = (interestedMember.getDeclarations() ?? []).map((declaration: ts.Node) => { - const fileName = declaration.getSourceFile().fileName + const { fileName } = declaration.getSourceFile() if (ts.isPropertySignature(declaration)) declaration = declaration.name const start = declaration.pos + declaration.getLeadingTriviaWidth() return { @@ -60,7 +59,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, containerName: '', name: '', fileName, - textSpan: { start: start, length: declaration.end - start }, + textSpan: { start, length: declaration.end - start }, kind: ts.ScriptElementKind.memberVariableElement, contextSpan: { start: 0, length: 0 }, } @@ -127,7 +126,7 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, if (containerName === 'classes' && containerKind === undefined && rest['isAmbient'] && kind === 'index' && name === '__index') { // ensure we don't filter out something important? const nodeAtDefinition = findChildContainingExactPosition(languageService.getProgram()!.getSourceFile(fileName)!, textSpan.start) - let moduleDeclaration: ModuleDeclaration | undefined + let moduleDeclaration: ts.ModuleDeclaration | undefined ts.findAncestor(nodeAtDefinition, node => { if (ts.isModuleDeclaration(node)) { moduleDeclaration = node diff --git a/typescript/src/documentHighlights.ts b/typescript/src/documentHighlights.ts index 9b9bf84a..d7b7790f 100644 --- a/typescript/src/documentHighlights.ts +++ b/typescript/src/documentHighlights.ts @@ -8,11 +8,12 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, if (prior.length !== 1) return prior const node = findChildContainingPosition(ts, languageService.getProgram()!.getSourceFile(fileName)!, position) if (!node) return prior - if (c('disableUselessHighlighting') !== 'disable') { - if (ts.isStringLiteralLike(node)) { - if (c('disableUselessHighlighting') === 'inAllStrings') return - else if (ts.isJsxAttribute(node.parent)) return - } + if ( + c('disableUselessHighlighting') !== 'disable' && + ts.isStringLiteralLike(node) && + (c('disableUselessHighlighting') === 'inAllStrings' || ts.isJsxAttribute(node.parent)) + ) { + return } return prior } diff --git a/typescript/src/dummyLanguageService.ts b/typescript/src/dummyLanguageService.ts index f32272b2..2611a5e7 100644 --- a/typescript/src/dummyLanguageService.ts +++ b/typescript/src/dummyLanguageService.ts @@ -2,7 +2,7 @@ import { nodeModules } from './utils' export const createLanguageService = (files: Record, { useLib = true }: { useLib?: boolean } = {}, entrypoint?: string) => { - const path = nodeModules!.path + const { path } = nodeModules! let dummyVersion = 1 let defaultLibDir: string | undefined const languageServiceHost: ts.LanguageServiceHost = { @@ -40,7 +40,7 @@ export const createLanguageService = (files: Record, { useLib = if (newFiles) { if (typeof newFiles === 'string') { if (!entrypoint) throw new Error('entrypoint not set') - files = { [entrypoint!]: newFiles } + files = { [entrypoint]: newFiles } } else { Object.assign(files, newFiles) } @@ -49,7 +49,7 @@ export const createLanguageService = (files: Record, { useLib = }, getCurrentFile() { if (!entrypoint) throw new Error('entrypoint not set') - return files[entrypoint!]! + return files[entrypoint]! }, } } diff --git a/typescript/src/getPatchedNavTree.ts b/typescript/src/getPatchedNavTree.ts index 0d2823dc..1affa14d 100644 --- a/typescript/src/getPatchedNavTree.ts +++ b/typescript/src/getPatchedNavTree.ts @@ -1,7 +1,7 @@ +import { ensureArray } from '@zardoy/utils' import { getCancellationToken, isTs5, nodeModules } from './utils' import { createLanguageService } from './dummyLanguageService' import { getCannotFindCodes } from './utils/cannotFindCodes' -import { ensureArray } from '@zardoy/utils' // used at testing only declare const __TS_SEVER_PATH__: string | undefined @@ -12,7 +12,7 @@ const getPatchedNavModule = (additionalFeatures: AdditionalFeatures): { getNavig // what is happening here: grabbing & patching NavigationBar module contents from actual running JS const tsServerPath = typeof __TS_SEVER_PATH__ !== 'undefined' ? __TS_SEVER_PATH__ : require.main!.filename // current lib/tsserver.js - const mainScript = nodeModules!.fs.readFileSync(tsServerPath, 'utf8') as string + const mainScript = nodeModules!.fs.readFileSync(tsServerPath, 'utf8') type PatchData = { markerModuleStart: string skipStartMarker?: boolean @@ -107,7 +107,7 @@ const getPatchedNavModule = (additionalFeatures: AdditionalFeatures): { getNavig const contentAfterModuleStart = mainScript.slice(mainScript.indexOf(markerModuleStart) + (skipStartMarker ? markerModuleStart.length : 0)) const lines = contentAfterModuleStart.slice(0, contentAfterModuleStart.indexOf(markerModuleEnd) + markerModuleEnd.length).split(/\r?\n/) - for (let { addString, linesOffset, searchString, removeLines = 0 } of patches) { + for (const { addString, linesOffset, searchString, removeLines = 0 } of patches) { let addTypeIndex = -1 for (const search of ensureArray(searchString)) { const newIndexStart = addTypeIndex + 1 @@ -146,19 +146,19 @@ const getPatchedNavModule = (additionalFeatures: AdditionalFeatures): { getNavig // TODO refactor to arr let idAdd = '' let classNameAdd = '' - properties.forEach(attr => { - if (!ts.isJsxAttribute(attr) || !attr.initializer) return + for (const attr of properties) { + if (!ts.isJsxAttribute(attr) || !attr.initializer) continue const attrName = attr.name?.getText() - if (!attrName) return + if (!attrName) continue if (addDotAttrs.includes(attrName)) { const textAdd = ts.isStringLiteral(attr.initializer) ? attr.initializer.text : '' - for (let char of textAdd.split(' ')) { + for (const char of textAdd.split(' ')) { if (char) classNameAdd += `.${char}` } } else if (attrName === 'id' && ts.isStringLiteral(attr.initializer)) { idAdd = `#${attr.initializer.text}` } - }) + } return tagName + classNameAdd + idAdd } return getModule(ts, getNameFromJsxTag) @@ -174,7 +174,7 @@ export const getNavTreeItems = ( ) => { if (!navModule) navModule = getPatchedNavModule(additionalFeatures) const sourceFile = - (languageService as import('typescript-full').LanguageService).getNonBoundSourceFile?.(fileName) ?? + (languageService as unknown as import('typescript-full').LanguageService).getNonBoundSourceFile?.(fileName) ?? languageService.getProgram()!.getSourceFile(fileName) if (!sourceFile) throw new Error('no sourceFile') diff --git a/typescript/src/globals.d.ts b/typescript/src/globals.d.ts index f28206a6..852d61e5 100644 --- a/typescript/src/globals.d.ts +++ b/typescript/src/globals.d.ts @@ -1,20 +1,8 @@ import('ts-expose-internals') // prvided by esbuild at top-level of bundle in buildTsPlugin.mjs -declare let ts: typeof import('typescript') declare let tsFull: typeof import('typescript-full') declare type FullChecker = import('typescript-full').TypeChecker declare type FullSourceFile = import('typescript-full').SourceFile -// declare type ts = import('typescript') -// export {} -// export * from 'typescript' -// // export * from 'typescript/lib/tsserverlibrary' - -// export as namespace ts -// declare global { -// export as namespace ts -// declare let ts: typeof import('typescript') -// } - declare let __WEB__: boolean diff --git a/typescript/src/index.ts b/typescript/src/index.ts index add035dc..dcba8611 100644 --- a/typescript/src/index.ts +++ b/typescript/src/index.ts @@ -1,15 +1,14 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -//@ts-ignore -import type { Configuration } from '../../src/configurationType' import { decorateLanguageService, getInitialProxy, thisPluginMarker } from './decorateProxy' +import { Configuration } from './types' -let _configObj = { +const _configObj = { config: undefined! as Configuration, } const updateConfigListeners: Array<() => void> = [] const plugin: ts.server.PluginModuleFactory = ({ typescript }) => { + // eslint-disable-next-line no-multi-assign ts = tsFull = typescript as any return { create(info) { @@ -51,5 +50,5 @@ const plugin: ts.server.PluginModuleFactory = ({ typescript }) => { } } -//@ts-ignore +//@ts-expect-error export = plugin diff --git a/typescript/src/ipcTypes.ts b/typescript/src/ipcTypes.ts index b0fdf093..9a144178 100644 --- a/typescript/src/ipcTypes.ts +++ b/typescript/src/ipcTypes.ts @@ -13,8 +13,8 @@ export const triggerCharacterCommands = [ 'twoStepCodeActionSecondStep', 'getFixAllEdits', 'acceptRenameWithParams', - 'getFullMethodSnippet', 'getExtendedCodeActionEdits', + 'getLastResolvedCompletion', ] as const export type TriggerCharacterCommand = (typeof triggerCharacterCommands)[number] @@ -27,7 +27,7 @@ export type NodeAtPositionResponse = { type TsRange = [number, number] -export type PickFunctionArgsType = [name: string, declaration: TsRange, args: [name: string, type: string][]] +export type PickFunctionArgsType = [name: string, declaration: TsRange, args: Array<[name: string, type: string]>] export type GetSignatureInfoParameter = { name: string @@ -64,7 +64,7 @@ export type RequestResponseTypes = { totalCount: number totalObjectCount: number } - moveToExistingFile?: {} + moveToExistingFile?: Record extendedCodeActions: IpcExtendedCodeAction[] } twoStepCodeActionSecondStep: @@ -77,8 +77,10 @@ export type RequestResponseTypes = { } turnArrayIntoObjectEdit: ts.TextChange[] getFixAllEdits: ts.TextChange[] - getFullMethodSnippet: string[] | 'ambiguous' | undefined getExtendedCodeActionEdits: ApplyExtendedCodeActionResult + getLastResolvedCompletion: { + name: string + } } // INPUT @@ -110,9 +112,6 @@ export type RequestOptionsTypes = { range: [number, number] applyCodeActionTitle: string } - getFullMethodSnippet: { - acceptAmbiguous: boolean - } } // export type EmmetResult = { diff --git a/typescript/src/libMethods.ts b/typescript/src/libMethods.ts index 291dbcdd..ef0c7ab0 100644 --- a/typescript/src/libMethods.ts +++ b/typescript/src/libMethods.ts @@ -1,5 +1,6 @@ // exposed ts essentials plugins lib methods for external usage from npm export const initTypeScriptEssentialsPlugins = (typescript: typeof ts) => { + // eslint-disable-next-line no-multi-assign ts = tsFull = typescript as any } diff --git a/typescript/src/namespaceAutoImports.ts b/typescript/src/namespaceAutoImports.ts index 1e16a46f..a70818ed 100644 --- a/typescript/src/namespaceAutoImports.ts +++ b/typescript/src/namespaceAutoImports.ts @@ -1,7 +1,7 @@ +import { camelCase } from 'change-case' import { parseIgnoreSpec, findIndexOfAutoImportSpec } from './adjustAutoImports' import { GetConfig } from './types' import { getChangesTracker } from './utils' -import { camelCase } from 'change-case' export default ( c: GetConfig, @@ -18,7 +18,7 @@ export default ( return [parseIgnoreSpec(key), value] as const }) const changeToNamespaceImportSpecs = changeToNamespaceImport.map(([spec]) => spec) - if (!changeToNamespaceImport.length) { + if (changeToNamespaceImport.length === 0) { return } diff --git a/typescript/src/references.ts b/typescript/src/references.ts index ea67b706..d07b1a69 100644 --- a/typescript/src/references.ts +++ b/typescript/src/references.ts @@ -21,13 +21,13 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, } > = {} const allReferences = prior.flatMap(({ references }) => references) - allReferences.forEach(({ fileName }) => { + for (const { fileName } of allReferences) { importsCountPerFileName[fileName] ??= { all: 0, cur: 0, } importsCountPerFileName[fileName]!.all++ - }) + } prior = prior.map(({ references, ...other }) => { return { ...other, @@ -52,6 +52,15 @@ export default (proxy: ts.LanguageService, languageService: ts.LanguageService, } }) } + if (c('skipNodeModulesReferences') && !fileName.includes('node_modules')) { + prior = prior.map(({ references, ...other }) => ({ + ...other, + references: references.filter(({ fileName }) => { + const nodeModulesFile = fileName.includes('/node_modules/') + return !nodeModulesFile + }), + })) + } return prior } diff --git a/typescript/src/specialCommands/handle.ts b/typescript/src/specialCommands/handle.ts index 6b56e713..a3da1ca6 100644 --- a/typescript/src/specialCommands/handle.ts +++ b/typescript/src/specialCommands/handle.ts @@ -2,21 +2,15 @@ import { compact } from '@zardoy/utils' import { getExtendedCodeActions } from '../codeActions/getCodeActions' import constructMethodSnippet from '../constructMethodSnippet' import { overrideRequestPreferences } from '../decorateProxy' -import { - GetSignatureInfoParameter, - NodeAtPositionResponse, - RequestOptionsTypes, - RequestResponseTypes, - TriggerCharacterCommand, - triggerCharacterCommands, -} from '../ipcTypes' +import { NodeAtPositionResponse, RequestOptionsTypes, RequestResponseTypes, TriggerCharacterCommand, triggerCharacterCommands } from '../ipcTypes' import { GetConfig } from '../types' import { findChildContainingExactPosition, findChildContainingPosition, getNodePath } from '../utils' +import { lastResolvedCompletion } from '../completionEntryDetails' import getEmmetCompletions from './emmet' import objectIntoArrayConverters from './objectIntoArrayConverters' export const previousGetCodeActionsResult = { - value: undefined as undefined | Record<'description' | 'name', string>[], + value: undefined as undefined | Array>, } export default ( @@ -51,7 +45,7 @@ export default ( return { turnArrayIntoObject: objectIntoArrayConverters(posEnd, node, undefined), moveToExistingFile: moveToExistingFile ? {} : undefined, - extendedCodeActions: extendedCodeActions, + extendedCodeActions, } } if (specialCommand === 'getExtendedCodeActionEdits') { @@ -100,16 +94,6 @@ export default ( const node = findChildContainingPosition(ts, sourceFile, position) return !node ? undefined : nodeToApiResponse(node) } - if (specialCommand === 'getFullMethodSnippet') { - changeType(specialCommandArg) - return constructMethodSnippet( - languageService, - sourceFile, - position, - configuration, - specialCommandArg.acceptAmbiguous, - ) satisfies RequestResponseTypes['getFullMethodSnippet'] - } if (specialCommand === 'getSpanOfEnclosingComment') { return languageService.getSpanOfEnclosingComment(fileName, position, false) } @@ -211,9 +195,8 @@ export default ( return { range: Array.isArray(targetNode) ? targetNode : [targetNode.pos, targetNode.end], } satisfies RequestResponseTypes['getRangeOfSpecialValue'] - } else { - return } + return } if (specialCommand === 'acceptRenameWithParams') { changeType(specialCommandArg) @@ -258,7 +241,7 @@ export default ( ...(tsFull.getLeadingCommentRangesOfNode(node as any, sourceFile as any) ?? []), ...(tsFull.getTrailingCommentRanges(node as any, sourceFile as any) ?? []), ] - collectedNodes.comment!.push(...comments?.map(comment => ({ range: [comment.pos, comment.end] as [number, number] }))) + collectedNodes.comment!.push(...comments.map(comment => ({ range: [comment.pos, comment.end] as [number, number] }))) collectedNodes[kind] ??= [] collectedNodes[kind]!.push({ range: [node.pos + leadingTrivia, node.end] }) node.forEachChild(collectNodes) @@ -268,6 +251,9 @@ export default ( nodesByKind: collectedNodes, } satisfies RequestResponseTypes['filterBySyntaxKind'] } + if (specialCommand === 'getLastResolvedCompletion') { + return lastResolvedCompletion.value + } return null } diff --git a/typescript/src/ts.d.ts b/typescript/src/ts.d.ts new file mode 100644 index 00000000..ac18d879 --- /dev/null +++ b/typescript/src/ts.d.ts @@ -0,0 +1,7 @@ +// eslint-disable-next-line @typescript-eslint/no-require-imports +import ts = require('typescript/lib/tsserverlibrary') +export = ts +export as namespace ts +declare global { + let ts: typeof import('typescript/lib/tsserverlibrary') +} diff --git a/typescript/src/tupleSignature.ts b/typescript/src/tupleSignature.ts index 3519753b..dedb1c10 100644 --- a/typescript/src/tupleSignature.ts +++ b/typescript/src/tupleSignature.ts @@ -31,11 +31,9 @@ export const getTupleSignature = (node: ts.Node, typeChecker: ts.TypeChecker) => // targetNode = node.parent // setIndex((node.parent.name as ts.ArrayBindingPattern).elements) // } - } else if (ts.isArrayLiteralExpression(node)) { - if (ts.isBinaryExpression(node.parent) && node.parent.operatorToken.kind === ts.SyntaxKind.EqualsToken) { - targetNode = node.parent.left - setIndex(node.elements) - } + } else if (ts.isArrayLiteralExpression(node) && ts.isBinaryExpression(node.parent) && node.parent.operatorToken.kind === ts.SyntaxKind.EqualsToken) { + targetNode = node.parent.left + setIndex(node.elements) } if (!targetNode) return @@ -48,7 +46,7 @@ export const getTupleSignature = (node: ts.Node, typeChecker: ts.TypeChecker) => let currentHasLabel = false const tupleMembers = compact( properties.map((property, i) => { - if (!property.name.match(/^\d+$/)) return + if (!/^\d+$/.test(property.name)) return const type = typeChecker.getTypeOfSymbolAtLocation(property, targetNode!) let displayString = typeChecker.typeToString(type) const tupleLabelDeclaration: ts.NamedTupleMember | undefined = property['target']?.['tupleLabelDeclaration'] diff --git a/typescript/src/types.ts b/typescript/src/types.ts index f16cb1f9..9fe87bd4 100644 --- a/typescript/src/types.ts +++ b/typescript/src/types.ts @@ -1,11 +1,10 @@ -// eslint-disable-next-line @typescript-eslint/ban-ts-comme -//@ts-ignore -import type { Configuration } from '../../src/configurationType' import { ConditionalPick } from 'type-fest' -import tslib from 'typescript/lib/tsserverlibrary' +//@ts-expect-error +import type { Configuration } from '../../src/configurationType' +// eslint-disable-next-line @typescript-eslint/no-redeclare export type Configuration = Configuration export type GetConfig = (key: T) => Configuration[T] -export type LanguageServiceMethodWithConfig any>, O extends any[] = []> = ( +export type LanguageServiceMethodWithConfig any>> = ( c: GetConfig, ...args: Parameters ) => ReturnType diff --git a/typescript/src/utils.ts b/typescript/src/utils.ts index 830d0e04..a2f23152 100644 --- a/typescript/src/utils.ts +++ b/typescript/src/utils.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-require-imports */ import { Except, SetOptional } from 'type-fest' import * as semver from 'semver' @@ -7,7 +8,7 @@ export function findChildContainingPosition(typescript: typeof ts, sourceFile: t return typescript.forEachChild(node, find) || node } - return + return undefined } return find(sourceFile) } @@ -18,7 +19,7 @@ export function findChildContainingPositionIncludingStartTrivia(typescript: type return typescript.forEachChild(node, find) || node } - return + return undefined } return find(sourceFile) } @@ -29,7 +30,7 @@ export function findChildContainingExactPosition(sourceFile: ts.SourceFile, posi return ts.forEachChild(node, find) || node } - return + return undefined } return find(sourceFile) } @@ -42,7 +43,7 @@ export function findChildContainingPositionMaxDepth(sourceFile: ts.SourceFile, p return ts.forEachChild(node, find) || node } - return + return undefined } return find(sourceFile) } @@ -55,7 +56,7 @@ export function getNodePath(sourceFile: ts.SourceFile, position: number): ts.Nod return ts.forEachChild(node, find) || node } - return + return undefined } find(sourceFile) return nodes @@ -98,7 +99,7 @@ export const cleanupEntryName = ({ name }: Pick) => return name.replace(/^★ /, '') } -export const boostOrAddSuggestions = (existingEntries: ts.CompletionEntry[], topEntries: SetOptional[]) => { +export const boostOrAddSuggestions = (existingEntries: ts.CompletionEntry[], topEntries: Array>) => { const topEntryNames = topEntries.map(({ name }) => name) return [ ...topEntries.map(entry => ({ ...entry, sortText: entry.sortText ?? `07` })), @@ -136,7 +137,7 @@ export const isTsPatched = () => { const isPatched = ts.findAncestor === testFunction unpatch() return isPatched - } catch (err) { + } catch { return false } } @@ -180,7 +181,7 @@ export function addObjectMethodResultInterceptors> const x = object[key]! const callback = interceptors[key]! if (typeof x !== 'function') continue - //@ts-ignore + //@ts-expect-error object[key] = (...args: any) => { const result = x.apply(object, args) return callback(result, ...args) @@ -206,6 +207,8 @@ export const getChangesTracker = formatOptions => { ) as unknown as ChangesTracker } +export const getFullTypeChecker = (typeChecker: ts.TypeChecker) => typeChecker as unknown as FullChecker + export const dedentString = (string: string, addIndent = '', trimFirstLines = false) => { let lines = string.split('\n') if (trimFirstLines) { @@ -232,6 +235,7 @@ export const getCancellationToken = (languageServiceHost: ts.LanguageServiceHost if (!cancellationToken.throwIfCancellationRequested) { cancellationToken.throwIfCancellationRequested = () => { if (cancellationToken!.isCancellationRequested()) { + // eslint-disable-next-line @typescript-eslint/no-throw-literal throw new ts.OperationCanceledException() } } diff --git a/typescript/src/volarConfig.ts b/typescript/src/volarConfig.ts index c4707da5..25a2f116 100644 --- a/typescript/src/volarConfig.ts +++ b/typescript/src/volarConfig.ts @@ -1,8 +1,9 @@ +/* eslint-disable @typescript-eslint/no-require-imports */ // will be required from ./node_modules/typescript-essential-plugins/index.js const originalPluginFactory = require('typescript-essential-plugins') const plugin = (context => { - const typescript = context.typescript + const { typescript } = context let configurationHost = context.configurationHost! configurationHost ??= context['env'].configurationHost const patchConfig = config => { @@ -22,27 +23,24 @@ const plugin = (context => { // todo support vue-specific settings const originalLsMethods = { ...typescript.languageService } - configurationHost.getConfiguration('[vue]').then(_configuration => { - console.log('_configuration', _configuration) - }) - configurationHost.getConfiguration('tsEssentialPlugins').then(_configuration => { + void configurationHost.getConfiguration('tsEssentialPlugins').then(_configuration => { // if (typescript.languageService[thisPluginMarker]) return const config = patchConfig(_configuration) if (!config.enablePlugin) return const proxy = plugin.create({ ...typescript, - config: config, + config, languageService: originalLsMethods as any, } as any) console.log('TS Essentials Plugins activated!') // const methodToReassign = ['getCompletionsAtPosition', 'getCompletionEntryDetails'] for (const method of Object.keys(proxy)) { - typescript.languageService[method] = proxy[method] as any + typescript.languageService[method] = proxy[method] } }) configurationHost.onDidChangeConfiguration(() => { - configurationHost.getConfiguration('tsEssentialPlugins').then(config => { + void configurationHost.getConfiguration('tsEssentialPlugins').then(config => { config = patchConfig(config) plugin.onConfigurationChanged?.(config) // temporary workaround diff --git a/typescript/src/workspaceSymbolSearch.ts b/typescript/src/workspaceSymbolSearch.ts index 195dbff7..329ffce0 100644 --- a/typescript/src/workspaceSymbolSearch.ts +++ b/typescript/src/workspaceSymbolSearch.ts @@ -4,7 +4,7 @@ import { getCancellationToken } from './utils' export default (proxy: ts.LanguageService, languageService: ts.LanguageService, c: GetConfig, languageServiceHost: ts.LanguageServiceHost) => { proxy.getNavigateToItems = (searchValue, maxResultCount, fileName, excludeDtsFiles) => { const workspaceSymbolSearchExcludePatterns = c('workspaceSymbolSearchExcludePatterns') - if (!workspaceSymbolSearchExcludePatterns.length) { + if (workspaceSymbolSearchExcludePatterns.length === 0) { return languageService.getNavigateToItems(searchValue, maxResultCount, fileName, excludeDtsFiles) } diff --git a/typescript/test/completions.spec.ts b/typescript/test/completions.spec.ts index a245b57c..a0d4f5bc 100644 --- a/typescript/test/completions.spec.ts +++ b/typescript/test/completions.spec.ts @@ -1,12 +1,12 @@ import { pickObj } from '@zardoy/utils' import type {} from 'vitest/globals' -import { isGoodPositionBuiltinMethodCompletion, isGoodPositionMethodCompletion } from '../src/completions/isGoodPositionMethodCompletion' -import { findChildContainingExactPosition } from '../src/utils' -import handleCommand from '../src/specialCommands/handle' import _ from 'lodash' +import { isGoodPositionMethodCompletion } from '../src/completions/isGoodPositionMethodCompletion' +import { findChildContainingExactPosition, isTs5 } from '../src/utils' +import handleCommand from '../src/specialCommands/handle' +import constructMethodSnippet from '../src/constructMethodSnippet' import { defaultConfigFunc, entrypoint, settingsOverride, sharedLanguageService } from './shared' import { fileContentsSpecialPositions, fourslashLikeTester, getCompletionsAtPosition, overrideSettings } from './testing' -import constructMethodSnippet from '../src/constructMethodSnippet' const { languageService, languageServiceHost, updateProject, getCurrentFile } = sharedLanguageService @@ -18,7 +18,7 @@ const newFileContents = (contents: string, fileName = entrypoint) => { const replacement = '/*|*/' let cursorIndex while ((cursorIndex = contents.indexOf(replacement)) !== -1) { - contents = contents.slice(0, cursorIndex) + contents.slice(cursorIndex + replacement.length) + contents = contents.slice(0, cursorIndex) + contents.slice((cursorIndex as number) + replacement.length) cursorPositions.push(cursorIndex) } updateProject({ @@ -65,10 +65,10 @@ test('Banned positions for all method snippets', () => { ; `) for (const [i, pos] of cursorPositions.entries()) { - const result = isGoodPositionBuiltinMethodCompletion(ts, getSourceFile(), pos - 1, defaultConfigFunc) + const result = isGoodPositionMethodCompletion(getSourceFile(), pos - 1, defaultConfigFunc) expect(result, i.toString()).toBeFalsy() } - const insertTextEscaping = getCompletionsAtPosition(cursorPositions[1]!)!.entries[1]?.insertText! + const insertTextEscaping = getCompletionsAtPosition(cursorPositions[1]!)!.entries[1]?.insertText expect(insertTextEscaping).toEqual('m\\$1e\\$2thod') }) @@ -85,7 +85,7 @@ test('Not banned positions for method snippets', () => { test2/*|*/ `) for (const [i, pos] of cursorPositions.entries()) { - const result = isGoodPositionMethodCompletion(ts, entrypoint, getSourceFile(), pos - 1, languageService, defaultConfigFunc) + const result = isGoodPositionMethodCompletion(getSourceFile(), pos - 1, defaultConfigFunc) expect(result, i.toString()).toBeTruthy() } }) @@ -109,9 +109,12 @@ test('Function props: cleans & highlights', () => { const compareMethodSnippetAgainstMarker = (inputMarkers: number[], marker: number, expected: string | null | string[]) => { const obj = Object.fromEntries(inputMarkers.entries()) const markerPos = obj[marker]! - const methodSnippet = constructMethodSnippet(languageService, getSourceFile(), markerPos, defaultConfigFunc, false) - if (methodSnippet === 'ambiguous') { - expect(methodSnippet).toEqual(expected) + const resolvedData = { + isAmbiguous: false, + } + const methodSnippet = constructMethodSnippet(languageService, getSourceFile(), markerPos, undefined, defaultConfigFunc, resolvedData) + if (resolvedData.isAmbiguous) { + expect('ambiguous').toEqual(expected) return } const snippetToInsert = methodSnippet ? `(${methodSnippet.join(', ')})` : null @@ -462,8 +465,9 @@ test('Fix properties sorting', () => { settingsOverride.fixSuggestionsSorting = false }) -// ts 5 -test.todo('Change to function kind', () => { +const testTs5 = isTs5() ? test : test.todo + +testTs5('Change to function kind', () => { settingsOverride['experiments.changeKindToFunction'] = true overrideSettings({ 'experiments.changeKindToFunction': true, @@ -484,12 +488,12 @@ test.todo('Change to function kind', () => { settingsOverride['experiments.changeKindToFunction'] = false }) -// ts 5 -test.todo('Filter JSX Components', () => { +testTs5('Filter JSX Components', () => { const tester = fourslashLikeTester(/* ts */ ` const a = () => {} a/*1*/ `) + // TODO }) test('Omit<..., ""> suggestions', () => { @@ -530,13 +534,15 @@ test('Additional types suggestions', () => { }) }) -test('Object Literal Completions', () => { +test.skip('Object Literal Completions', () => { const [_positivePositions, _negativePositions, numPositions] = fileContentsSpecialPositions(/* ts */ ` interface Options { usedOption mood?: 'happy' | 'sad' callback?() additionalOptions?: { + bar: boolean + bar2: false foo?: boolean } plugins: Array<{ name: string, setup(build) }> @@ -550,11 +556,18 @@ test('Object Literal Completions', () => { }) const somethingWithUntions: { a: string } | { a: any[], b: string } = {/*2*/} + + makeDay({ + additionalOptions: { + /*3*/ + } + }) `) const { entriesSorted: pos1 } = getCompletionsAtPosition(numPositions[1]!)! const { entriesSorted: pos2 } = getCompletionsAtPosition(numPositions[2]!)! + const { entriesSorted: pos3 } = getCompletionsAtPosition(numPositions[3]!)! // todo resolve sorting problem + add tests with other keepOriginal (it was tested manually) - for (const entry of [...pos1, ...pos2]) { + for (const entry of [...pos1, ...pos2, ...pos3]) { entry.insertText = entry.insertText?.replaceAll('\n', '\\n') } expect(pos1).toMatchInlineSnapshot(/* json */ ` @@ -633,6 +646,17 @@ test('Object Literal Completions', () => { "b: \\"$1\\",$0", ] `) + // I guess vitest hangs forever here + expect(pos3.map(x => x.insertText)).toMatchInlineSnapshot(` + [ + "bar", + "bar: \${1|true,false|},$0", + "bar2", + "bar2: false,", + "foo", + "foo: \${1|true,false|},$0", + ] + `) }) test('Extract to type / interface name inference', () => { diff --git a/vscode-framework.config.js b/vscode-framework.config.js index d340e3af..8a0c5720 100644 --- a/vscode-framework.config.js +++ b/vscode-framework.config.js @@ -15,7 +15,7 @@ const pipeline = promisify(stream.pipeline) /** @type {(keyof Config)[]} */ const languageOveridableSettings = [ 'removeUselessFunctionProps.enable', - 'removeOrMarkGlobalLibCompletions.action', + 'globalLibCompletions.action', 'disableUselessHighlighting', 'suggestions.keywordsInsertText', 'caseSensitiveCompletions',