From 16857ecccf519ee8f12dd2d4544412bd1fcd14f5 Mon Sep 17 00:00:00 2001 From: juh9870 <15922601+juh9870@users.noreply.github.com> Date: Mon, 26 Dec 2022 19:42:37 +0200 Subject: [PATCH 01/12] feat: implemented code formatting --- .eslintrc.js | 25 + .gitignore | 6 +- .npmrc | 1 + .prettierignore | 7 + .prettierrc.yml | 7 + .vscode/extensions.json | 5 + .vscode/launch.json | 38 +- .vscode/settings.json | 13 + .vscode/tasks.json | 37 + .vscodeignore | 9 + package.json | 130 +- pnpm-lock.yaml | 2467 ++++++++++++++++++++++++++++++ src/extension.ts | 34 + src/formatting/format.ts | 306 ++++ src/formatting/indentation.ts | 326 ++++ src/test/runTest.ts | 23 + src/test/suite/extension.test.ts | 487 ++++++ src/test/suite/index.ts | 33 + tsconfig.json | 14 + vsc-extension-quickstart.md | 45 + webpack.config.js | 48 + 21 files changed, 4001 insertions(+), 60 deletions(-) create mode 100644 .eslintrc.js create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc.yml create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 pnpm-lock.yaml create mode 100644 src/extension.ts create mode 100644 src/formatting/format.ts create mode 100644 src/formatting/indentation.ts create mode 100644 src/test/runTest.ts create mode 100644 src/test/suite/extension.test.ts create mode 100644 src/test/suite/index.ts create mode 100644 tsconfig.json create mode 100644 vsc-extension-quickstart.md create mode 100644 webpack.config.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..35d5f6f --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,25 @@ +module.exports = { + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:@typescript-eslint/recommended-requiring-type-checking', + 'plugin:@typescript-eslint/strict', + 'prettier', + ], + root: true, + parser: '@typescript-eslint/parser', + parserOptions: { + tsconfigRootDir: __dirname, + project: './tsconfig.json', + ecmaVersion: 6, + sourceType: 'module', + }, + plugins: ['@typescript-eslint'], + rules: { + curly: ['error', 'multi-or-nest', 'consistent'], + eqeqeq: ['error', 'always'], + 'no-throw-literal': 'error', + '@typescript-eslint/non-nullable-type-assertion-style': 'off', + }, + ignorePatterns: ['out', 'dist', '**/*.d.ts'], +}; diff --git a/.gitignore b/.gitignore index 67dfeb3..a4df434 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ node_modules -*.vsix \ No newline at end of file +*.vsix +.idea +.vscode-test +dist +out diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..37d1b60 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +enable-pre-post-scripts = true \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..76ae251 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +out/ +dist/ +**/*.d.ts +node_modules +.idea +.vscode +.vscode-test \ No newline at end of file diff --git a/.prettierrc.yml b/.prettierrc.yml new file mode 100644 index 0000000..8dbc64f --- /dev/null +++ b/.prettierrc.yml @@ -0,0 +1,7 @@ +trailingComma: all +tabWidth: 2 +semi: true +singleQuote: true +bracketSpacing: true +printWidth: 120 +arrowParens: avoid diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..57dbdae --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": ["dbaeumer.vscode-eslint", "amodio.tsl-problem-matcher"] +} diff --git a/.vscode/launch.json b/.vscode/launch.json index 7bc18a4..cbc9e78 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,18 +1,28 @@ -// A launch configuration that launches the extension inside a new window +// A launch configuration that compiles the extension and then opens it inside a new window // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 { - "version": "0.2.0", - "configurations": [ - { - "name": "Extension", - "type": "extensionHost", - "request": "launch", - "runtimeExecutable": "${execPath}", - "args": [ - "--extensionDevelopmentPath=${workspaceFolder}" - ] - } - ] -} \ No newline at end of file + "version": "0.2.0", + "configurations": [ + { + "name": "Run Extension", + "type": "extensionHost", + "request": "launch", + "args": ["--extensionDevelopmentPath=${workspaceFolder}"], + "outFiles": ["${workspaceFolder}/dist/**/*.js"], + "preLaunchTask": "${defaultBuildTask}" + }, + { + "name": "Extension Tests", + "type": "extensionHost", + "request": "launch", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}", + "--extensionTestsPath=${workspaceFolder}/out/test/suite/index" + ], + "outFiles": ["${workspaceFolder}/out/**/*.js", "${workspaceFolder}/dist/**/*.js"], + "preLaunchTask": "tasks: watch-tests" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..64ee929 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,13 @@ +// Place your settings in this file to overwrite default and user settings. +{ + "files.exclude": { + "out": false, // set this to true to hide the "out" folder with the compiled JS files + "dist": false // set this to true to hide the "dist" folder with the compiled JS files + }, + "search.exclude": { + "out": true, // set this to false to include "out" folder in search results + "dist": true // set this to false to include "dist" folder in search results + }, + // Turn off tsc task auto detection since we have the necessary tasks as npm scripts + "typescript.tsc.autoDetect": "off" +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..9e3300b --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,37 @@ +// See https://go.microsoft.com/fwlink/?LinkId=733558 +// for the documentation about the tasks.json format +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "watch", + "problemMatcher": "$ts-webpack-watch", + "isBackground": true, + "presentation": { + "reveal": "never", + "group": "watchers" + }, + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "type": "npm", + "script": "watch-tests", + "problemMatcher": "$tsc-watch", + "isBackground": true, + "presentation": { + "reveal": "never", + "group": "watchers" + }, + "group": "build" + }, + { + "label": "tasks: watch-tests", + "dependsOn": ["npm: watch", "npm: watch-tests"], + "problemMatcher": [] + } + ] +} diff --git a/.vscodeignore b/.vscodeignore index f369b5e..c613679 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -1,4 +1,13 @@ .vscode/** .vscode-test/** +out/** +node_modules/** +src/** .gitignore +.yarnrc +webpack.config.js vsc-extension-quickstart.md +**/tsconfig.json +**/.eslintrc.json +**/*.map +**/*.ts diff --git a/package.json b/package.json index a44ab01..70389e7 100644 --- a/package.json +++ b/package.json @@ -1,47 +1,87 @@ { - "name": "miniscript", - "displayName": "MiniScript", - "description": "MiniScript is a 3rd party scripting language asset for Unity", - "version": "0.0.3", - "publisher": "chaos95", - "repository": "https://github.com/chaos95/miniscript-syntax", - "engines": { - "vscode": "^1.27.0" - }, - "categories": [ - "Programming Languages" - ], - "contributes": { - "languages": [ - { - "id": "miniscript", - "aliases": [ - "MiniScript", - "miniscript" - ], - "extensions": [ - "ms" - ], - "configuration": "./language-configuration.json" - } - ], - "grammars": [ - { - "language": "miniscript", - "scopeName": "source.miniscript", - "path": "./syntaxes/miniscript.tmLanguage.json" - } - ] - }, - "__metadata": { - "id": "a0fcab27-f0b6-4b41-a59c-4827b31d92a2", - "publisherDisplayName": "Morgan Lokhorst", - "publisherId": "ec7cb749-5f48-4b26-b9b4-3d002822cd08", - "isPreReleaseVersion": false, - "installedTimestamp": 1667208980730, - "targetPlatform": "undefined", - "isApplicationScoped": false, - "updated": false, - "preRelease": false - } + "name": "miniscript", + "displayName": "MiniScript", + "description": "MiniScript is a 3rd party scripting language asset for Unity", + "version": "0.0.3", + "publisher": "chaos95", + "repository": "https://github.com/chaos95/miniscript-syntax", + "engines": { + "vscode": "^1.27.0" + }, + "categories": [ + "Programming Languages", + "Formatters" + ], + "activationEvents": [ + "onLanguage:miniscript" + ], + "main": "./dist/extension.js", + "contributes": { + "languages": [ + { + "id": "miniscript", + "aliases": [ + "MiniScript", + "miniscript" + ], + "extensions": [ + "ms" + ], + "icon": { + "light": "./icons/Icon.png", + "dark": "./icons/Icon.png" + }, + "configuration": "./language-configuration.json" + } + ], + "grammars": [ + { + "language": "miniscript", + "scopeName": "source.miniscript", + "path": "./syntaxes/miniscript.tmLanguage.json" + } + ] + }, + "scripts": { + "vscode:prepublish": "pnpm run package", + "compile": "webpack", + "watch": "webpack --watch", + "package": "webpack --mode production --devtool hidden-source-map", + "compile-tests": "tsc -p . --outDir out", + "watch-tests": "tsc -p . -w --outDir out", + "pretest": "pnpm run compile-tests && pnpm run compile && pnpm run lint && pnpm run prettier", + "lint": "eslint src --fix --ext ts", + "prettier": "prettier --write .", + "test": "node ./out/test/runTest.js" + }, + "__metadata": { + "id": "a0fcab27-f0b6-4b41-a59c-4827b31d92a2", + "publisherDisplayName": "Morgan Lokhorst", + "publisherId": "ec7cb749-5f48-4b26-b9b4-3d002822cd08", + "isPreReleaseVersion": false, + "installedTimestamp": 1667208980730, + "targetPlatform": "undefined", + "isApplicationScoped": false, + "updated": false, + "preRelease": false + }, + "devDependencies": { + "@types/glob": "^8.0.0", + "@types/mocha": "^10.0.0", + "@types/node": "16.x", + "@types/vscode": "^1.27.0", + "@typescript-eslint/eslint-plugin": "^5.42.0", + "@typescript-eslint/parser": "^5.42.0", + "@vscode/test-electron": "^2.2.0", + "eslint": "^8.26.0", + "eslint-config-prettier": "^8.5.0", + "fast-check": "^3.3.0", + "glob": "^8.0.3", + "mocha": "^10.1.0", + "prettier": "^2.8.0", + "ts-loader": "^9.4.1", + "typescript": "^4.8.4", + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..79687fe --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,2467 @@ +lockfileVersion: 5.4 + +specifiers: + '@types/glob': ^8.0.0 + '@types/mocha': ^10.0.0 + '@types/node': 16.x + '@types/vscode': ^1.27.0 + '@typescript-eslint/eslint-plugin': ^5.42.0 + '@typescript-eslint/parser': ^5.42.0 + '@vscode/test-electron': ^2.2.0 + eslint: ^8.26.0 + eslint-config-prettier: ^8.5.0 + fast-check: ^3.3.0 + glob: ^8.0.3 + mocha: ^10.1.0 + prettier: ^2.8.0 + ts-loader: ^9.4.1 + typescript: ^4.8.4 + webpack: ^5.74.0 + webpack-cli: ^4.10.0 + +devDependencies: + '@types/glob': 8.0.0 + '@types/mocha': 10.0.0 + '@types/node': 16.18.3 + '@types/vscode': 1.73.1 + '@typescript-eslint/eslint-plugin': 5.43.0_wze2rj5tow7zwqpgbdx2buoy3m + '@typescript-eslint/parser': 5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y + '@vscode/test-electron': 2.2.0 + eslint: 8.27.0 + eslint-config-prettier: 8.5.0_eslint@8.27.0 + fast-check: 3.3.0 + glob: 8.0.3 + mocha: 10.1.0 + prettier: 2.8.0 + ts-loader: 9.4.1_vfotqvx6lgcbf3upbs6hgaza4q + typescript: 4.9.3 + webpack: 5.75.0_webpack-cli@4.10.0 + webpack-cli: 4.10.0_webpack@5.75.0 + +packages: + /@discoveryjs/json-ext/0.5.7: + resolution: + { integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== } + engines: { node: '>=10.0.0' } + dev: true + + /@eslint/eslintrc/1.3.3: + resolution: + { integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.4.1 + globals: 13.17.0 + ignore: 5.2.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/config-array/0.11.7: + resolution: + { integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw== } + engines: { node: '>=10.10.0' } + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer/1.0.1: + resolution: + { integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== } + engines: { node: '>=12.22' } + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: + { integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== } + dev: true + + /@jridgewell/gen-mapping/0.3.2: + resolution: + { integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== } + engines: { node: '>=6.0.0' } + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.17 + dev: true + + /@jridgewell/resolve-uri/3.1.0: + resolution: + { integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== } + engines: { node: '>=6.0.0' } + dev: true + + /@jridgewell/set-array/1.1.2: + resolution: + { integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== } + engines: { node: '>=6.0.0' } + dev: true + + /@jridgewell/source-map/0.3.2: + resolution: + { integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== } + dependencies: + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: + { integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== } + dev: true + + /@jridgewell/trace-mapping/0.3.17: + resolution: + { integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== } + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@nodelib/fs.scandir/2.1.5: + resolution: + { integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== } + engines: { node: '>= 8' } + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: + { integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== } + engines: { node: '>= 8' } + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: + { integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== } + engines: { node: '>= 8' } + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.13.0 + dev: true + + /@tootallnate/once/1.1.2: + resolution: + { integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== } + engines: { node: '>= 6' } + dev: true + + /@types/eslint-scope/3.7.4: + resolution: + { integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== } + dependencies: + '@types/eslint': 8.4.10 + '@types/estree': 0.0.51 + dev: true + + /@types/eslint/8.4.10: + resolution: + { integrity: sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw== } + dependencies: + '@types/estree': 0.0.51 + '@types/json-schema': 7.0.11 + dev: true + + /@types/estree/0.0.51: + resolution: + { integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== } + dev: true + + /@types/glob/8.0.0: + resolution: + { integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA== } + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 16.18.3 + dev: true + + /@types/json-schema/7.0.11: + resolution: + { integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== } + dev: true + + /@types/minimatch/5.1.2: + resolution: + { integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== } + dev: true + + /@types/mocha/10.0.0: + resolution: + { integrity: sha512-rADY+HtTOA52l9VZWtgQfn4p+UDVM2eDVkMZT1I6syp0YKxW2F9v+0pbRZLsvskhQv/vMb6ZfCay81GHbz5SHg== } + dev: true + + /@types/node/16.18.3: + resolution: + { integrity: sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg== } + dev: true + + /@types/semver/7.3.13: + resolution: + { integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== } + dev: true + + /@types/vscode/1.73.1: + resolution: + { integrity: sha512-eArfOrAoZVV+Ao9zQOCaFNaeXj4kTCD+bGS2gyNgIFZH9xVMuLMlRrEkhb22NyxycFWKV1UyTh03vhaVHmqVMg== } + dev: true + + /@typescript-eslint/eslint-plugin/5.43.0_wze2rj5tow7zwqpgbdx2buoy3m: + resolution: + { integrity: sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y + '@typescript-eslint/scope-manager': 5.43.0 + '@typescript-eslint/type-utils': 5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y + '@typescript-eslint/utils': 5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y + debug: 4.3.4 + eslint: 8.27.0 + ignore: 5.2.0 + natural-compare-lite: 1.4.0 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.3 + typescript: 4.9.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y: + resolution: + { integrity: sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.43.0 + '@typescript-eslint/types': 5.43.0 + '@typescript-eslint/typescript-estree': 5.43.0_typescript@4.9.3 + debug: 4.3.4 + eslint: 8.27.0 + typescript: 4.9.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/5.43.0: + resolution: + { integrity: sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + '@typescript-eslint/types': 5.43.0 + '@typescript-eslint/visitor-keys': 5.43.0 + dev: true + + /@typescript-eslint/type-utils/5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y: + resolution: + { integrity: sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.43.0_typescript@4.9.3 + '@typescript-eslint/utils': 5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y + debug: 4.3.4 + eslint: 8.27.0 + tsutils: 3.21.0_typescript@4.9.3 + typescript: 4.9.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types/5.43.0: + resolution: + { integrity: sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dev: true + + /@typescript-eslint/typescript-estree/5.43.0_typescript@4.9.3: + resolution: + { integrity: sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.43.0 + '@typescript-eslint/visitor-keys': 5.43.0 + debug: 4.3.4 + 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 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils/5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y: + resolution: + { integrity: sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.43.0 + '@typescript-eslint/types': 5.43.0 + '@typescript-eslint/typescript-estree': 5.43.0_typescript@4.9.3 + eslint: 8.27.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.27.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/5.43.0: + resolution: + { integrity: sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + '@typescript-eslint/types': 5.43.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /@vscode/test-electron/2.2.0: + resolution: + { integrity: sha512-xk2xrOTMG75/hxO8OVVZ+GErv9gmdZwOD8rEHV3ty3n1Joav2yFcfrmqD6Ukref27U13LEL8gVvSHzauGAK5nQ== } + engines: { node: '>=8.9.3' } + dependencies: + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + rimraf: 3.0.2 + unzipper: 0.10.11 + transitivePeerDependencies: + - supports-color + dev: true + + /@webassemblyjs/ast/1.11.1: + resolution: + { integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== } + dependencies: + '@webassemblyjs/helper-numbers': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + dev: true + + /@webassemblyjs/floating-point-hex-parser/1.11.1: + resolution: + { integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== } + dev: true + + /@webassemblyjs/helper-api-error/1.11.1: + resolution: + { integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== } + dev: true + + /@webassemblyjs/helper-buffer/1.11.1: + resolution: + { integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== } + dev: true + + /@webassemblyjs/helper-numbers/1.11.1: + resolution: + { integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== } + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/helper-wasm-bytecode/1.11.1: + resolution: + { integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== } + dev: true + + /@webassemblyjs/helper-wasm-section/1.11.1: + resolution: + { integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== } + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + dev: true + + /@webassemblyjs/ieee754/1.11.1: + resolution: + { integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== } + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128/1.11.1: + resolution: + { integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== } + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8/1.11.1: + resolution: + { integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== } + dev: true + + /@webassemblyjs/wasm-edit/1.11.1: + resolution: + { integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== } + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/helper-wasm-section': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-opt': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + '@webassemblyjs/wast-printer': 1.11.1 + dev: true + + /@webassemblyjs/wasm-gen/1.11.1: + resolution: + { integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== } + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 + dev: true + + /@webassemblyjs/wasm-opt/1.11.1: + resolution: + { integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== } + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + dev: true + + /@webassemblyjs/wasm-parser/1.11.1: + resolution: + { integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== } + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 + dev: true + + /@webassemblyjs/wast-printer/1.11.1: + resolution: + { integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== } + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@xtuc/long': 4.2.2 + dev: true + + /@webpack-cli/configtest/1.2.0_pda42hcaj7d62cr262fr632kue: + resolution: + { integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== } + peerDependencies: + webpack: 4.x.x || 5.x.x + webpack-cli: 4.x.x + dependencies: + webpack: 5.75.0_webpack-cli@4.10.0 + webpack-cli: 4.10.0_webpack@5.75.0 + dev: true + + /@webpack-cli/info/1.5.0_webpack-cli@4.10.0: + resolution: + { integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== } + peerDependencies: + webpack-cli: 4.x.x + dependencies: + envinfo: 7.8.1 + webpack-cli: 4.10.0_webpack@5.75.0 + dev: true + + /@webpack-cli/serve/1.7.0_webpack-cli@4.10.0: + resolution: + { integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== } + peerDependencies: + webpack-cli: 4.x.x + webpack-dev-server: '*' + peerDependenciesMeta: + webpack-dev-server: + optional: true + dependencies: + webpack-cli: 4.10.0_webpack@5.75.0 + dev: true + + /@xtuc/ieee754/1.2.0: + resolution: + { integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== } + dev: true + + /@xtuc/long/4.2.2: + resolution: + { integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== } + dev: true + + /acorn-import-assertions/1.8.0_acorn@8.8.1: + resolution: + { integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== } + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.8.1 + dev: true + + /acorn-jsx/5.3.2_acorn@8.8.1: + resolution: + { integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.1 + dev: true + + /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: + resolution: + { integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== } + engines: { node: '>= 6.0.0' } + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: + { integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== } + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv/6.12.6: + resolution: + { integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== } + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-colors/4.1.1: + resolution: + { integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== } + engines: { node: '>=6' } + dev: true + + /ansi-regex/5.0.1: + resolution: + { integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== } + engines: { node: '>=8' } + dev: true + + /ansi-styles/4.3.0: + resolution: + { integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== } + engines: { node: '>=8' } + dependencies: + color-convert: 2.0.1 + dev: true + + /anymatch/3.1.2: + resolution: + { integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== } + engines: { node: '>= 8' } + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse/2.0.1: + resolution: + { integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== } + dev: true + + /array-union/2.1.0: + resolution: + { integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== } + engines: { node: '>=8' } + dev: true + + /balanced-match/1.0.2: + resolution: + { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== } + dev: true + + /big-integer/1.6.51: + resolution: + { integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== } + engines: { node: '>=0.6' } + dev: true + + /binary-extensions/2.2.0: + resolution: + { integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== } + engines: { node: '>=8' } + dev: true + + /binary/0.3.0: + resolution: + { integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== } + dependencies: + buffers: 0.1.1 + chainsaw: 0.1.0 + dev: true + + /bluebird/3.4.7: + resolution: + { integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== } + dev: true + + /brace-expansion/1.1.11: + resolution: + { integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== } + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion/2.0.1: + resolution: + { integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== } + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces/3.0.2: + resolution: + { integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== } + engines: { node: '>=8' } + dependencies: + fill-range: 7.0.1 + dev: true + + /browser-stdout/1.3.1: + resolution: + { integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== } + dev: true + + /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.30001431 + electron-to-chromium: 1.4.284 + node-releases: 2.0.6 + update-browserslist-db: 1.0.10_browserslist@4.21.4 + dev: true + + /buffer-from/1.1.2: + resolution: + { integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== } + dev: true + + /buffer-indexof-polyfill/1.0.2: + resolution: + { integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== } + engines: { node: '>=0.10' } + dev: true + + /buffers/0.1.1: + resolution: + { integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== } + engines: { node: '>=0.2.0' } + dev: true + + /callsites/3.1.0: + resolution: + { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== } + engines: { node: '>=6' } + dev: true + + /camelcase/6.3.0: + resolution: + { integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== } + engines: { node: '>=10' } + dev: true + + /caniuse-lite/1.0.30001431: + resolution: + { integrity: sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ== } + dev: true + + /chainsaw/0.1.0: + resolution: + { integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== } + dependencies: + traverse: 0.3.9 + dev: true + + /chalk/4.1.2: + resolution: + { integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== } + engines: { node: '>=10' } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chokidar/3.5.3: + resolution: + { integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== } + engines: { node: '>= 8.10.0' } + dependencies: + anymatch: 3.1.2 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /chrome-trace-event/1.0.3: + resolution: + { integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== } + engines: { node: '>=6.0' } + dev: true + + /cliui/7.0.4: + resolution: + { integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== } + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-deep/4.0.1: + resolution: + { integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== } + engines: { node: '>=6' } + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /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: true + + /color-name/1.1.4: + resolution: + { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== } + dev: true + + /colorette/2.0.19: + resolution: + { integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== } + dev: true + + /commander/2.20.3: + resolution: + { integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== } + dev: true + + /commander/7.2.0: + resolution: + { integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== } + engines: { node: '>= 10' } + dev: true + + /concat-map/0.0.1: + resolution: + { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== } + dev: true + + /core-util-is/1.0.3: + resolution: + { integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== } + dev: true + + /cross-spawn/7.0.3: + resolution: + { integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== } + engines: { node: '>= 8' } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /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 + dev: true + + /debug/4.3.4_supports-color@8.1.1: + resolution: + { integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== } + engines: { node: '>=6.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + dev: true + + /decamelize/4.0.0: + resolution: + { integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== } + engines: { node: '>=10' } + dev: true + + /deep-is/0.1.4: + resolution: + { integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== } + dev: true + + /diff/5.0.0: + resolution: + { integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== } + engines: { node: '>=0.3.1' } + dev: true + + /dir-glob/3.0.1: + resolution: + { integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== } + engines: { node: '>=8' } + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine/3.0.0: + resolution: + { integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== } + engines: { node: '>=6.0.0' } + dependencies: + esutils: 2.0.3 + dev: true + + /duplexer2/0.1.4: + resolution: + { integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== } + dependencies: + readable-stream: 2.3.7 + dev: true + + /electron-to-chromium/1.4.284: + resolution: + { integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== } + dev: true + + /emoji-regex/8.0.0: + resolution: + { integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== } + dev: true + + /enhanced-resolve/5.10.0: + resolution: + { integrity: sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== } + engines: { node: '>=10.13.0' } + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + dev: true + + /envinfo/7.8.1: + resolution: + { integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== } + engines: { node: '>=4' } + hasBin: true + dev: true + + /es-module-lexer/0.9.3: + resolution: + { integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== } + dev: true + + /escalade/3.1.1: + resolution: + { integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== } + engines: { node: '>=6' } + dev: true + + /escape-string-regexp/4.0.0: + resolution: + { integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== } + engines: { node: '>=10' } + dev: true + + /eslint-config-prettier/8.5.0_eslint@8.27.0: + resolution: + { integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== } + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.27.0 + dev: true + + /eslint-scope/5.1.1: + resolution: + { integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== } + engines: { node: '>=8.0.0' } + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/7.1.1: + resolution: + { integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.27.0: + resolution: + { integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== } + engines: { node: ^10.0.0 || ^12.0.0 || >= 14.0.0 } + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.27.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: + { integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== } + engines: { node: '>=10' } + dev: true + + /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: true + + /eslint/8.27.0: + resolution: + { integrity: sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + hasBin: true + dependencies: + '@eslint/eslintrc': 1.3.3 + '@humanwhocodes/config-array': 0.11.7 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.27.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.17.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.0 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.1.5 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/9.4.1: + resolution: + { integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + acorn: 8.8.1 + acorn-jsx: 5.3.2_acorn@8.8.1 + eslint-visitor-keys: 3.3.0 + dev: true + + /esquery/1.4.0: + resolution: + { integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== } + engines: { node: '>=0.10' } + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: + { integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== } + engines: { node: '>=4.0' } + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.3.0: + resolution: + { integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== } + engines: { node: '>=4.0' } + dev: true + + /estraverse/5.3.0: + resolution: + { integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== } + engines: { node: '>=4.0' } + dev: true + + /esutils/2.0.3: + resolution: + { integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== } + engines: { node: '>=0.10.0' } + dev: true + + /events/3.3.0: + resolution: + { integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== } + engines: { node: '>=0.8.x' } + dev: true + + /fast-check/3.3.0: + resolution: + { integrity: sha512-Zu6tZ4g0T4H9Tiz3tdNPEHrSbuICj7yhdOM9RCZKNMkpjZ9avDV3ORklXaEmh4zvkX24/bGZ9DxKKqWfXttUqw== } + engines: { node: '>=8.0.0' } + dependencies: + pure-rand: 5.0.5 + dev: true + + /fast-deep-equal/3.1.3: + resolution: + { integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== } + dev: true + + /fast-glob/3.2.12: + resolution: + { integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== } + engines: { node: '>=8.6.0' } + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: + { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== } + dev: true + + /fast-levenshtein/2.0.6: + resolution: + { integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== } + dev: true + + /fastest-levenshtein/1.0.16: + resolution: + { integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== } + engines: { node: '>= 4.9.1' } + dev: true + + /fastq/1.13.0: + resolution: + { integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== } + dependencies: + reusify: 1.0.4 + dev: true + + /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: true + + /fill-range/7.0.1: + resolution: + { integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== } + engines: { node: '>=8' } + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up/4.1.0: + resolution: + { integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== } + engines: { node: '>=8' } + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up/5.0.0: + resolution: + { integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== } + engines: { node: '>=10' } + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache/3.0.4: + resolution: + { integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flat/5.0.2: + resolution: + { integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== } + hasBin: true + dev: true + + /flatted/3.2.7: + resolution: + { integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== } + dev: true + + /fs.realpath/1.0.0: + resolution: + { integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== } + dev: true + + /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 + dev: true + optional: true + + /fstream/1.0.12: + resolution: + { integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== } + engines: { node: '>=0.6' } + dependencies: + graceful-fs: 4.2.10 + inherits: 2.0.4 + mkdirp: 0.5.6 + rimraf: 2.7.1 + dev: true + + /function-bind/1.1.1: + resolution: + { integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== } + dev: true + + /get-caller-file/2.0.5: + resolution: + { integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== } + engines: { node: 6.* || 8.* || >= 10.* } + dev: true + + /glob-parent/5.1.2: + resolution: + { integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== } + engines: { node: '>= 6' } + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent/6.0.2: + resolution: + { integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== } + engines: { node: '>=10.13.0' } + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp/0.4.1: + resolution: + { integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== } + dev: true + + /glob/7.2.0: + resolution: + { integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob/8.0.3: + resolution: + { integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== } + engines: { node: '>=12' } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.0 + once: 1.4.0 + dev: true + + /globals/13.17.0: + resolution: + { integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== } + engines: { node: '>=8' } + dependencies: + type-fest: 0.20.2 + dev: true + + /globby/11.1.0: + resolution: + { integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== } + engines: { node: '>=10' } + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /graceful-fs/4.2.10: + resolution: + { integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== } + dev: true + + /grapheme-splitter/1.0.4: + resolution: + { integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== } + dev: true + + /has-flag/4.0.0: + resolution: + { integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== } + engines: { node: '>=8' } + dev: true + + /has/1.0.3: + resolution: + { integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== } + engines: { node: '>= 0.4.0' } + dependencies: + function-bind: 1.1.1 + dev: true + + /he/1.2.0: + resolution: + { integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== } + hasBin: true + dev: true + + /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 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent/5.0.1: + resolution: + { integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== } + engines: { node: '>= 6' } + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /ignore/5.2.0: + resolution: + { integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== } + engines: { node: '>= 4' } + dev: true + + /import-fresh/3.3.0: + resolution: + { integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== } + engines: { node: '>=6' } + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-local/3.1.0: + resolution: + { integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== } + engines: { node: '>=8' } + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash/0.1.4: + resolution: + { integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== } + engines: { node: '>=0.8.19' } + dev: true + + /inflight/1.0.6: + resolution: + { integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.4: + resolution: + { integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== } + dev: true + + /interpret/2.2.0: + resolution: + { integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== } + engines: { node: '>= 0.10' } + dev: true + + /is-binary-path/2.1.0: + resolution: + { integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== } + engines: { node: '>=8' } + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-core-module/2.11.0: + resolution: + { integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== } + dependencies: + has: 1.0.3 + dev: true + + /is-extglob/2.1.1: + resolution: + { integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== } + engines: { node: '>=0.10.0' } + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: + { integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== } + engines: { node: '>=8' } + dev: true + + /is-glob/4.0.3: + resolution: + { integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== } + engines: { node: '>=0.10.0' } + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number/7.0.0: + resolution: + { integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== } + engines: { node: '>=0.12.0' } + dev: true + + /is-path-inside/3.0.3: + resolution: + { integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== } + engines: { node: '>=8' } + dev: true + + /is-plain-obj/2.1.0: + resolution: + { integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== } + engines: { node: '>=8' } + dev: true + + /is-plain-object/2.0.4: + resolution: + { integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== } + engines: { node: '>=0.10.0' } + dependencies: + isobject: 3.0.1 + dev: true + + /is-unicode-supported/0.1.0: + resolution: + { integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== } + engines: { node: '>=10' } + dev: true + + /isarray/1.0.0: + resolution: + { integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== } + dev: true + + /isexe/2.0.0: + resolution: + { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== } + dev: true + + /isobject/3.0.1: + resolution: + { integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== } + engines: { node: '>=0.10.0' } + dev: true + + /jest-worker/27.5.1: + resolution: + { integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== } + engines: { node: '>= 10.13.0' } + dependencies: + '@types/node': 16.18.3 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /js-sdsl/4.1.5: + resolution: + { integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== } + dev: true + + /js-yaml/4.1.0: + resolution: + { integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== } + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: + { integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== } + dev: true + + /json-schema-traverse/0.4.1: + resolution: + { integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== } + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: + { integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== } + dev: true + + /kind-of/6.0.3: + resolution: + { integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== } + engines: { node: '>=0.10.0' } + dev: true + + /levn/0.4.1: + resolution: + { integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== } + engines: { node: '>= 0.8.0' } + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /listenercount/1.0.1: + resolution: + { integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== } + dev: true + + /loader-runner/4.3.0: + resolution: + { integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== } + engines: { node: '>=6.11.5' } + dev: true + + /locate-path/5.0.0: + resolution: + { integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== } + engines: { node: '>=8' } + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path/6.0.0: + resolution: + { integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== } + engines: { node: '>=10' } + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge/4.6.2: + resolution: + { integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== } + dev: true + + /log-symbols/4.1.0: + resolution: + { integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== } + engines: { node: '>=10' } + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /lru-cache/6.0.0: + resolution: + { integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== } + engines: { node: '>=10' } + dependencies: + yallist: 4.0.0 + dev: true + + /merge-stream/2.0.0: + resolution: + { integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== } + dev: true + + /merge2/1.4.1: + resolution: + { integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== } + engines: { node: '>= 8' } + dev: true + + /micromatch/4.0.5: + resolution: + { integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== } + engines: { node: '>=8.6' } + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db/1.52.0: + resolution: + { integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== } + engines: { node: '>= 0.6' } + dev: true + + /mime-types/2.1.35: + resolution: + { integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== } + engines: { node: '>= 0.6' } + dependencies: + mime-db: 1.52.0 + dev: true + + /minimatch/3.1.2: + resolution: + { integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== } + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch/5.0.1: + resolution: + { integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== } + engines: { node: '>=10' } + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch/5.1.0: + resolution: + { integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== } + engines: { node: '>=10' } + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist/1.2.7: + resolution: + { integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== } + dev: true + + /mkdirp/0.5.6: + resolution: + { integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== } + hasBin: true + dependencies: + minimist: 1.2.7 + dev: true + + /mocha/10.1.0: + resolution: + { integrity: sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg== } + engines: { node: '>= 14.0.0' } + hasBin: true + dependencies: + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.4_supports-color@8.1.1 + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.2.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.0.1 + ms: 2.1.3 + nanoid: 3.3.3 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.2.1 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + dev: true + + /ms/2.1.2: + resolution: + { integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== } + dev: true + + /ms/2.1.3: + resolution: + { integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== } + dev: true + + /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: true + + /natural-compare-lite/1.4.0: + resolution: + { integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== } + dev: true + + /natural-compare/1.4.0: + resolution: + { integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== } + dev: true + + /neo-async/2.6.2: + resolution: + { integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== } + dev: true + + /node-releases/2.0.6: + resolution: + { integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== } + dev: true + + /normalize-path/3.0.0: + resolution: + { integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== } + engines: { node: '>=0.10.0' } + dev: true + + /once/1.4.0: + resolution: + { integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== } + dependencies: + wrappy: 1.0.2 + dev: true + + /optionator/0.9.1: + resolution: + { integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== } + engines: { node: '>= 0.8.0' } + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /p-limit/2.3.0: + resolution: + { integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== } + engines: { node: '>=6' } + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit/3.1.0: + resolution: + { integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== } + engines: { node: '>=10' } + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate/4.1.0: + resolution: + { integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== } + engines: { node: '>=8' } + dependencies: + p-limit: 2.3.0 + dev: true + + /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: true + + /p-try/2.2.0: + resolution: + { integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== } + engines: { node: '>=6' } + dev: true + + /parent-module/1.0.1: + resolution: + { integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== } + engines: { node: '>=6' } + dependencies: + callsites: 3.1.0 + dev: true + + /path-exists/4.0.0: + resolution: + { integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== } + engines: { node: '>=8' } + dev: true + + /path-is-absolute/1.0.1: + resolution: + { integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== } + engines: { node: '>=0.10.0' } + dev: true + + /path-key/3.1.1: + resolution: + { integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== } + engines: { node: '>=8' } + dev: true + + /path-parse/1.0.7: + resolution: + { integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== } + dev: true + + /path-type/4.0.0: + resolution: + { integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== } + engines: { node: '>=8' } + dev: true + + /picocolors/1.0.0: + resolution: + { integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== } + dev: true + + /picomatch/2.3.1: + resolution: + { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } + engines: { node: '>=8.6' } + dev: true + + /pkg-dir/4.2.0: + resolution: + { integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== } + engines: { node: '>=8' } + dependencies: + find-up: 4.1.0 + dev: true + + /prelude-ls/1.2.1: + resolution: + { integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== } + engines: { node: '>= 0.8.0' } + dev: true + + /prettier/2.8.0: + resolution: + { integrity: sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA== } + engines: { node: '>=10.13.0' } + hasBin: true + dev: true + + /process-nextick-args/2.0.1: + resolution: + { integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== } + dev: true + + /punycode/2.1.1: + resolution: + { integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== } + engines: { node: '>=6' } + dev: true + + /pure-rand/5.0.5: + resolution: + { integrity: sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw== } + dev: true + + /queue-microtask/1.2.3: + resolution: + { integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== } + dev: true + + /randombytes/2.1.0: + resolution: + { integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /readable-stream/2.3.7: + resolution: + { integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== } + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readdirp/3.6.0: + resolution: + { integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== } + engines: { node: '>=8.10.0' } + dependencies: + picomatch: 2.3.1 + dev: true + + /rechoir/0.7.1: + resolution: + { integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== } + engines: { node: '>= 0.10' } + dependencies: + resolve: 1.22.1 + dev: true + + /regexpp/3.2.0: + resolution: + { integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== } + engines: { node: '>=8' } + dev: true + + /require-directory/2.1.1: + resolution: + { integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== } + engines: { node: '>=0.10.0' } + dev: true + + /resolve-cwd/3.0.0: + resolution: + { integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== } + engines: { node: '>=8' } + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from/4.0.0: + resolution: + { integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== } + engines: { node: '>=4' } + dev: true + + /resolve-from/5.0.0: + resolution: + { integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== } + engines: { node: '>=8' } + dev: true + + /resolve/1.22.1: + resolution: + { integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== } + hasBin: true + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify/1.0.4: + resolution: + { integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== } + engines: { iojs: '>=1.0.0', node: '>=0.10.0' } + dev: true + + /rimraf/2.7.1: + resolution: + { integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== } + hasBin: true + dependencies: + glob: 7.2.0 + dev: true + + /rimraf/3.0.2: + resolution: + { integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== } + hasBin: true + dependencies: + glob: 7.2.0 + dev: true + + /run-parallel/1.2.0: + resolution: + { integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== } + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-buffer/5.1.2: + resolution: + { integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== } + dev: true + + /safe-buffer/5.2.1: + resolution: + { integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== } + dev: true + + /schema-utils/3.1.1: + resolution: + { integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== } + engines: { node: '>= 10.13.0' } + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /semver/7.3.8: + resolution: + { integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== } + engines: { node: '>=10' } + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /serialize-javascript/6.0.0: + resolution: + { integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== } + dependencies: + randombytes: 2.1.0 + dev: true + + /setimmediate/1.0.5: + resolution: + { integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== } + dev: true + + /shallow-clone/3.0.1: + resolution: + { integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== } + engines: { node: '>=8' } + dependencies: + kind-of: 6.0.3 + dev: true + + /shebang-command/2.0.0: + resolution: + { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } + engines: { node: '>=8' } + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/3.0.0: + resolution: + { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== } + engines: { node: '>=8' } + dev: true + + /slash/3.0.0: + resolution: + { integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== } + engines: { node: '>=8' } + dev: true + + /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.6.1: + resolution: + { integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== } + engines: { node: '>=0.10.0' } + dev: true + + /string-width/4.2.3: + resolution: + { integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== } + engines: { node: '>=8' } + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string_decoder/1.1.1: + resolution: + { integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== } + dependencies: + safe-buffer: 5.1.2 + dev: true + + /strip-ansi/6.0.1: + resolution: + { integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== } + engines: { node: '>=8' } + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-json-comments/3.1.1: + resolution: + { integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== } + engines: { node: '>=8' } + dev: true + + /supports-color/7.2.0: + resolution: + { integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== } + engines: { node: '>=8' } + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color/8.1.1: + resolution: + { integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== } + engines: { node: '>=10' } + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: + { integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== } + engines: { node: '>= 0.4' } + dev: true + + /tapable/2.2.1: + resolution: + { integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== } + engines: { node: '>=6' } + dev: true + + /terser-webpack-plugin/5.3.6_webpack@5.75.0: + resolution: + { integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== } + engines: { node: '>= 10.13.0' } + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.17 + jest-worker: 27.5.1 + schema-utils: 3.1.1 + serialize-javascript: 6.0.0 + terser: 5.15.1 + webpack: 5.75.0_webpack-cli@4.10.0 + dev: true + + /terser/5.15.1: + resolution: + { integrity: sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw== } + engines: { node: '>=10' } + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.2 + acorn: 8.8.1 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /text-table/0.2.0: + resolution: + { integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== } + dev: true + + /to-regex-range/5.0.1: + resolution: + { integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== } + engines: { node: '>=8.0' } + dependencies: + is-number: 7.0.0 + dev: true + + /traverse/0.3.9: + resolution: + { integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== } + dev: true + + /ts-loader/9.4.1_vfotqvx6lgcbf3upbs6hgaza4q: + resolution: + { integrity: sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw== } + engines: { node: '>=12.0.0' } + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.10.0 + micromatch: 4.0.5 + semver: 7.3.8 + typescript: 4.9.3 + webpack: 5.75.0_webpack-cli@4.10.0 + dev: true + + /tslib/1.14.1: + resolution: + { integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== } + dev: true + + /tsutils/3.21.0_typescript@4.9.3: + 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 + dev: true + + /type-check/0.4.0: + resolution: + { integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== } + engines: { node: '>= 0.8.0' } + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest/0.20.2: + resolution: + { integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== } + engines: { node: '>=10' } + dev: true + + /typescript/4.9.3: + resolution: + { integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== } + engines: { node: '>=4.2.0' } + hasBin: true + dev: true + + /unzipper/0.10.11: + resolution: + { integrity: sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== } + dependencies: + big-integer: 1.6.51 + binary: 0.3.0 + bluebird: 3.4.7 + buffer-indexof-polyfill: 1.0.2 + duplexer2: 0.1.4 + fstream: 1.0.12 + graceful-fs: 4.2.10 + listenercount: 1.0.1 + readable-stream: 2.3.7 + setimmediate: 1.0.5 + dev: true + + /update-browserslist-db/1.0.10_browserslist@4.21.4: + resolution: + { integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== } + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.4 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js/4.4.1: + resolution: + { integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== } + dependencies: + punycode: 2.1.1 + dev: true + + /util-deprecate/1.0.2: + resolution: + { integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== } + dev: true + + /watchpack/2.4.0: + resolution: + { integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== } + engines: { node: '>=10.13.0' } + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + dev: true + + /webpack-cli/4.10.0_webpack@5.75.0: + resolution: + { integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== } + engines: { node: '>=10.13.0' } + hasBin: true + peerDependencies: + '@webpack-cli/generators': '*' + '@webpack-cli/migrate': '*' + webpack: 4.x.x || 5.x.x + webpack-bundle-analyzer: '*' + webpack-dev-server: '*' + peerDependenciesMeta: + '@webpack-cli/generators': + optional: true + '@webpack-cli/migrate': + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + '@webpack-cli/configtest': 1.2.0_pda42hcaj7d62cr262fr632kue + '@webpack-cli/info': 1.5.0_webpack-cli@4.10.0 + '@webpack-cli/serve': 1.7.0_webpack-cli@4.10.0 + colorette: 2.0.19 + commander: 7.2.0 + cross-spawn: 7.0.3 + fastest-levenshtein: 1.0.16 + import-local: 3.1.0 + interpret: 2.2.0 + rechoir: 0.7.1 + webpack: 5.75.0_webpack-cli@4.10.0 + webpack-merge: 5.8.0 + dev: true + + /webpack-merge/5.8.0: + resolution: + { integrity: sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== } + engines: { node: '>=10.0.0' } + dependencies: + clone-deep: 4.0.1 + wildcard: 2.0.0 + dev: true + + /webpack-sources/3.2.3: + resolution: + { integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== } + engines: { node: '>=10.13.0' } + dev: true + + /webpack/5.75.0_webpack-cli@4.10.0: + resolution: + { integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== } + engines: { node: '>=10.13.0' } + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.4 + '@types/estree': 0.0.51 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/wasm-edit': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + acorn: 8.8.1 + acorn-import-assertions: 1.8.0_acorn@8.8.1 + browserslist: 4.21.4 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.10.0 + es-module-lexer: 0.9.3 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.1.1 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.6_webpack@5.75.0 + watchpack: 2.4.0 + webpack-cli: 4.10.0_webpack@5.75.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /which/2.0.2: + resolution: + { integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== } + engines: { node: '>= 8' } + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wildcard/2.0.0: + resolution: + { integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== } + dev: true + + /word-wrap/1.2.3: + resolution: + { integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== } + engines: { node: '>=0.10.0' } + dev: true + + /workerpool/6.2.1: + resolution: + { integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== } + dev: true + + /wrap-ansi/7.0.0: + resolution: + { integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== } + engines: { node: '>=10' } + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy/1.0.2: + resolution: + { integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== } + dev: true + + /y18n/5.0.8: + resolution: + { integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== } + engines: { node: '>=10' } + dev: true + + /yallist/4.0.0: + resolution: + { integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== } + dev: true + + /yargs-parser/20.2.4: + resolution: + { integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== } + engines: { node: '>=10' } + dev: true + + /yargs-unparser/2.0.0: + resolution: + { integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== } + engines: { node: '>=10' } + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: true + + /yargs/16.2.0: + resolution: + { integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== } + engines: { node: '>=10' } + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.4 + dev: true + + /yocto-queue/0.1.0: + resolution: + { integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== } + engines: { node: '>=10' } + dev: true diff --git a/src/extension.ts b/src/extension.ts new file mode 100644 index 0000000..6cb1697 --- /dev/null +++ b/src/extension.ts @@ -0,0 +1,34 @@ +// The module 'vscode' contains the VS Code extensibility API +// Import the module and reference it with the alias vscode in your code below +import * as vscode from 'vscode'; +import { MiniscriptFormatter } from './formatting/format'; + +// This method is called when your extension is activated +// Your extension is activated the very first time the command is executed +export function activate(context: vscode.ExtensionContext) { + // Use the console to output diagnostic information (console.log) and errors (console.error) + // This line of code will only be executed once when your extension is activated + + context.subscriptions.push( + vscode.languages.registerDocumentFormattingEditProvider('miniscript', { + provideDocumentFormattingEdits(document: vscode.TextDocument): vscode.TextEdit[] { + const code = document.getText(); + // console.log(code); + const formatted = MiniscriptFormatter.formatCode(code); + // console.log(formatted); + if (formatted === code) return []; + return [ + vscode.TextEdit.replace( + new vscode.Range(document.lineAt(0).range.start, document.lineAt(document.lineCount - 1).range.end), + formatted, + ), + ]; + }, + }), + ); + + console.log('Formatting for Miniscript is activated!'); +} + +// This method is called when your extension is deactivated +// export function deactivate() {} diff --git a/src/formatting/format.ts b/src/formatting/format.ts new file mode 100644 index 0000000..1dd5850 --- /dev/null +++ b/src/formatting/format.ts @@ -0,0 +1,306 @@ +import { isIncomplete, matchingClosingBracket, MiniscriptIndenter, startsWithKeyword } from './indentation'; + +interface ExtractStringsResponse { + strippedCode: string; + strings: string[]; +} + +interface ExtractCommentsResponse { + strippedCode: string; + strings: string[]; +} + +/** + * Extracts strings from a code, and stores them in a separate array, + * replacing their original occurrences in code with special markers, + * that won't mess up code formatting later on + * @param code code to strip strings from + */ +function extractStrings(code: string): ExtractStringsResponse { + const strings: string[] = []; + let parsedCode = ''; + let sectionStart = 0; + let inString = false; + const concludeGroup = (i: number) => { + if (inString) { + parsedCode += `"$${strings.length}"`; + strings.push(code.substring(sectionStart, i)); + sectionStart = i; + } else { + parsedCode += code.substring(sectionStart, i); + sectionStart = i; + } + inString = !inString; + }; + for (let i = 0; i < code.length; i++) { + const char = code[i]; + if (char === '"') { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!inString) { + concludeGroup(i); + } else { + const nextChar = code[i + 1]; + i++; + if (nextChar !== '"') concludeGroup(i); + } + } + } + concludeGroup(code.length); + return { + strippedCode: parsedCode, + strings: strings, + }; +} + +/** + * Extracts comments a code, and stores them in a separate array, + * replacing their original occurrences in code with special markers, + * that won't mess up code formatting later on + * @param code code to strip strings from + */ +function extractComments(code: string): ExtractCommentsResponse { + const lines = code.replace(/\r\n/g, '\n').split(/\n/); + const stripped: string[] = []; + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + const match = line.match(/^(.*?\/\/\s?)(.*)$/); + if (!match) continue; + const comment = match[2].trimEnd(); + if (comment.length === 0 && !match[1].trimStart().startsWith('//')) continue; + lines[i] = `${match[1]}$${stripped.length}`; + stripped.push(comment); + } + return { + strings: stripped, + strippedCode: lines.join('\n'), + }; +} + +/** + * Breaks line into indentation, code and comment sections + */ +function breakLine(line: string): [string, string, string] { + const data = line.match(/^(\s*)(.*?)\s*(?:\/\/(.*?))?\s*$/); + if (!data) return ['', line, '']; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + return [data[1], data[2], data[3] ?? '']; +} + +const bracketsMap: Record = { + ']': ['[', ']'], + '}': ['{', '}'], + ')': ['(', ')'], +}; + +/** + * All symbols after this are valid identifiers in miniscript + */ +const unicodeThreshold = '\u009F'.codePointAt(0) as number; + +/** + * Attempts to detect and strip parentheses from a function call statement + */ +function stripFunctionCallParentheses(line: string): string { + line = line.trimEnd(); + if (!line.endsWith(')')) return line; + let level = 1; + let callStart = -1; + + // find where parentheses are + for (let i = line.length - 2; i >= 0; i--) { + const char = line[i]; + if (char === ')') level++; + else if (char === '(') level--; + if (level === 0) { + callStart = i; + break; + } + } + if (callStart < 0) return line; + + level = 0; + let leftChar = ''; + let rightChar = ''; + // check is whole previous part of the line is just a chain + for (let i = callStart - 1; i >= 0; i--) { + const char = line[i]; + if (level > 0) { + if (char === rightChar) level++; + else if (char === leftChar) level--; + continue; + } + if (char === '.' || MiniscriptFormatter.isValidIdentifierChar(char)) continue; + const map = bracketsMap[char]; + if (map === undefined) return line; + [leftChar, rightChar] = map; + level++; + } + if (level !== 0) return line; + const chain = line.substring(0, callStart); + const args = line.substring(callStart + 1, line.length - 1); + return chain + ' ' + args; +} + +function stripIfParentheses(line: string): string { + if (!startsWithKeyword(line, 'if')) return line; + const rest = line.substring(2, line.length).trimStart(); + if (!rest.startsWith('(')) return line; + let counter = 1; + for (let i = 1; i < rest.length; i++) { + const char = rest[i]; + if (char === '(') counter++; + if (char === ')') counter--; + if (counter === 0) { + const afterClosing = rest.substring(i + 1, rest.length).trimStart(); + if (!startsWithKeyword(afterClosing, 'then')) return line; + return `if ${rest.substring(1, i)} ${afterClosing}`; + } + } + return line; +} + +function formatColons(code: string): string { + const bracketsStack: string[] = []; + if (!code.includes(':')) return code; + for (let i = 0; i < code.length; i++) { + const char = code[i]; + if (char === ':' && bracketsStack[bracketsStack.length - 1] === '{') { + const before = code.substring(0, i + 1).replace(/\s*:$/, ':'); + const after = code.substring(i + 1, code.length); + if (!after.startsWith('\n')) code = before + ' ' + after.trimStart(); + else code = before + after; + } else if (matchingClosingBracket[char]) { + bracketsStack.push(char); + } else if (char === matchingClosingBracket[bracketsStack[bracketsStack.length - 1]]) { + bracketsStack.pop(); + } + } + return code; +} + +/** + * Combines separated lines back into one string + */ +function joinLines(lines: MiniscriptCodeLine[]) { + return lines + .map(line => { + let mainBody = line.indentation + line.code; + if (line.comment.length > 0) { + // Space is only added before comment if we actually have a code in a line + if (line.code.length > 0) mainBody += ' '; + mainBody += '//' + line.comment; + } + return mainBody.trimEnd(); + }) + .join('\n'); +} + +/** + * Does all the heavy lifting of actually formatting a code + * @param code code to process (should have strings stripped off already) + */ +function processCode(code: string) { + code = code + .replace(/\r\n/g, '\n') + .replace(/;[^\S\n]*?\/\//g, ' //') + .replace(/;[^\S\n]*\n?/g, '\n') + .trim(); + const lines: MiniscriptCodeLine[] = []; + const rawLines = code.split('\n'); + for (let i = 0; i < rawLines.length; i++) { + let line = rawLines[i]; + let comment: string; + // Ignore original indentation + [, line, comment] = breakLine(line); + + line = line + // Collapse tabs, double/triple/etc spaces into single space + .replace(/\s+/g, ' ') + // No space around dots + .replace(/\s*(\.)\s*/g, '$1') + // No space after opening brackets + .replace(/([[({])\s*/g, '$1') + // No space before closing brackets + .replace(/\s*([\])}])/g, '$1') + // Space after closing bracket before non-bracket or dot + .replace(/([)}\]])\s*([^.()[\]{}])/g, '$1 $2') + // Space after comma and : + .replace(/\s*([,])\s*/g, '$1 ') + // Space around operators except for minus + .replace(/\s*([<>=!]=|[+*/%^<>=])\s*/g, ' $1 ') + // Minus followed by unary minus + .replace(/--/g, '- -') + // Unary minus + .replace(/\s+-(\S)/g, ' -$1') + // Two cases of a regular minus + .replace(/\s*-(?:\s+|$)/g, ' - ') + .replace(/([^\s[({:])-(\S)/g, '$1 - $2') + // No space inside scientific notation + .replace(/(^|[^_0-9A-Za-z\u00A0-\uFFFF])(\.?\d+\.?\d*)\s*e\s*([+-]?)\s*(\d+)/g, '$1$2e$3$4') + // No trailing commas + .replace(/([^,\s]),\s*([\]}])/g, '$1$2') + // No empty function parenthesis + .replace(/function\s*\(\s*\)/, 'function'); + + if (i === 0 || !isIncomplete(lines[i - 1].code)) line = stripFunctionCallParentheses(line); + line = stripIfParentheses(line); + + // Comments must always have space after // except for the case of triple /// + if (comment.startsWith('/') && !comment.match('^/s')) comment = '/ ' + comment.substring(1, comment.length); + else if (comment.length > 0 && !comment.match(/^\s/)) comment = ' ' + comment; + + comment = comment.trimEnd(); + + lines[i] = { + indentation: '', + code: line.trim(), + comment, + commentGroupingOffset: 0, + } as MiniscriptCodeLine; + } + + MiniscriptIndenter.processIndentation(lines); + + code = joinLines(lines); + code = formatColons(code); + return code; +} + +export interface MiniscriptCodeLine { + indentation: string; + code: string; + comment: string; +} + +// eslint-disable-next-line @typescript-eslint/no-extraneous-class +export class MiniscriptFormatter { + /** + * checks if a given character is a valid miniscript identifier + */ + static isValidIdentifierChar(char: string | undefined): boolean { + if (char === undefined) return false; + if (/[_a-zA-Z0-9]/.test(char)) return true; + return (char.codePointAt(0) as number) > unicodeThreshold; + } + + /** + * Formats the given miniscript code + */ + static formatCode(code: string) { + // // eslint-disable-next-line no-debugger + // debugger; + const { strippedCode: stringsStrippedCode, strings } = extractStrings(code); + // eslint-disable-next-line prefer-const + let { strippedCode, strings: comments } = extractComments(stringsStrippedCode); + strippedCode = processCode(strippedCode); + return strippedCode + .replace(/\/\/\s\$\d+/g, group => { + const num = group.substring(4, group.length); + return ('//' + group[2] + comments[Number(num)]).trimEnd(); + }) + .replace(/"\$\d+"/g, group => { + const num = group.substring(2, group.length - 1); + return strings[Number(num)]; + }); + } +} diff --git a/src/formatting/indentation.ts b/src/formatting/indentation.ts new file mode 100644 index 0000000..c206309 --- /dev/null +++ b/src/formatting/indentation.ts @@ -0,0 +1,326 @@ +import type { MiniscriptCodeLine } from './format'; +import { MiniscriptFormatter } from './format'; + +/** + * Checks is line starts with a specified keyword (aka so the end of a line is + * actually a keyword, and not just an identifier that starts with a keyword in + * its name) + */ +export function startsWithKeyword(code: string, keyword: string): boolean { + return code.startsWith(keyword) && !MiniscriptFormatter.isValidIdentifierChar(code[keyword.length]); +} + +/** + * Checks is line ends with a specified keyword (aka so the end of a line is + * actually a keyword, and not just an identifier that ends with a keyword in + * its name) + */ +function endsWithKeyword(code: string, keyword: string): boolean { + return code.endsWith(keyword) && !MiniscriptFormatter.isValidIdentifierChar(code[code.length - keyword.length - 1]); +} + +export const matchingClosingBracket: Record = { + '{': '}', + '[': ']', + '(': ')', +}; +export const matchingOpeningBracket: Record = { + '}': '{', + ']': '[', + ')': '(', +}; + +/** + * applies block indentation to a `[from; to)` range of lines + * @param lines lines to apply indentation to + * @param from from index (inclusive) + * @param to to index (exclusive) + */ +function indentBlock(lines: MiniscriptCodeLine[], from: number, to: number): void { + for (let i = from; i < to && i < lines.length; i++) { + const line = lines[i]; + line.indentation = MiniscriptIndenter.config.blockIndent + line.indentation; + } +} + +/** + * applies multiline indentation to a `[from; to)` range of lines + * @param lines lines to apply indentation to + * @param from from index (inclusive) + * @param to to index (exclusive) + */ +function indentMultiline(lines: MiniscriptCodeLine[], from: number, to: number): void { + for (let i = from; i < to; i++) { + const line = lines[i]; + line.indentation += MiniscriptIndenter.config.multilineIndent; + } +} + +/** + * Applies indentation to an `if` block + *
+ * This method does NOT handle single-line `if`s, those should be handled separately + * @param lines lines to indent + * @param index starting index + * @return index of the next unindented line + */ +function processIfBlock(lines: MiniscriptCodeLine[], index: number): number { + index++; // consume first line + let endStatement: MiniscriptCodeLine; + do { + const nextLine = processCodeBody(lines, index, 'else', 'end'); + indentBlock(lines, index, nextLine); + index = nextLine; + endStatement = lines[index++]; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + } while (endStatement && startsWithKeyword(endStatement.code, 'else')); + + return index; +} + +/** + * Applies indentation to a simple `while`/`for`/`function` block + * @param _blockType type of the block + * @param lines lines to indent + * @param index starting index + * @return index of the next unindented line + */ +function processSimpleBlock(_blockType: string, lines: MiniscriptCodeLine[], index: number): number { + index++; // consume first line + const nextLine = processCodeBody(lines, index, 'end'); + indentBlock(lines, index, nextLine); + index = nextLine; + index++; // We don't care about ending line, but we still consume it by moving index to the right + return index; +} + +// We don't care about brackets validity. Any opening bracket can be closed with any closing bracket for what we care +/** + * Calculates balance of brackets in a line + *
+ * Note that we don't care about brackets validity. Any opening bracket can be + * closed with any closing bracket for what we care. Reason for this decision + * is that this will never be an issue in a syntactically correct code, and + * caring too much about invalid code would only lead to an extra work and + * possibly even lower performance + *
+ * The way this method works, is that when opening bracket is encountered, it + * increments open counter, but when closing bracket is encountered, it will + * decrement open counter, but if that counter is at 0, it will instead + * increment closing counter. + * Examples: + * - `[[]]` will have a balance of `{open: 0, closed: 0}`, because 2 brackets + * were opened and later closed + * - `]][[` will have a balance of `{open: 2, closed: 2}`, because closing + * brackets appears before opening ones + * - `[(})` will also have 0 balance, because we don't check for validity + */ +function getBracketsBalance(line: string): { open: number; closed: number } { + let open = 0; + let closed = 0; + for (const char of line) { + if (matchingOpeningBracket[char]) { + if (open > 0) open--; + else closed++; + } else if (matchingClosingBracket[char]) { + open++; + } + } + return { open, closed }; +} + +/** + * Checks if line is incomplete, aka when it ends with an operator, or comma or + * any opening bracket + */ +export function isIncomplete(code: string) { + return endsWithOperation(code) || isIncompleteNonOperationLine(code); +} + +/** + * Checks if line ends with an operation + */ +function endsWithOperation(line: string): boolean { + return Boolean(line.match(/([<>=!]=|[+\-*/%^<>=])$/)); +} + +/** + * Checks if line ends with a bracket, comma or : + */ +function isIncompleteNonOperationLine(line: string): boolean { + return Boolean(line.match(/[:,[({]$/)); +} + +/** + * Checks if previous line ends with operation + * @param lines list of lines + * @param index index of a current line + */ +function previousLineEndsWithOperation(lines: MiniscriptCodeLine[], index: number) { + return index !== 0 && endsWithOperation(lines[index - 1].code); +} + +interface MultilineResponse { + index: number; + excessiveClosingBrackets: number; +} + +/** + * Processes indentation on nested multiline code structures, like operation + * chains or multiline arrays/objects + * @param openers amount of opening brackets that start this multiline block + * @param lines list of code lines + * @param index index of a first line in a block + * @return index of the next unindented line + */ +function processMultiline(openers: number, lines: MiniscriptCodeLine[], index: number): MultilineResponse { + index++; // consume first line + let excessiveClosingBrackets = 0; + while (index < lines.length) { + const line = lines[index]; + const code = line.code; + const { open, closed } = getBracketsBalance(code); + openers -= closed; + // When encountering "complete" line, just terminate immediately with infinite excess closers, we have nothing to do here + if (!isIncomplete(code)) { + // // eslint-disable-next-line no-debugger + // debugger; + if (openers < 0) excessiveClosingBrackets = -openers; + + if (!code.match(/^[\]})]/)) indentMultiline(lines, index, index + 1); + if (previousLineEndsWithOperation(lines, index)) indentMultiline(lines, index, index + 1); + return { index: index + 1, excessiveClosingBrackets }; + } + + let skipLine = false; + // New bracket block is getting opened here + if (open > 0) { + skipLine = true; + const { index: nextLine, excessiveClosingBrackets: excess } = processMultiline(open, lines, index); + indentMultiline(lines, index, nextLine); + // Operations give an extra 'multiline' indentation level + if (previousLineEndsWithOperation(lines, index)) indentMultiline(lines, index, nextLine); + + index = nextLine; + if (openers < 0) openers = 0; + openers -= excess; + } + + if (openers <= 0) { + excessiveClosingBrackets = -openers; + if (!skipLine) { + // Closing lines that start with only brackets have no extra indentation + // Example: + // a = [1, + // 2] + // + // vs + // + // a = [1, + // ] + if (!code.match(/^[\]})]/)) indentMultiline(lines, index, index + 1); + } + return { index, excessiveClosingBrackets }; + } + + // Skip line means that new group was opened, and our original index is long gone now + if (skipLine) continue; + // Operations give an extra 'multiline' indentation level + indentMultiline(lines, index, index + 1); + if (previousLineEndsWithOperation(lines, index)) indentMultiline(lines, index, index + 1); + + index++; + } + // End of code has been reached + return { index, excessiveClosingBrackets }; +} + +/** + * List of keywords that identify the start of a block. + *
+ * `function` and `if` are handled separately + */ +const blockKeywords = ['for', 'while']; + +/** + * Processes indentation on plain code block, like function bodies or + * top-level code + * @param lines lines to indent + * @param index starting index + * @param breakOn list of keywords, which will cause processing to break when + * encountered at a start of a line + * @return index of the next unindented line + */ +function processCodeBody(lines: MiniscriptCodeLine[], index: number, ...breakOn: string[]): number { + while (index < lines.length) { + const line = lines[index]; + const code = line.code; + + // Breakers go first + for (const breaker of breakOn) if (startsWithKeyword(code, breaker)) return index; // Move 1 step back, so outer handler can consume breaking line + + // if blocks have a single-line variant, and also require special treatment for `else` + if (startsWithKeyword(code, 'if') && endsWithKeyword(code, 'then')) { + index = processIfBlock(lines, index); + continue; + } + + // While and for can be handled in the same way + let blockFound = false; + for (const blockKeyword of blockKeywords) { + if (startsWithKeyword(code, blockKeyword)) { + index = processSimpleBlock(blockKeyword, lines, index); + blockFound = true; + } + } + if (blockFound) continue; + + // Functions can be handled the same as `while` and `for`, but we must detect them differently because they + // (usually) are assignment statements + if (code.match(/(\s|^)function([(\s]|$)/)) { + index = processSimpleBlock('function', lines, index); + continue; + } + + if (isIncompleteNonOperationLine(line.code)) { + const { open } = getBracketsBalance(line.code); + const { index: nextLine } = processMultiline(open, lines, index); + + if (previousLineEndsWithOperation(lines, index)) indentMultiline(lines, index, nextLine); + + index = nextLine; + continue; + } + + if (previousLineEndsWithOperation(lines, index)) indentMultiline(lines, index, index + 1); + + index++; + } + return index; +} + +/** + * Class for handling indentation in miniscript code + */ +// eslint-disable-next-line @typescript-eslint/no-extraneous-class +export class MiniscriptIndenter { + static config = { + /** + * Used to indent bodies of `if`/`for`/`while`/`function` blocks + */ + blockIndent: ' ', + /** + * Used to indent lines in a multiline structures, like operation + * chains or multiline arrays or objects + */ + multilineIndent: ' ', + }; + + /** + * Processes indentation on given code lines + * @param lines lines to indent + */ + static processIndentation(lines: MiniscriptCodeLine[]): void { + processCodeBody(lines, 0); + } +} diff --git a/src/test/runTest.ts b/src/test/runTest.ts new file mode 100644 index 0000000..673001a --- /dev/null +++ b/src/test/runTest.ts @@ -0,0 +1,23 @@ +import * as path from 'path'; + +import { runTests } from '@vscode/test-electron'; + +async function main() { + try { + // The folder containing the Extension Manifest package.json + // Passed to `--extensionDevelopmentPath` + const extensionDevelopmentPath = path.resolve(__dirname, '../../'); + + // The path to test runner + // Passed to --extensionTestsPath + const extensionTestsPath = path.resolve(__dirname, './suite/index'); + + // Download VS Code, unzip it and run the integration test + await runTests({ extensionDevelopmentPath, extensionTestsPath }); + } catch (err) { + console.error('Failed to run tests'); + process.exit(1); + } +} + +void main(); diff --git a/src/test/suite/extension.test.ts b/src/test/suite/extension.test.ts new file mode 100644 index 0000000..1696a81 --- /dev/null +++ b/src/test/suite/extension.test.ts @@ -0,0 +1,487 @@ +import * as assert from 'assert'; +import * as fc from 'fast-check'; + +// You can import and use all API from the 'vscode' module +// as well as import your extension to test it +import * as vscode from 'vscode'; +import { MiniscriptFormatter } from '../../formatting/format'; +import { MiniscriptIndenter } from '../../formatting/indentation'; +// import * as myExtension from '../../extension'; + +suite('Miniscript formatting Test Suite', () => { + void vscode.window.showInformationMessage('Start all tests.'); + + function assertFormat(ctx: fc.ContextValue, code: string, expectedResult: string): void { + ctx.log(`Original code: ${code}`); + assert.strictEqual(MiniscriptFormatter.formatCode(code), expectedResult); + } + + const whitespaces = [' ', '\t']; + const ops = ['+', '- ', '*', '/', '%', '^', '>', '<', '=', '==', '!=', '<=', '>=']; + const whiteOrEmptyArb = fc.stringOf(fc.constantFrom(...whitespaces), { minLength: 0 }); + const whiteArb = fc.stringOf(fc.constantFrom(...whitespaces), { minLength: 1 }); + const opsArb = fc.constantFrom(...ops); + const identifierRegex = /^(?!\s)[_A-Za-z\u00A0-\uFFFF]((?!\s)[_0-9A-Za-z\u00A0-\uFFFF])*$/; // We do not support whitespaces in names + const identifierArb = fc.unicodeString({ minLength: 1 }).filter(str => identifierRegex.test(str)); + const blockIndent = MiniscriptIndenter.config.blockIndent; + const multilineIndent = MiniscriptIndenter.config.multilineIndent; + const expressionElementArb = fc.oneof( + identifierArb, + fc.double().map(e => e.toString()), + fc.integer().map(e => e.toString()), + fc.lorem().map(e => `"${e}"`), + ); + + test('Should add spaces around operators', () => { + fc.assert( + fc.property(expressionElementArb, expressionElementArb, opsArb, fc.context(), (a, b, op, ctx) => { + assertFormat(ctx, `${a}${op}${b};`, `${a} ${op.trim()} ${b}`); + }), + ); + + fc.assert( + fc.property(fc.array(opsArb, { minLength: 2 }), fc.context(), (ops, ctx) => { + const ogString = 'a' + ops.join('b') + 'c'; + const targetString = 'a ' + ops.map(e => e.trim()).join(' b ') + ' c'; + assertFormat(ctx, ogString, targetString); + }), + ); + }); + + test('Should collapse tabs, double/triple/etc spaces into single space', () => { + fc.assert( + fc.property(fc.array(whiteOrEmptyArb), fc.context(), (spaces, ctx) => { + const ogString = 'a' + spaces.join('+b'); + const targetString = 'a' + spaces.map(() => '').join(' + b'); + assertFormat(ctx, ogString, targetString); + }), + ); + }); + + test('Should remove spaces around dots', () => { + fc.assert( + fc.property(fc.array(whiteOrEmptyArb), fc.context(), (spaces, ctx) => { + const ogString = 'a' + spaces.join(' .b'); + const targetString = 'a' + spaces.map(() => '').join('.b'); + assertFormat(ctx, ogString, targetString); + }), + ); + }); + + test('Should remove spaces before and after brackets', () => { + fc.assert( + fc.property( + fc.constantFrom(['[', ']'], ['(', ')'], ['{', '}']), + whiteOrEmptyArb, + whiteOrEmptyArb, + whiteOrEmptyArb, + fc.context(), + (brackets, before, after, space, ctx) => { + const ogString = brackets[0] + before + 'a - b' + after + brackets[1] + space + '* c'; + const targetString = brackets[0] + 'a - b' + brackets[1] + ' * c'; + assertFormat(ctx, ogString, targetString); + }, + ), + ); + }); + + test('Should remove trailing commas', () => { + assert.strictEqual(MiniscriptFormatter.formatCode(`a=[1,2,3,]`), `a = [1, 2, 3]`); + assert.strictEqual(MiniscriptFormatter.formatCode(`a={"1":1,"2":2,"3":3,}`), `a = {"1": 1, "2": 2, "3": 3}`); + }); + + test('Should handle minus', () => { + fc.assert( + fc.property(expressionElementArb, expressionElementArb, fc.context(), (a, b, ctx) => { + assertFormat(ctx, `${a}-${b}`, `${a} - ${b}`); + if (!b.startsWith('-')) { + assertFormat(ctx, `${a} -${b}`, `${a} -${b}`); + assertFormat(ctx, `[-${b}`, `[-${b}`); + assertFormat(ctx, `(-${b}`, `(-${b}`); + assertFormat(ctx, `{-${b}`, `{-${b}`); + assertFormat(ctx, `:-${b}`, `:-${b}`); + } + assertFormat(ctx, `${a}- ${b}`, `${a} - ${b}`); + assertFormat(ctx, `${a} - ${b}`, `${a} - ${b}`); + assertFormat(ctx, `${a} -\n${b}`, `${a} -\n${multilineIndent}${b}`); + assertFormat(ctx, `${a}-\n${b}`, `${a} -\n${multilineIndent}${b}`); + assertFormat(ctx, `${a}- \n${b}`, `${a} -\n${multilineIndent}${b}`); + assertFormat(ctx, `${a} - \n${b}`, `${a} -\n${multilineIndent}${b}`); + }), + ); + }); + + test('Should remove empty function parenthesis', () => { + assert.strictEqual(MiniscriptFormatter.formatCode(`function()\nend function`), `function\nend function`); + }); + + test('Should remove redundant brackets from if', () => { + assert.strictEqual(MiniscriptFormatter.formatCode(`if(a==b) then c;`), `if a == b then c`); + assert.strictEqual(MiniscriptFormatter.formatCode(`if(a==b) then\nend if`), `if a == b then\nend if`); + }); + + test('Should ensure space after colons in objects', () => { + fc.assert( + fc.property( + expressionElementArb, + whiteOrEmptyArb, + expressionElementArb, + whiteOrEmptyArb, + fc.context(), + (key, before, value, after, ctx) => { + const ogString = '{' + key + before + ':' + after + value + '}'; + const targetString = '{' + key + ': ' + value + '}'; + assertFormat(ctx, ogString, targetString); + }, + ), + ); + }); + + test('Should not change spaces around colons outside of objects', () => { + fc.assert( + fc.property( + fc.constantFrom(['[', ']'], ['', '']), + expressionElementArb, + whiteOrEmptyArb, + expressionElementArb, + whiteOrEmptyArb, + fc.context(), + (brackets, key, before, value, after, ctx) => { + const ogString = brackets[0] + key + before + ':' + after + value + brackets[1]; + const targetString = + brackets[0] + + key + + (before.length > 0 ? ' ' : '') + + ':' + + (after.length > 0 ? ' ' : '') + + value + + brackets[1]; + assertFormat(ctx, ogString, targetString); + }, + ), + ); + }); + + test('Should ensure space before and after comment', () => { + fc.assert( + fc.property(whiteOrEmptyArb, whiteArb, fc.context(), (before, after, ctx) => { + const ogString = 'func' + before + '//' + after + 'comment'; + const targetString = `func //${after}comment`; + assertFormat(ctx, ogString, targetString); + }), + ); + + fc.assert( + fc.property(whiteOrEmptyArb, fc.context(), (before, ctx) => { + const ogString = 'func' + before + '//comment'; + const targetString = `func // comment`; + assertFormat(ctx, ogString, targetString); + }), + ); + }); + + test('Should ensure space after closing bracket before number, string or identifier', () => { + fc.assert( + fc.property( + fc.constantFrom(']', ')', '}'), + whiteOrEmptyArb, + expressionElementArb, + fc.context(), + (bracket, space, value, ctx) => { + const ogString = bracket + space + value.toString(); + const targetString = bracket + ' ' + value.toString(); + assertFormat(ctx, ogString, targetString); + }, + ), + ); + fc.assert( + fc.property( + fc.constantFrom(']', ')', '}'), + fc.constantFrom(...'()[]{}.'.split('')), + fc.context(), + (bracket, value, ctx) => { + const ogString = bracket + value.toString(); + const targetString = bracket + value.toString(); + assertFormat(ctx, ogString, targetString); + }, + ), + ); + }); + + test('Should strip empty comments', () => { + fc.assert( + fc.property(whiteOrEmptyArb, fc.context(), (comment, ctx) => { + const ogString = 'func //' + comment; + const targetString = `func`; + assertFormat(ctx, ogString, targetString); + }), + ); + }); + + test('Should ignore semicolons in comments', () => { + const ogString = 'a = // 5;5;8'; + const targetString = 'a = // 5;5;8'; + assert.strictEqual(MiniscriptFormatter.formatCode(ogString), targetString); + }); + + test('Should strip brackets from function call statements', () => { + fc.assert( + fc.property(fc.array(identifierArb), fc.context(), (args, ctx) => { + const ogString = `func(${args.join(', ')})`; + const targetString = (`func ` + args.join(', ')).trimEnd(); + assertFormat(ctx, ogString, targetString); + }), + ); + }); + + test('Should not strip brackets from function call expression in multiline context', () => { + fc.assert( + fc.property(fc.array(identifierArb), fc.context(), (args, ctx) => { + const ogString = `a +\nfunc(${args.join(', ')})`; + const targetString = `a +\n${multilineIndent}func(${args.join(', ')})`; + assertFormat(ctx, ogString, targetString); + }), + ); + }); + + suite('Indentation', () => { + const blockArb = fc.constantFrom( + ['if a then', 'end if'], + ['while a', 'end while'], + ['for a in b', 'end for'], + ['a = function', 'end function'], + ); + test('Should remove indentation from dangling lines', () => { + fc.assert( + fc.property(whiteOrEmptyArb, fc.context(), (indent, ctx) => { + const ogString = indent + 'code'; + const targetString = 'code'; + assertFormat(ctx, ogString, targetString); + }), + ); + }); + + test('Should add indentation in blocks', () => { + fc.assert( + fc.property(blockArb, fc.context(), (block, ctx) => { + assertFormat(ctx, `${block[0]}\nbody\n${block[1]}`, `${block[0]}\n${blockIndent}body\n${block[1]}`); + }), + ); + }); + + test('Should add indentation in nested blocks', () => { + fc.assert( + fc.property(fc.array(blockArb, { minLength: 2 }), fc.context(), (blocks, ctx) => { + let ogString = ''; + let targetString = ''; + for (let i = 0; i < blocks.length; i++) { + ogString += blocks[i][0] + '\n'; + targetString += blockIndent.repeat(i) + blocks[i][0] + '\n'; + } + + ogString += 'body\n'; + targetString += blockIndent.repeat(blocks.length) + 'body\n'; + + for (let i = blocks.length - 1; i >= 0; i--) { + ogString += blocks[i][1] + '\n'; + targetString += blockIndent.repeat(i) + blocks[i][1] + '\n'; + } + ogString = ogString.trim(); + targetString = targetString.trim(); + + assertFormat(ctx, ogString, targetString); + }), + ); + }); + + test('Should add indentation in multiline operations', () => { + fc.assert( + fc.property(opsArb, fc.context(), (op, ctx) => { + assertFormat(ctx, `a ${op}\nb`, `a ${op.trim()}\n${multilineIndent}b`); + }), + ); + fc.assert( + fc.property(fc.array(fc.tuple(opsArb, identifierArb), { minLength: 2 }), fc.context(), (ops, ctx) => { + const ogString = + 'a' + + ops + .map(e => e[0] + '\n' + e[1]) + .join('') + .trim(); + const targetString = + 'a ' + + ops + .map(e => e[0].trim() + '\n' + multilineIndent + e[1]) + .join(' ') + .trim(); + assertFormat(ctx, ogString, targetString); + }), + ); + }); + + test('Corner case 1', () => { + const ogString = + `printAlign "dieFace[1] - dieFace[6]", [dieFace[1], dieFace[2], dieFace[3],\n` + + `dieFace[4], dieFace[5], dieFace[6]].join`; + const targetString = + `printAlign "dieFace[1] - dieFace[6]", [dieFace[1], dieFace[2], dieFace[3],\n` + + `${multilineIndent}dieFace[4], dieFace[5], dieFace[6]].join`; + assert.strictEqual(MiniscriptFormatter.formatCode(ogString), targetString); + }); + + test('Corner case 2', () => { + const ogString = 'a(\n' + '1 +\n' + '2 +\n' + '2 +\n' + '2 +\n' + '2 +\n' + '3)'; + const targetString = + 'a(\n' + + multilineIndent + + '1 +\n' + + multilineIndent + + multilineIndent + + '2 +\n' + + multilineIndent + + multilineIndent + + '2 +\n' + + multilineIndent + + multilineIndent + + '2 +\n' + + multilineIndent + + multilineIndent + + '2 +\n' + + multilineIndent + + multilineIndent + + '3)'; + assert.strictEqual(MiniscriptFormatter.formatCode(ogString), targetString); + }); + + test('Should process complex case', () => { + const ogString = ` +if someCondition then someLineExpression +if someCondition2 then a([ +1,2, +3, +4, +]) +if someThrirdCondition then +( +longExpressionThatReturnsAnArray + +anotherLongExpressionThatReturnsAnArray + +[ +someLongExpression1, +someLongExpression + +someLongExpression2 - +someLongExpression3, +someOtherLongExpression, +] +)[0]()/ +someLongDivisor +else if idkCondition +doStuff +doStuff2 +end if + +a = function(doStuffA) +while c + doA + doB + doC +for rice in a_bag + cook( + tea, + sugar, +red_pepper, +) +end for + end while + +finishCooking(); +end function + +a = function() + doStuffA + a = { + 1:2, + "2": veryLonCall() + + anotherVeryLongCall(), + } + doStuffB(1,2,3) + doStuffC((1+5),2,3) + doStuffD 1, 2, 3 + doStuffE(1,2)3 + return a +end function + +// This is useless, and may be an error later down the line, but we should still handle it +function +doStuff +end function + `.trim(); + const targetString = ` +if someCondition then someLineExpression +if someCondition2 then a([ + 1, 2, + 3, + 4, +]) +if someThrirdCondition then + ( + longExpressionThatReturnsAnArray + + anotherLongExpressionThatReturnsAnArray + + [ + someLongExpression1, + someLongExpression + + someLongExpression2 - + someLongExpression3, + someOtherLongExpression, + ] + )[0]() / + someLongDivisor +else if idkCondition + doStuff + doStuff2 +end if + +a = function(doStuffA) + while c + doA + doB + doC + for rice in a_bag + cook( + tea, + sugar, + red_pepper, + ) + end for + end while + + finishCooking +end function + +a = function + doStuffA + a = { + 1: 2, + "2": veryLonCall() + + anotherVeryLongCall(), + } + doStuffB 1, 2, 3 + doStuffC (1 + 5), 2, 3 + doStuffD 1, 2, 3 + doStuffE(1, 2) 3 + return a +end function + +// This is useless, and may be an error later down the line, but we should still handle it +function + doStuff +end function + `.trim(); + assert.strictEqual(MiniscriptFormatter.formatCode(ogString), targetString); + }); + }); + + test('Sample test', () => { + assert.strictEqual(-1, [1, 2, 3].indexOf(5)); + assert.strictEqual(-1, [1, 2, 3].indexOf(0)); + }); +}); diff --git a/src/test/suite/index.ts b/src/test/suite/index.ts new file mode 100644 index 0000000..9eb9578 --- /dev/null +++ b/src/test/suite/index.ts @@ -0,0 +1,33 @@ +import * as path from 'path'; +import * as Mocha from 'mocha'; +import * as glob from 'glob'; + +export function run(): Promise { + // Create the mocha test + const mocha = new Mocha({ + ui: 'tdd', + color: true, + }); + + const testsRoot = path.resolve(__dirname, '..'); + + return new Promise((c, e) => { + glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { + if (err) return e(err); + + // Add files to the test suite + files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); + + try { + // Run the mocha test + mocha.run(failures => { + if (failures > 0) e(new Error(`${failures} tests failed.`)); + else c(); + }); + } catch (err) { + console.error(err); + e(err); + } + }); + }); +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..6f35b8a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "ES2020", + "lib": ["ES2020"], + "sourceMap": true, + "rootDir": "src", + "strict": true /* enable all strict type-checking options */ + /* Additional Checks */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + } +} diff --git a/vsc-extension-quickstart.md b/vsc-extension-quickstart.md new file mode 100644 index 0000000..def139f --- /dev/null +++ b/vsc-extension-quickstart.md @@ -0,0 +1,45 @@ +# Welcome to your VS Code Extension + +## What's in the folder + +- This folder contains all of the files necessary for your extension. +- `package.json` - this is the manifest file in which you declare your extension and command. + - The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. +- `src/extension.ts` - this is the main file where you will provide the implementation of your command. + - The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`. + - We pass the function containing the implementation of the command as the second parameter to `registerCommand`. + +## Setup + +- install the recommended extensions (amodio.tsl-problem-matcher and dbaeumer.vscode-eslint) + +## Get up and running straight away + +- Press `F5` to open a new window with your extension loaded. +- Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`. +- Set breakpoints in your code inside `src/extension.ts` to debug your extension. +- Find output from your extension in the debug console. + +## Make changes + +- You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`. +- You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes. + +## Explore the API + +- You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`. + +## Run tests + +- Open the debug viewlet (`Ctrl+Shift+D` or `Cmd+Shift+D` on Mac) and from the launch configuration dropdown pick `Extension Tests`. +- Press `F5` to run the tests in a new window with your extension loaded. +- See the output of the test result in the debug console. +- Make changes to `src/test/suite/extension.test.ts` or create new test files inside the `test/suite` folder. + - The provided test runner will only consider files matching the name pattern `**.test.ts`. + - You can create folders inside the `test` folder to structure your tests any way you want. + +## Go further + +- Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension). +- [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace. +- Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration). diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..5d55670 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,48 @@ +//@ts-check + +'use strict'; + +const path = require('path'); + +//@ts-check +/** @typedef {import('webpack').Configuration} WebpackConfig **/ + +/** @type WebpackConfig */ +const extensionConfig = { + target: 'node', // VS Code extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ + mode: 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production') + + entry: './src/extension.ts', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ + output: { + // the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/ + path: path.resolve(__dirname, 'dist'), + filename: 'extension.js', + libraryTarget: 'commonjs2', + }, + externals: { + vscode: 'commonjs vscode', // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/ + // modules added here also need to be added in the .vscodeignore file + }, + resolve: { + // support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader + extensions: ['.ts', '.js'], + }, + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + use: [ + { + loader: 'ts-loader', + }, + ], + }, + ], + }, + devtool: 'nosources-source-map', + infrastructureLogging: { + level: 'log', // enables logging required for problem matchers + }, +}; +module.exports = [extensionConfig]; From 742a57eee954c64cb36ab7712b27ecb8e0810e4f Mon Sep 17 00:00:00 2001 From: juh9870 <15922601+juh9870@users.noreply.github.com> Date: Mon, 26 Dec 2022 19:44:01 +0200 Subject: [PATCH 02/12] feat: formatted code --- CHANGELOG.md | 11 +- README.md | 7 +- language-configuration.json | 54 ++-- syntaxes/miniscript.tmLanguage.json | 450 ++++++++++++++-------------- 4 files changed, 268 insertions(+), 254 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f81975..84b7f31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,18 +1,27 @@ # Change Log + All notable changes to the "miniscript" extension will be documented in this file. Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. ## [Unreleased] + ### Fixed + - Fix `isa` operator highlighting; it is not called `__isa` in current MiniScript. + ## [0.0.3] - 2022-11-02 + ### Changed + - Rewrite/update README file to reflect the extension's new home and maintenance status. ## [0.0.2] - 2022-10-29 + ### Fixed + - Fix repository URL in package metadata. ## [0.0.1] - 2022-10-29 -- Initial public release on VS Marketplace. \ No newline at end of file + +- Initial public release on VS Marketplace. diff --git a/README.md b/README.md index cb28767..e5ad9ae 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,14 @@ This repository contains an extension for Microsoft's VS Code (=?|(?=?|(? Date: Mon, 26 Dec 2022 19:44:43 +0200 Subject: [PATCH 03/12] feat: added code folding for miniscript --- language-configuration.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/language-configuration.json b/language-configuration.json index 72ba527..e56e00e 100644 --- a/language-configuration.json +++ b/language-configuration.json @@ -24,5 +24,11 @@ ["(", ")"], ["\"", "\""], ["'", "'"] - ] + ], + "folding": { + "markers": { + "start": "^\\s*//\\s*#?region\\b", + "end": "^\\s*//\\s*#?end\\s+region\\b" + } + } } From b7dc3622266388909968dc95998b48821baae669 Mon Sep 17 00:00:00 2001 From: juh9870 <15922601+juh9870@users.noreply.github.com> Date: Mon, 26 Dec 2022 19:44:49 +0200 Subject: [PATCH 04/12] feat: added icon --- icons/Icon.png | Bin 0 -> 43370 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 icons/Icon.png diff --git a/icons/Icon.png b/icons/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a612e712a3ac0ab4cbd86a4e1d540e0f42a695cc GIT binary patch literal 43370 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 Date: Wed, 27 Sep 2023 23:59:55 +0300 Subject: [PATCH 05/12] fix: escape characters in strings (not supported by MiniScript) --- syntaxes/miniscript.tmLanguage.json | 36 ++--------------------------- 1 file changed, 2 insertions(+), 34 deletions(-) diff --git a/syntaxes/miniscript.tmLanguage.json b/syntaxes/miniscript.tmLanguage.json index ac13ec5..37db660 100644 --- a/syntaxes/miniscript.tmLanguage.json +++ b/syntaxes/miniscript.tmLanguage.json @@ -71,11 +71,7 @@ } }, "name": "string.quoted.single.miniscript", - "patterns": [ - { - "include": "#escaped_char" - } - ] + "patterns": [] }, { "begin": "\"", @@ -91,11 +87,7 @@ } }, "name": "string.quoted.double.miniscript", - "patterns": [ - { - "include": "#escaped_char" - } - ] + "patterns": [] }, { "begin": "(?<=\\.cdef)\\s*(\\[(=*)\\[)", @@ -199,29 +191,5 @@ } ], "repository": { - "escaped_char": { - "patterns": [ - { - "match": "\\\\[abfnrtvz\\\\\"'\\n]", - "name": "constant.character.escape.miniscript" - }, - { - "match": "\\\\\\d{1,3}", - "name": "constant.character.escape.byte.miniscript" - }, - { - "match": "\\\\x[0-9A-Fa-f][0-9A-Fa-f]", - "name": "constant.character.escape.byte.miniscript" - }, - { - "match": "\\\\u\\{[0-9A-Fa-f]+\\}", - "name": "constant.character.escape.unicode.miniscript" - }, - { - "match": "\\\\.", - "name": "invalid.illegal.character.escape.miniscript" - } - ] - } } } From 2658f5c94ec744d4fe42acc065accbfa263dc725 Mon Sep 17 00:00:00 2001 From: juh9870 Date: Thu, 28 Sep 2023 00:12:28 +0300 Subject: [PATCH 06/12] docs: description change --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 70389e7..b129219 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "miniscript", "displayName": "MiniScript", - "description": "MiniScript is a 3rd party scripting language asset for Unity", + "description": "MiniScript is a simple, elegant language for embedding or learning to program.", "version": "0.0.3", "publisher": "chaos95", "repository": "https://github.com/chaos95/miniscript-syntax", From 81108faf1d231ef0aa7187e613856d1c8b795183 Mon Sep 17 00:00:00 2001 From: juh9870 Date: Thu, 28 Sep 2023 00:13:51 +0300 Subject: [PATCH 07/12] misc: version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b129219..256499b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "miniscript", "displayName": "MiniScript", "description": "MiniScript is a simple, elegant language for embedding or learning to program.", - "version": "0.0.3", + "version": "0.0.4", "publisher": "chaos95", "repository": "https://github.com/chaos95/miniscript-syntax", "engines": { From 980443f09f587ae78f6cb6aa4db2eeb5aba9d5d6 Mon Sep 17 00:00:00 2001 From: juh9870 Date: Fri, 29 Sep 2023 23:01:37 +0300 Subject: [PATCH 08/12] fix: fixed broken formatting of new op assignments --- src/formatting/format.ts | 2 +- src/test/suite/extension.test.ts | 2 +- syntaxes/miniscript.tmLanguage.json | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/formatting/format.ts b/src/formatting/format.ts index 1dd5850..8ff4aba 100644 --- a/src/formatting/format.ts +++ b/src/formatting/format.ts @@ -227,7 +227,7 @@ function processCode(code: string) { // Space after comma and : .replace(/\s*([,])\s*/g, '$1 ') // Space around operators except for minus - .replace(/\s*([<>=!]=|[+*/%^<>=])\s*/g, ' $1 ') + .replace(/\s*([+*/%^<>=]=?|[!-]=)\s*/g, ' $1 ') // Minus followed by unary minus .replace(/--/g, '- -') // Unary minus diff --git a/src/test/suite/extension.test.ts b/src/test/suite/extension.test.ts index 1696a81..c9727d1 100644 --- a/src/test/suite/extension.test.ts +++ b/src/test/suite/extension.test.ts @@ -17,7 +17,7 @@ suite('Miniscript formatting Test Suite', () => { } const whitespaces = [' ', '\t']; - const ops = ['+', '- ', '*', '/', '%', '^', '>', '<', '=', '==', '!=', '<=', '>=']; + const ops = ['+', '- ', '*', '/', '%', '^', '>', '<', '=', '==', '!=', '<=', '>=', '*=', '/=', '+=', '-=', '^=']; const whiteOrEmptyArb = fc.stringOf(fc.constantFrom(...whitespaces), { minLength: 0 }); const whiteArb = fc.stringOf(fc.constantFrom(...whitespaces), { minLength: 1 }); const opsArb = fc.constantFrom(...ops); diff --git a/syntaxes/miniscript.tmLanguage.json b/syntaxes/miniscript.tmLanguage.json index 37db660..d5f9b1f 100644 --- a/syntaxes/miniscript.tmLanguage.json +++ b/syntaxes/miniscript.tmLanguage.json @@ -190,6 +190,5 @@ "name": "keyword.operator.miniscript" } ], - "repository": { - } + "repository": {} } From 24a8a7e0d29f35896869850b34a8e5b2b92daa4e Mon Sep 17 00:00:00 2001 From: juh9870 Date: Fri, 29 Sep 2023 23:05:56 +0300 Subject: [PATCH 09/12] feat: snippets --- package.json | 11 +++++++++-- snippets.json | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 snippets.json diff --git a/package.json b/package.json index 256499b..8748d7e 100644 --- a/package.json +++ b/package.json @@ -3,14 +3,15 @@ "displayName": "MiniScript", "description": "MiniScript is a simple, elegant language for embedding or learning to program.", "version": "0.0.4", - "publisher": "chaos95", + "publisher": "juh9870", "repository": "https://github.com/chaos95/miniscript-syntax", "engines": { "vscode": "^1.27.0" }, "categories": [ "Programming Languages", - "Formatters" + "Formatters", + "Snippets" ], "activationEvents": [ "onLanguage:miniscript" @@ -40,6 +41,12 @@ "scopeName": "source.miniscript", "path": "./syntaxes/miniscript.tmLanguage.json" } + ], + "snippets": [ + { + "language": "miniscript", + "path": "./snippets.json" + } ] }, "scripts": { diff --git a/snippets.json b/snippets.json new file mode 100644 index 0000000..b839424 --- /dev/null +++ b/snippets.json @@ -0,0 +1,18 @@ +{ + "function": { + "prefix": ["func", "function"], + "body": ["function($1)", "\t$2", "end function"] + }, + "while": { + "prefix": "while", + "body": ["while $1", "\t$2", "end while"] + }, + "if": { + "prefix": "if", + "body": ["if $1 then", "\t$2", "end if"] + }, + "for loop": { + "prefix": "for", + "body": ["for $1 in $2", "\t$3", "end for"] + } +} From 1f740d89a3ee8e6471d30f219071517f27d79d92 Mon Sep 17 00:00:00 2001 From: juh9870 Date: Wed, 18 Oct 2023 01:15:42 +0300 Subject: [PATCH 10/12] refactor: cleaned up syntax definition --- syntaxes/miniscript.tmLanguage.json | 88 +---------------------------- 1 file changed, 2 insertions(+), 86 deletions(-) diff --git a/syntaxes/miniscript.tmLanguage.json b/syntaxes/miniscript.tmLanguage.json index d5f9b1f..6cc4049 100644 --- a/syntaxes/miniscript.tmLanguage.json +++ b/syntaxes/miniscript.tmLanguage.json @@ -57,22 +57,6 @@ "match": "(? Date: Thu, 13 Jun 2024 17:19:14 +0300 Subject: [PATCH 11/12] feat: nixify --- default.nix | 27 +++++++++++++++++++++++++++ shell.nix | 7 +++++++ 2 files changed, 34 insertions(+) create mode 100644 default.nix create mode 100644 shell.nix diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..bfb047a --- /dev/null +++ b/default.nix @@ -0,0 +1,27 @@ +{ pkgs }: +pkgs.stdenv.mkDerivation { + name = "vscode-extension-miniscript-syntax"; + vscodeExtUniqueId = "miniscript-syntax"; + vscodeExtPublisher = "juh9870"; + version = "0.0.3"; + + buildInputs = with pkgs; [ + bash + nodejs_18 + nodePackages.pnpm + vsce + ]; + + src=./.; + + buildPhase = '' + pnpm i --frozen-lockfile + # vsce package --no-dependencies + ''; + + installPrefix = "share/vscode/extensions/miniscript-syntax"; + installPhase = '' + mkdir -p "$out/$installPrefix" + find . -mindepth 1 -maxdepth 1 | xargs -d'\n' mv -t "$out/$installPrefix/" + ''; +} diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..dd8ea1d --- /dev/null +++ b/shell.nix @@ -0,0 +1,7 @@ +{ pkgs ? import { } }: +pkgs.mkShell rec { + buildInputs = with pkgs; [ glib nss nspr ]; + + shellHook = ""; + LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath buildInputs}"; +} From b8298bf8bf483f016908e1afa9a8ad4db76c86e5 Mon Sep 17 00:00:00 2001 From: juh9870 Date: Thu, 13 Jun 2024 17:23:02 +0300 Subject: [PATCH 12/12] chore: updated lockfile --- pnpm-lock.yaml | 2030 +++++++++++++++++++++--------------------------- 1 file changed, 869 insertions(+), 1161 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 79687fe..5a47173 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,57 +1,75 @@ -lockfileVersion: 5.4 - -specifiers: - '@types/glob': ^8.0.0 - '@types/mocha': ^10.0.0 - '@types/node': 16.x - '@types/vscode': ^1.27.0 - '@typescript-eslint/eslint-plugin': ^5.42.0 - '@typescript-eslint/parser': ^5.42.0 - '@vscode/test-electron': ^2.2.0 - eslint: ^8.26.0 - eslint-config-prettier: ^8.5.0 - fast-check: ^3.3.0 - glob: ^8.0.3 - mocha: ^10.1.0 - prettier: ^2.8.0 - ts-loader: ^9.4.1 - typescript: ^4.8.4 - webpack: ^5.74.0 - webpack-cli: ^4.10.0 +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false devDependencies: - '@types/glob': 8.0.0 - '@types/mocha': 10.0.0 - '@types/node': 16.18.3 - '@types/vscode': 1.73.1 - '@typescript-eslint/eslint-plugin': 5.43.0_wze2rj5tow7zwqpgbdx2buoy3m - '@typescript-eslint/parser': 5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y - '@vscode/test-electron': 2.2.0 - eslint: 8.27.0 - eslint-config-prettier: 8.5.0_eslint@8.27.0 - fast-check: 3.3.0 - glob: 8.0.3 - mocha: 10.1.0 - prettier: 2.8.0 - ts-loader: 9.4.1_vfotqvx6lgcbf3upbs6hgaza4q - typescript: 4.9.3 - webpack: 5.75.0_webpack-cli@4.10.0 - webpack-cli: 4.10.0_webpack@5.75.0 + '@types/glob': + specifier: ^8.0.0 + version: 8.0.0 + '@types/mocha': + specifier: ^10.0.0 + version: 10.0.0 + '@types/node': + specifier: 16.x + version: 16.18.3 + '@types/vscode': + specifier: ^1.27.0 + version: 1.73.1 + '@typescript-eslint/eslint-plugin': + specifier: ^5.42.0 + version: 5.43.0(@typescript-eslint/parser@5.43.0)(eslint@8.27.0)(typescript@4.9.3) + '@typescript-eslint/parser': + specifier: ^5.42.0 + version: 5.43.0(eslint@8.27.0)(typescript@4.9.3) + '@vscode/test-electron': + specifier: ^2.2.0 + version: 2.2.0 + eslint: + specifier: ^8.26.0 + version: 8.27.0 + eslint-config-prettier: + specifier: ^8.5.0 + version: 8.5.0(eslint@8.27.0) + fast-check: + specifier: ^3.3.0 + version: 3.3.0 + glob: + specifier: ^8.0.3 + version: 8.0.3 + mocha: + specifier: ^10.1.0 + version: 10.1.0 + prettier: + specifier: ^2.8.0 + version: 2.8.0 + ts-loader: + specifier: ^9.4.1 + version: 9.4.1(typescript@4.9.3)(webpack@5.75.0) + typescript: + specifier: ^4.8.4 + version: 4.9.3 + webpack: + specifier: ^5.74.0 + version: 5.75.0(webpack-cli@4.10.0) + webpack-cli: + specifier: ^4.10.0 + version: 4.10.0(webpack@5.75.0) packages: - /@discoveryjs/json-ext/0.5.7: - resolution: - { integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== } - engines: { node: '>=10.0.0' } + + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} dev: true - /@eslint/eslintrc/1.3.3: - resolution: - { integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@eslint/eslintrc@1.3.3: + resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} + 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.4.1 globals: 13.17.0 ignore: 5.2.0 @@ -63,165 +81,141 @@ packages: - supports-color dev: true - /@humanwhocodes/config-array/0.11.7: - resolution: - { integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw== } - engines: { node: '>=10.10.0' } + /@humanwhocodes/config-array@0.11.7: + resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} + 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: true - /@humanwhocodes/module-importer/1.0.1: - resolution: - { integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== } - engines: { node: '>=12.22' } + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema/1.2.1: - resolution: - { integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== } + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@jridgewell/gen-mapping/0.3.2: - resolution: - { integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== } - engines: { node: '>=6.0.0' } + /@jridgewell/gen-mapping@0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.14 '@jridgewell/trace-mapping': 0.3.17 dev: true - /@jridgewell/resolve-uri/3.1.0: - resolution: - { integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== } - engines: { node: '>=6.0.0' } + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} dev: true - /@jridgewell/set-array/1.1.2: - resolution: - { integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== } - engines: { node: '>=6.0.0' } + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} dev: true - /@jridgewell/source-map/0.3.2: - resolution: - { integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== } + /@jridgewell/source-map@0.3.2: + resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} dependencies: '@jridgewell/gen-mapping': 0.3.2 '@jridgewell/trace-mapping': 0.3.17 dev: true - /@jridgewell/sourcemap-codec/1.4.14: - resolution: - { integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== } + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /@jridgewell/trace-mapping/0.3.17: - resolution: - { integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== } + /@jridgewell/trace-mapping@0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@nodelib/fs.scandir/2.1.5: - resolution: - { integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== } - engines: { node: '>= 8' } + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 dev: true - /@nodelib/fs.stat/2.0.5: - resolution: - { integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== } - engines: { node: '>= 8' } + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} dev: true - /@nodelib/fs.walk/1.2.8: - resolution: - { integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== } - engines: { node: '>= 8' } + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 dev: true - /@tootallnate/once/1.1.2: - resolution: - { integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== } - engines: { node: '>= 6' } + /@tootallnate/once@1.1.2: + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} dev: true - /@types/eslint-scope/3.7.4: - resolution: - { integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== } + /@types/eslint-scope@3.7.4: + resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: '@types/eslint': 8.4.10 '@types/estree': 0.0.51 dev: true - /@types/eslint/8.4.10: - resolution: - { integrity: sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw== } + /@types/eslint@8.4.10: + resolution: {integrity: sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==} dependencies: '@types/estree': 0.0.51 '@types/json-schema': 7.0.11 dev: true - /@types/estree/0.0.51: - resolution: - { integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== } + /@types/estree@0.0.51: + resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} dev: true - /@types/glob/8.0.0: - resolution: - { integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA== } + /@types/glob@8.0.0: + resolution: {integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==} dependencies: '@types/minimatch': 5.1.2 '@types/node': 16.18.3 dev: true - /@types/json-schema/7.0.11: - resolution: - { integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== } + /@types/json-schema@7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} dev: true - /@types/minimatch/5.1.2: - resolution: - { integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== } + /@types/minimatch@5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/mocha/10.0.0: - resolution: - { integrity: sha512-rADY+HtTOA52l9VZWtgQfn4p+UDVM2eDVkMZT1I6syp0YKxW2F9v+0pbRZLsvskhQv/vMb6ZfCay81GHbz5SHg== } + /@types/mocha@10.0.0: + resolution: {integrity: sha512-rADY+HtTOA52l9VZWtgQfn4p+UDVM2eDVkMZT1I6syp0YKxW2F9v+0pbRZLsvskhQv/vMb6ZfCay81GHbz5SHg==} dev: true - /@types/node/16.18.3: - resolution: - { integrity: sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg== } + /@types/node@16.18.3: + resolution: {integrity: sha512-jh6m0QUhIRcZpNv7Z/rpN+ZWXOicUUQbSoWks7Htkbb9IjFQj4kzcX/xFCkjstCj5flMsN8FiSvt+q+Tcs4Llg==} dev: true - /@types/semver/7.3.13: - resolution: - { integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== } + /@types/semver@7.3.13: + resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} dev: true - /@types/vscode/1.73.1: - resolution: - { integrity: sha512-eArfOrAoZVV+Ao9zQOCaFNaeXj4kTCD+bGS2gyNgIFZH9xVMuLMlRrEkhb22NyxycFWKV1UyTh03vhaVHmqVMg== } + /@types/vscode@1.73.1: + resolution: {integrity: sha512-eArfOrAoZVV+Ao9zQOCaFNaeXj4kTCD+bGS2gyNgIFZH9xVMuLMlRrEkhb22NyxycFWKV1UyTh03vhaVHmqVMg==} dev: true - /@typescript-eslint/eslint-plugin/5.43.0_wze2rj5tow7zwqpgbdx2buoy3m: - resolution: - { integrity: sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/eslint-plugin@5.43.0(@typescript-eslint/parser@5.43.0)(eslint@8.27.0)(typescript@4.9.3): + resolution: {integrity: sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -230,26 +224,25 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y + '@typescript-eslint/parser': 5.43.0(eslint@8.27.0)(typescript@4.9.3) '@typescript-eslint/scope-manager': 5.43.0 - '@typescript-eslint/type-utils': 5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y - '@typescript-eslint/utils': 5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y - debug: 4.3.4 + '@typescript-eslint/type-utils': 5.43.0(eslint@8.27.0)(typescript@4.9.3) + '@typescript-eslint/utils': 5.43.0(eslint@8.27.0)(typescript@4.9.3) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.27.0 ignore: 5.2.0 natural-compare-lite: 1.4.0 regexpp: 3.2.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.3 + tsutils: 3.21.0(typescript@4.9.3) typescript: 4.9.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y: - resolution: - { integrity: sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/parser@5.43.0(eslint@8.27.0)(typescript@4.9.3): + resolution: {integrity: sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 typescript: '*' @@ -259,27 +252,25 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.43.0 '@typescript-eslint/types': 5.43.0 - '@typescript-eslint/typescript-estree': 5.43.0_typescript@4.9.3 - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 5.43.0(typescript@4.9.3) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.27.0 typescript: 4.9.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/5.43.0: - resolution: - { integrity: sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/scope-manager@5.43.0: + resolution: {integrity: sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.43.0 '@typescript-eslint/visitor-keys': 5.43.0 dev: true - /@typescript-eslint/type-utils/5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y: - resolution: - { integrity: sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/type-utils@5.43.0(eslint@8.27.0)(typescript@4.9.3): + resolution: {integrity: sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' typescript: '*' @@ -287,26 +278,24 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.43.0_typescript@4.9.3 - '@typescript-eslint/utils': 5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 5.43.0(typescript@4.9.3) + '@typescript-eslint/utils': 5.43.0(eslint@8.27.0)(typescript@4.9.3) + debug: 4.3.4(supports-color@8.1.1) eslint: 8.27.0 - tsutils: 3.21.0_typescript@4.9.3 + tsutils: 3.21.0(typescript@4.9.3) typescript: 4.9.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types/5.43.0: - resolution: - { integrity: sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/types@5.43.0: + resolution: {integrity: sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/5.43.0_typescript@4.9.3: - resolution: - { integrity: sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/typescript-estree@5.43.0(typescript@4.9.3): + resolution: {integrity: sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -315,20 +304,19 @@ packages: dependencies: '@typescript-eslint/types': 5.43.0 '@typescript-eslint/visitor-keys': 5.43.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 + tsutils: 3.21.0(typescript@4.9.3) typescript: 4.9.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.43.0_e3uo4sehh4zr4i6m57mkkxxv7y: - resolution: - { integrity: sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/utils@5.43.0(eslint@8.27.0)(typescript@4.9.3): + resolution: {integrity: sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: @@ -336,29 +324,27 @@ packages: '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.43.0 '@typescript-eslint/types': 5.43.0 - '@typescript-eslint/typescript-estree': 5.43.0_typescript@4.9.3 + '@typescript-eslint/typescript-estree': 5.43.0(typescript@4.9.3) eslint: 8.27.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.27.0 + eslint-utils: 3.0.0(eslint@8.27.0) semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys/5.43.0: - resolution: - { integrity: sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /@typescript-eslint/visitor-keys@5.43.0: + resolution: {integrity: sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: '@typescript-eslint/types': 5.43.0 eslint-visitor-keys: 3.3.0 dev: true - /@vscode/test-electron/2.2.0: - resolution: - { integrity: sha512-xk2xrOTMG75/hxO8OVVZ+GErv9gmdZwOD8rEHV3ty3n1Joav2yFcfrmqD6Ukref27U13LEL8gVvSHzauGAK5nQ== } - engines: { node: '>=8.9.3' } + /@vscode/test-electron@2.2.0: + resolution: {integrity: sha512-xk2xrOTMG75/hxO8OVVZ+GErv9gmdZwOD8rEHV3ty3n1Joav2yFcfrmqD6Ukref27U13LEL8gVvSHzauGAK5nQ==} + engines: {node: '>=8.9.3'} dependencies: http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 @@ -368,46 +354,39 @@ packages: - supports-color dev: true - /@webassemblyjs/ast/1.11.1: - resolution: - { integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== } + /@webassemblyjs/ast@1.11.1: + resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} dependencies: '@webassemblyjs/helper-numbers': 1.11.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.1 dev: true - /@webassemblyjs/floating-point-hex-parser/1.11.1: - resolution: - { integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== } + /@webassemblyjs/floating-point-hex-parser@1.11.1: + resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} dev: true - /@webassemblyjs/helper-api-error/1.11.1: - resolution: - { integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== } + /@webassemblyjs/helper-api-error@1.11.1: + resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} dev: true - /@webassemblyjs/helper-buffer/1.11.1: - resolution: - { integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== } + /@webassemblyjs/helper-buffer@1.11.1: + resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} dev: true - /@webassemblyjs/helper-numbers/1.11.1: - resolution: - { integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== } + /@webassemblyjs/helper-numbers@1.11.1: + resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} dependencies: '@webassemblyjs/floating-point-hex-parser': 1.11.1 '@webassemblyjs/helper-api-error': 1.11.1 '@xtuc/long': 4.2.2 dev: true - /@webassemblyjs/helper-wasm-bytecode/1.11.1: - resolution: - { integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== } + /@webassemblyjs/helper-wasm-bytecode@1.11.1: + resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} dev: true - /@webassemblyjs/helper-wasm-section/1.11.1: - resolution: - { integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== } + /@webassemblyjs/helper-wasm-section@1.11.1: + resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} dependencies: '@webassemblyjs/ast': 1.11.1 '@webassemblyjs/helper-buffer': 1.11.1 @@ -415,28 +394,24 @@ packages: '@webassemblyjs/wasm-gen': 1.11.1 dev: true - /@webassemblyjs/ieee754/1.11.1: - resolution: - { integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== } + /@webassemblyjs/ieee754@1.11.1: + resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} dependencies: '@xtuc/ieee754': 1.2.0 dev: true - /@webassemblyjs/leb128/1.11.1: - resolution: - { integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== } + /@webassemblyjs/leb128@1.11.1: + resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} dependencies: '@xtuc/long': 4.2.2 dev: true - /@webassemblyjs/utf8/1.11.1: - resolution: - { integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== } + /@webassemblyjs/utf8@1.11.1: + resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} dev: true - /@webassemblyjs/wasm-edit/1.11.1: - resolution: - { integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== } + /@webassemblyjs/wasm-edit@1.11.1: + resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} dependencies: '@webassemblyjs/ast': 1.11.1 '@webassemblyjs/helper-buffer': 1.11.1 @@ -448,9 +423,8 @@ packages: '@webassemblyjs/wast-printer': 1.11.1 dev: true - /@webassemblyjs/wasm-gen/1.11.1: - resolution: - { integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== } + /@webassemblyjs/wasm-gen@1.11.1: + resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} dependencies: '@webassemblyjs/ast': 1.11.1 '@webassemblyjs/helper-wasm-bytecode': 1.11.1 @@ -459,9 +433,8 @@ packages: '@webassemblyjs/utf8': 1.11.1 dev: true - /@webassemblyjs/wasm-opt/1.11.1: - resolution: - { integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== } + /@webassemblyjs/wasm-opt@1.11.1: + resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} dependencies: '@webassemblyjs/ast': 1.11.1 '@webassemblyjs/helper-buffer': 1.11.1 @@ -469,9 +442,8 @@ packages: '@webassemblyjs/wasm-parser': 1.11.1 dev: true - /@webassemblyjs/wasm-parser/1.11.1: - resolution: - { integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== } + /@webassemblyjs/wasm-parser@1.11.1: + resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} dependencies: '@webassemblyjs/ast': 1.11.1 '@webassemblyjs/helper-api-error': 1.11.1 @@ -481,38 +453,34 @@ packages: '@webassemblyjs/utf8': 1.11.1 dev: true - /@webassemblyjs/wast-printer/1.11.1: - resolution: - { integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== } + /@webassemblyjs/wast-printer@1.11.1: + resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} dependencies: '@webassemblyjs/ast': 1.11.1 '@xtuc/long': 4.2.2 dev: true - /@webpack-cli/configtest/1.2.0_pda42hcaj7d62cr262fr632kue: - resolution: - { integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== } + /@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.75.0): + resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==} peerDependencies: webpack: 4.x.x || 5.x.x webpack-cli: 4.x.x dependencies: - webpack: 5.75.0_webpack-cli@4.10.0 - webpack-cli: 4.10.0_webpack@5.75.0 + webpack: 5.75.0(webpack-cli@4.10.0) + webpack-cli: 4.10.0(webpack@5.75.0) dev: true - /@webpack-cli/info/1.5.0_webpack-cli@4.10.0: - resolution: - { integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== } + /@webpack-cli/info@1.5.0(webpack-cli@4.10.0): + resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} peerDependencies: webpack-cli: 4.x.x dependencies: envinfo: 7.8.1 - webpack-cli: 4.10.0_webpack@5.75.0 + webpack-cli: 4.10.0(webpack@5.75.0) dev: true - /@webpack-cli/serve/1.7.0_webpack-cli@4.10.0: - resolution: - { integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== } + /@webpack-cli/serve@1.7.0(webpack-cli@4.10.0): + resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} peerDependencies: webpack-cli: 4.x.x webpack-dev-server: '*' @@ -520,66 +488,58 @@ packages: webpack-dev-server: optional: true dependencies: - webpack-cli: 4.10.0_webpack@5.75.0 + webpack-cli: 4.10.0(webpack@5.75.0) dev: true - /@xtuc/ieee754/1.2.0: - resolution: - { integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== } + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} dev: true - /@xtuc/long/4.2.2: - resolution: - { integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== } + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true - /acorn-import-assertions/1.8.0_acorn@8.8.1: - resolution: - { integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== } + /acorn-import-assertions@1.8.0(acorn@8.8.1): + resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} peerDependencies: acorn: ^8 dependencies: acorn: 8.8.1 dev: true - /acorn-jsx/5.3.2_acorn@8.8.1: - resolution: - { integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== } + /acorn-jsx@5.3.2(acorn@8.8.1): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.8.1 dev: true - /acorn/8.8.1: - resolution: - { integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== } - engines: { node: '>=0.4.0' } + /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: - resolution: - { integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== } - engines: { node: '>= 6.0.0' } + /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: true - /ajv-keywords/3.5.2_ajv@6.12.6: - resolution: - { integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== } + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: ajv: ^6.9.1 dependencies: ajv: 6.12.6 dev: true - /ajv/6.12.6: - resolution: - { integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== } + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 @@ -587,170 +547,145 @@ packages: uri-js: 4.4.1 dev: true - /ansi-colors/4.1.1: - resolution: - { integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== } - engines: { node: '>=6' } + /ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} dev: true - /ansi-regex/5.0.1: - resolution: - { integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== } - engines: { node: '>=8' } + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} dev: true - /ansi-styles/4.3.0: - resolution: - { integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== } - engines: { node: '>=8' } + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: true - /anymatch/3.1.2: - resolution: - { integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== } - engines: { node: '>= 8' } + /anymatch@3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 dev: true - /argparse/2.0.1: - resolution: - { integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== } + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /array-union/2.1.0: - resolution: - { integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== } - engines: { node: '>=8' } + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} dev: true - /balanced-match/1.0.2: - resolution: - { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== } + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /big-integer/1.6.51: - resolution: - { integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== } - engines: { node: '>=0.6' } + /big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} dev: true - /binary-extensions/2.2.0: - resolution: - { integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== } - engines: { node: '>=8' } + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} dev: true - /binary/0.3.0: - resolution: - { integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== } + /binary@0.3.0: + resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} dependencies: buffers: 0.1.1 chainsaw: 0.1.0 dev: true - /bluebird/3.4.7: - resolution: - { integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== } + /bluebird@3.4.7: + resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} dev: true - /brace-expansion/1.1.11: - resolution: - { integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== } + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: true - /brace-expansion/2.0.1: - resolution: - { integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== } + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 dev: true - /braces/3.0.2: - resolution: - { integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== } - engines: { node: '>=8' } + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: true - /browser-stdout/1.3.1: - resolution: - { integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== } + /browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} dev: true - /browserslist/4.21.4: - resolution: - { integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + /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.30001431 electron-to-chromium: 1.4.284 node-releases: 2.0.6 - update-browserslist-db: 1.0.10_browserslist@4.21.4 + update-browserslist-db: 1.0.10(browserslist@4.21.4) dev: true - /buffer-from/1.1.2: - resolution: - { integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== } + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /buffer-indexof-polyfill/1.0.2: - resolution: - { integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== } - engines: { node: '>=0.10' } + /buffer-indexof-polyfill@1.0.2: + resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==} + engines: {node: '>=0.10'} dev: true - /buffers/0.1.1: - resolution: - { integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== } - engines: { node: '>=0.2.0' } + /buffers@0.1.1: + resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} + engines: {node: '>=0.2.0'} dev: true - /callsites/3.1.0: - resolution: - { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== } - engines: { node: '>=6' } + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} dev: true - /camelcase/6.3.0: - resolution: - { integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== } - engines: { node: '>=10' } + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001431: - resolution: - { integrity: sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ== } + /caniuse-lite@1.0.30001431: + resolution: {integrity: sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==} dev: true - /chainsaw/0.1.0: - resolution: - { integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== } + /chainsaw@0.1.0: + resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} dependencies: traverse: 0.3.9 dev: true - /chalk/4.1.2: - resolution: - { integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== } - engines: { node: '>=10' } + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 dev: true - /chokidar/3.5.3: - resolution: - { integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== } - engines: { node: '>= 8.10.0' } + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.2 braces: 3.0.2 @@ -763,97 +698,72 @@ packages: fsevents: 2.3.2 dev: true - /chrome-trace-event/1.0.3: - resolution: - { integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== } - engines: { node: '>=6.0' } + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} dev: true - /cliui/7.0.4: - resolution: - { integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== } + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 dev: true - /clone-deep/4.0.1: - resolution: - { integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== } - engines: { node: '>=6' } + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 dev: true - /color-convert/2.0.1: - resolution: - { integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== } - engines: { node: '>=7.0.0' } + /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: true - /color-name/1.1.4: - resolution: - { integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== } + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true - /colorette/2.0.19: - resolution: - { integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== } + /colorette@2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: true - /commander/2.20.3: - resolution: - { integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== } + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true - /commander/7.2.0: - resolution: - { integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== } - engines: { node: '>= 10' } + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} dev: true - /concat-map/0.0.1: - resolution: - { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== } + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /core-util-is/1.0.3: - resolution: - { integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== } + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cross-spawn/7.0.3: - resolution: - { integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== } - engines: { node: '>= 8' } + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 dev: true - /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 - dev: true - - /debug/4.3.4_supports-color@8.1.1: - resolution: - { integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== } - engines: { node: '>=6.0' } + /debug@4.3.4(supports-color@8.1.1): + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -864,92 +774,78 @@ packages: supports-color: 8.1.1 dev: true - /decamelize/4.0.0: - resolution: - { integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== } - engines: { node: '>=10' } + /decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} dev: true - /deep-is/0.1.4: - resolution: - { integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== } + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /diff/5.0.0: - resolution: - { integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== } - engines: { node: '>=0.3.1' } + /diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} dev: true - /dir-glob/3.0.1: - resolution: - { integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== } - engines: { node: '>=8' } + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true - /doctrine/3.0.0: - resolution: - { integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== } - engines: { node: '>=6.0.0' } + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 dev: true - /duplexer2/0.1.4: - resolution: - { integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== } + /duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} dependencies: readable-stream: 2.3.7 dev: true - /electron-to-chromium/1.4.284: - resolution: - { integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA== } + /electron-to-chromium@1.4.284: + resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} dev: true - /emoji-regex/8.0.0: - resolution: - { integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== } + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /enhanced-resolve/5.10.0: - resolution: - { integrity: sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== } - engines: { node: '>=10.13.0' } + /enhanced-resolve@5.10.0: + resolution: {integrity: sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==} + engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.10 tapable: 2.2.1 dev: true - /envinfo/7.8.1: - resolution: - { integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== } - engines: { node: '>=4' } + /envinfo@7.8.1: + resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==} + engines: {node: '>=4'} hasBin: true dev: true - /es-module-lexer/0.9.3: - resolution: - { integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== } + /es-module-lexer@0.9.3: + resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} dev: true - /escalade/3.1.1: - resolution: - { integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== } - engines: { node: '>=6' } + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} dev: true - /escape-string-regexp/4.0.0: - resolution: - { integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== } - engines: { node: '>=10' } + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} dev: true - /eslint-config-prettier/8.5.0_eslint@8.27.0: - resolution: - { integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== } + /eslint-config-prettier@8.5.0(eslint@8.27.0): + resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -957,28 +853,25 @@ packages: eslint: 8.27.0 dev: true - /eslint-scope/5.1.1: - resolution: - { integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== } - engines: { node: '>=8.0.0' } + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 dev: true - /eslint-scope/7.1.1: - resolution: - { integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /eslint-scope@7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.27.0: - resolution: - { integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== } - engines: { node: ^10.0.0 || ^12.0.0 || >= 14.0.0 } + /eslint-utils@3.0.0(eslint@8.27.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: @@ -986,22 +879,19 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /eslint-visitor-keys/2.1.0: - resolution: - { integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== } - engines: { node: '>=10' } + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} dev: true - /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 } + /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: true - /eslint/8.27.0: - resolution: - { integrity: sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /eslint@8.27.0: + resolution: {integrity: sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: '@eslint/eslintrc': 1.3.3 @@ -1011,11 +901,11 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.27.0 + eslint-utils: 3.0.0(eslint@8.27.0) eslint-visitor-keys: 3.3.0 espree: 9.4.1 esquery: 1.4.0 @@ -1047,73 +937,63 @@ packages: - supports-color dev: true - /espree/9.4.1: - resolution: - { integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + /espree@9.4.1: + resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.1 - acorn-jsx: 5.3.2_acorn@8.8.1 + acorn-jsx: 5.3.2(acorn@8.8.1) eslint-visitor-keys: 3.3.0 dev: true - /esquery/1.4.0: - resolution: - { integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== } - engines: { node: '>=0.10' } + /esquery@1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 dev: true - /esrecurse/4.3.0: - resolution: - { integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== } - engines: { node: '>=4.0' } + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 dev: true - /estraverse/4.3.0: - resolution: - { integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== } - engines: { node: '>=4.0' } + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} dev: true - /estraverse/5.3.0: - resolution: - { integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== } - engines: { node: '>=4.0' } + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} dev: true - /esutils/2.0.3: - resolution: - { integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== } - engines: { node: '>=0.10.0' } + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} dev: true - /events/3.3.0: - resolution: - { integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== } - engines: { node: '>=0.8.x' } + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} dev: true - /fast-check/3.3.0: - resolution: - { integrity: sha512-Zu6tZ4g0T4H9Tiz3tdNPEHrSbuICj7yhdOM9RCZKNMkpjZ9avDV3ORklXaEmh4zvkX24/bGZ9DxKKqWfXttUqw== } - engines: { node: '>=8.0.0' } + /fast-check@3.3.0: + resolution: {integrity: sha512-Zu6tZ4g0T4H9Tiz3tdNPEHrSbuICj7yhdOM9RCZKNMkpjZ9avDV3ORklXaEmh4zvkX24/bGZ9DxKKqWfXttUqw==} + engines: {node: '>=8.0.0'} dependencies: pure-rand: 5.0.5 dev: true - /fast-deep-equal/3.1.3: - resolution: - { integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== } + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-glob/3.2.12: - resolution: - { integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== } - engines: { node: '>=8.6.0' } + /fast-glob@3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -1122,101 +1002,87 @@ packages: micromatch: 4.0.5 dev: true - /fast-json-stable-stringify/2.1.0: - resolution: - { integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== } + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fast-levenshtein/2.0.6: - resolution: - { integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== } + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastest-levenshtein/1.0.16: - resolution: - { integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== } - engines: { node: '>= 4.9.1' } + /fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} dev: true - /fastq/1.13.0: - resolution: - { integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== } + /fastq@1.13.0: + resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} dependencies: reusify: 1.0.4 dev: true - /file-entry-cache/6.0.1: - resolution: - { integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== } - engines: { node: ^10.12.0 || >=12.0.0 } + /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: true - /fill-range/7.0.1: - resolution: - { integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== } - engines: { node: '>=8' } + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: true - /find-up/4.1.0: - resolution: - { integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== } - engines: { node: '>=8' } + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} dependencies: locate-path: 5.0.0 path-exists: 4.0.0 dev: true - /find-up/5.0.0: - resolution: - { integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== } - engines: { node: '>=10' } + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 dev: true - /flat-cache/3.0.4: - resolution: - { integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== } - engines: { node: ^10.12.0 || >=12.0.0 } + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.2.7 rimraf: 3.0.2 dev: true - /flat/5.0.2: - resolution: - { integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== } + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true dev: true - /flatted/3.2.7: - resolution: - { integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== } + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /fs.realpath/1.0.0: - resolution: - { integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== } + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents/2.3.2: - resolution: - { integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + /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 dev: true optional: true - /fstream/1.0.12: - resolution: - { integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== } - engines: { node: '>=0.6' } + /fstream@1.0.12: + resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} + engines: {node: '>=0.6'} dependencies: graceful-fs: 4.2.10 inherits: 2.0.4 @@ -1224,41 +1090,35 @@ packages: rimraf: 2.7.1 dev: true - /function-bind/1.1.1: - resolution: - { integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== } + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /get-caller-file/2.0.5: - resolution: - { integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== } - engines: { node: 6.* || 8.* || >= 10.* } + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} dev: true - /glob-parent/5.1.2: - resolution: - { integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== } - engines: { node: '>= 6' } + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: true - /glob-parent/6.0.2: - resolution: - { integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== } - engines: { node: '>=10.13.0' } + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 dev: true - /glob-to-regexp/0.4.1: - resolution: - { integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== } + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} dev: true - /glob/7.2.0: - resolution: - { integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== } + /glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -1268,10 +1128,9 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob/8.0.3: - resolution: - { integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== } - engines: { node: '>=12' } + /glob@8.0.3: + resolution: {integrity: sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==} + engines: {node: '>=12'} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -1280,18 +1139,16 @@ packages: once: 1.4.0 dev: true - /globals/13.17.0: - resolution: - { integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== } - engines: { node: '>=8' } + /globals@13.17.0: + resolution: {integrity: sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globby/11.1.0: - resolution: - { integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== } - engines: { node: '>=10' } + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -1301,374 +1158,321 @@ packages: slash: 3.0.0 dev: true - /graceful-fs/4.2.10: - resolution: - { integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== } + /graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true - /grapheme-splitter/1.0.4: - resolution: - { integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== } + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /has-flag/4.0.0: - resolution: - { integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== } - engines: { node: '>=8' } + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} dev: true - /has/1.0.3: - resolution: - { integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== } - engines: { node: '>= 0.4.0' } + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 dev: true - /he/1.2.0: - resolution: - { integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== } + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true dev: true - /http-proxy-agent/4.0.1: - resolution: - { integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== } - engines: { node: '>= 6' } + /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: true - /https-proxy-agent/5.0.1: - resolution: - { integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== } - engines: { node: '>= 6' } + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + 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: true - /ignore/5.2.0: - resolution: - { integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== } - engines: { node: '>= 4' } + /ignore@5.2.0: + resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + engines: {node: '>= 4'} dev: true - /import-fresh/3.3.0: - resolution: - { integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== } - engines: { node: '>=6' } + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 dev: true - /import-local/3.1.0: - resolution: - { integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== } - engines: { node: '>=8' } + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} hasBin: true dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 dev: true - /imurmurhash/0.1.4: - resolution: - { integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== } - engines: { node: '>=0.8.19' } + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} dev: true - /inflight/1.0.6: - resolution: - { integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== } + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true - /inherits/2.0.4: - resolution: - { integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== } + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /interpret/2.2.0: - resolution: - { integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== } - engines: { node: '>= 0.10' } + /interpret@2.2.0: + resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} + engines: {node: '>= 0.10'} dev: true - /is-binary-path/2.1.0: - resolution: - { integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== } - engines: { node: '>=8' } + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 dev: true - /is-core-module/2.11.0: - resolution: - { integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== } + /is-core-module@2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} dependencies: has: 1.0.3 dev: true - /is-extglob/2.1.1: - resolution: - { integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== } - engines: { node: '>=0.10.0' } + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point/3.0.0: - resolution: - { integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== } - engines: { node: '>=8' } + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} dev: true - /is-glob/4.0.3: - resolution: - { integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== } - engines: { node: '>=0.10.0' } + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: true - /is-number/7.0.0: - resolution: - { integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== } - engines: { node: '>=0.12.0' } + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} dev: true - /is-path-inside/3.0.3: - resolution: - { integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== } - engines: { node: '>=8' } + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} dev: true - /is-plain-obj/2.1.0: - resolution: - { integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== } - engines: { node: '>=8' } + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} dev: true - /is-plain-object/2.0.4: - resolution: - { integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== } - engines: { node: '>=0.10.0' } + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 dev: true - /is-unicode-supported/0.1.0: - resolution: - { integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== } - engines: { node: '>=10' } + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} dev: true - /isarray/1.0.0: - resolution: - { integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== } + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true - /isexe/2.0.0: - resolution: - { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== } + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /isobject/3.0.1: - resolution: - { integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== } - engines: { node: '>=0.10.0' } + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} dev: true - /jest-worker/27.5.1: - resolution: - { integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== } - engines: { node: '>= 10.13.0' } + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} dependencies: '@types/node': 16.18.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /js-sdsl/4.1.5: - resolution: - { integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== } + /js-sdsl@4.1.5: + resolution: {integrity: sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==} dev: true - /js-yaml/4.1.0: - resolution: - { integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== } + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 dev: true - /json-parse-even-better-errors/2.3.1: - resolution: - { integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== } + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true - /json-schema-traverse/0.4.1: - resolution: - { integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== } + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true - /json-stable-stringify-without-jsonify/1.0.1: - resolution: - { integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== } + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /kind-of/6.0.3: - resolution: - { integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== } - engines: { node: '>=0.10.0' } + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} dev: true - /levn/0.4.1: - resolution: - { integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== } - engines: { node: '>= 0.8.0' } + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 dev: true - /listenercount/1.0.1: - resolution: - { integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== } + /listenercount@1.0.1: + resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==} dev: true - /loader-runner/4.3.0: - resolution: - { integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== } - engines: { node: '>=6.11.5' } + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} dev: true - /locate-path/5.0.0: - resolution: - { integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== } - engines: { node: '>=8' } + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} dependencies: p-locate: 4.1.0 dev: true - /locate-path/6.0.0: - resolution: - { integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== } - engines: { node: '>=10' } + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true - /lodash.merge/4.6.2: - resolution: - { integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== } + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /log-symbols/4.1.0: - resolution: - { integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== } - engines: { node: '>=10' } + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 dev: true - /lru-cache/6.0.0: - resolution: - { integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== } - engines: { node: '>=10' } + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: true - /merge-stream/2.0.0: - resolution: - { integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== } + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /merge2/1.4.1: - resolution: - { integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== } - engines: { node: '>= 8' } + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} dev: true - /micromatch/4.0.5: - resolution: - { integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== } - engines: { node: '>=8.6' } + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 dev: true - /mime-db/1.52.0: - resolution: - { integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== } - engines: { node: '>= 0.6' } + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} dev: true - /mime-types/2.1.35: - resolution: - { integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== } - engines: { node: '>= 0.6' } + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 dev: true - /minimatch/3.1.2: - resolution: - { integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== } + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true - /minimatch/5.0.1: - resolution: - { integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== } - engines: { node: '>=10' } + /minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: true - /minimatch/5.1.0: - resolution: - { integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== } - engines: { node: '>=10' } + /minimatch@5.1.0: + resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} + engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: true - /minimist/1.2.7: - resolution: - { integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== } + /minimist@1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: true - /mkdirp/0.5.6: - resolution: - { integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== } + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: minimist: 1.2.7 dev: true - /mocha/10.1.0: - resolution: - { integrity: sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg== } - engines: { node: '>= 14.0.0' } + /mocha@10.1.0: + resolution: {integrity: sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg==} + engines: {node: '>= 14.0.0'} hasBin: true dependencies: 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 @@ -1688,60 +1492,50 @@ packages: yargs-unparser: 2.0.0 dev: true - /ms/2.1.2: - resolution: - { integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== } + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /ms/2.1.3: - resolution: - { integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== } + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /nanoid/3.3.3: - resolution: - { integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + /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: true - /natural-compare-lite/1.4.0: - resolution: - { integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== } + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true - /natural-compare/1.4.0: - resolution: - { integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== } + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /neo-async/2.6.2: - resolution: - { integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== } + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /node-releases/2.0.6: - resolution: - { integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== } + /node-releases@2.0.6: + resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} dev: true - /normalize-path/3.0.0: - resolution: - { integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== } - engines: { node: '>=0.10.0' } + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} dev: true - /once/1.4.0: - resolution: - { integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== } + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true - /optionator/0.9.1: - resolution: - { integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== } - engines: { node: '>= 0.8.0' } + /optionator@0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 @@ -1751,144 +1545,122 @@ packages: word-wrap: 1.2.3 dev: true - /p-limit/2.3.0: - resolution: - { integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== } - engines: { node: '>=6' } + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: true - /p-limit/3.1.0: - resolution: - { integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== } - engines: { node: '>=10' } + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: true - /p-locate/4.1.0: - resolution: - { integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== } - engines: { node: '>=8' } + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} dependencies: p-limit: 2.3.0 dev: true - /p-locate/5.0.0: - resolution: - { integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== } - engines: { node: '>=10' } + /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: true - /p-try/2.2.0: - resolution: - { integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== } - engines: { node: '>=6' } + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} dev: true - /parent-module/1.0.1: - resolution: - { integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== } - engines: { node: '>=6' } + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 dev: true - /path-exists/4.0.0: - resolution: - { integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== } - engines: { node: '>=8' } + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} dev: true - /path-is-absolute/1.0.1: - resolution: - { integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== } - engines: { node: '>=0.10.0' } + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} dev: true - /path-key/3.1.1: - resolution: - { integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== } - engines: { node: '>=8' } + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} dev: true - /path-parse/1.0.7: - resolution: - { integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== } + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-type/4.0.0: - resolution: - { integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== } - engines: { node: '>=8' } + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} dev: true - /picocolors/1.0.0: - resolution: - { integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== } + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true - /picomatch/2.3.1: - resolution: - { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== } - engines: { node: '>=8.6' } + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} dev: true - /pkg-dir/4.2.0: - resolution: - { integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== } - engines: { node: '>=8' } + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} dependencies: find-up: 4.1.0 dev: true - /prelude-ls/1.2.1: - resolution: - { integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== } - engines: { node: '>= 0.8.0' } + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} dev: true - /prettier/2.8.0: - resolution: - { integrity: sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA== } - engines: { node: '>=10.13.0' } + /prettier@2.8.0: + resolution: {integrity: sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==} + engines: {node: '>=10.13.0'} hasBin: true dev: true - /process-nextick-args/2.0.1: - resolution: - { integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== } + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /punycode/2.1.1: - resolution: - { integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== } - engines: { node: '>=6' } + /punycode@2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} dev: true - /pure-rand/5.0.5: - resolution: - { integrity: sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw== } + /pure-rand@5.0.5: + resolution: {integrity: sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw==} dev: true - /queue-microtask/1.2.3: - resolution: - { integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== } + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /randombytes/2.1.0: - resolution: - { integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== } + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 dev: true - /readable-stream/2.3.7: - resolution: - { integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== } + /readable-stream@2.3.7: + resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -1899,57 +1671,49 @@ packages: util-deprecate: 1.0.2 dev: true - /readdirp/3.6.0: - resolution: - { integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== } - engines: { node: '>=8.10.0' } + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 dev: true - /rechoir/0.7.1: - resolution: - { integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== } - engines: { node: '>= 0.10' } + /rechoir@0.7.1: + resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} + engines: {node: '>= 0.10'} dependencies: resolve: 1.22.1 dev: true - /regexpp/3.2.0: - resolution: - { integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== } - engines: { node: '>=8' } + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} dev: true - /require-directory/2.1.1: - resolution: - { integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== } - engines: { node: '>=0.10.0' } + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} dev: true - /resolve-cwd/3.0.0: - resolution: - { integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== } - engines: { node: '>=8' } + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 dev: true - /resolve-from/4.0.0: - resolution: - { integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== } - engines: { node: '>=4' } + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} dev: true - /resolve-from/5.0.0: - resolution: - { integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== } - engines: { node: '>=8' } + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} dev: true - /resolve/1.22.1: - resolution: - { integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== } + /resolve@1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true dependencies: is-core-module: 2.11.0 @@ -1957,181 +1721,156 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /reusify/1.0.4: - resolution: - { integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== } - engines: { iojs: '>=1.0.0', node: '>=0.10.0' } + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf/2.7.1: - resolution: - { integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== } + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: glob: 7.2.0 dev: true - /rimraf/3.0.2: - resolution: - { integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== } + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.0 dev: true - /run-parallel/1.2.0: - resolution: - { integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== } + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true - /safe-buffer/5.1.2: - resolution: - { integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== } + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true - /safe-buffer/5.2.1: - resolution: - { integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== } + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: true - /schema-utils/3.1.1: - resolution: - { integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== } - engines: { node: '>= 10.13.0' } + /schema-utils@3.1.1: + resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} + engines: {node: '>= 10.13.0'} dependencies: '@types/json-schema': 7.0.11 ajv: 6.12.6 - ajv-keywords: 3.5.2_ajv@6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) dev: true - /semver/7.3.8: - resolution: - { integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== } - engines: { node: '>=10' } + /semver@7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 dev: true - /serialize-javascript/6.0.0: - resolution: - { integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== } + /serialize-javascript@6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 dev: true - /setimmediate/1.0.5: - resolution: - { integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== } + /setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: true - /shallow-clone/3.0.1: - resolution: - { integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== } - engines: { node: '>=8' } + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} dependencies: kind-of: 6.0.3 dev: true - /shebang-command/2.0.0: - resolution: - { integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== } - engines: { node: '>=8' } + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: true - /shebang-regex/3.0.0: - resolution: - { integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== } - engines: { node: '>=8' } + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} dev: true - /slash/3.0.0: - resolution: - { integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== } - engines: { node: '>=8' } + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} dev: true - /source-map-support/0.5.21: - resolution: - { integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== } + /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.6.1: - resolution: - { integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== } - engines: { node: '>=0.10.0' } + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} dev: true - /string-width/4.2.3: - resolution: - { integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== } - engines: { node: '>=8' } + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 dev: true - /string_decoder/1.1.1: - resolution: - { integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== } + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 dev: true - /strip-ansi/6.0.1: - resolution: - { integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== } - engines: { node: '>=8' } + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: true - /strip-json-comments/3.1.1: - resolution: - { integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== } - engines: { node: '>=8' } + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} dev: true - /supports-color/7.2.0: - resolution: - { integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== } - engines: { node: '>=8' } + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: true - /supports-color/8.1.1: - resolution: - { integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== } - engines: { node: '>=10' } + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} dependencies: has-flag: 4.0.0 dev: true - /supports-preserve-symlinks-flag/1.0.0: - resolution: - { integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== } - engines: { node: '>= 0.4' } + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} dev: true - /tapable/2.2.1: - resolution: - { integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== } - engines: { node: '>=6' } + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} dev: true - /terser-webpack-plugin/5.3.6_webpack@5.75.0: - resolution: - { integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== } - engines: { node: '>= 10.13.0' } + /terser-webpack-plugin@5.3.6(webpack@5.75.0): + resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} + engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' esbuild: '*' @@ -2150,13 +1889,12 @@ packages: schema-utils: 3.1.1 serialize-javascript: 6.0.0 terser: 5.15.1 - webpack: 5.75.0_webpack-cli@4.10.0 + webpack: 5.75.0(webpack-cli@4.10.0) dev: true - /terser/5.15.1: - resolution: - { integrity: sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw== } - engines: { node: '>=10' } + /terser@5.15.1: + resolution: {integrity: sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==} + engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.2 @@ -2165,28 +1903,24 @@ packages: source-map-support: 0.5.21 dev: true - /text-table/0.2.0: - resolution: - { integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== } + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /to-regex-range/5.0.1: - resolution: - { integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== } - engines: { node: '>=8.0' } + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: true - /traverse/0.3.9: - resolution: - { integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== } + /traverse@0.3.9: + resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} dev: true - /ts-loader/9.4.1_vfotqvx6lgcbf3upbs6hgaza4q: - resolution: - { integrity: sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw== } - engines: { node: '>=12.0.0' } + /ts-loader@9.4.1(typescript@4.9.3)(webpack@5.75.0): + resolution: {integrity: sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==} + engines: {node: '>=12.0.0'} peerDependencies: typescript: '*' webpack: ^5.0.0 @@ -2196,18 +1930,16 @@ packages: micromatch: 4.0.5 semver: 7.3.8 typescript: 4.9.3 - webpack: 5.75.0_webpack-cli@4.10.0 + webpack: 5.75.0(webpack-cli@4.10.0) dev: true - /tslib/1.14.1: - resolution: - { integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== } + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tsutils/3.21.0_typescript@4.9.3: - resolution: - { integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== } - engines: { node: '>= 6' } + /tsutils@3.21.0(typescript@4.9.3): + 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: @@ -2215,30 +1947,26 @@ packages: typescript: 4.9.3 dev: true - /type-check/0.4.0: - resolution: - { integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== } - engines: { node: '>= 0.8.0' } + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 dev: true - /type-fest/0.20.2: - resolution: - { integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== } - engines: { node: '>=10' } + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} dev: true - /typescript/4.9.3: - resolution: - { integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== } - engines: { node: '>=4.2.0' } + /typescript@4.9.3: + resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} + engines: {node: '>=4.2.0'} hasBin: true dev: true - /unzipper/0.10.11: - resolution: - { integrity: sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== } + /unzipper@0.10.11: + resolution: {integrity: sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==} dependencies: big-integer: 1.6.51 binary: 0.3.0 @@ -2252,9 +1980,8 @@ packages: setimmediate: 1.0.5 dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.4: - resolution: - { integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== } + /update-browserslist-db@1.0.10(browserslist@4.21.4): + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -2264,31 +1991,27 @@ packages: picocolors: 1.0.0 dev: true - /uri-js/4.4.1: - resolution: - { integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== } + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.1.1 dev: true - /util-deprecate/1.0.2: - resolution: - { integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== } + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /watchpack/2.4.0: - resolution: - { integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== } - engines: { node: '>=10.13.0' } + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.10 dev: true - /webpack-cli/4.10.0_webpack@5.75.0: - resolution: - { integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== } - engines: { node: '>=10.13.0' } + /webpack-cli@4.10.0(webpack@5.75.0): + resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==} + engines: {node: '>=10.13.0'} hasBin: true peerDependencies: '@webpack-cli/generators': '*' @@ -2307,9 +2030,9 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0_pda42hcaj7d62cr262fr632kue - '@webpack-cli/info': 1.5.0_webpack-cli@4.10.0 - '@webpack-cli/serve': 1.7.0_webpack-cli@4.10.0 + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.75.0) + '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0) colorette: 2.0.19 commander: 7.2.0 cross-spawn: 7.0.3 @@ -2317,29 +2040,26 @@ packages: import-local: 3.1.0 interpret: 2.2.0 rechoir: 0.7.1 - webpack: 5.75.0_webpack-cli@4.10.0 + webpack: 5.75.0(webpack-cli@4.10.0) webpack-merge: 5.8.0 dev: true - /webpack-merge/5.8.0: - resolution: - { integrity: sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== } - engines: { node: '>=10.0.0' } + /webpack-merge@5.8.0: + resolution: {integrity: sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==} + engines: {node: '>=10.0.0'} dependencies: clone-deep: 4.0.1 wildcard: 2.0.0 dev: true - /webpack-sources/3.2.3: - resolution: - { integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== } - engines: { node: '>=10.13.0' } + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} dev: true - /webpack/5.75.0_webpack-cli@4.10.0: - resolution: - { integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== } - engines: { node: '>=10.13.0' } + /webpack@5.75.0(webpack-cli@4.10.0): + resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==} + engines: {node: '>=10.13.0'} hasBin: true peerDependencies: webpack-cli: '*' @@ -2353,7 +2073,7 @@ packages: '@webassemblyjs/wasm-edit': 1.11.1 '@webassemblyjs/wasm-parser': 1.11.1 acorn: 8.8.1 - acorn-import-assertions: 1.8.0_acorn@8.8.1 + acorn-import-assertions: 1.8.0(acorn@8.8.1) browserslist: 4.21.4 chrome-trace-event: 1.0.3 enhanced-resolve: 5.10.0 @@ -2368,9 +2088,9 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.3.6_webpack@5.75.0 + terser-webpack-plugin: 5.3.6(webpack@5.75.0) watchpack: 2.4.0 - webpack-cli: 4.10.0_webpack@5.75.0 + webpack-cli: 4.10.0(webpack@5.75.0) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -2378,67 +2098,57 @@ packages: - uglify-js dev: true - /which/2.0.2: - resolution: - { integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== } - engines: { node: '>= 8' } + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} hasBin: true dependencies: isexe: 2.0.0 dev: true - /wildcard/2.0.0: - resolution: - { integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== } + /wildcard@2.0.0: + resolution: {integrity: sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==} dev: true - /word-wrap/1.2.3: - resolution: - { integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== } - engines: { node: '>=0.10.0' } + /word-wrap@1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} dev: true - /workerpool/6.2.1: - resolution: - { integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== } + /workerpool@6.2.1: + resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} dev: true - /wrap-ansi/7.0.0: - resolution: - { integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== } - engines: { node: '>=10' } + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 dev: true - /wrappy/1.0.2: - resolution: - { integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== } + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /y18n/5.0.8: - resolution: - { integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== } - engines: { node: '>=10' } + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} dev: true - /yallist/4.0.0: - resolution: - { integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== } + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yargs-parser/20.2.4: - resolution: - { integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== } - engines: { node: '>=10' } + /yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} dev: true - /yargs-unparser/2.0.0: - resolution: - { integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== } - engines: { node: '>=10' } + /yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} dependencies: camelcase: 6.3.0 decamelize: 4.0.0 @@ -2446,10 +2156,9 @@ packages: is-plain-obj: 2.1.0 dev: true - /yargs/16.2.0: - resolution: - { integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== } - engines: { node: '>=10' } + /yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} dependencies: cliui: 7.0.4 escalade: 3.1.1 @@ -2460,8 +2169,7 @@ packages: yargs-parser: 20.2.4 dev: true - /yocto-queue/0.1.0: - resolution: - { integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== } - engines: { node: '>=10' } + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} dev: true