From 964b58627a2071ee4e13029dc09e2e2743bdda12 Mon Sep 17 00:00:00 2001 From: Kun Ren Date: Sat, 18 May 2024 08:38:15 +0800 Subject: [PATCH 01/74] release 2.8.4 --- CHANGELOG.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7be027ea..e91ceb6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ You can check all of our changes from [Release Page](https://github.com/REditorSupport/vscode-R/releases) +## [2.8.4](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.4) + +* Upgrade dependencies + ## [2.8.3](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.3) Enhancements: diff --git a/package.json b/package.json index 7155d098..fb6465b2 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "r", "displayName": "R", "description": "R Extension for Visual Studio Code", - "version": "2.8.3", + "version": "2.8.4", "author": "REditorSupport", "license": "SEE LICENSE IN LICENSE", "publisher": "REditorSupport", From b196c7d8257a04509de68a3bfe7acf9c1f2fba85 Mon Sep 17 00:00:00 2001 From: "Elian H. Thiele-Evans" <60372411+ElianHugh@users.noreply.github.com> Date: Thu, 30 May 2024 18:45:03 +1000 Subject: [PATCH 02/74] Don't close stale issues (#1522) - Change the github workflow to not autoclose issues, instead just marking issues as stale for manual review --- .github/workflows/issues.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/issues.yml b/.github/workflows/issues.yml index e86c359f..dc0d825d 100644 --- a/.github/workflows/issues.yml +++ b/.github/workflows/issues.yml @@ -14,11 +14,11 @@ jobs: - uses: actions/stale@v5 with: days-before-issue-stale: 365 - days-before-issue-close: 14 + days-before-issue-close: -1 stale-issue-label: "stale" stale-issue-message: "This issue is stale because it has been open for 365 days with no activity." close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale." exempt-issue-labels: "help wanted,engineering" days-before-pr-stale: -1 # change if we want to auto close old PRs days-before-pr-close: -1 - repo-token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + repo-token: ${{ secrets.GITHUB_TOKEN }} From 1ce0c09b3cab9a1131557bfd7af4fedaeeaf4f96 Mon Sep 17 00:00:00 2001 From: Manuel <53863351+ManuelHentschel@users.noreply.github.com> Date: Sun, 8 Sep 2024 11:41:31 +0200 Subject: [PATCH 03/74] Do not mark issues as stale --- .github/workflows/issues.yml | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 .github/workflows/issues.yml diff --git a/.github/workflows/issues.yml b/.github/workflows/issues.yml deleted file mode 100644 index dc0d825d..00000000 --- a/.github/workflows/issues.yml +++ /dev/null @@ -1,24 +0,0 @@ -# taken from https://docs.github.com/en/actions/managing-issues-and-pull-requests/closing-inactive-issues -name: Close inactive issues -on: - schedule: - - cron: "30 1 * * *" # "workflow will run every day at 1:30 UTC" - -jobs: - close-issues: - runs-on: ubuntu-latest - permissions: - issues: write - pull-requests: write - steps: - - uses: actions/stale@v5 - with: - days-before-issue-stale: 365 - days-before-issue-close: -1 - stale-issue-label: "stale" - stale-issue-message: "This issue is stale because it has been open for 365 days with no activity." - close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale." - exempt-issue-labels: "help wanted,engineering" - days-before-pr-stale: -1 # change if we want to auto close old PRs - days-before-pr-close: -1 - repo-token: ${{ secrets.GITHUB_TOKEN }} From c937cdd39982995d8ee1f1125919f7c2d150b35d Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Thu, 12 Sep 2024 10:18:53 -0700 Subject: [PATCH 04/74] Rsyntax (#1560) * Bump actions/download-artifact from 3 to 4.1.7 in /.github/workflows Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.1.7. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v3...v4.1.7) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production ... Signed-off-by: dependabot[bot] * Remove variable.other.r To be more consistant with other languages such as python * Pin httpgd 0.1.6 0.1.7 doesn't pass npm pretest --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/pre-release.yml | 2 +- .github/workflows/release.yml | 2 +- .vscode/settings.json | 2 +- package-lock.json | 4821 +++++++++++++++++++++++++++++ package.json | 2 +- syntax/r.json | 8 - tsconfig.json | 2 +- yarn.lock | 3086 ------------------ 8 files changed, 4826 insertions(+), 3099 deletions(-) create mode 100644 package-lock.json delete mode 100644 yarn.lock diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index 4da4ceba..a4c8b13d 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -38,7 +38,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: path: "artifacts/" - name: Upload artifacts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b06e2c83..b7c90e26 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,7 +35,7 @@ jobs: steps: - name: Download artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4.1.7 with: path: "artifacts/" - name: Get version from tag diff --git a/.vscode/settings.json b/.vscode/settings.json index 6bff3e86..d39fbe69 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -9,6 +9,6 @@ "typescript.tsdk": "./node_modules/typescript/lib", // we want to use the TS server from our node_modules folder to control its version "r.lsp.diagnostics": true, "editor.codeActionsOnSave": { - "source.fixAll.markdownlint": true + "source.fixAll.markdownlint": "explicit" } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..71635a11 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4821 @@ +{ + "name": "r", + "version": "2.8.4", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "r", + "version": "2.8.4", + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "ag-grid-community": "^31.3.2", + "cheerio": "1.0.0-rc.12", + "crypto": "^1.0.1", + "ejs": "^3.1.10", + "fs-extra": "^10.0.0", + "highlight.js": "^11.9.0", + "httpgd": "0.1.6", + "jquery": "^3.7.1", + "jquery.json-viewer": "^1.5.0", + "js-yaml": "^4.1.0", + "node-fetch": "^2.6.7", + "vscode-languageclient": "^9.0.1", + "vsls": "^1.0.4753", + "winreg": "^1.2.4" + }, + "devDependencies": { + "@types/cheerio": "^0.22.29", + "@types/ejs": "^3.0.6", + "@types/express": "^4.17.12", + "@types/fs-extra": "^9.0.11", + "@types/glob": "^8.0.0", + "@types/highlight.js": "^10.1.0", + "@types/js-yaml": "^4.0.2", + "@types/mocha": "^8.2.2", + "@types/node": "^18.17.1", + "@types/node-fetch": "^2.5.10", + "@types/sinon": "^10.0.13", + "@types/vscode": "^1.75.0", + "@types/winreg": "^1.2.31", + "@typescript-eslint/eslint-plugin": "^5.30.0", + "@typescript-eslint/parser": "^5.30.0", + "@vscode/test-electron": "^2.2.3", + "copy-webpack-plugin": "^9.0.0", + "devreplay": "^1.9.31", + "eslint": "^7.28.0", + "eslint-plugin-jsdoc": "^35.1.3", + "mocha": "^9.1.0", + "sinon": "^15.0.1", + "ts-loader": "^9.3.1", + "typescript": "^4.7.2", + "webpack": "^5.76.0", + "webpack-cli": "^4.7.2" + }, + "engines": { + "vscode": "^1.75.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.9.0-alpha.1", + "dev": true, + "license": "MIT", + "dependencies": { + "comment-parser": "1.1.6-beta.0", + "esquery": "^1.4.0", + "jsdoc-type-pratt-parser": "1.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@es-joy/jsdoccomment/node_modules/jsdoc-type-pratt-parser": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "3.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@microsoft/servicehub-framework": { + "version": "2.6.74", + "license": "LICENSE.txt", + "dependencies": { + "await-semaphore": "^0.1.3", + "msgpack-lite": "^0.1.26", + "nerdbank-streams": "2.5.60", + "strict-event-emitter-types": "^2.0.0", + "vscode-jsonrpc": "^4.0.0" + } + }, + "node_modules/@microsoft/servicehub-framework/node_modules/vscode-jsonrpc": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8.0.0 || >=10.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons/node_modules/type-detect": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@sinonjs/samsam/node_modules/type-detect": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.3", + "dev": true, + "license": "(Unlicense OR Apache-2.0)" + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/body-parser/node_modules/@types/node": { + "version": "22.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/body-parser/node_modules/undici-types": { + "version": "6.19.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cheerio": { + "version": "0.22.35", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cheerio/node_modules/@types/node": { + "version": "22.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/cheerio/node_modules/undici-types": { + "version": "6.19.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect/node_modules/@types/node": { + "version": "22.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/connect/node_modules/undici-types": { + "version": "6.19.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ejs": { + "version": "3.1.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.21", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/express-serve-static-core/node_modules/@types/node": { + "version": "22.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/express-serve-static-core/node_modules/undici-types": { + "version": "6.19.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/fs-extra/node_modules/@types/node": { + "version": "22.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/fs-extra/node_modules/undici-types": { + "version": "6.19.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "*" + } + }, + "node_modules/@types/highlight.js": { + "version": "10.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "highlight.js": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/js-yaml": { + "version": "4.0.9", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mocha": { + "version": "8.2.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "18.19.50", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.11", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/node-fetch/node_modules/@types/node": { + "version": "22.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/node-fetch/node_modules/undici-types": { + "version": "6.19.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/send/node_modules/@types/node": { + "version": "22.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/send/node_modules/undici-types": { + "version": "6.19.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/serve-static/node_modules/@types/node": { + "version": "22.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/serve-static/node_modules/undici-types": { + "version": "6.19.8", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/sinon": { + "version": "10.0.20", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/vscode": { + "version": "1.93.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/winreg": { + "version": "1.2.36", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws/node_modules/@types/node": { + "version": "22.5.4", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/ws/node_modules/undici-types": { + "version": "6.19.8", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/promise-all-settled": { + "version": "1.1.2", + "dev": true, + "license": "ISC" + }, + "node_modules/@vscode/test-electron": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "jszip": "^3.10.1", + "ora": "^7.0.1", + "semver": "^7.6.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/acorn": { + "version": "8.12.1", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/ag-grid-community": { + "version": "31.3.4", + "license": "MIT" + }, + "node_modules/agent-base": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/await-semaphore": { + "version": "0.1.3", + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bl/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bl/node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "dev": true, + "license": "ISC" + }, + "node_modules/browserslist": { + "version": "4.23.3", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cancellationtoken": { + "version": "2.2.0", + "license": "MIT" + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001658", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/caught": { + "version": "0.1.3", + "license": "MIT" + }, + "node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/comment-parser": { + "version": "1.1.6-beta.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/copy-webpack-plugin": { + "version": "9.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-fetch": { + "version": "3.1.8", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto": { + "version": "1.0.1", + "license": "ISC" + }, + "node_modules/css-select": { + "version": "5.1.0", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/devreplay": { + "version": "1.12.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "chalk": "4.1.2", + "commander": "^9.3.0", + "diff": "5.1.0", + "lodash": "^4.17.21", + "text-table": "^0.2.0", + "tslib": "^2.4.0", + "v8-compile-cache": "^2.3.0" + }, + "bin": { + "devreplay": "bin/devreplay" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/devreplay/node_modules/@babel/code-frame": { + "version": "7.24.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/devreplay/node_modules/commander": { + "version": "9.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/devreplay/node_modules/diff": { + "version": "5.1.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.18", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/enquirer/node_modules/ansi-colors": { + "version": "4.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.13.0", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "dev": true, + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "35.5.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@es-joy/jsdoccomment": "0.9.0-alpha.1", + "comment-parser": "1.1.6-beta.0", + "debug": "^4.3.2", + "esquery": "^1.4.0", + "jsdoc-type-pratt-parser": "^1.0.4", + "lodash": "^4.17.21", + "regextras": "^0.8.0", + "semver": "^7.3.5", + "spdx-expression-parse": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "3.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-lite": { + "version": "0.1.3", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "dev": true, + "license": "ISC" + }, + "node_modules/form-data": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/globals": { + "version": "13.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/growl": { + "version": "1.10.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.x" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "11.10.0", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/httpgd": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/httpgd/-/httpgd-0.1.6.tgz", + "integrity": "sha512-HyozzYjOq+rGi3P+YZtLnvBPAWvdn2tiCfUuB4tSUradRtOoKAvwcZ+yvOYxusMzaZIGkf02s/BTkcDzj+XS/w==", + "license": "MIT", + "dependencies": { + "@types/ws": "^8.2.0", + "cross-fetch": "^3.1.4", + "isomorphic-ws": "^4.0.1", + "ws": "^8.2.3" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "4.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/int64-buffer": { + "version": "0.1.10", + "license": "MIT" + }, + "node_modules/interpret": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/jake": { + "version": "10.9.2", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/@types/node": { + "version": "22.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-worker/node_modules/undici-types": { + "version": "6.19.8", + "dev": true, + "license": "MIT" + }, + "node_modules/jquery": { + "version": "3.7.1", + "license": "MIT" + }, + "node_modules/jquery.json-viewer": { + "version": "1.5.0", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "dev": true, + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/just-extend": { + "version": "6.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha": { + "version": "9.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.3", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "4.2.1", + "ms": "2.1.3", + "nanoid": "3.3.1", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "which": "2.0.2", + "workerpool": "6.2.0", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "4.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "4.2.1", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/serialize-javascript": { + "version": "6.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/msgpack-lite": { + "version": "0.1.26", + "license": "MIT", + "dependencies": { + "event-lite": "^0.1.1", + "ieee754": "^1.1.8", + "int64-buffer": "^0.1.9", + "isarray": "^1.0.0" + }, + "bin": { + "msgpack": "bin/msgpack" + } + }, + "node_modules/nanoid": { + "version": "3.3.1", + "dev": true, + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/neo-async": { + "version": "2.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/nerdbank-streams": { + "version": "2.5.60", + "license": "MIT", + "dependencies": { + "await-semaphore": "^0.1.3", + "cancellationtoken": "^2.0.1", + "caught": "^0.1.3", + "msgpack-lite": "^0.1.26" + } + }, + "node_modules/nise": { + "version": "5.1.9", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + } + }, + "node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "11.3.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/once": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.3.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "string-width": "^6.1.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/emoji-regex": { + "version": "10.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ora/node_modules/log-symbols": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/string-width": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^10.2.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "dev": true, + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "license": "MIT", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "6.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randombytes/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regextras": { + "version": "0.8.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.14" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/sinon": { + "version": "15.2.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^10.3.0", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.4", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/node_modules/diff": { + "version": "5.2.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.20", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stdin-discarder": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strict-event-emitter-types": { + "version": "2.0.0", + "license": "ISC" + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/table": { + "version": "6.8.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.17.1", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.31.6", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "license": "MIT" + }, + "node_modules/ts-loader": { + "version": "9.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "dev": true, + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "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" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "9.0.1", + "license": "MIT", + "dependencies": { + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.5" + }, + "engines": { + "vscode": "^1.82.0" + } + }, + "node_modules/vscode-languageclient/node_modules/brace-expansion": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/vscode-languageclient/node_modules/minimatch": { + "version": "5.1.6", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "license": "MIT" + }, + "node_modules/vsls": { + "version": "1.0.4753", + "license": "SEE LICENSE IN LICENSE.txt", + "dependencies": { + "@microsoft/servicehub-framework": "^2.6.74" + } + }, + "node_modules/watchpack": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "5.94.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/winreg": { + "version": "1.2.5", + "license": "BSD-2-Clause" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "6.2.0", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.0", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "20.2.9", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index fb6465b2..5df2f2a8 100644 --- a/package.json +++ b/package.json @@ -2120,7 +2120,7 @@ "ejs": "^3.1.10", "fs-extra": "^10.0.0", "highlight.js": "^11.9.0", - "httpgd": "^0.1.6", + "httpgd": "0.1.6", "jquery": "^3.7.1", "jquery.json-viewer": "^1.5.0", "js-yaml": "^4.1.0", diff --git a/syntax/r.json b/syntax/r.json index b6fdf5cb..7bfad062 100644 --- a/syntax/r.json +++ b/syntax/r.json @@ -161,14 +161,6 @@ { "match": "\\b([[:alnum:]_]+)(?=::)", "name": "entity.namespace.r" - }, - { - "match": "\\b([[:alnum:]._]+)\\b", - "name": "variable.other.r" - }, - { - "match": "(`[^`]+`)", - "name": "variable.other.r" } ] }, diff --git a/tsconfig.json b/tsconfig.json index 63715e44..2134c6bf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,7 +12,7 @@ "strict": true, "noImplicitAny": true, "noImplicitThis": true, - "noFallthroughCasesInSwitch": true + "noFallthroughCasesInSwitch": true, }, "exclude": [ "html", diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index fa4ca014..00000000 --- a/yarn.lock +++ /dev/null @@ -1,3086 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.12.13": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/helper-validator-identifier@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz" - integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@discoveryjs/json-ext@^0.5.0": - version "0.5.3" - resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz" - integrity sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g== - -"@es-joy/jsdoccomment@^0.8.0-alpha.2": - version "0.8.0-alpha.2" - resolved "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.8.0-alpha.2.tgz" - integrity sha512-fjRY13Bh8sxDZkzO27U2R9L6xFqkh5fAbHuMGvGLXLfrTes8nTTMyOi6wIPt+CG0XPAxEUge8cDjhG+0aag6ew== - dependencies: - comment-parser "^1.1.5" - esquery "^1.4.0" - jsdoc-type-pratt-parser "1.0.0-alpha.23" - -"@eslint/eslintrc@^0.4.2": - version "0.4.2" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.2.tgz" - integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/trace-mapping@^0.3.17": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.14" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz" - integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@kwsites/file-exists@^1.1.1": - version "1.1.1" - resolved "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz" - integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw== - dependencies: - debug "^4.1.1" - -"@kwsites/promise-deferred@^1.1.1": - version "1.1.1" - resolved "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz" - integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== - -"@microsoft/servicehub-framework@^2.6.74": - version "2.6.74" - resolved "https://registry.npmjs.org/@microsoft/servicehub-framework/-/servicehub-framework-2.6.74.tgz" - integrity sha512-QJ//zzvxffupIkzupnVbMYY5YDOP+g5FlG6x0Pl7svRyq8pAouiibckJJcZlMtsMypKWwAnVBKb9/sonEOsUxw== - dependencies: - await-semaphore "^0.1.3" - msgpack-lite "^0.1.26" - nerdbank-streams "2.5.60" - strict-event-emitter-types "^2.0.0" - vscode-jsonrpc "^4.0.0" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.7" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.7.tgz" - integrity sha512-BTIhocbPBSrRmHxOAJFtR18oLhxTtAFDAvL8hY1S3iU8k+E60W/YFs4jrixGzQjMpF4qPXxIQHcjVD9dz1C2QA== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@sinonjs/commons@^2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz" - integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@10.0.2", "@sinonjs/fake-timers@^10.0.2": - version "10.0.2" - resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz" - integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== - dependencies: - "@sinonjs/commons" "^2.0.0" - -"@sinonjs/samsam@^7.0.1": - version "7.0.1" - resolved "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-7.0.1.tgz" - integrity sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw== - dependencies: - "@sinonjs/commons" "^2.0.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" - -"@sinonjs/text-encoding@^0.7.1": - version "0.7.2" - resolved "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz" - integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@types/body-parser@*": - version "1.19.0" - resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz" - integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/cheerio@^0.22.29": - version "0.22.29" - resolved "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.29.tgz" - integrity sha512-rNX1PsrDPxiNiyLnRKiW2NXHJFHqx0Fl3J2WsZq0MTBspa/FgwlqhXJE2crIcc+/2IglLHtSWw7g053oUR8fOg== - dependencies: - "@types/node" "*" - -"@types/connect@*": - version "3.4.34" - resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz" - integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ== - dependencies: - "@types/node" "*" - -"@types/ejs@^3.0.6": - version "3.0.6" - resolved "https://registry.npmjs.org/@types/ejs/-/ejs-3.0.6.tgz" - integrity sha512-fj1hi+ZSW0xPLrJJD+YNwIh9GZbyaIepG26E/gXvp8nCa2pYokxUYO1sK9qjGxp2g8ryZYuon7wmjpwE2cyASQ== - -"@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "7.2.13" - resolved "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.13.tgz" - integrity sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== - -"@types/express-serve-static-core@^4.17.18": - version "4.17.21" - resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.21.tgz" - integrity sha512-gwCiEZqW6f7EoR8TTEfalyEhb1zA5jQJnRngr97+3pzMaO1RKoI1w2bw07TK72renMUVWcWS5mLI6rk1NqN0nA== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/express@^4.17.12": - version "4.17.12" - resolved "https://registry.npmjs.org/@types/express/-/express-4.17.12.tgz" - integrity sha512-pTYas6FrP15B1Oa0bkN5tQMNqOcVXa9j4FTFtO8DWI9kppKib+6NJtfTOOLcwxuuYvcX2+dVG6et1SxW/Kc17Q== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.18" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/fs-extra@^9.0.11": - version "9.0.11" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.11.tgz" - integrity sha512-mZsifGG4QeQ7hlkhO56u7zt/ycBgGxSVsFI/6lGTU34VtwkiqrrSDgw0+ygs8kFGWcXnFQWMrzF2h7TtDFNixA== - dependencies: - "@types/node" "*" - -"@types/glob@^8.0.0": - version "8.0.0" - resolved "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz" - integrity sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/highlight.js@^10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-10.1.0.tgz#89bb0c202997d7a90a07bd2ec1f7d00c56bb90b4" - integrity sha512-77hF2dGBsOgnvZll1vymYiNUtqJ8cJfXPD6GG/2M0aLRc29PkvB7Au6sIDjIEFcSICBhCh2+Pyq6WSRS7LUm6A== - dependencies: - highlight.js "*" - -"@types/js-yaml@^4.0.2": - version "4.0.3" - resolved "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.3.tgz" - integrity sha512-5t9BhoORasuF5uCPr+d5/hdB++zRFUTMIZOzbNkr+jZh3yQht4HYbRDyj9fY8n2TZT30iW9huzav73x4NikqWg== - -"@types/json-schema@*": - version "7.0.7" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz" - integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== - -"@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/mime@^1": - version "1.3.2" - resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== - -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - -"@types/mocha@^8.2.2": - version "8.2.2" - resolved "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.2.tgz" - integrity sha512-Lwh0lzzqT5Pqh6z61P3c3P5nm6fzQK/MMHl9UKeneAeInVflBSz1O2EkX6gM6xfJd7FBXBY5purtLx7fUiZ7Hw== - -"@types/node-fetch@^2.5.10": - version "2.5.10" - resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.10.tgz" - integrity sha512-IpkX0AasN44hgEad0gEF/V6EgR5n69VEqPEgnmoM8GsIGro3PowbWs4tR6IhxUTyPLpOn+fiGG6nrQhcmoCuIQ== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - -"@types/node@*": - version "15.12.2" - resolved "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz" - integrity sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww== - -"@types/node@^18.17.1": - version "18.19.33" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.33.tgz#98cd286a1b8a5e11aa06623210240bcc28e95c48" - integrity sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A== - dependencies: - undici-types "~5.26.4" - -"@types/qs@*": - version "6.9.6" - resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz" - integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA== - -"@types/range-parser@*": - version "1.2.3" - resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz" - integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== - -"@types/serve-static@*": - version "1.13.9" - resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz" - integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/sinon@^10.0.13": - version "10.0.13" - resolved "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz" - integrity sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ== - dependencies: - "@types/sinonjs__fake-timers" "*" - -"@types/sinonjs__fake-timers@*": - version "8.1.2" - resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz" - integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== - -"@types/text-table@^0.2.1": - version "0.2.1" - resolved "https://registry.npmjs.org/@types/text-table/-/text-table-0.2.1.tgz" - integrity sha512-dchbFCWfVgUSWEvhOkXGS7zjm+K7jCUvGrQkAHPk2Fmslfofp4HQTH2pqnQ3Pw5GPYv0zWa2AQjKtsfZThuemQ== - -"@types/vscode@^1.75.0": - version "1.89.0" - resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.89.0.tgz#df0beb3f4ab9133ee8c5fcac8fc578e4623d8749" - integrity sha512-TMfGKLSVxfGfoO8JfIE/neZqv7QLwS4nwPwL/NwMvxtAY2230H2I4Z5xx6836pmJvMAzqooRQ4pmLm7RUicP3A== - -"@types/winreg@^1.2.31": - version "1.2.31" - resolved "https://registry.npmjs.org/@types/winreg/-/winreg-1.2.31.tgz" - integrity sha512-SDatEMEtQ1cJK3esIdH6colduWBP+42Xw9Guq1sf/N6rM3ZxgljBduvZOwBsxRps/k5+Wwf5HJun6pH8OnD2gg== - -"@types/ws@^8.2.0": - version "8.2.0" - resolved "https://registry.npmjs.org/@types/ws/-/ws-8.2.0.tgz" - integrity sha512-cyeefcUCgJlEk+hk2h3N+MqKKsPViQgF5boi9TTHSK+PoR9KWBb/C5ccPcDyAqgsbAYHTwulch725DV84+pSpg== - dependencies: - "@types/node" "*" - -"@typescript-eslint/eslint-plugin@^5.30.0": - version "5.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.32.0.tgz" - integrity sha512-CHLuz5Uz7bHP2WgVlvoZGhf0BvFakBJKAD/43Ty0emn4wXWv5k01ND0C0fHcl/Im8Td2y/7h44E9pca9qAu2ew== - dependencies: - "@typescript-eslint/scope-manager" "5.32.0" - "@typescript-eslint/type-utils" "5.32.0" - "@typescript-eslint/utils" "5.32.0" - debug "^4.3.4" - functional-red-black-tree "^1.0.1" - ignore "^5.2.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.30.0": - version "5.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.32.0.tgz" - integrity sha512-IxRtsehdGV9GFQ35IGm5oKKR2OGcazUoiNBxhRV160iF9FoyuXxjY+rIqs1gfnd+4eL98OjeGnMpE7RF/NBb3A== - dependencies: - "@typescript-eslint/scope-manager" "5.32.0" - "@typescript-eslint/types" "5.32.0" - "@typescript-eslint/typescript-estree" "5.32.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.32.0": - version "5.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.32.0.tgz" - integrity sha512-KyAE+tUON0D7tNz92p1uetRqVJiiAkeluvwvZOqBmW9z2XApmk5WSMV9FrzOroAcVxJZB3GfUwVKr98Dr/OjOg== - dependencies: - "@typescript-eslint/types" "5.32.0" - "@typescript-eslint/visitor-keys" "5.32.0" - -"@typescript-eslint/type-utils@5.32.0": - version "5.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.32.0.tgz" - integrity sha512-0gSsIhFDduBz3QcHJIp3qRCvVYbqzHg8D6bHFsDMrm0rURYDj+skBK2zmYebdCp+4nrd9VWd13egvhYFJj/wZg== - dependencies: - "@typescript-eslint/utils" "5.32.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.32.0": - version "5.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.32.0.tgz" - integrity sha512-EBUKs68DOcT/EjGfzywp+f8wG9Zw6gj6BjWu7KV/IYllqKJFPlZlLSYw/PTvVyiRw50t6wVbgv4p9uE2h6sZrQ== - -"@typescript-eslint/typescript-estree@5.32.0": - version "5.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.32.0.tgz" - integrity sha512-ZVAUkvPk3ITGtCLU5J4atCw9RTxK+SRc6hXqLtllC2sGSeMFWN+YwbiJR9CFrSFJ3w4SJfcWtDwNb/DmUIHdhg== - dependencies: - "@typescript-eslint/types" "5.32.0" - "@typescript-eslint/visitor-keys" "5.32.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.32.0": - version "5.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.32.0.tgz" - integrity sha512-W7lYIAI5Zlc5K082dGR27Fczjb3Q57ECcXefKU/f0ajM5ToM0P+N9NmJWip8GmGu/g6QISNT+K6KYB+iSHjXCQ== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.32.0" - "@typescript-eslint/types" "5.32.0" - "@typescript-eslint/typescript-estree" "5.32.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/visitor-keys@5.32.0": - version "5.32.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.32.0.tgz" - integrity sha512-S54xOHZgfThiZ38/ZGTgB2rqx51CMJ5MCfVT2IplK4Q7hgzGfe0nLzLCcenDnc/cSjP568hdeKfeDcBgqNHD/g== - dependencies: - "@typescript-eslint/types" "5.32.0" - eslint-visitor-keys "^3.3.0" - -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== - -"@vscode/test-electron@^2.2.3": - version "2.2.3" - resolved "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.2.3.tgz" - integrity sha512-7DmdGYQTqRNaLHKG3j56buc9DkstriY4aV0S3Zj32u0U9/T0L8vwWAC9QGCh1meu1VXDEla1ze27TkqysHGP0Q== - dependencies: - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - rimraf "^3.0.2" - unzipper "^0.10.11" - -"@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== - -"@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== - -"@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== - -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" - 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" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== - -"@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" - 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" - -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== - -"@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" - 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" - -"@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" - 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" - -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" - 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" - -"@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" - 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" - -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.4.tgz" - integrity sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ== - -"@webpack-cli/info@^1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@webpack-cli/info/-/info-1.3.0.tgz" - integrity sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w== - dependencies: - envinfo "^7.7.3" - -"@webpack-cli/serve@^1.5.1": - version "1.5.1" - resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.5.1.tgz" - integrity sha512-4vSVUiOPJLmr45S8rMGy7WDvpWxfFxfP/Qx/cxZFCfvoypTYpPPL1X8VIZMe0WTA+Jr7blUxwUSEZNkjoMTgSw== - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== - -acorn-jsx@^5.3.1: - version "5.3.1" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== - -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.5.0, acorn@^8.7.1: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - -ag-grid-community@^31.3.2: - version "31.3.2" - resolved "https://registry.yarnpkg.com/ag-grid-community/-/ag-grid-community-31.3.2.tgz#588fd3be5cd5d79522886ca5dfc14757cb6c7d8c" - integrity sha512-GxqFRD0OcjaVRE1gwLgoP0oERNPH8Lk8wKJ1txulsxysEQ5dZWHhiIoXXSiHjvOCVMkK/F5qzY6HNrn6VeDMTQ== - -agent-base@6: - version "6.0.2" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.1: - version "8.6.0" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.6.0.tgz" - integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-colors@4.1.1, ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async@^3.2.3: - version "3.2.3" - resolved "https://registry.npmjs.org/async/-/async-3.2.3.tgz" - integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -await-semaphore@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/await-semaphore/-/await-semaphore-0.1.3.tgz" - integrity sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -big-integer@^1.6.17: - version "1.6.51" - resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -binary@~0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz" - integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== - dependencies: - buffers "~0.1.1" - chainsaw "~0.1.0" - -bluebird@~3.4.1: - version "3.4.7" - resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz" - integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.1, braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -browserslist@^4.14.5: - version "4.16.6" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== - dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" - escalade "^3.1.1" - node-releases "^1.1.71" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-indexof-polyfill@~1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz" - integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== - -buffers@~0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz" - integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^6.0.0: - version "6.2.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -cancellationtoken@^2.0.1: - version "2.2.0" - resolved "https://registry.npmjs.org/cancellationtoken/-/cancellationtoken-2.2.0.tgz" - integrity sha512-uF4sHE5uh2VdEZtIRJKGoXAD9jm7bFY0tDRCzH4iLp262TOJ2lrtNHjMG2zc8H+GICOpELIpM7CGW5JeWnb3Hg== - -caniuse-lite@^1.0.30001219: - version "1.0.30001237" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001237.tgz" - integrity sha512-pDHgRndit6p1NR2GhzMbQ6CkRrp4VKuSsqbcLeOQppYPKOYkKT/6ZvZDvKJUqcmtyWIAHuZq3SVS2vc1egCZzw== - -caught@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/caught/-/caught-0.1.3.tgz" - integrity sha512-DTWI84qfoqHEV5jHRpsKNnEisVCeuBDscXXaXyRLXC+4RD6rFftUNuTElcQ7LeO7w622pfzWkA1f6xu5qEAidw== - -chainsaw@~0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz" - integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== - dependencies: - traverse ">=0.3.0 <0.4" - -chalk@4.1.1, chalk@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.2, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -cheerio-select@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" - integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== - dependencies: - boolbase "^1.0.0" - css-select "^5.1.0" - css-what "^6.1.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - -cheerio@1.0.0-rc.12: - version "1.0.0-rc.12" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" - integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== - dependencies: - cheerio-select "^2.1.0" - dom-serializer "^2.0.0" - domhandler "^5.0.3" - domutils "^3.0.1" - htmlparser2 "^8.0.1" - parse5 "^7.0.0" - parse5-htmlparser2-tree-adapter "^7.0.0" - -chokidar@3.5.3: - version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^1.2.1, colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^7.0.0, commander@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -comment-parser@1.1.5, comment-parser@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.5.tgz" - integrity sha512-RePCE4leIhBlmrqiYTvaqEeGYg7qpSl4etaIabKtdOQVi+mSTIBBklGUwIr79GXYnl3LpMwmDw4KeR2stNc6FA== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -copy-webpack-plugin@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.0.0.tgz" - integrity sha512-k8UB2jLIb1Jip2nZbCz83T/XfhfjX6mB1yLJNYKrpYi7FQimfOoFv/0//iT6HV1K8FwUB5yUbCcnpLebJXJTug== - dependencies: - fast-glob "^3.2.5" - glob-parent "^6.0.0" - globby "^11.0.3" - normalize-path "^3.0.0" - p-limit "^3.1.0" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cross-fetch@^3.1.4: - version "3.1.5" - resolved "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz" - integrity sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig== - -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - -css-what@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -debug@4, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@4.3.3: - version "4.3.3" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -debug@^4.0.1, debug@^4.1.1, debug@^4.3.1: - version "4.3.1" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - -deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -devreplay@^1.9.31: - version "1.9.31" - resolved "https://registry.npmjs.org/devreplay/-/devreplay-1.9.31.tgz" - integrity sha512-uLQjYVJjwh198gwwrDxwEozJ8EyqTppTLiwo6O3z4G+MclwkYio+ImZKJiqpI6fRbucFtJ067WMxsZhvxW/AQg== - dependencies: - "@babel/code-frame" "^7.12.13" - "@types/text-table" "^0.2.1" - chalk "4.1.1" - commander "^7.2.0" - diff "5.0.0" - lodash "^4.17.21" - parse-diff "^0.8.1" - simple-git "2.38.1" - text-table "0.2.0" - tslib "^2.2.0" - v8-compile-cache "^2.3.0" - web-tree-sitter "0.19.3" - -diff@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - -diff@^5.0.0: - version "5.1.0" - resolved "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz" - integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - -domelementtype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - -domutils@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - -duplexer2@~0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz" - integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== - dependencies: - readable-stream "^2.0.2" - -ejs@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" - integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.3.723: - version "1.3.752" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.752.tgz" - integrity sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0: - version "5.12.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" - integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^4.2.0, entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -envinfo@^7.7.3: - version "7.8.1" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -eslint-plugin-jsdoc@^35.1.3: - version "35.1.3" - resolved "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-35.1.3.tgz" - integrity sha512-9AVpCssb7+cfEx3GJtnhJ8yLOVsHDKGMgngcfvwFBxdcOVPFhLENReL5aX1R2gNiG3psqIWFVBpSPnPQTrMZUA== - dependencies: - "@es-joy/jsdoccomment" "^0.8.0-alpha.2" - comment-parser "1.1.5" - debug "^4.3.1" - esquery "^1.4.0" - jsdoc-type-pratt-parser "^1.0.4" - lodash "^4.17.21" - regextras "^0.8.0" - semver "^7.3.5" - spdx-expression-parse "^3.0.1" - -eslint-scope@5.1.1, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@^7.28.0: - version "7.28.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz" - integrity sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.2" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -event-lite@^0.1.1: - version "0.1.2" - resolved "https://registry.npmjs.org/event-lite/-/event-lite-0.1.2.tgz" - integrity sha512-HnSYx1BsJ87/p6swwzv+2v6B4X+uxUteoDfRxsAb1S1BePzQqOLevVmkdA15GHJVd9A9Ok6wygUR18Hu0YeV9g== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.1.1, fast-glob@^3.2.5: - version "3.2.5" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz" - integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - -fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastest-levenshtein@^1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz" - integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== - -fastq@^1.6.0: - version "1.11.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz" - integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -filelist@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz" - integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== - dependencies: - minimatch "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-up@5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz" - integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -fs-extra@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz" - integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.0.tgz" - integrity sha512-Hdd4287VEJcZXUwv1l8a+vXC1GjOQqXe+VS30w/ypihpcnu9M1n3xeYeJu5CBpeEQj2nAab2xxz28GuA3vp4Ww== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.1.3: - version "7.1.7" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^13.6.0, globals@^13.9.0: - version "13.9.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz" - integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.3: - version "11.0.3" - resolved "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz" - integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -he@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -highlight.js@*, highlight.js@^11.9.0: - version "11.9.0" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.9.0.tgz#04ab9ee43b52a41a047432c8103e2158a1b8b5b0" - integrity sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw== - -htmlparser2@^8.0.1: - version "8.0.2" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" - integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.3" - domutils "^3.0.1" - entities "^4.4.0" - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -httpgd@^0.1.6: - version "0.1.6" - resolved "https://registry.npmjs.org/httpgd/-/httpgd-0.1.6.tgz" - integrity sha512-HyozzYjOq+rGi3P+YZtLnvBPAWvdn2tiCfUuB4tSUradRtOoKAvwcZ+yvOYxusMzaZIGkf02s/BTkcDzj+XS/w== - dependencies: - "@types/ws" "^8.2.0" - cross-fetch "^3.1.4" - isomorphic-ws "^4.0.1" - ws "^8.2.3" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -ieee754@^1.1.8: - version "1.2.1" - resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.4: - version "5.1.8" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz" - integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== - -ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@~2.0.0, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -int64-buffer@^0.1.9: - version "0.1.10" - resolved "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz" - integrity sha1-J3siiofZWtd30HwTgyAiQGpHNCM= - -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.2.0: - version "2.4.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== - dependencies: - has "^1.0.3" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - -isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -jest-worker@^27.4.5: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jquery.json-viewer@^1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/jquery.json-viewer/-/jquery.json-viewer-1.5.0.tgz" - integrity sha512-M/mRFXg14V/UUAlz7TBNBIDmQdWt05BunsqC/UjEx5BoFdQpNpfkfDdVn+VtjX951n/an/T9GWB3apBp02x8Mg== - -jquery@^3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" - integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsdoc-type-pratt-parser@1.0.0-alpha.23: - version "1.0.0-alpha.23" - resolved "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.0.0-alpha.23.tgz" - integrity sha512-COtimMd97eo5W0h6R9ISFj9ufg/9EiAzVAeQpKBJ1xJs/x8znWE155HGBDR2rwOuZsCes1gBXGmFVfvRZxGrhg== - -jsdoc-type-pratt-parser@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.0.4.tgz" - integrity sha512-jzmW9gokeq9+bHPDR1nCeidMyFUikdZlbOhKzh9+/nJqB75XhpNKec1/UuxW5c4+O+Pi31Gc/dCboyfSm/pSpQ== - -json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -just-extend@^4.0.2: - version "4.2.1" - resolved "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz" - integrity sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg== - -kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -listenercount@~1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz" - integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== - -loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" - integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.0, micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -micromatch@^4.0.2: - version "4.0.4" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -mime-db@1.48.0: - version "1.48.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz" - integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== - -mime-types@^2.1.12, mime-types@^2.1.27: - version "2.1.31" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz" - integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== - dependencies: - mime-db "1.48.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@4.2.1: - version "4.2.1" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.0.4: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.1.0: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -"mkdirp@>=0.5 0": - version "0.5.6" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mocha@^9.1.0: - version "9.2.2" - resolved "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz" - integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== - dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.3" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - growl "1.10.5" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "4.2.1" - ms "2.1.3" - nanoid "3.3.1" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -msgpack-lite@^0.1.26: - version "0.1.26" - resolved "https://registry.npmjs.org/msgpack-lite/-/msgpack-lite-0.1.26.tgz" - integrity sha1-3TxQsm8FnyXn7e42REGDWOKprYk= - dependencies: - event-lite "^0.1.1" - ieee754 "^1.1.8" - int64-buffer "^0.1.9" - isarray "^1.0.0" - -nanoid@3.3.1: - version "3.3.1" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -nerdbank-streams@2.5.60: - version "2.5.60" - resolved "https://registry.npmjs.org/nerdbank-streams/-/nerdbank-streams-2.5.60.tgz" - integrity sha512-saQaMyTtVDAEc+S+BPXKM6K1AF3FyrorFSDzaCkdmtDe2kZzu1aYPQZNLmnxJhxbTcghYrEmYFFoaDxBDVadCw== - dependencies: - await-semaphore "^0.1.3" - cancellationtoken "^2.0.1" - caught "^0.1.3" - msgpack-lite "^0.1.26" - -nise@^5.1.2: - version "5.1.4" - resolved "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz" - integrity sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg== - dependencies: - "@sinonjs/commons" "^2.0.0" - "@sinonjs/fake-timers" "^10.0.2" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - path-to-regexp "^1.7.0" - -node-fetch@2.6.7, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-releases@^1.1.71: - version "1.1.73" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz" - integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-diff@^0.8.1: - version "0.8.1" - resolved "https://registry.npmjs.org/parse-diff/-/parse-diff-0.8.1.tgz" - integrity sha512-0QG0HqwXCC/zMohOlaxkQmV1igZq1LQ6xsv/ziex6TDbY0GFxr3TDJN+/aHjWH3s2WTysSW3Bhs9Yfh6DOelFA== - -parse5-htmlparser2-tree-adapter@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" - integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== - dependencies: - domhandler "^5.0.2" - parse5 "^7.0.0" - -parse5@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== - dependencies: - entities "^4.4.0" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.3.0" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -readable-stream@^2.0.2, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.7.0: - version "0.7.0" - resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz" - integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== - dependencies: - resolve "^1.9.0" - -regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regextras@^0.8.0: - version "0.8.0" - resolved "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz" - integrity sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve@^1.9.0: - version "1.20.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@2: - version "2.7.1" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: - version "7.5.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" - integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== - dependencies: - lru-cache "^6.0.0" - -serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" - integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== - dependencies: - randombytes "^2.1.0" - -setimmediate@~1.0.4: - version "1.0.5" - resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-git@2.38.1: - version "2.38.1" - resolved "https://registry.npmjs.org/simple-git/-/simple-git-2.38.1.tgz" - integrity sha512-SeMgUEA6Cmk7Ta57ZzMbkBcAfh8A+DZ6ACZ2onfCp/9UklC9yMJgvcH+GGI3QDTv0lTDIbWtl5LSbBk1UtEfeg== - dependencies: - "@kwsites/file-exists" "^1.1.1" - "@kwsites/promise-deferred" "^1.1.1" - debug "^4.3.1" - -sinon@^15.0.1: - version "15.0.1" - resolved "https://registry.npmjs.org/sinon/-/sinon-15.0.1.tgz" - integrity sha512-PZXKc08f/wcA/BMRGBze2Wmw50CWPiAH3E21EOi4B49vJ616vW4DQh4fQrqsYox2aNR/N3kCqLuB0PwwOucQrg== - dependencies: - "@sinonjs/commons" "^2.0.0" - "@sinonjs/fake-timers" "10.0.2" - "@sinonjs/samsam" "^7.0.1" - diff "^5.0.0" - nise "^5.1.2" - supports-color "^7.2.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.9" - resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz" - integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -strict-event-emitter-types@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strict-event-emitter-types/-/strict-event-emitter-types-2.0.0.tgz" - integrity sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA== - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@8.1.1, supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0, supports-color@^7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -table@^6.0.9: - version "6.7.1" - resolved "https://registry.npmjs.org/table/-/table-6.7.1.tgz" - integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== - dependencies: - ajv "^8.0.1" - lodash.clonedeep "^4.5.0" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.0" - strip-ansi "^6.0.0" - -tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -terser-webpack-plugin@^5.1.3: - version "5.3.7" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" - integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.17" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.1" - terser "^5.16.5" - -terser@^5.16.5: - version "5.16.6" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.6.tgz#f6c7a14a378ee0630fbe3ac8d1f41b4681109533" - integrity sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -text-table@0.2.0, text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -"traverse@>=0.3.0 <0.4": - version "0.3.9" - resolved "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz" - integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== - -ts-loader@^9.3.1: - version "9.3.1" - resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz" - integrity sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.2.0: - version "2.3.0" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8, type-detect@^4.0.8: - version "4.0.8" - resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -typescript@^4.7.2: - version "4.7.4" - resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unzipper@^0.10.11: - version "0.10.11" - resolved "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz" - integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== - dependencies: - big-integer "^1.6.17" - binary "~0.3.0" - bluebird "~3.4.1" - buffer-indexof-polyfill "~1.0.0" - duplexer2 "~0.1.4" - fstream "^1.0.12" - graceful-fs "^4.2.2" - listenercount "~1.0.1" - readable-stream "~2.3.6" - setimmediate "~1.0.4" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0, v8-compile-cache@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -vscode-jsonrpc@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz#f43dfa35fb51e763d17cd94dcca0c9458f35abf9" - integrity sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA== - -vscode-jsonrpc@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz" - integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg== - -vscode-languageclient@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz#cdfe20267726c8d4db839dc1e9d1816e1296e854" - integrity sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA== - dependencies: - minimatch "^5.1.0" - semver "^7.3.7" - vscode-languageserver-protocol "3.17.5" - -vscode-languageserver-protocol@3.17.5: - version "3.17.5" - resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz#864a8b8f390835572f4e13bd9f8313d0e3ac4bea" - integrity sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg== - dependencies: - vscode-jsonrpc "8.2.0" - vscode-languageserver-types "3.17.5" - -vscode-languageserver-types@3.17.5: - version "3.17.5" - resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz#3273676f0cf2eab40b3f44d085acbb7f08a39d8a" - integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg== - -vsls@^1.0.4753: - version "1.0.4753" - resolved "https://registry.npmjs.org/vsls/-/vsls-1.0.4753.tgz" - integrity sha512-hmrsMbhjuLoU8GgtVfqhbV4ZkGvDpLV2AFmzx+cCOGNra2qk0Q36dYkfwENqy/vJVQ/2/lhxcn+69FYnKQRhgg== - dependencies: - "@microsoft/servicehub-framework" "^2.6.74" - -watchpack@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -web-tree-sitter@0.19.3: - version "0.19.3" - resolved "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.19.3.tgz" - integrity sha512-iZry/BTbg0o4WDAnG417bBisGq+i2GghelRRjVe8Fd5IEwpWU8omfbUz4l/BP7YoLNGmaFPmmuP+Mg0uXAvS7A== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -webpack-cli@^4.7.2: - version "4.7.2" - resolved "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.7.2.tgz" - integrity sha512-mEoLmnmOIZQNiRl0ebnjzQ74Hk0iKS5SiEEnpq3dRezoyR3yPaeQZCMCe+db4524pj1Pd5ghZXjT41KLzIhSLw== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.0.4" - "@webpack-cli/info" "^1.3.0" - "@webpack-cli/serve" "^1.5.1" - colorette "^1.2.1" - commander "^7.0.0" - execa "^5.0.0" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" - v8-compile-cache "^2.2.0" - webpack-merge "^5.7.3" - -webpack-merge@^5.7.3: - version "5.8.0" - resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz" - integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== - dependencies: - clone-deep "^4.0.1" - wildcard "^2.0.0" - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@^5.76.0: - version "5.76.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.0.tgz#f9fb9fb8c4a7dbdcd0d56a98e56b8a942ee2692c" - integrity sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.7.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.10.0" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.4.0" - webpack-sources "^3.2.3" - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which@2.0.2, which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wildcard@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz" - integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== - -winreg@^1.2.4: - version "1.2.4" - resolved "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz" - integrity sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs= - -word-wrap@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== - -workerpool@6.2.0: - version "6.2.0" - resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz" - integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@^8.2.3: - version "8.2.3" - resolved "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz" - integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@^20.2.2: - version "20.2.7" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz" - integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== - -yargs-unparser@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@16.2.0: - version "16.2.0" - resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 9c64b2a5189e218f1642cf0772603569626aeae2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 01:21:17 +0800 Subject: [PATCH 05/74] Bump path-to-regexp from 6.2.2 to 6.3.0 (#1563) Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 6.2.2 to 6.3.0. - [Release notes](https://github.com/pillarjs/path-to-regexp/releases) - [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md) - [Commits](https://github.com/pillarjs/path-to-regexp/compare/v6.2.2...v6.3.0) --- updated-dependencies: - dependency-name: path-to-regexp dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 71635a11..b6a1e4ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3607,9 +3607,10 @@ "license": "MIT" }, "node_modules/path-to-regexp": { - "version": "6.2.2", - "dev": true, - "license": "MIT" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", From 47f6ed6f1c3e2605761d868a5f464333bc367a64 Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Wed, 9 Apr 2025 18:14:40 -0700 Subject: [PATCH 06/74] chores (#1598) A bunch of chores --- .github/workflows/main.yml | 46 +-- .github/workflows/pre-release.yml | 6 +- .github/workflows/release.yml | 8 +- .vscode/extensions.json | 7 +- .vscode/tasks.json | 1 - .yarnrc | 1 - R/.lintr | 2 +- package-lock.json | 542 +++++++++++++++++++++++------- package.json | 4 +- src/test/suite/index.ts | 44 ++- 10 files changed, 470 insertions(+), 191 deletions(-) delete mode 100644 .yarnrc diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 51575bb6..2107ee87 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,7 +14,7 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18 - - run: yarn install + - run: npm install - name: Run tests uses: GabrielBB/xvfb-action@v1.0 with: @@ -26,11 +26,11 @@ jobs: steps: - uses: actions/checkout@v3 - run: node $SCRIPT_DIR/enableWebpack.js - - run: yarn install - - uses: lannonbr/vsce-action@master + - run: npm install + - uses: lannonbr/vsce-action@4.0.0 with: args: "package -o $VSIX_FILE" - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: ${{ env.VSIX_FILE }} path: ${{ env.VSIX_FILE }} @@ -41,8 +41,8 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18 - - run: yarn install - - run: yarn run lint + - run: npm install + - run: npm run lint markdownlint-cli: runs-on: ubuntu-latest steps: @@ -52,24 +52,26 @@ jobs: files: . config_file: ".markdownlint.json" ignore_files: "node_modules/*" - lintr: + lint: runs-on: ubuntu-latest - container: - image: rocker/tidyverse:latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v3 - - name: Install apt-get dependencies - run: | - apt-get update - apt-get install git ssh curl bzip2 -y + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + - name: Install lintr - run: | - Rscript -e "install.packages('lintr', repos = 'https://cloud.r-project.org')" - shell: bash - - name: Running lintr - run: | - Rscript -e "stopifnot(length(print(lintr::lint_dir('./R'))) == 0)" - shell: bash + run: install.packages("lintr") + shell: Rscript {0} + + - name: Lint root directory + run: lintr::lint_dir("./R") + shell: Rscript {0} + env: + LINTR_ERROR_ON_LINT: true devreplay: runs-on: ubuntu-latest steps: @@ -77,6 +79,6 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18 - - run: yarn install + - run: npm install - name: Run devreplay run: ./node_modules/.bin/devreplay ./src devreplay.json diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index a4c8b13d..dd090eac 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -16,11 +16,11 @@ jobs: steps: - uses: actions/checkout@v3 - run: node $SCRIPT_DIR/enableWebpack.js - - run: yarn install - - uses: lannonbr/vsce-action@master + - run: npm install + - uses: lannonbr/vsce-action@4.0.0 with: args: "package -o $FILE_OUT" - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: "${{ env.FILE_OUT }}" path: "${{ env.FILE_OUT }}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b7c90e26..ed53ffa0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,14 +16,14 @@ jobs: steps: - uses: actions/checkout@v3 - run: node $SCRIPT_DIR/enableWebpack.js - - run: yarn install - - uses: lannonbr/vsce-action@master + - run: npm install + - uses: lannonbr/vsce-action@4.0.0 with: args: "package" - name: Identify output file # can be retrieved as steps.filenames.outputs.file_out id: filenames run: echo "::set-output name=file_out::$(ls | grep "^.*\.vsix$" | head -1)" - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: ${{ steps.filenames.outputs.file_out }} path: ${{ steps.filenames.outputs.file_out }} @@ -57,7 +57,7 @@ jobs: steps: - uses: actions/checkout@v3 - run: node $SCRIPT_DIR/enableWebpack.js - - run: yarn install + - run: npm install - name: Publish to Open VSX Registry uses: HaaLeo/publish-vscode-extension@v1 id: publishToOpenVSX diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 1261c5dd..0db3279e 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,8 +1,3 @@ { - "recommendations": [ - "dbaeumer.vscode-eslint", - "GrapeCity.gc-excelviewer", - "ikuyadeu.devreplay", - "DavidAnson.vscode-markdownlint" - ] + } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index f3d04404..fbbafb56 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -10,7 +10,6 @@ "command": "vsce", "args": [ "package", - "--yarn", "-o", "${workspaceFolderBasename}.vsix" ] diff --git a/.yarnrc b/.yarnrc deleted file mode 100644 index 4f14322d..00000000 --- a/.yarnrc +++ /dev/null @@ -1 +0,0 @@ ---ignore-engines true diff --git a/R/.lintr b/R/.lintr index 8e8bd81e..c86c3fa1 100644 --- a/R/.lintr +++ b/R/.lintr @@ -1,6 +1,6 @@ linters: linters_with_defaults( line_length_linter(120), indentation_linter(4), - cyclocomp_linter = NULL, + return_linter = NULL, object_name_linter = NULL, object_usage_linter = NULL) diff --git a/package-lock.json b/package-lock.json index b6a1e4ab..88b2433c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -45,7 +45,7 @@ "devreplay": "^1.9.31", "eslint": "^7.28.0", "eslint-plugin-jsdoc": "^35.1.3", - "mocha": "^9.1.0", + "mocha": "^11.1.0", "sinon": "^15.0.1", "ts-loader": "^9.3.1", "typescript": "^4.7.2", @@ -269,6 +269,78 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "dev": true, @@ -371,6 +443,17 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "dev": true, @@ -937,11 +1020,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "dev": true, - "license": "ISC" - }, "node_modules/@vscode/test-electron": { "version": "2.4.1", "dev": true, @@ -1189,7 +1267,9 @@ } }, "node_modules/ansi-colors": { - "version": "4.1.1", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "license": "MIT", "engines": { @@ -1587,13 +1667,36 @@ } }, "node_modules/cliui": { - "version": "7.0.4", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/clone-deep": { @@ -1706,7 +1809,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -1836,7 +1941,9 @@ } }, "node_modules/diff": { - "version": "5.0.0", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -1964,14 +2071,6 @@ "node": ">=8.6" } }, - "node_modules/enquirer/node_modules/ansi-colors": { - "version": "4.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/entities": { "version": "4.5.0", "license": "BSD-2-Clause", @@ -2397,6 +2496,36 @@ "dev": true, "license": "ISC" }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { "version": "4.0.0", "dev": true, @@ -2454,6 +2583,8 @@ }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "license": "ISC", "engines": { @@ -2461,19 +2592,21 @@ } }, "node_modules/glob": { - "version": "7.2.0", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "*" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2495,6 +2628,32 @@ "dev": true, "license": "BSD-2-Clause" }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/globals": { "version": "13.24.0", "dev": true, @@ -2545,14 +2704,6 @@ "dev": true, "license": "MIT" }, - "node_modules/growl": { - "version": "1.10.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4.x" - } - }, "node_modules/has-flag": { "version": "4.0.0", "license": "MIT", @@ -2862,6 +3013,22 @@ "ws": "*" } }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jake": { "version": "10.9.2", "license": "Apache-2.0", @@ -3099,6 +3266,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/merge-stream": { "version": "2.0.0", "dev": true, @@ -3161,88 +3335,75 @@ "node": "*" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mocha": { - "version": "9.2.2", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", + "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", "dev": true, "license": "MIT", "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" }, "bin": { "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "mocha": "bin/mocha.js" }, "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/mocha/node_modules/debug": { - "version": "4.3.3", + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "balanced-match": "^1.0.0" } }, - "node_modules/mocha/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, "node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, - "node_modules/mocha/node_modules/serialize-javascript": { - "version": "6.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "dev": true, @@ -3275,17 +3436,6 @@ "msgpack": "bin/msgpack" } }, - "node_modules/nanoid": { - "version": "3.3.1", - "dev": true, - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "dev": true, @@ -3540,6 +3690,13 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/pako": { "version": "1.0.11", "dev": true, @@ -3606,6 +3763,23 @@ "dev": true, "license": "MIT" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/path-to-regexp": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", @@ -3827,6 +4001,8 @@ }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "license": "MIT", "engines": { @@ -4060,14 +4236,6 @@ "url": "https://opencollective.com/sinon" } }, - "node_modules/sinon/node_modules/diff": { - "version": "5.2.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/slash": { "version": "3.0.0", "dev": true, @@ -4180,6 +4348,22 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "dev": true, @@ -4191,6 +4375,20 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "dev": true, @@ -4708,12 +4906,35 @@ } }, "node_modules/workerpool": { - "version": "6.2.0", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", "dev": true, "license": "Apache-2.0" }, "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { @@ -4728,6 +4949,73 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "dev": true, @@ -4754,6 +5042,8 @@ }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", "engines": { @@ -4761,28 +5051,32 @@ } }, "node_modules/yargs": { - "version": "16.2.0", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.4", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-unparser": { @@ -4799,14 +5093,6 @@ "node": ">=10" } }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "20.2.9", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "dev": true, diff --git a/package.json b/package.json index 5df2f2a8..1dcd5333 100644 --- a/package.json +++ b/package.json @@ -2091,6 +2091,7 @@ "@types/express": "^4.17.12", "@types/fs-extra": "^9.0.11", "@types/glob": "^8.0.0", + "@types/highlight.js": "^10.1.0", "@types/js-yaml": "^4.0.2", "@types/mocha": "^8.2.2", "@types/node": "^18.17.1", @@ -2101,12 +2102,11 @@ "@typescript-eslint/eslint-plugin": "^5.30.0", "@typescript-eslint/parser": "^5.30.0", "@vscode/test-electron": "^2.2.3", - "@types/highlight.js": "^10.1.0", "copy-webpack-plugin": "^9.0.0", "devreplay": "^1.9.31", "eslint": "^7.28.0", "eslint-plugin-jsdoc": "^35.1.3", - "mocha": "^9.1.0", + "mocha": "^11.1.0", "sinon": "^15.0.1", "ts-loader": "^9.3.1", "typescript": "^4.7.2", diff --git a/src/test/suite/index.ts b/src/test/suite/index.ts index 439d4cdc..a7429214 100644 --- a/src/test/suite/index.ts +++ b/src/test/suite/index.ts @@ -4,8 +4,7 @@ import * as path from 'path'; import * as Mocha from 'mocha'; -// @ts-ignore: all -import * as glob from 'glob'; +import { glob } from 'glob'; export function run(): Promise { // Create the mocha test @@ -17,27 +16,26 @@ export function run(): Promise { const testsRoot = path.resolve(__dirname, '..'); return new Promise((c, e) => { - // @ts-ignore: all - glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { - if (err) { - return e(err); - } - - // Add files to the test suite - files.forEach((f: string) => mocha.addFile(path.resolve(testsRoot, f))); + glob('**/**.test.js', { cwd: testsRoot }) + .then(files => { + // 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) { - e(err); - } - }); + try { + // Run the mocha test + mocha.run(failures => { + if (failures > 0) { + e(new Error(`${failures} tests failed.`)); + } else { + c(); + } + }); + } catch (err) { + e(err); + } + }) + .catch(err => { + return e(err); + }); }); } From d0a38a13e81baadd6db8261684f579459c769348 Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Wed, 9 Apr 2025 18:39:27 -0700 Subject: [PATCH 07/74] Release 2.8.5 (#1599) * --slave to --no-echo * Update CHANGLOG.md --- CHANGELOG.md | 5 +++++ CODE_OF_CONDUCT.md | 2 +- src/helpViewer/helpPreviewer.ts | 2 +- src/helpViewer/helpProvider.ts | 4 ++-- src/helpViewer/packages.ts | 6 +++--- src/languageService.ts | 2 +- src/rmarkdown/draft.ts | 2 +- src/rmarkdown/manager.ts | 4 ++-- src/util.ts | 4 ++-- 9 files changed, 18 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e91ceb6a..6513f559 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ You can check all of our changes from [Release Page](https://github.com/REditorSupport/vscode-R/releases) +## [2.8.5](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.5) + +* Upgrade Rsyntax +* Use --no-echo instead of --slave + ## [2.8.4](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.4) * Upgrade dependencies diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 9dac91f6..005e5407 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at ikuyadeu0513@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at . The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. diff --git a/src/helpViewer/helpPreviewer.ts b/src/helpViewer/helpPreviewer.ts index 4d7ba753..2b6d6129 100644 --- a/src/helpViewer/helpPreviewer.ts +++ b/src/helpViewer/helpPreviewer.ts @@ -239,7 +239,7 @@ export class RLocalHelpPreviewer { // Convert .Rd to HTML const args = [ '--silent', - '--slave', + '--no-echo', '--no-save', '--no-restore', '-f', diff --git a/src/helpViewer/helpProvider.ts b/src/helpViewer/helpProvider.ts index 20bcac9d..42212621 100644 --- a/src/helpViewer/helpProvider.ts +++ b/src/helpViewer/helpProvider.ts @@ -49,7 +49,7 @@ export class HelpProvider { const scriptPath = extensionContext.asAbsolutePath('R/help/helpServer.R'); const args = [ '--silent', - '--slave', + '--no-echo', '--no-save', '--no-restore', '-e', @@ -259,7 +259,7 @@ export class AliasProvider { const args = [ '--silent', - '--slave', + '--no-echo', '--no-save', '--no-restore', '-f', diff --git a/src/helpViewer/packages.ts b/src/helpViewer/packages.ts index 82cee13d..77c94c83 100644 --- a/src/helpViewer/packages.ts +++ b/src/helpViewer/packages.ts @@ -193,7 +193,7 @@ export class PackageManager { // remove a specified package. The packagename is selected e.g. in the help tree-view public async removePackage(pkgName: string): Promise { const rPath = this.rHelp.rPath; - const args = ['--silent', '--slave', '--no-save', '--no-restore', '-e', `remove.packages('${pkgName}')`]; + const args = ['--silent', '--no-echo', '--no-save', '--no-restore', '-e', `remove.packages('${pkgName}')`]; const cmd = `${rPath} ${args.join(' ')}`; const confirmation = 'Yes, remove package!'; const prompt = `Are you sure you want to remove package ${pkgName}?`; @@ -211,7 +211,7 @@ export class PackageManager { public async installPackages(pkgNames: string[], skipConfirmation: boolean = false): Promise { const rPath = this.rHelp.rPath; const cranUrl = await getCranUrl('', this.cwd); - const args = [`--silent`, '--slave', `-e`, `install.packages(c(${pkgNames.map(v => `'${v}'`).join(',')}),repos='${cranUrl}')`]; + const args = [`--silent`, '--no-echo', `-e`, `install.packages(c(${pkgNames.map(v => `'${v}'`).join(',')}),repos='${cranUrl}')`]; const cmd = `${rPath} ${args.join(' ')}`; const pluralS = pkgNames.length > 1? 's' : ''; const confirmation = `Yes, install package${pluralS}!`; @@ -227,7 +227,7 @@ export class PackageManager { public async updatePackages(skipConfirmation: boolean = false): Promise { const rPath = this.rHelp.rPath; const cranUrl = await getCranUrl('', this.cwd); - const args = ['--silent', '--slave', '--no-save', '--no-restore', '-e', `update.packages(ask=FALSE,repos='${cranUrl}')`]; + const args = ['--silent', '--no-echo', '--no-save', '--no-restore', '-e', `update.packages(ask=FALSE,repos='${cranUrl}')`]; const cmd = `${rPath} ${args.join(' ')}`; const confirmation = 'Yes, update all packages!'; const prompt = 'Are you sure you want to update all installed packages? This might take some time!'; diff --git a/src/languageService.ts b/src/languageService.ts index 96879d5a..02c45e2c 100644 --- a/src/languageService.ts +++ b/src/languageService.ts @@ -86,7 +86,7 @@ export class LanguageService implements Disposable { const options = { cwd: cwd, env: env }; const args = (config.get('lsp.args')?.map(substituteVariables) ?? []).concat( '--silent', - '--slave', + '--no-echo', '--no-save', '--no-restore', '-e', diff --git a/src/rmarkdown/draft.ts b/src/rmarkdown/draft.ts index 172eb1b6..1c0b7c00 100644 --- a/src/rmarkdown/draft.ts +++ b/src/rmarkdown/draft.ts @@ -35,7 +35,7 @@ async function getTemplateItems(cwd: string): Promise Date: Wed, 9 Apr 2025 18:44:44 -0700 Subject: [PATCH 08/74] Bump to 2.8.5 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88b2433c..623e61d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "r", - "version": "2.8.4", + "version": "2.8.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "r", - "version": "2.8.4", + "version": "2.8.5", "license": "SEE LICENSE IN LICENSE", "dependencies": { "ag-grid-community": "^31.3.2", diff --git a/package.json b/package.json index 1dcd5333..98168715 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "r", "displayName": "R", "description": "R Extension for Visual Studio Code", - "version": "2.8.4", + "version": "2.8.5", "author": "REditorSupport", "license": "SEE LICENSE IN LICENSE", "publisher": "REditorSupport", From b0781feedfadbcc35f40db5ce09cc9956d78547c Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Sun, 20 Apr 2025 20:51:22 -0700 Subject: [PATCH 09/74] improve R syntax highlight (#1605) --- .vscode/tasks.json | 14 +- package-lock.json | 2376 ++++++++++++++++++++++++--------- package.json | 2 +- src/test/suite/syntax.test.ts | 31 +- syntax/r.json | 588 ++++---- 5 files changed, 1981 insertions(+), 1030 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index fbbafb56..47711827 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -35,16 +35,14 @@ "script": "compile", "problemMatcher": "$tsc" }, - { + { "type": "npm", "script": "watch", - "problemMatcher": "$tsc-watch", - "isBackground": true, - "presentation": { - "reveal": "never" - }, - "group": "build" - }, + "group": "build", + // install https://marketplace.visualstudio.com/items?itemName=eamodio.tsl-problem-matcher + "problemMatcher": ["$ts-webpack-watch"], + "isBackground": true + }, { "type": "npm", "script": "watchHelp", diff --git a/package-lock.json b/package-lock.json index 623e61d4..ecf465c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,15 +57,24 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.12.11", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.10.4" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "license": "MIT", "engines": { @@ -73,11 +82,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.24.7", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", + "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -88,6 +99,8 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "license": "MIT", "dependencies": { @@ -99,6 +112,8 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -112,6 +127,8 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", "dependencies": { @@ -120,11 +137,15 @@ }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", "engines": { @@ -133,6 +154,8 @@ }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", "engines": { @@ -141,6 +164,8 @@ }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", "dependencies": { @@ -152,6 +177,8 @@ }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, "license": "MIT", "engines": { @@ -160,6 +187,8 @@ }, "node_modules/@es-joy/jsdoccomment": { "version": "0.9.0-alpha.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.9.0-alpha.1.tgz", + "integrity": "sha512-Clxxc0PwpISoYYBibA+1L2qFJ7gvFVhI2Hos87S06K+Q0cXdOhZQJNKWuaQGPAeHjZEuUB/YoWOfwjuF2wirqA==", "dev": true, "license": "MIT", "dependencies": { @@ -173,6 +202,8 @@ }, "node_modules/@es-joy/jsdoccomment/node_modules/jsdoc-type-pratt-parser": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.0.4.tgz", + "integrity": "sha512-jzmW9gokeq9+bHPDR1nCeidMyFUikdZlbOhKzh9+/nJqB75XhpNKec1/UuxW5c4+O+Pi31Gc/dCboyfSm/pSpQ==", "dev": true, "license": "MIT", "engines": { @@ -180,32 +211,28 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz", + "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "eslint-visitor-keys": "^3.4.3" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.0", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "license": "MIT", "engines": { @@ -214,6 +241,8 @@ }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, "license": "MIT", "dependencies": { @@ -233,14 +262,28 @@ }, "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "license": "MIT", "dependencies": { @@ -253,6 +296,9 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -266,6 +312,9 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true, "license": "BSD-3-Clause" }, @@ -300,31 +349,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", @@ -342,7 +366,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, "license": "MIT", "dependencies": { @@ -356,6 +382,8 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { @@ -364,6 +392,8 @@ }, "node_modules/@jridgewell/set-array": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "license": "MIT", "engines": { @@ -372,6 +402,8 @@ }, "node_modules/@jridgewell/source-map": { "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -381,11 +413,15 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -395,6 +431,8 @@ }, "node_modules/@microsoft/servicehub-framework": { "version": "2.6.74", + "resolved": "https://registry.npmjs.org/@microsoft/servicehub-framework/-/servicehub-framework-2.6.74.tgz", + "integrity": "sha512-QJ//zzvxffupIkzupnVbMYY5YDOP+g5FlG6x0Pl7svRyq8pAouiibckJJcZlMtsMypKWwAnVBKb9/sonEOsUxw==", "license": "LICENSE.txt", "dependencies": { "await-semaphore": "^0.1.3", @@ -406,6 +444,8 @@ }, "node_modules/@microsoft/servicehub-framework/node_modules/vscode-jsonrpc": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz", + "integrity": "sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg==", "license": "MIT", "engines": { "node": ">=8.0.0 || >=10.0.0" @@ -413,6 +453,8 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { @@ -425,6 +467,8 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { @@ -433,6 +477,8 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { @@ -456,6 +502,8 @@ }, "node_modules/@sinonjs/commons": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -464,6 +512,8 @@ }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -471,33 +521,21 @@ } }, "node_modules/@sinonjs/samsam": { - "version": "8.0.0", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", + "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^2.0.0", + "@sinonjs/commons": "^3.0.1", "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons/node_modules/type-detect": { - "version": "4.0.8", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "type-detect": "^4.1.0" } }, "node_modules/@sinonjs/samsam/node_modules/type-detect": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, "license": "MIT", "engines": { @@ -506,11 +544,15 @@ }, "node_modules/@sinonjs/text-encoding": { "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", + "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", "dev": true, "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@types/body-parser": { "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, "license": "MIT", "dependencies": { @@ -518,73 +560,66 @@ "@types/node": "*" } }, - "node_modules/@types/body-parser/node_modules/@types/node": { - "version": "22.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/body-parser/node_modules/undici-types": { - "version": "6.19.8", - "dev": true, - "license": "MIT" - }, "node_modules/@types/cheerio": { "version": "0.22.35", + "resolved": "https://registry.npmjs.org/@types/cheerio/-/cheerio-0.22.35.tgz", + "integrity": "sha512-yD57BchKRvTV+JD53UZ6PD8KWY5g5rvvMLRnZR3EQBCZXiDT/HR+pKpMzFGlWNhFrXlo7VPZXtKvIEwZkAWOIA==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/cheerio/node_modules/@types/node": { - "version": "22.5.4", + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "@types/node": "*" } }, - "node_modules/@types/cheerio/node_modules/undici-types": { - "version": "6.19.8", + "node_modules/@types/ejs": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.5.tgz", + "integrity": "sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==", "dev": true, "license": "MIT" }, - "node_modules/@types/connect": { - "version": "3.4.38", + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/@types/connect/node_modules/@types/node": { - "version": "22.5.4", + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/@types/connect/node_modules/undici-types": { - "version": "6.19.8", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ejs": { - "version": "3.1.5", - "dev": true, - "license": "MIT" - }, "node_modules/@types/estree": { - "version": "1.0.5", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "dev": true, "license": "MIT" }, "node_modules/@types/express": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "license": "MIT", "dependencies": { @@ -595,7 +630,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.5", + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", "dev": true, "license": "MIT", "dependencies": { @@ -605,40 +642,16 @@ "@types/send": "*" } }, - "node_modules/@types/express-serve-static-core/node_modules/@types/node": { - "version": "22.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/express-serve-static-core/node_modules/undici-types": { - "version": "6.19.8", - "dev": true, - "license": "MIT" - }, "node_modules/@types/fs-extra": { "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/fs-extra/node_modules/@types/node": { - "version": "22.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/fs-extra/node_modules/undici-types": { - "version": "6.19.8", - "dev": true, - "license": "MIT" - }, "node_modules/@types/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", @@ -652,6 +665,9 @@ }, "node_modules/@types/highlight.js": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-10.1.0.tgz", + "integrity": "sha512-77hF2dGBsOgnvZll1vymYiNUtqJ8cJfXPD6GG/2M0aLRc29PkvB7Au6sIDjIEFcSICBhCh2+Pyq6WSRS7LUm6A==", + "deprecated": "This is a stub types definition. highlight.js provides its own type definitions, so you do not need this installed.", "dev": true, "license": "MIT", "dependencies": { @@ -660,21 +676,29 @@ }, "node_modules/@types/http-errors": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "dev": true, "license": "MIT" }, "node_modules/@types/js-yaml": { "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", "dev": true, "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true, "license": "MIT" }, @@ -687,19 +711,24 @@ }, "node_modules/@types/mocha": { "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { - "version": "18.19.50", - "dev": true, + "version": "18.19.86", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.86.tgz", + "integrity": "sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/node-fetch": { - "version": "2.6.11", + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", "dev": true, "license": "MIT", "dependencies": { @@ -707,36 +736,31 @@ "form-data": "^4.0.0" } }, - "node_modules/@types/node-fetch/node_modules/@types/node": { - "version": "22.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/node-fetch/node_modules/undici-types": { - "version": "6.19.8", - "dev": true, - "license": "MIT" - }, "node_modules/@types/qs": { - "version": "6.9.15", + "version": "6.9.18", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", "dev": true, "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true, "license": "MIT" }, "node_modules/@types/semver": { - "version": "7.5.8", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", "dev": true, "license": "MIT" }, "node_modules/@types/send": { "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, "license": "MIT", "dependencies": { @@ -744,21 +768,10 @@ "@types/node": "*" } }, - "node_modules/@types/send/node_modules/@types/node": { - "version": "22.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/send/node_modules/undici-types": { - "version": "6.19.8", - "dev": true, - "license": "MIT" - }, "node_modules/@types/serve-static": { "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "license": "MIT", "dependencies": { @@ -767,21 +780,10 @@ "@types/send": "*" } }, - "node_modules/@types/serve-static/node_modules/@types/node": { - "version": "22.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/serve-static/node_modules/undici-types": { - "version": "6.19.8", - "dev": true, - "license": "MIT" - }, "node_modules/@types/sinon": { "version": "10.0.20", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.20.tgz", + "integrity": "sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg==", "dev": true, "license": "MIT", "dependencies": { @@ -790,39 +792,38 @@ }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", "dev": true, "license": "MIT" }, "node_modules/@types/vscode": { - "version": "1.93.0", + "version": "1.99.1", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.99.1.tgz", + "integrity": "sha512-cQlqxHZ040ta6ovZXnXRxs3fJiTmlurkIWOfZVcLSZPcm9J4ikFpXuB7gihofGn5ng+kDVma5EmJIclfk0trPQ==", "dev": true, "license": "MIT" }, "node_modules/@types/winreg": { "version": "1.2.36", + "resolved": "https://registry.npmjs.org/@types/winreg/-/winreg-1.2.36.tgz", + "integrity": "sha512-DtafHy5A8hbaosXrbr7YdjQZaqVewXmiasRS5J4tYMzt3s1gkh40ixpxgVFfKiQ0JIYetTJABat47v9cpr/sQg==", "dev": true, "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.12", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/ws/node_modules/@types/node": { - "version": "22.5.4", - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/ws/node_modules/undici-types": { - "version": "6.19.8", - "license": "MIT" - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "license": "MIT", "dependencies": { @@ -854,16 +855,10 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/@typescript-eslint/parser": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -890,6 +885,8 @@ }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "license": "MIT", "dependencies": { @@ -906,6 +903,8 @@ }, "node_modules/@typescript-eslint/type-utils": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "license": "MIT", "dependencies": { @@ -932,6 +931,8 @@ }, "node_modules/@typescript-eslint/types": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "license": "MIT", "engines": { @@ -944,6 +945,8 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -970,6 +973,8 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -995,6 +1000,8 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "license": "MIT", "dependencies": { @@ -1009,26 +1016,17 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@vscode/test-electron": { - "version": "2.4.1", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.5.2.tgz", + "integrity": "sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==", "dev": true, "license": "MIT", "dependencies": { "http-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.5", "jszip": "^3.10.1", - "ora": "^7.0.1", + "ora": "^8.1.0", "semver": "^7.6.2" }, "engines": { @@ -1036,57 +1034,73 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, "license": "MIT", "dependencies": { @@ -1094,7 +1108,9 @@ } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1102,72 +1118,86 @@ } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, "node_modules/@webpack-cli/configtest": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1177,6 +1207,8 @@ }, "node_modules/@webpack-cli/info": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1188,6 +1220,8 @@ }, "node_modules/@webpack-cli/serve": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1201,16 +1235,22 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true, "license": "Apache-2.0" }, "node_modules/acorn": { - "version": "8.12.1", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, "license": "MIT", "bin": { @@ -1220,31 +1260,36 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", "peerDependencies": { - "acorn": "^8" + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/ag-grid-community": { "version": "31.3.4", + "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-31.3.4.tgz", + "integrity": "sha512-jOxQO86C6eLnk1GdP24HB6aqaouFzMWizgfUwNY5MnetiWzz9ZaAmOGSnW/XBvdjXvC5Fpk3gSbvVKKQ7h9kBw==", "license": "MIT" }, "node_modules/agent-base": { - "version": "7.1.1", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "engines": { "node": ">= 14" } }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -1258,8 +1303,52 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, "node_modules/ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1278,6 +1367,8 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { @@ -1286,6 +1377,8 @@ }, "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -1299,6 +1392,8 @@ }, "node_modules/anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "license": "ISC", "dependencies": { @@ -1311,10 +1406,14 @@ }, "node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "license": "MIT", "engines": { @@ -1323,6 +1422,8 @@ }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, "license": "MIT", "engines": { @@ -1331,42 +1432,33 @@ }, "node_modules/async": { "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "license": "MIT" }, "node_modules/asynckit": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, "license": "MIT" }, "node_modules/await-semaphore": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/await-semaphore/-/await-semaphore-0.1.3.tgz", + "integrity": "sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q==", "license": "MIT" }, "node_modules/balanced-match": { "version": "1.0.2", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "license": "MIT", "engines": { @@ -1376,107 +1468,67 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bl": { - "version": "5.1.0", - "dev": true, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "fill-range": "^7.1.1" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/bl/node_modules/safe-buffer": { - "version": "5.2.1", + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/browserslist": { + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" }, { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bl/node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "dev": true, - "license": "ISC" - }, - "node_modules/browserslist": { - "version": "4.23.3", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -1485,36 +1537,31 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer": { - "version": "6.0.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/buffer-from": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, "license": "MIT" }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { @@ -1523,6 +1570,8 @@ }, "node_modules/camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", "engines": { @@ -1534,10 +1583,14 @@ }, "node_modules/cancellationtoken": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cancellationtoken/-/cancellationtoken-2.2.0.tgz", + "integrity": "sha512-uF4sHE5uh2VdEZtIRJKGoXAD9jm7bFY0tDRCzH4iLp262TOJ2lrtNHjMG2zc8H+GICOpELIpM7CGW5JeWnb3Hg==", "license": "MIT" }, "node_modules/caniuse-lite": { - "version": "1.0.30001658", + "version": "1.0.30001715", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz", + "integrity": "sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==", "dev": true, "funding": [ { @@ -1557,10 +1610,14 @@ }, "node_modules/caught": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/caught/-/caught-0.1.3.tgz", + "integrity": "sha512-DTWI84qfoqHEV5jHRpsKNnEisVCeuBDscXXaXyRLXC+4RD6rFftUNuTElcQ7LeO7w622pfzWkA1f6xu5qEAidw==", "license": "MIT" }, "node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -1575,6 +1632,8 @@ }, "node_modules/cheerio": { "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", @@ -1594,6 +1653,8 @@ }, "node_modules/cheerio-select": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", @@ -1608,14 +1669,10 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -1629,12 +1686,30 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/chrome-trace-event": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "license": "MIT", "engines": { @@ -1642,14 +1717,16 @@ } }, "node_modules/cli-cursor": { - "version": "4.0.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^4.0.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1657,6 +1734,8 @@ }, "node_modules/cli-spinners": { "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "license": "MIT", "engines": { @@ -1681,6 +1760,28 @@ "node": ">=12" } }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -1701,6 +1802,8 @@ }, "node_modules/clone-deep": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1714,6 +1817,8 @@ }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -1724,15 +1829,21 @@ }, "node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true, "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "license": "MIT", "dependencies": { @@ -1743,15 +1854,19 @@ } }, "node_modules/commander": { - "version": "7.2.0", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 10" + "node": "^12.20.0 || >=14" } }, "node_modules/comment-parser": { "version": "1.1.6-beta.0", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.6-beta.0.tgz", + "integrity": "sha512-q3cA8TSMyqW7wcPSYWzbO/rMahnXgzs4SLG/UIWXdEsnXTFPZkEkWAdNgPiHig2OzxgpPLOh4WwsmClDxndwHw==", "dev": true, "license": "MIT", "engines": { @@ -1760,10 +1875,14 @@ }, "node_modules/concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, "node_modules/copy-webpack-plugin": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", "dev": true, "license": "MIT", "dependencies": { @@ -1785,27 +1904,20 @@ "webpack": "^5.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/core-util-is": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true, "license": "MIT" }, "node_modules/cross-fetch": { - "version": "3.1.8", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", "license": "MIT", "dependencies": { - "node-fetch": "^2.6.12" + "node-fetch": "^2.7.0" } }, "node_modules/cross-spawn": { @@ -1825,10 +1937,15 @@ }, "node_modules/crypto": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.", "license": "ISC" }, "node_modules/css-select": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", @@ -1843,6 +1960,8 @@ }, "node_modules/css-what": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "license": "BSD-2-Clause", "engines": { "node": ">= 6" @@ -1852,7 +1971,9 @@ } }, "node_modules/debug": { - "version": "4.3.7", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { @@ -1869,6 +1990,8 @@ }, "node_modules/decamelize": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, "license": "MIT", "engines": { @@ -1880,11 +2003,15 @@ }, "node_modules/deep-is": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "license": "MIT" }, "node_modules/delayed-stream": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", "engines": { @@ -1893,6 +2020,8 @@ }, "node_modules/devreplay": { "version": "1.12.0", + "resolved": "https://registry.npmjs.org/devreplay/-/devreplay-1.12.0.tgz", + "integrity": "sha512-Ezk3SSU7sm6E/QknXx6j+1HfxA+d6R2CoioYYOWIOGEXYm+Ddl8eIPiBaodJQuTIp44mbds9VDldhMGjHq+XMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1912,38 +2041,10 @@ "node": ">=12.0.0" } }, - "node_modules/devreplay/node_modules/@babel/code-frame": { - "version": "7.24.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/devreplay/node_modules/commander": { - "version": "9.5.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/devreplay/node_modules/diff": { - "version": "5.1.0", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -1952,6 +2053,8 @@ }, "node_modules/dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "license": "MIT", "dependencies": { @@ -1963,6 +2066,8 @@ }, "node_modules/doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1974,6 +2079,8 @@ }, "node_modules/dom-serializer": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", @@ -1986,6 +2093,8 @@ }, "node_modules/domelementtype": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", @@ -1996,6 +2105,8 @@ }, "node_modules/domhandler": { "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" @@ -2008,7 +2119,9 @@ } }, "node_modules/domutils": { - "version": "3.1.0", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", @@ -2019,13 +2132,32 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, "license": "MIT" }, "node_modules/ejs": { "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" @@ -2038,17 +2170,23 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.18", + "version": "1.5.139", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.139.tgz", + "integrity": "sha512-GGnRYOTdN5LYpwbIr0rwP/ZHOQSvAF6TG0LSzp28uCBb9JiXHJGmaaKw29qjNJc5bGnnp6kXJqRnGMQoELwi5w==", "dev": true, "license": "ISC" }, "node_modules/emoji-regex": { - "version": "8.0.0", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, "license": "MIT" }, "node_modules/enhanced-resolve": { - "version": "5.17.1", + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "dev": true, "license": "MIT", "dependencies": { @@ -2061,6 +2199,8 @@ }, "node_modules/enquirer": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2073,6 +2213,8 @@ }, "node_modules/entities": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -2082,7 +2224,9 @@ } }, "node_modules/envinfo": { - "version": "7.13.0", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", "dev": true, "license": "MIT", "bin": { @@ -2092,13 +2236,66 @@ "node": ">=4" } }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { - "version": "1.5.4", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", "dev": true, "license": "MIT" }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escalade": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { @@ -2107,6 +2304,8 @@ }, "node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", "engines": { @@ -2118,6 +2317,9 @@ }, "node_modules/eslint": { "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", "dependencies": { @@ -2174,6 +2376,8 @@ }, "node_modules/eslint-plugin-jsdoc": { "version": "35.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-35.5.1.tgz", + "integrity": "sha512-pPYPWtsykwVEue1tYEyoppBj4dgF7XicF67tLLLraY6RQYBq7qMKjUHji19+hfiTtYKKBD0YfeK8hgjPAE5viw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2196,6 +2400,8 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2206,16 +2412,10 @@ "node": ">=8.0.0" } }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "license": "MIT", "dependencies": { @@ -2228,16 +2428,43 @@ "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/eslint-visitor-keys": { + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, "license": "Apache-2.0", "engines": { "node": ">=4" } }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, "node_modules/eslint/node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", "dependencies": { @@ -2246,14 +2473,41 @@ }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10" } }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/eslint/node_modules/js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "license": "MIT", "dependencies": { @@ -2266,6 +2520,8 @@ }, "node_modules/espree": { "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2277,27 +2533,20 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/espree/node_modules/acorn": { - "version": "7.4.1", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, + "license": "Apache-2.0", "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/espree/node_modules/acorn-jsx": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=4" } }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "license": "BSD-2-Clause", "bin": { @@ -2310,6 +2559,8 @@ }, "node_modules/esquery": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2319,8 +2570,20 @@ "node": ">=0.10" } }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2330,8 +2593,20 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { + "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -2340,6 +2615,8 @@ }, "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -2348,10 +2625,14 @@ }, "node_modules/event-lite": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/event-lite/-/event-lite-0.1.3.tgz", + "integrity": "sha512-8qz9nOz5VeD2z96elrEKD2U433+L3DWdUdDkOINLGOJvx1GsMBbMn0aCeu28y8/e85A6mCigBiFlYMnTBEGlSw==", "license": "MIT" }, "node_modules/events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, "license": "MIT", "engines": { @@ -2360,11 +2641,15 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", "dependencies": { @@ -2372,29 +2657,60 @@ "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.1", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, "license": "MIT", "engines": { @@ -2402,7 +2718,9 @@ } }, "node_modules/fastq": { - "version": "1.17.1", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, "license": "ISC", "dependencies": { @@ -2411,6 +2729,8 @@ }, "node_modules/file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", "dependencies": { @@ -2422,6 +2742,8 @@ }, "node_modules/filelist": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" @@ -2429,6 +2751,8 @@ }, "node_modules/filelist/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -2436,6 +2760,8 @@ }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -2446,6 +2772,8 @@ }, "node_modules/fill-range": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { @@ -2457,6 +2785,8 @@ }, "node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { @@ -2472,6 +2802,8 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, "license": "BSD-3-Clause", "bin": { @@ -2480,6 +2812,8 @@ }, "node_modules/flat-cache": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "license": "MIT", "dependencies": { @@ -2492,7 +2826,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, @@ -2513,26 +2849,16 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/form-data": { - "version": "4.0.0", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -2541,6 +2867,8 @@ }, "node_modules/fs-extra": { "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -2553,12 +2881,17 @@ }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ @@ -2570,6 +2903,8 @@ }, "node_modules/function-bind": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", "funding": { @@ -2578,6 +2913,8 @@ }, "node_modules/functional-red-black-tree": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", "dev": true, "license": "MIT" }, @@ -2591,6 +2928,58 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -2613,18 +3002,22 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/glob-to-regexp": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true, "license": "BSD-2-Clause" }, @@ -2656,6 +3049,8 @@ }, "node_modules/globals": { "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2670,6 +3065,8 @@ }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { @@ -2687,32 +3084,74 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.3.2", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/graceful-fs": { "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, "license": "MIT" }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2724,6 +3163,8 @@ }, "node_modules/he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, "license": "MIT", "bin": { @@ -2731,7 +3172,9 @@ } }, "node_modules/highlight.js": { - "version": "11.10.0", + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", "license": "BSD-3-Clause", "engines": { "node": ">=12.0.0" @@ -2739,6 +3182,8 @@ }, "node_modules/htmlparser2": { "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -2756,6 +3201,8 @@ }, "node_modules/http-proxy-agent": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { @@ -2779,11 +3226,13 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.5", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -2792,6 +3241,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -2809,7 +3260,9 @@ "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "4.0.6", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -2818,11 +3271,15 @@ }, "node_modules/immediate": { "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true, "license": "MIT" }, "node_modules/import-fresh": { - "version": "3.3.0", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2838,6 +3295,8 @@ }, "node_modules/import-local": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { @@ -2856,6 +3315,8 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { @@ -2864,6 +3325,9 @@ }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { @@ -2873,15 +3337,21 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, "license": "ISC" }, "node_modules/int64-buffer": { "version": "0.1.10", + "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-0.1.10.tgz", + "integrity": "sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==", "license": "MIT" }, "node_modules/interpret": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true, "license": "MIT", "engines": { @@ -2890,6 +3360,8 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "license": "MIT", "dependencies": { @@ -2900,7 +3372,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { @@ -2915,6 +3389,8 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", "engines": { @@ -2923,6 +3399,8 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { @@ -2931,6 +3409,8 @@ }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { @@ -2942,6 +3422,8 @@ }, "node_modules/is-interactive": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", "dev": true, "license": "MIT", "engines": { @@ -2953,6 +3435,8 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", "engines": { @@ -2961,6 +3445,8 @@ }, "node_modules/is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, "license": "MIT", "engines": { @@ -2969,6 +3455,8 @@ }, "node_modules/is-plain-object": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "license": "MIT", "dependencies": { @@ -2979,11 +3467,13 @@ } }, "node_modules/is-unicode-supported": { - "version": "1.3.0", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2991,15 +3481,21 @@ }, "node_modules/isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "license": "MIT", "engines": { @@ -3008,6 +3504,8 @@ }, "node_modules/isomorphic-ws": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", "license": "MIT", "peerDependencies": { "ws": "*" @@ -3031,6 +3529,8 @@ }, "node_modules/jake": { "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "license": "Apache-2.0", "dependencies": { "async": "^3.2.3", @@ -3047,6 +3547,8 @@ }, "node_modules/jest-worker": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, "license": "MIT", "dependencies": { @@ -3058,16 +3560,10 @@ "node": ">= 10.13.0" } }, - "node_modules/jest-worker/node_modules/@types/node": { - "version": "22.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3080,26 +3576,29 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-worker/node_modules/undici-types": { - "version": "6.19.8", - "dev": true, - "license": "MIT" - }, "node_modules/jquery": { "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", "license": "MIT" }, "node_modules/jquery.json-viewer": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/jquery.json-viewer/-/jquery.json-viewer-1.5.0.tgz", + "integrity": "sha512-M/mRFXg14V/UUAlz7TBNBIDmQdWt05BunsqC/UjEx5BoFdQpNpfkfDdVn+VtjX951n/an/T9GWB3apBp02x8Mg==", "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -3110,6 +3609,8 @@ }, "node_modules/jsdoc-type-pratt-parser": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.2.0.tgz", + "integrity": "sha512-4STjeF14jp4bqha44nKMY1OUI6d2/g6uclHWUCZ7B4DoLzaB5bmpTkQrpqU+vSVzMD0LsKAOskcnI3I3VfIpmg==", "dev": true, "license": "MIT", "engines": { @@ -3118,26 +3619,36 @@ }, "node_modules/json-buffer": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, "license": "MIT" }, "node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -3148,6 +3659,8 @@ }, "node_modules/jszip": { "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "dev": true, "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { @@ -3159,11 +3672,15 @@ }, "node_modules/just-extend": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", "dev": true, "license": "MIT" }, "node_modules/keyv": { "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", "dependencies": { @@ -3172,6 +3689,8 @@ }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "license": "MIT", "engines": { @@ -3180,6 +3699,8 @@ }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3192,6 +3713,8 @@ }, "node_modules/lie": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3200,6 +3723,8 @@ }, "node_modules/loader-runner": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, "license": "MIT", "engines": { @@ -3208,6 +3733,8 @@ }, "node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { @@ -3222,26 +3749,37 @@ }, "node_modules/lodash": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true, "license": "MIT" }, "node_modules/lodash.get": { "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", "dev": true, "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, "license": "MIT" }, "node_modules/lodash.truncate": { "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true, "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "license": "MIT", "dependencies": { @@ -3255,17 +3793,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -3273,13 +3800,27 @@ "dev": true, "license": "ISC" }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/merge-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", "engines": { @@ -3288,6 +3829,8 @@ }, "node_modules/micromatch": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { @@ -3300,6 +3843,8 @@ }, "node_modules/mime-db": { "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { @@ -3308,6 +3853,8 @@ }, "node_modules/mime-types": { "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { @@ -3317,16 +3864,23 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -3391,6 +3945,16 @@ "balanced-match": "^1.0.0" } }, + "node_modules/mocha/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/mocha/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -3406,6 +3970,8 @@ }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3420,11 +3986,15 @@ }, "node_modules/ms": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "node_modules/msgpack-lite": { "version": "0.1.26", + "resolved": "https://registry.npmjs.org/msgpack-lite/-/msgpack-lite-0.1.26.tgz", + "integrity": "sha512-SZ2IxeqZ1oRFGo0xFGbvBJWMp3yLIY9rlIJyxy8CGrwZn1f0ZK4r6jV/AM1r0FZMDUkWkglOk/eeKIL9g77Nxw==", "license": "MIT", "dependencies": { "event-lite": "^0.1.1", @@ -3438,21 +4008,29 @@ }, "node_modules/natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, "license": "MIT" }, "node_modules/natural-compare-lite": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", "dev": true, "license": "MIT" }, "node_modules/neo-async": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, "license": "MIT" }, "node_modules/nerdbank-streams": { "version": "2.5.60", + "resolved": "https://registry.npmjs.org/nerdbank-streams/-/nerdbank-streams-2.5.60.tgz", + "integrity": "sha512-saQaMyTtVDAEc+S+BPXKM6K1AF3FyrorFSDzaCkdmtDe2kZzu1aYPQZNLmnxJhxbTcghYrEmYFFoaDxBDVadCw==", "license": "MIT", "dependencies": { "await-semaphore": "^0.1.3", @@ -3463,6 +4041,8 @@ }, "node_modules/nise": { "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -3475,6 +4055,8 @@ }, "node_modules/nise/node_modules/@sinonjs/fake-timers": { "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.3.1.tgz", + "integrity": "sha512-EVJO7nW5M/F5Tur0Rf2z/QoMo+1Ia963RiMtapiQrEWvY0iBUvADo8Beegwjpnle5BHkyHuoxSTW3jF43H1XRA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -3483,6 +4065,8 @@ }, "node_modules/node-fetch": { "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" @@ -3500,12 +4084,16 @@ } }, "node_modules/node-releases": { - "version": "2.0.18", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true, "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "license": "MIT", "engines": { @@ -3514,6 +4102,8 @@ }, "node_modules/nth-check": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" @@ -3524,6 +4114,8 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", "dependencies": { @@ -3531,14 +4123,16 @@ } }, "node_modules/onetime": { - "version": "5.1.2", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "mimic-function": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3546,6 +4140,8 @@ }, "node_modules/optionator": { "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", "dependencies": { @@ -3561,29 +4157,33 @@ } }, "node_modules/ora": { - "version": "7.0.1", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", "dev": true, "license": "MIT", "dependencies": { "chalk": "^5.3.0", - "cli-cursor": "^4.0.0", - "cli-spinners": "^2.9.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", "is-interactive": "^2.0.0", - "is-unicode-supported": "^1.3.0", - "log-symbols": "^5.1.0", - "stdin-discarder": "^0.1.0", - "string-width": "^6.1.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ora/node_modules/ansi-regex": { - "version": "6.0.1", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "license": "MIT", "engines": { @@ -3594,7 +4194,9 @@ } }, "node_modules/ora/node_modules/chalk": { - "version": "5.3.0", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", "engines": { @@ -3606,17 +4208,47 @@ }, "node_modules/ora/node_modules/emoji-regex": { "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true, "license": "MIT" }, + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ora/node_modules/log-symbols": { - "version": "5.1.0", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^5.0.0", - "is-unicode-supported": "^1.1.0" + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -3625,16 +4257,18 @@ } }, "node_modules/ora/node_modules/string-width": { - "version": "6.1.0", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^10.2.1", - "strip-ansi": "^7.0.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3642,6 +4276,8 @@ }, "node_modules/ora/node_modules/strip-ansi": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3656,6 +4292,8 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3670,6 +4308,8 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { @@ -3684,6 +4324,8 @@ }, "node_modules/p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "license": "MIT", "engines": { @@ -3699,11 +4341,15 @@ }, "node_modules/pako": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true, "license": "(MIT AND Zlib)" }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { @@ -3714,20 +4360,24 @@ } }, "node_modules/parse5": { - "version": "7.1.2", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", "license": "MIT", "dependencies": { - "domhandler": "^5.0.2", + "domhandler": "^5.0.3", "parse5": "^7.0.0" }, "funding": { @@ -3736,6 +4386,8 @@ }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { @@ -3744,6 +4396,8 @@ }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", "engines": { @@ -3752,6 +4406,8 @@ }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { @@ -3760,6 +4416,8 @@ }, "node_modules/path-parse": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, "license": "MIT" }, @@ -3784,10 +4442,13 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", "engines": { @@ -3795,12 +4456,16 @@ } }, "node_modules/picocolors": { - "version": "1.1.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -3812,6 +4477,8 @@ }, "node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3823,6 +4490,8 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { @@ -3835,6 +4504,8 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { @@ -3846,6 +4517,8 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { @@ -3860,6 +4533,8 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { @@ -3871,6 +4546,8 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", "engines": { @@ -3879,11 +4556,15 @@ }, "node_modules/process-nextick-args": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true, "license": "MIT" }, "node_modules/progress": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, "license": "MIT", "engines": { @@ -3892,6 +4573,8 @@ }, "node_modules/punycode": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", "engines": { @@ -3900,6 +4583,8 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -3919,33 +4604,18 @@ }, "node_modules/randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, - "node_modules/randombytes/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/readable-stream": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", "dependencies": { @@ -3960,6 +4630,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "license": "MIT", "dependencies": { @@ -3971,6 +4643,8 @@ }, "node_modules/rechoir": { "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, "license": "MIT", "dependencies": { @@ -3982,6 +4656,8 @@ }, "node_modules/regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "license": "MIT", "engines": { @@ -3993,6 +4669,8 @@ }, "node_modules/regextras": { "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz", + "integrity": "sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==", "dev": true, "license": "MIT", "engines": { @@ -4011,6 +4689,8 @@ }, "node_modules/require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "license": "MIT", "engines": { @@ -4018,23 +4698,30 @@ } }, "node_modules/resolve": { - "version": "1.22.8", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "license": "MIT", "dependencies": { @@ -4046,6 +4733,8 @@ }, "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", "engines": { @@ -4054,6 +4743,8 @@ }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { @@ -4061,22 +4752,26 @@ } }, "node_modules/restore-cursor": { - "version": "4.0.0", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, "license": "MIT", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/reusify": { - "version": "1.0.4", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { @@ -4086,6 +4781,9 @@ }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -4100,6 +4798,9 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -4119,6 +4820,8 @@ }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -4141,11 +4844,15 @@ }, "node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "license": "MIT" }, "node_modules/schema-utils": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "license": "MIT", "dependencies": { @@ -4162,7 +4869,9 @@ } }, "node_modules/semver": { - "version": "7.6.3", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4173,6 +4882,8 @@ }, "node_modules/serialize-javascript": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4181,11 +4892,15 @@ }, "node_modules/setimmediate": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true, "license": "MIT" }, "node_modules/shallow-clone": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "license": "MIT", "dependencies": { @@ -4197,6 +4912,8 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { @@ -4208,6 +4925,8 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { @@ -4215,12 +4934,23 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC" + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/sinon": { "version": "15.2.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-15.2.0.tgz", + "integrity": "sha512-nPS85arNqwBXaIsFCkolHjGIkFo+Oxu9vbgmBJizLAhqe6P2o3Qmj3KCUoRkfhHtvgDhZdWD3risLHAUJ8npjw==", + "deprecated": "16.1.1", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4238,6 +4968,8 @@ }, "node_modules/slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { @@ -4246,6 +4978,8 @@ }, "node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4262,6 +4996,8 @@ }, "node_modules/source-map": { "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -4270,6 +5006,8 @@ }, "node_modules/source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, "license": "MIT", "dependencies": { @@ -4279,6 +5017,8 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -4287,11 +5027,15 @@ }, "node_modules/spdx-exceptions": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true, "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -4300,24 +5044,27 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.20", + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", "dev": true, "license": "CC0-1.0" }, "node_modules/sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/stdin-discarder": { - "version": "0.1.0", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", "dev": true, "license": "MIT", - "dependencies": { - "bl": "^5.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4325,10 +5072,14 @@ }, "node_modules/strict-event-emitter-types": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-event-emitter-types/-/strict-event-emitter-types-2.0.0.tgz", + "integrity": "sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA==", "license": "ISC" }, "node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "license": "MIT", "dependencies": { @@ -4336,16 +5087,21 @@ } }, "node_modules/string-width": { - "version": "4.2.3", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/string-width-cjs": { @@ -4364,8 +5120,46 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { @@ -4391,6 +5185,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -4402,6 +5198,8 @@ }, "node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4412,6 +5210,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", "engines": { @@ -4422,7 +5222,9 @@ } }, "node_modules/table": { - "version": "6.8.2", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4438,6 +5240,8 @@ }, "node_modules/table/node_modules/ajv": { "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", "dependencies": { @@ -4451,13 +5255,39 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/table/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tapable": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, "license": "MIT", "engines": { @@ -4465,7 +5295,9 @@ } }, "node_modules/terser": { - "version": "5.31.6", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -4482,15 +5314,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.10", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -4514,18 +5348,94 @@ } } }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "license": "MIT" }, "node_modules/text-table": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, "license": "MIT" }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4537,10 +5447,14 @@ }, "node_modules/tr46": { "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, "node_modules/ts-loader": { - "version": "9.5.1", + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz", + "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==", "dev": true, "license": "MIT", "dependencies": { @@ -4559,12 +5473,16 @@ } }, "node_modules/tslib": { - "version": "2.7.0", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "license": "MIT", "dependencies": { @@ -4579,11 +5497,15 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true, "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", "dependencies": { @@ -4595,6 +5517,8 @@ }, "node_modules/type-detect": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "license": "MIT", "engines": { @@ -4603,6 +5527,8 @@ }, "node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -4614,6 +5540,8 @@ }, "node_modules/typescript": { "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, "license": "Apache-2.0", "bin": { @@ -4626,18 +5554,23 @@ }, "node_modules/undici-types": { "version": "5.26.5", - "dev": true, + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "license": "MIT" }, "node_modules/universalify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/update-browserslist-db": { - "version": "1.1.0", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -4655,8 +5588,8 @@ ], "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -4667,6 +5600,8 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -4675,16 +5610,22 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, "license": "MIT" }, "node_modules/v8-compile-cache": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", "dev": true, "license": "MIT" }, "node_modules/vscode-jsonrpc": { "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", "license": "MIT", "engines": { "node": ">=14.0.0" @@ -4692,6 +5633,8 @@ }, "node_modules/vscode-languageclient": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", + "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==", "license": "MIT", "dependencies": { "minimatch": "^5.1.0", @@ -4704,6 +5647,8 @@ }, "node_modules/vscode-languageclient/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" @@ -4711,6 +5656,8 @@ }, "node_modules/vscode-languageclient/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -4721,6 +5668,8 @@ }, "node_modules/vscode-languageserver-protocol": { "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.2.0", @@ -4729,10 +5678,14 @@ }, "node_modules/vscode-languageserver-types": { "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", "license": "MIT" }, "node_modules/vsls": { "version": "1.0.4753", + "resolved": "https://registry.npmjs.org/vsls/-/vsls-1.0.4753.tgz", + "integrity": "sha512-hmrsMbhjuLoU8GgtVfqhbV4ZkGvDpLV2AFmzx+cCOGNra2qk0Q36dYkfwENqy/vJVQ/2/lhxcn+69FYnKQRhgg==", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@microsoft/servicehub-framework": "^2.6.74" @@ -4740,6 +5693,8 @@ }, "node_modules/watchpack": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, "license": "MIT", "dependencies": { @@ -4752,20 +5707,24 @@ }, "node_modules/webidl-conversions": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "license": "BSD-2-Clause" }, "node_modules/webpack": { - "version": "5.94.0", + "version": "5.99.6", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.6.tgz", + "integrity": "sha512-TJOLrJ6oeccsGWPl7ujCYuc0pIq2cNsuD6GZDma8i5o5Npvcco/z+NKvZSFsP0/x6SShVb0+X2JK/JHUjKY9dQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", @@ -4777,9 +5736,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", + "schema-utils": "^4.3.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, @@ -4801,6 +5760,8 @@ }, "node_modules/webpack-cli": { "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, "license": "MIT", "dependencies": { @@ -4845,8 +5806,20 @@ } } }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/webpack-merge": { "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, "license": "MIT", "dependencies": { @@ -4860,14 +5833,88 @@ }, "node_modules/webpack-sources": { "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, "license": "MIT", "engines": { "node": ">=10.13.0" } }, + "node_modules/webpack/node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "license": "MIT", "dependencies": { "tr46": "~0.0.3", @@ -4876,6 +5923,8 @@ }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", "dependencies": { @@ -4890,15 +5939,21 @@ }, "node_modules/wildcard": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true, "license": "MIT" }, "node_modules/winreg": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.5.tgz", + "integrity": "sha512-uf7tHf+tw0B1y+x+mKTLHkykBgK2KMs3g+KlzmyMbLvICSHQyB/xOFjTT8qZ3oeTFyU7Bbj4FzXitGG6jvKhYw==", "license": "BSD-2-Clause" }, "node_modules/word-wrap": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", "engines": { @@ -4949,6 +6004,28 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrap-ansi/node_modules/ansi-regex": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", @@ -4975,31 +6052,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", @@ -5018,11 +6070,15 @@ }, "node_modules/wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, "node_modules/ws": { - "version": "8.18.0", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -5081,6 +6137,8 @@ }, "node_modules/yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, "license": "MIT", "dependencies": { @@ -5093,8 +6151,32 @@ "node": ">=10" } }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 98168715..587ec232 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "r", "displayName": "R", "description": "R Extension for Visual Studio Code", - "version": "2.8.5", + "version": "2.8.6", "author": "REditorSupport", "license": "SEE LICENSE IN LICENSE", "publisher": "REditorSupport", diff --git a/src/test/suite/syntax.test.ts b/src/test/suite/syntax.test.ts index e1ac8111..59866d66 100644 --- a/src/test/suite/syntax.test.ts +++ b/src/test/suite/syntax.test.ts @@ -9,7 +9,7 @@ interface syntaxFile { 'function-declarations': { 'patterns': [ { - 'match':string + 'begin':string } ] } @@ -17,25 +17,6 @@ interface syntaxFile { } -/** - * Converts a POSIX regular expression string into a format - * that JavaScript can use. This is because vscode parses - * syntax files using POSIX but JavaScript can't support it. - * @param {string} s - A string to be used as a regular expression - */ -const regex_from_posix = function (s: string): string { - const mappings = [ - ['[:alnum:]', 'a-zA-Z0-9'], - ['[:alpha:]', 'a-zA-Z'] - ]; - let s2 = s; - mappings.forEach((el) => { - s2 = s2.replace(el[0], el[1]); - }); - return s2; -}; - - const extension_root: string = join(__dirname, '..', '..', '..'); const r_syntax_file: string = join(extension_root, 'syntax', 'r.json'); @@ -43,14 +24,12 @@ console.log(r_syntax_file); const rsyntax_raw = readFileSync(r_syntax_file) as unknown; const rsyntax: syntaxFile = JSON.parse(rsyntax_raw as string) as syntaxFile; -const function_pattern: string = rsyntax.repository['function-declarations'].patterns[0].match; -const function_pattern_fixed: string = regex_from_posix(function_pattern); - +const function_pattern: string = rsyntax.repository['function-declarations'].patterns[0].begin; suite('Syntax Highlighting', () => { test('function-declarations - basic match', () => { - const re = new RegExp(function_pattern_fixed); + const re = new RegExp(function_pattern); const line = 'x <- function(x) {'; const match = re.exec(line); assert.ok(match); @@ -58,7 +37,7 @@ suite('Syntax Highlighting', () => { }); test('function-declarations - extra spacing', () => { - const re = new RegExp(function_pattern_fixed); + const re = new RegExp(function_pattern); const line = 'x <- function (x) {'; const match = re.exec(line); assert.ok(match); @@ -66,7 +45,7 @@ suite('Syntax Highlighting', () => { }); test('function-declarations - false function', () => { - const re = new RegExp(function_pattern_fixed); + const re = new RegExp(function_pattern); const line = 'x <- functions'; const match = re.exec(line); assert.strictEqual(match, null); diff --git a/syntax/r.json b/syntax/r.json index 7bfad062..48b0db05 100644 --- a/syntax/r.json +++ b/syntax/r.json @@ -11,74 +11,50 @@ "keyEquivalent": "^~R", "name": "R", "patterns": [ - { - "include": "#roxygen" - }, - { - "include": "#comments" - }, - { - "include": "#constants" - }, - { - "include": "#keywords" - }, - { - "include": "#storage-type" - }, - { - "include": "#strings" - }, - { - "include": "#brackets" - }, - { - "include": "#function-declarations" - }, - { - "include": "#lambda-functions" - }, - { - "include": "#builtin-functions" - }, - { - "include": "#function-calls" - }, - { - "include": "#general-variables" - } + { "include": "#roxygen" }, + { "include": "#comments" }, + { "include": "#constants" }, + { "include": "#accessor" }, + { "include": "#operators" }, + { "include": "#keywords" }, + { "include": "#storage-type" }, + { "include": "#strings" }, + { "include": "#brackets" }, + { "include": "#function-declarations" }, + { "include": "#lambda-functions" }, + { "include": "#builtin-functions" }, + { "include": "#function-calls" } ], "repository": { + "accessor": { + "patterns": [ + { + "begin": "(\\$)(?=(?:[a-zA-Z._][\\w.]*|`[^`]+`))", + "beginCaptures": { "1": { "name": "keyword.accessor.dollar.r" } }, + "end": "(?!\\G)", + "endCaptures": {}, + "patterns": [ { "include": "#function-calls" } ] + } + ] + }, "comments": { "patterns": [ { "captures": { - "1": { - "name": "comment.line.pragma.r" - }, - "2": { - "name": "entity.name.pragma.name.r" - } + "1": { "name": "comment.line.pragma.r" }, + "2": { "name": "entity.name.pragma.name.r" } }, "match": "^(#pragma[ \\t]+mark)[ \\t](.*)", "name": "comment.line.pragma-mark.r" }, { "begin": "(^[ \\t]+)?(?=#)", - "beginCaptures": { - "1": { - "name": "punctuation.whitespace.comment.leading.r" - } - }, + "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.r" } }, "end": "(?!\\G)", "patterns": [ { "begin": "#", - "beginCaptures": { - "0": { - "name": "punctuation.definition.comment.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.definition.comment.r" } }, "end": "\\n", "name": "comment.line.number-sign.r" } @@ -130,85 +106,127 @@ } ] }, - "general-variables": { + "operators": { "patterns": [ { - "captures": { - "1": { - "name": "variable.parameter.r" - }, - "2": { - "name": "keyword.operator.assignment.r" - } - }, - "match": "([[:alpha:].][[:alnum:]._]*)\\s*(=)(?=[^=])" + "match": "%[*/ox]%", + "name": "keyword.operator.arithmetic.r" }, { - "captures": { - "1": { - "name": "variable.parameter.r" - }, - "2": { - "name": "keyword.operator.assignment.r" - } - }, - "match": "(`[^`]+`)\\s*(=)(?=[^=])" + "match": "(<<-|->>)", + "name": "keyword.operator.assignment.r" + }, + { + "match": "%(between|chin|do|dopar|in|like|\\+replace|\\+|:|T>|<>|>|\\$)%", + "name": "keyword.operator.other.r" + }, + { + "match": "\\.\\.\\.", + "name": "keyword.other.r" + }, + { + "match": ":::?", + "name": "punctuation.accessor.colons.r" + }, + { + "match": "(%%|\\*\\*)", + "name": "keyword.operator.arithmetic.r" + }, + { + "match": "(<-|->)", + "name": "keyword.operator.assignment.r" + }, + { + "match": "\\|>", + "name": "keyword.operator.assignment.redirection.r" }, { - "match": "\\b([\\d_][[:alnum:]._]+)\\b", - "name": "invalid.illegal.variable.other.r" + "match": "(==|!=|<>|<=?|>=?)", + "name": "keyword.operator.comparison.r" + }, + { + "match": "(&&?|\\|\\|?)", + "name": "keyword.operator.logical.r" + }, + { + "match": ":=", + "name": "keyword.operator.other.r" }, { - "match": "\\b([[:alnum:]_]+)(?=::)", - "name": "entity.namespace.r" + "match": "[-+*/^]", + "name": "keyword.operator.arithmetic.r" + }, + { + "match": "=", + "name": "keyword.operator.assignment.r" + }, + { + "match": "!", + "name": "keyword.operator.logical.r" + }, + { + "match": "[:~@]", + "name": "keyword.other.r" + }, + { + "match": ";", + "name": "punctuation.terminator.semicolon.r" } ] }, "keywords": { "patterns": [ { - "match": "\\b(break|next|repeat|else|in)\\b", - "name": "keyword.control.r" + "match": "\\bif\\b(?=\\s*\\()", + "name": "keyword.control.conditional.if.r" }, { - "match": "\\b(ifelse|if|for|return|switch|while|invisible)\\b(?=\\s*\\()", - "name": "keyword.control.r" + "match": "\\belse\\b", + "name": "keyword.control.conditional.else.r" }, { - "match": "(\\-|\\+|\\*|\\/|%\\/%|%%|%\\*%|%o%|%x%|\\^)", - "name": "keyword.operator.arithmetic.r" + "match": "\\bbreak\\b", + "name": "keyword.control.flow.break.r" }, { - "match": "(:=|<-|<<-|->|->>)", - "name": "keyword.operator.assignment.r" + "match": "\\bnext\\b", + "name": "keyword.control.flow.continue.r" }, { - "match": "(==|<=|>=|!=|<>|<|>|%in%)", - "name": "keyword.operator.comparison.r" + "match": "\\breturn(?=\\s*\\()", + "name": "keyword.control.flow.return.r" }, { - "match": "(!|&{1,2}|[|]{1,2})", - "name": "keyword.operator.logical.r" + "match": "\\brepeat\\b", + "name": "keyword.control.loop.repeat.r" }, { - "match": "(\\|>)", - "name": "keyword.operator.pipe.r" + "match": "\\bfor\\b(?=\\s*\\()", + "name": "keyword.control.loop.for.r" }, { - "match": "(%between%|%chin%|%like%|%\\+%|%\\+replace%|%:%|%do%|%dopar%|%>%|%<>%|%T>%|%\\$%)", - "name": "keyword.operator.other.r" + "match": "\\bwhile\\b(?=\\s*\\()", + "name": "keyword.control.loop.while.r" }, { - "match": "(\\.\\.\\.|\\$|:|\\~|@)", - "name": "keyword.other.r" + "match": "\\bin\\b", + "name": "keyword.operator.word.r" } ] }, "storage-type": { "patterns": [ { - "match": "\\b(character|complex|double|expression|integer|list|logical|numeric|single|raw)\\b(?=\\s*\\()", - "name": "storage.type.r" + "begin": "\\b(character|complex|double|expression|integer|list|logical|numeric|single|raw|pairlist)\\b\\s*(\\()", + "beginCaptures": { + "1": { "name": "storage.type.r" }, + "2": { "name": "punctuation.definition.arguments.begin.r" } + }, + "contentName": "meta.function-call.arguments.r", + "end": "(\\))", + "endCaptures": { "1": { "name": "punctuation.definition.arguments.end.r" } }, + "name": "meta.function-call.r", + "patterns": [ { "include": "#function-call-arguments" } ] } ] }, @@ -216,107 +234,51 @@ "patterns": [ { "begin": "[rR]\"(-*)\\[", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.raw.begin.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, "end": "\\]\\1\"", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.raw.end.r" - } - }, + "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, "name": "string.quoted.double.raw.r" }, { "begin": "[rR]'(-*)\\[", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.raw.begin.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, "end": "\\]\\1'", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.raw.end.r" - } - }, + "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, "name": "string.quoted.single.raw.r" }, { "begin": "[rR]\"(-*)\\{", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.raw.begin.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, "end": "\\}\\1\"", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.raw.end.r" - } - }, + "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, "name": "string.quoted.double.raw.r" }, { "begin": "[rR]'(-*)\\{", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.raw.begin.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, "end": "\\}\\1'", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.raw.end.r" - } - }, + "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, "name": "string.quoted.single.raw.r" }, { "begin": "[rR]\"(-*)\\(", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.raw.begin.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, "end": "\\)\\1\"", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.raw.end.r" - } - }, + "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, "name": "string.quoted.double.raw.r" }, { "begin": "[rR]'(-*)\\(", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.raw.begin.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, "end": "\\)\\1'", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.raw.end.r" - } - }, + "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, "name": "string.quoted.single.raw.r" }, { "begin": "\"", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.r" } }, "end": "\"", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.r" - } - }, + "endCaptures": { "0": { "name": "punctuation.definition.string.end.r" } }, "name": "string.quoted.double.r", "patterns": [ { @@ -327,17 +289,9 @@ }, { "begin": "'", - "beginCaptures": { - "0": { - "name": "punctuation.definition.string.begin.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.r" } }, "end": "'", - "endCaptures": { - "0": { - "name": "punctuation.definition.string.end.r" - } - }, + "endCaptures": { "0": { "name": "punctuation.definition.string.end.r" } }, "name": "string.quoted.single.r", "patterns": [ { @@ -352,102 +306,63 @@ "patterns": [ { "begin": "\\(", - "beginCaptures": { - "0": { - "name": "punctuation.section.parens.begin.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.section.parens.begin.r" } }, "end": "\\)", - "endCaptures": { - "0": { - "name": "punctuation.section.parens.end.r" - } - }, - "patterns": [ - { - "include": "source.r" - } - ] + "endCaptures": { "0": { "name": "punctuation.section.parens.end.r" } }, + "patterns": [ { "include": "source.r" } ] }, { "begin": "\\[(?!\\[)", - "beginCaptures": { - "0": { - "name": "punctuation.section.brackets.single.begin.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.section.brackets.single.begin.r" } }, "end": "\\]", - "endCaptures": { - "0": { - "name": "punctuation.section.brackets.single.end.r" - } - }, - "patterns": [ - { - "include": "source.r" - } - ] + "endCaptures": { "0": { "name": "punctuation.section.brackets.single.end.r" } }, + "patterns": [ { "include": "source.r" } ] }, { "begin": "\\[\\[", - "beginCaptures": { - "0": { - "name": "punctuation.section.brackets.double.begin.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.section.brackets.double.begin.r" } }, "end": "\\]\\]", - "endCaptures": { - "0": { - "name": "punctuation.section.brackets.double.end.r" - } - }, + "endCaptures": { "0": { "name": "punctuation.section.brackets.double.end.r" } }, "contentName": "meta.item-access.arguments.r", - "patterns": [ - { - "include": "source.r" - } - ] + "patterns": [ { "include": "source.r" } ] }, { "begin": "\\{", - "beginCaptures": { - "0": { - "name": "punctuation.section.braces.begin.r" - } - }, + "beginCaptures": { "0": { "name": "punctuation.section.braces.begin.r" } }, "end": "\\}", - "endCaptures": { - "0": { - "name": "punctuation.section.braces.end.r" - } - }, - "patterns": [ - { - "include": "source.r" - } - ] + "endCaptures": { "0": { "name": "punctuation.section.braces.end.r" } }, + "patterns": [ { "include": "source.r" } ] } ] }, "function-declarations": { "patterns": [ { - "match": "((?:`[^`\\\\]*(?:\\\\.[^`\\\\]*)*`)|(?:[[:alpha:].][[:alnum:]._]*))\\s*( Date: Mon, 21 Apr 2025 06:13:05 +0200 Subject: [PATCH 10/74] Show sidebar icon only when extension is active (#1579) --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 587ec232..2bd6a4db 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,8 @@ { "id": "workspaceViewer", "title": "R", - "icon": "./images/Rlogo.svg" + "icon": "./images/Rlogo.svg", + "when": "r.isActive" } ] }, From 2d115893d675daf1ea61916c7880e41baa318666 Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Tue, 13 May 2025 18:58:41 -0700 Subject: [PATCH 11/74] Move R and R markdown syntaxes to vscode-R-syntax (#1606) * Move R and R markdown syntaxes to vscode-R-syntax * remove syntax.test --- CODE_OF_CONDUCT.md | 46 -- LICENSE | 2 +- PULL_REQUEST_TEMPLATE.md | 5 - README.md | 7 +- ThirdPartyNotices.txt | 33 - package-lock.json | 8 +- package.json | 9 +- src/test/suite/syntax.test.ts | 54 -- syntax/Markdown Redcarpet.json | 146 ---- syntax/RMarkdown.json | 13 - syntax/r.json | 531 -------------- test/coloriize-results/test_r.json | 1047 ---------------------------- test/colorize-fixtures/test.R | 34 - test/colorize-fixtures/test.Rd | 21 - test/colorize-fixtures/test.Rmd | 22 - webpack.config.js | 81 +-- 16 files changed, 55 insertions(+), 2004 deletions(-) delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 PULL_REQUEST_TEMPLATE.md delete mode 100644 ThirdPartyNotices.txt delete mode 100644 src/test/suite/syntax.test.ts delete mode 100644 syntax/Markdown Redcarpet.json delete mode 100644 syntax/RMarkdown.json delete mode 100644 syntax/r.json delete mode 100644 test/coloriize-results/test_r.json delete mode 100644 test/colorize-fixtures/test.R delete mode 100644 test/colorize-fixtures/test.Rd delete mode 100644 test/colorize-fixtures/test.Rmd diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 005e5407..00000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at . The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/LICENSE b/LICENSE index e3e6dfca..bd31956d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 REditorSupport +Copyright (c) 2025 REditorSupport Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 62ba3ced..00000000 --- a/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,5 +0,0 @@ -# What problem did you solve? - -## (If you have)Screenshot - -## (If you do not have screenshot) How can I check this pull request? diff --git a/README.md b/README.md index fc7460c1..a2a3671f 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,9 @@ [![Badge](https://aka.ms/vsls-badge)](https://aka.ms/vsls) -This [VS Code](https://code.visualstudio.com/) extension provides support for the [R programming language](https://www.r-project.org), including features such as -extended syntax highlighting, R language service based on code analysis, interacting with R terminals, viewing data, plots, workspace variables, help pages, managing packages, and working with [R Markdown](https://rmarkdown.rstudio.com/) documents. +This [VS Code](https://code.visualstudio.com/) extension provides support for the [R programming language](https://www.r-project.org), including features such as R language service based on code analysis, interacting with R terminals, viewing data, plots, workspace variables, help pages, managing packages, and working with [R Markdown](https://rmarkdown.rstudio.com/) documents. + +The R and R Markdown syntaxes are located in a slibing package [vscode-R-syntax](https://github.com/REditorSupport/vscode-R-syntax). Go to the [wiki](https://github.com/REditorSupport/vscode-R/wiki) to view the documentation of the extension. @@ -33,8 +34,6 @@ Go to the installation wiki pages ([Windows](https://github.com/REditorSupport/v ## Features -* Extended syntax highlighting for R, R Markdown, and R Documentation. - * Snippets for R and R Markdown. * [R Language Service](https://github.com/REditorSupport/vscode-R/wiki/R-Language-Service): Code completion, function signature, symbol highlight, document outline, formatting, definition, diagnostics, references, and more. diff --git a/ThirdPartyNotices.txt b/ThirdPartyNotices.txt deleted file mode 100644 index a81c7684..00000000 --- a/ThirdPartyNotices.txt +++ /dev/null @@ -1,33 +0,0 @@ -THIRD-PARTY SOFTWARE NOTICES AND INFORMATION - -This project incorporates components from the projects listed below. The original copyright notices and the licenses under which Yuki Ueda received such components are set forth below. Yuki Ueda reserves all rights not expressly granted herein, whether by implication, estoppel or otherwise. - -1. microsoft/vscode 1.43 (https://github.com/microsoft/vscode) - -%% microsoft/vscode NOTICES AND INFORMATION BEGIN HERE -========================================= -MIT License - -Copyright (c) 2015 - present Microsoft Corporation - -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -========================================= -END OF microsoft/vscode NOTICES AND INFORMATION diff --git a/package-lock.json b/package-lock.json index ecf465c0..47e724ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "r", - "version": "2.8.5", + "version": "2.8.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "r", - "version": "2.8.5", + "version": "2.8.6", "license": "SEE LICENSE IN LICENSE", "dependencies": { "ag-grid-community": "^31.3.2", @@ -49,8 +49,8 @@ "sinon": "^15.0.1", "ts-loader": "^9.3.1", "typescript": "^4.7.2", - "webpack": "^5.76.0", - "webpack-cli": "^4.7.2" + "webpack": "^5.99.6", + "webpack-cli": "^4.10.0" }, "engines": { "vscode": "^1.75.0" diff --git a/package.json b/package.json index 2bd6a4db..9fa5dd89 100644 --- a/package.json +++ b/package.json @@ -2111,8 +2111,8 @@ "sinon": "^15.0.1", "ts-loader": "^9.3.1", "typescript": "^4.7.2", - "webpack": "^5.76.0", - "webpack-cli": "^4.7.2" + "webpack": "^5.99.6", + "webpack-cli": "^4.10.0" }, "dependencies": { "ag-grid-community": "^31.3.2", @@ -2129,5 +2129,8 @@ "vscode-languageclient": "^9.0.1", "vsls": "^1.0.4753", "winreg": "^1.2.4" - } + }, + "extensionDependencies": [ + "REditorSupport.r-syntax" + ] } diff --git a/src/test/suite/syntax.test.ts b/src/test/suite/syntax.test.ts deleted file mode 100644 index 59866d66..00000000 --- a/src/test/suite/syntax.test.ts +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; - -import { readFileSync } from 'fs'; -import { join } from 'path'; -import * as assert from 'assert'; - -interface syntaxFile { - 'repository': { - 'function-declarations': { - 'patterns': [ - { - 'begin':string - } - ] - } - } -} - - -const extension_root: string = join(__dirname, '..', '..', '..'); - -const r_syntax_file: string = join(extension_root, 'syntax', 'r.json'); -console.log(r_syntax_file); -const rsyntax_raw = readFileSync(r_syntax_file) as unknown; -const rsyntax: syntaxFile = JSON.parse(rsyntax_raw as string) as syntaxFile; - -const function_pattern: string = rsyntax.repository['function-declarations'].patterns[0].begin; - -suite('Syntax Highlighting', () => { - - test('function-declarations - basic match', () => { - const re = new RegExp(function_pattern); - const line = 'x <- function(x) {'; - const match = re.exec(line); - assert.ok(match); - assert.strictEqual(match[3], 'function'); - }); - - test('function-declarations - extra spacing', () => { - const re = new RegExp(function_pattern); - const line = 'x <- function (x) {'; - const match = re.exec(line); - assert.ok(match); - assert.strictEqual(match[3], 'function'); - }); - - test('function-declarations - false function', () => { - const re = new RegExp(function_pattern); - const line = 'x <- functions'; - const match = re.exec(line); - assert.strictEqual(match, null); - }); - -}); diff --git a/syntax/Markdown Redcarpet.json b/syntax/Markdown Redcarpet.json deleted file mode 100644 index 290833ae..00000000 --- a/syntax/Markdown Redcarpet.json +++ /dev/null @@ -1,146 +0,0 @@ -{ - "fileTypes" : [], - "injectionSelector" : "L:text.html.rmarkdown", - "patterns" : [ - {"include" :"#block"}, - {"include" : "#inline"} - ], - "repository" : { - "block" : { - "patterns" : [ - {"include" : "#fenced_block_r"}, - {"include" : "#fenced_block_c"}, - {"include" : "#fenced_block_cpp"}, - {"include" : "#fenced_block_yaml"}, - {"include" : "#fenced_block"}, - {"include" : "#fenced_block_julia"}, - {"include" : "#fenced_block_stan"}, - {"include" : "#fenced_block_python"}, - {"include" : "#fenced_block_sql"}, - {"include" : "#fenced_block_css"}, - {"include" : "#fenced_block_scss"}, - {"include" : "#fenced_block_js"}, - {"include" : "#link-def"}, - {"include" : "#html"}, - {"include" : "#paragraph"} - ], - "repository" : { - "fenced_block_c" : { - "begin" : "(^|\\G)([`]{3})\\{*[ ]*(?:c|C)\\s*\\}*$", - "end" : "(^|\\G)([`]{3})($|\\z)", - "name" : "meta.embedded.block.c", - "patterns" : [ - {"include" : "source.c"} - ] - }, - "fenced_block_cpp" : { - "begin" : "(^|\\G)([`]{3})\\{*[ ]*(?:cpp|c\\+\\+|C\\+\\+).*\\}*$", - "end" : "(^|\\G)([`]{3})($|\\z)", - "name" : "meta.embedded.block.cpp", - "patterns" : [ - {"include" : "source.cpp"} - ] - }, - "fenced_block_r" : { - "begin" : "(^|\\G)([`]{3})\\{*[ ]*(?:r|R).*\\}*$", - "end" : "(^|\\G)([`]{3})($|\\z)", - "name" : "meta.embedded.block.r", - "patterns" : [ - {"include" : "source.r"} - ] - }, - "fenced_block_yaml" : { - "begin" : "(^|\\G)([`]{3})\\{*[ ]*(?:yaml|YAML).*\\}*$", - "end" : "(^|\\G)([`]{3})($|\\z)", - "name" : "meta.embedded.block.yaml", - "patterns" : [ - {"include" : "source.yaml"} - ] - }, - "fenced_block_julia" : { - "begin" : "(^|\\G)([`]{3})\\{*[ ]*(?:julia).*\\}*$", - "end" : "(^|\\G)([`]{3})($|\\z)", - "name" : "meta.embedded.block.julia", - "patterns" : [ - {"include" : "source.julia"} - ] - }, - "fenced_block_stan" : { - "begin" : "(^|\\G)([`]{3})\\{*[ ]*(?:stan).*\\}*$", - "end" : "(^|\\G)([`]{3})($|\\z)", - "name" : "meta.embedded.block.stan", - "patterns" : [ - {"include" : "source.stan"} - ] - }, - "fenced_block_python" : { - "begin" : "(^|\\G)([`]{3})\\{*[ ]*(?:python).*\\}*$", - "end" : "(^|\\G)([`]{3})($|\\z)", - "name" : "meta.embedded.block.python", - "patterns" : [ - {"include" : "source.python"} - ] - }, - "fenced_block_sql" : { - "begin" : "(^|\\G)([`]{3})\\{*[ ]*(?:sql).*\\}*$", - "end" : "(^|\\G)([`]{3})($|\\z)", - "name" : "meta.embedded.block.sql", - "patterns" : [ - {"include" : "source.sql"} - ] - }, - "fenced_block_css" : { - "begin" : "(^|\\G)([`]{3})\\{*[ ]*(?:css).*\\}*$", - "end" : "(^|\\G)([`]{3})($|\\z)", - "name" : "meta.embedded.block.css", - "patterns" : [ - {"include" : "source.css"} - ] - }, - "fenced_block_scss" : { - "begin" : "(^|\\G)([`]{3})\\{*[ ]*(?:scss).*\\}*$", - "end" : "(^|\\G)([`]{3})($|\\z)", - "name" : "meta.embedded.block.css.scss", - "patterns" : [ - {"include" : "source.css.scss"} - ] - }, - "fenced_block_js" : { - "begin" : "(^|\\G)([`]{3})\\{*[ ]*(?:js).*\\}*$", - "end" : "(^|\\G)([`]{3})($|\\z)", - "name" : "meta.embedded.block.js", - "patterns" : [ - {"include" : "source.js"} - ] - } - } - }, - "inline" : { - "patterns" : [ - {"include" : "#code-inline-r"} - ], - "repository" : { - "code-inline-r" : { - "begin" : "(`[r|R][ ]+)", - "beginCaptures" : { - "1" : { - "name" : "punctuation.definition.raw.rmarkdown" - } - }, - "end" : "(`)", - "endCaptures" : { - "1" : { - "name" : "punctuation.definition.raw.rmarkdown" - } - }, - "contentName" : "meta.embedded.block.r", - "patterns" : [ - {"include" : "source.r"} - ] - } - } - } - }, - "scopeName" : "text.html.markdown.redcarpet", - "uuid" : "BE79A69A-B9F5-4BCD-9068-893496E86663" -} diff --git a/syntax/RMarkdown.json b/syntax/RMarkdown.json deleted file mode 100644 index f322648f..00000000 --- a/syntax/RMarkdown.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "R Markdown", - "scopeName": "text.html.rmarkdown", - "fileTypes": [ - "Rmd", - "rmd" - ], - "patterns": [ - { - "include": "text.html.markdown" - } - ] -} diff --git a/syntax/r.json b/syntax/r.json deleted file mode 100644 index 48b0db05..00000000 --- a/syntax/r.json +++ /dev/null @@ -1,531 +0,0 @@ -{ - "fileTypes": [ - "R", - "r", - "S", - "s", - "Rprofile" - ], - "foldingStartMarker": "(\\(\\s*$|\\{\\s*$)", - "foldingStopMarker": "(^\\s*\\)|^\\s*\\})", - "keyEquivalent": "^~R", - "name": "R", - "patterns": [ - { "include": "#roxygen" }, - { "include": "#comments" }, - { "include": "#constants" }, - { "include": "#accessor" }, - { "include": "#operators" }, - { "include": "#keywords" }, - { "include": "#storage-type" }, - { "include": "#strings" }, - { "include": "#brackets" }, - { "include": "#function-declarations" }, - { "include": "#lambda-functions" }, - { "include": "#builtin-functions" }, - { "include": "#function-calls" } - ], - "repository": { - "accessor": { - "patterns": [ - { - "begin": "(\\$)(?=(?:[a-zA-Z._][\\w.]*|`[^`]+`))", - "beginCaptures": { "1": { "name": "keyword.accessor.dollar.r" } }, - "end": "(?!\\G)", - "endCaptures": {}, - "patterns": [ { "include": "#function-calls" } ] - } - ] - }, - "comments": { - "patterns": [ - { - "captures": { - "1": { "name": "comment.line.pragma.r" }, - "2": { "name": "entity.name.pragma.name.r" } - }, - "match": "^(#pragma[ \\t]+mark)[ \\t](.*)", - "name": "comment.line.pragma-mark.r" - }, - { - "begin": "(^[ \\t]+)?(?=#)", - "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.r" } }, - "end": "(?!\\G)", - "patterns": [ - { - "begin": "#", - "beginCaptures": { "0": { "name": "punctuation.definition.comment.r" } }, - "end": "\\n", - "name": "comment.line.number-sign.r" - } - ] - } - ] - }, - "constants": { - "patterns": [ - { - "match": "\\b(pi|letters|LETTERS|month\\.abb|month\\.name)\\b", - "name": "support.constant.misc.r" - }, - { - "match": "\\b(TRUE|FALSE|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_|Inf|NaN)\\b", - "name": "constant.language.r" - }, - { - "match": "\\b0(x|X)[0-9a-fA-F]+i\\b", - "name": "constant.numeric.imaginary.hexadecimal.r" - }, - { - "match": "\\b[0-9]+\\.?[0-9]*(?:(e|E)(\\+|-)?[0-9]+)?i\\b", - "name": "constant.numeric.imaginary.decimal.r" - }, - { - "match": "\\.[0-9]+(?:(e|E)(\\+|-)?[0-9]+)?i\\b", - "name": "constant.numeric.imaginary.decimal.r" - }, - { - "match": "\\b0(x|X)[0-9a-fA-F]+L\\b", - "name": "constant.numeric.integer.hexadecimal.r" - }, - { - "match": "\\b(?:[0-9]+\\.?[0-9]*)(?:(e|E)(\\+|-)?[0-9]+)?L\\b", - "name": "constant.numeric.integer.decimal.r" - }, - { - "match": "\\b0(x|X)[0-9a-fA-F]+\\b", - "name": "constant.numeric.float.hexadecimal.r" - }, - { - "match": "\\b[0-9]+\\.?[0-9]*(?:(e|E)(\\+|-)?[0-9]+)?\\b", - "name": "constant.numeric.float.decimal.r" - }, - { - "match": "\\.[0-9]+(?:(e|E)(\\+|-)?[0-9]+)?\\b", - "name": "constant.numeric.float.decimal.r" - } - ] - }, - "operators": { - "patterns": [ - { - "match": "%[*/ox]%", - "name": "keyword.operator.arithmetic.r" - }, - { - "match": "(<<-|->>)", - "name": "keyword.operator.assignment.r" - }, - { - "match": "%(between|chin|do|dopar|in|like|\\+replace|\\+|:|T>|<>|>|\\$)%", - "name": "keyword.operator.other.r" - }, - { - "match": "\\.\\.\\.", - "name": "keyword.other.r" - }, - { - "match": ":::?", - "name": "punctuation.accessor.colons.r" - }, - { - "match": "(%%|\\*\\*)", - "name": "keyword.operator.arithmetic.r" - }, - { - "match": "(<-|->)", - "name": "keyword.operator.assignment.r" - }, - { - "match": "\\|>", - "name": "keyword.operator.assignment.redirection.r" - }, - { - "match": "(==|!=|<>|<=?|>=?)", - "name": "keyword.operator.comparison.r" - }, - { - "match": "(&&?|\\|\\|?)", - "name": "keyword.operator.logical.r" - }, - { - "match": ":=", - "name": "keyword.operator.other.r" - }, - { - "match": "[-+*/^]", - "name": "keyword.operator.arithmetic.r" - }, - { - "match": "=", - "name": "keyword.operator.assignment.r" - }, - { - "match": "!", - "name": "keyword.operator.logical.r" - }, - { - "match": "[:~@]", - "name": "keyword.other.r" - }, - { - "match": ";", - "name": "punctuation.terminator.semicolon.r" - } - ] - }, - "keywords": { - "patterns": [ - { - "match": "\\bif\\b(?=\\s*\\()", - "name": "keyword.control.conditional.if.r" - }, - { - "match": "\\belse\\b", - "name": "keyword.control.conditional.else.r" - }, - { - "match": "\\bbreak\\b", - "name": "keyword.control.flow.break.r" - }, - { - "match": "\\bnext\\b", - "name": "keyword.control.flow.continue.r" - }, - { - "match": "\\breturn(?=\\s*\\()", - "name": "keyword.control.flow.return.r" - }, - { - "match": "\\brepeat\\b", - "name": "keyword.control.loop.repeat.r" - }, - { - "match": "\\bfor\\b(?=\\s*\\()", - "name": "keyword.control.loop.for.r" - }, - { - "match": "\\bwhile\\b(?=\\s*\\()", - "name": "keyword.control.loop.while.r" - }, - { - "match": "\\bin\\b", - "name": "keyword.operator.word.r" - } - ] - }, - "storage-type": { - "patterns": [ - { - "begin": "\\b(character|complex|double|expression|integer|list|logical|numeric|single|raw|pairlist)\\b\\s*(\\()", - "beginCaptures": { - "1": { "name": "storage.type.r" }, - "2": { "name": "punctuation.definition.arguments.begin.r" } - }, - "contentName": "meta.function-call.arguments.r", - "end": "(\\))", - "endCaptures": { "1": { "name": "punctuation.definition.arguments.end.r" } }, - "name": "meta.function-call.r", - "patterns": [ { "include": "#function-call-arguments" } ] - } - ] - }, - "strings": { - "patterns": [ - { - "begin": "[rR]\"(-*)\\[", - "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, - "end": "\\]\\1\"", - "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, - "name": "string.quoted.double.raw.r" - }, - { - "begin": "[rR]'(-*)\\[", - "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, - "end": "\\]\\1'", - "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, - "name": "string.quoted.single.raw.r" - }, - { - "begin": "[rR]\"(-*)\\{", - "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, - "end": "\\}\\1\"", - "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, - "name": "string.quoted.double.raw.r" - }, - { - "begin": "[rR]'(-*)\\{", - "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, - "end": "\\}\\1'", - "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, - "name": "string.quoted.single.raw.r" - }, - { - "begin": "[rR]\"(-*)\\(", - "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, - "end": "\\)\\1\"", - "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, - "name": "string.quoted.double.raw.r" - }, - { - "begin": "[rR]'(-*)\\(", - "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, - "end": "\\)\\1'", - "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, - "name": "string.quoted.single.raw.r" - }, - { - "begin": "\"", - "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.r" } }, - "end": "\"", - "endCaptures": { "0": { "name": "punctuation.definition.string.end.r" } }, - "name": "string.quoted.double.r", - "patterns": [ - { - "match": "\\\\.", - "name": "constant.character.escape.r" - } - ] - }, - { - "begin": "'", - "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.r" } }, - "end": "'", - "endCaptures": { "0": { "name": "punctuation.definition.string.end.r" } }, - "name": "string.quoted.single.r", - "patterns": [ - { - "match": "\\\\.", - "name": "constant.character.escape.r" - } - ] - } - ] - }, - "brackets": { - "patterns": [ - { - "begin": "\\(", - "beginCaptures": { "0": { "name": "punctuation.section.parens.begin.r" } }, - "end": "\\)", - "endCaptures": { "0": { "name": "punctuation.section.parens.end.r" } }, - "patterns": [ { "include": "source.r" } ] - }, - { - "begin": "\\[(?!\\[)", - "beginCaptures": { "0": { "name": "punctuation.section.brackets.single.begin.r" } }, - "end": "\\]", - "endCaptures": { "0": { "name": "punctuation.section.brackets.single.end.r" } }, - "patterns": [ { "include": "source.r" } ] - }, - { - "begin": "\\[\\[", - "beginCaptures": { "0": { "name": "punctuation.section.brackets.double.begin.r" } }, - "end": "\\]\\]", - "endCaptures": { "0": { "name": "punctuation.section.brackets.double.end.r" } }, - "contentName": "meta.item-access.arguments.r", - "patterns": [ { "include": "source.r" } ] - }, - { - "begin": "\\{", - "beginCaptures": { "0": { "name": "punctuation.section.braces.begin.r" } }, - "end": "\\}", - "endCaptures": { "0": { "name": "punctuation.section.braces.end.r" } }, - "patterns": [ { "include": "source.r" } ] - } - ] - }, - "function-declarations": { - "patterns": [ - { - "begin": "((?:[a-zA-Z._][\\w.]*|`[^`]+`))\\s*( https://webpack.js.org/configuration/node/ + target: 'node', // vscode extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ - entry: './src/extension.ts', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/ - output: { + 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', - devtoolModuleFilenameTemplate: '../[resource-path]' - }, - devtool: 'source-map', - externals: { - 'utf-8-validate': 'commonjs utf-8-validate', - bufferutil: 'commonjs bufferutil', - 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/ - }, - resolve: { + path: path.resolve(__dirname, 'dist'), + filename: 'extension.js', + libraryTarget: 'commonjs2', + devtoolModuleFilenameTemplate: '../[resource-path]' + }, + devtool: 'source-map', + externals: { + 'utf-8-validate': 'commonjs utf-8-validate', + bufferutil: 'commonjs bufferutil', + 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/ + }, + 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' - } + extensions: ['.ts', '.js'] + }, + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + use: [ + { + loader: 'ts-loader', + } + ] + } ] - } - ] - }, - plugins: [ - new CopyPlugin({ - patterns: [ - { from: './node_modules/jquery/dist/jquery.min.js', to: 'resources' }, - { from: './node_modules/jquery.json-viewer/json-viewer', to: 'resources' }, - { from: './node_modules/ag-grid-community/dist/ag-grid-community.min.noStyle.js', to: 'resources' }, - { from: './node_modules/ag-grid-community/styles/ag-grid.min.css', to: 'resources' }, - { from: './node_modules/ag-grid-community/styles/ag-theme-balham.min.css', to: 'resources' }, - ] - }), - ], + }, + plugins: [ + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + new CopyPlugin({ + patterns: [ + { from: './node_modules/jquery/dist/jquery.min.js', to: 'resources' }, + { from: './node_modules/jquery.json-viewer/json-viewer', to: 'resources' }, + { from: './node_modules/ag-grid-community/dist/ag-grid-community.min.noStyle.js', to: 'resources' }, + { from: './node_modules/ag-grid-community/styles/ag-grid.min.css', to: 'resources' }, + { from: './node_modules/ag-grid-community/styles/ag-theme-balham.min.css', to: 'resources' }, + ] + }), + ], }; From 535499e93e495857e719704a180efd357699dd5b Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Tue, 13 May 2025 23:59:59 -0700 Subject: [PATCH 12/74] refactor: restructure files (#1613) --- .github/workflows/main.yml | 10 -- .vscode/launch.json | 2 - .vscode/tasks.json | 2 +- .vscodeignore | 1 - devreplay.json | 94 -------------- .../dcf.json | 0 .../rbuildignore.json | 0 .../rd.json | 0 .../rnamespace.json | 0 language/rmd-configuration.json | 27 ---- language/rnamespace-configuration.json | 33 ----- package-lock.json | 56 --------- package.json | 115 ++---------------- src/test/suite/sesson.test.ts | 2 +- .../test/testdata}/session/workspace.json | 0 {syntax => syntaxes}/Rcpp.json | 0 {syntax => syntaxes}/dcf.json | 0 {syntax => syntaxes}/rbuildignore.json | 0 .../rd.json | 0 {syntax => syntaxes}/rnamespace.json | 0 test/rFiles/rmarkdown/basic.rmd | 5 - 21 files changed, 12 insertions(+), 335 deletions(-) delete mode 100644 devreplay.json rename language/dcf-configuration.json => language-configuration/dcf.json (100%) rename language/rbuildignore-configuration.json => language-configuration/rbuildignore.json (100%) rename language/rd-configuration.json => language-configuration/rd.json (100%) rename language/r-configuration.json => language-configuration/rnamespace.json (100%) delete mode 100644 language/rmd-configuration.json delete mode 100644 language/rnamespace-configuration.json rename {test/rFiles => src/test/testdata}/session/workspace.json (100%) rename {syntax => syntaxes}/Rcpp.json (100%) rename {syntax => syntaxes}/dcf.json (100%) rename {syntax => syntaxes}/rbuildignore.json (100%) rename syntax/Rd (R Documentation).json => syntaxes/rd.json (100%) rename {syntax => syntaxes}/rnamespace.json (100%) delete mode 100644 test/rFiles/rmarkdown/basic.rmd diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2107ee87..cb26609e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -72,13 +72,3 @@ jobs: shell: Rscript {0} env: LINTR_ERROR_ON_LINT: true - devreplay: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - run: npm install - - name: Run devreplay - run: ./node_modules/.bin/devreplay ./src devreplay.json diff --git a/.vscode/launch.json b/.vscode/launch.json index 843bfd69..977a9881 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -15,7 +15,6 @@ "outFiles": [ "${workspaceFolder}/out/src/**/*.js" ], - "preLaunchTask": "watchAll" }, { "name": "Launch Extension (--disable-extensions)", @@ -29,7 +28,6 @@ "outFiles": [ "${workspaceFolder}/out/src/**/*.js" ], - "preLaunchTask": "watchAll" }, { "name": "Extension Tests", diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 47711827..5abf195a 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -32,7 +32,7 @@ }, { "type": "npm", - "script": "compile", + "script": "build", "problemMatcher": "$tsc" }, { diff --git a/.vscodeignore b/.vscodeignore index 8681f02a..6dc2550d 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -7,7 +7,6 @@ .xls .xlsx **/*.map -devreplay.json html/**/*.ts out/test/** src/ diff --git a/devreplay.json b/devreplay.json deleted file mode 100644 index 849fde5f..00000000 --- a/devreplay.json +++ /dev/null @@ -1,94 +0,0 @@ -[ - { - "before": [ - "assert.equal" - ], - "after": [ - "assert.strictEqual" - ] - }, - { - "before": [ - "show(${1:column}, ${2:preservalFocus})" - ], - "after": [ - "show(${2:preservalFocus})" - ] - }, - { - "before": [ - "editor.hide()" - ], - "after": [ - "workbench.action.closeActiveEditor()" - ] - }, - { - "before": [ - "editor.show(${1:column})" - ], - "after": [ - "window.showTextDocument()" - ] - }, - { - "before": [ - "MarkedString" - ], - "after": [ - "MarkdownString" - ] - }, - { - "before": [ - "withScmProgress" - ], - "after": [ - "withProgress" - ] - }, - { - "before": [ - "workspace.rootPath" - ], - "after": [ - "workspace.workspaceFolders![0].uri.path" - ] - }, - { - "before": [ - "scm.inputBox" - ], - "after": [ - "SourceControl.inputBox" - ] - }, - { - "before": [ - "$0 $1 = workspace.getConfiguration('$2');" - ], - "after": [ - "export function $1() {", - " return workspace.getConfiguration('$2');", - "}" - ], - "description": "It is fixed on https://github.com/REditorSupport/vscode-R/pull/301", - "severity": "Error" - }, - { - "before": [ - "workspace.getConfiguration('$1').get" - ], - "after": [ - "config().get" - ] - }, - { - "before": [ - "delay(8)" - ], - "after": [ - "delay(rtermSendDelay)" - ] - } -] diff --git a/language/dcf-configuration.json b/language-configuration/dcf.json similarity index 100% rename from language/dcf-configuration.json rename to language-configuration/dcf.json diff --git a/language/rbuildignore-configuration.json b/language-configuration/rbuildignore.json similarity index 100% rename from language/rbuildignore-configuration.json rename to language-configuration/rbuildignore.json diff --git a/language/rd-configuration.json b/language-configuration/rd.json similarity index 100% rename from language/rd-configuration.json rename to language-configuration/rd.json diff --git a/language/r-configuration.json b/language-configuration/rnamespace.json similarity index 100% rename from language/r-configuration.json rename to language-configuration/rnamespace.json diff --git a/language/rmd-configuration.json b/language/rmd-configuration.json deleted file mode 100644 index efd1d9ae..00000000 --- a/language/rmd-configuration.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "comments": { - "blockComment": [ "" ] - }, - "brackets": [ - [ "" ], - ["{", "}"], - ["[", "]"], - ["(", ")"] - ], - "autoClosingPairs": [ - ["{", "}"], - ["[", "]"], - ["(", ")"], - ["\"", "\""], - ["'", "'"] - ], - "surroundingPairs": [ - ["{", "}"], - ["[", "]"], - ["(", ")"], - ["\"", "\""], - ["'", "'"], - ["`", "`"], - ["$", "$"] - ] -} \ No newline at end of file diff --git a/language/rnamespace-configuration.json b/language/rnamespace-configuration.json deleted file mode 100644 index de5fe4b0..00000000 --- a/language/rnamespace-configuration.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "comments": { - "lineComment": "#" - }, - "brackets": [ - ["{", "}"], - ["[", "]"], - ["(", ")"] - ], - "autoClosingPairs": [ - ["#'", ""], - ["{", "}"], - ["[", "]"], - ["(", ")"], - ["\"", "\""], - ["'", "'"], - ["`", "`"] - ], - "surroundingPairs": [ - ["{", "}"], - ["[", "]"], - ["(", ")"], - ["\"", "\""], - ["'", "'"], - ["`", "`"] - ], - "folding": { - "markers": { - "start": "^\\s*#region", - "end": "^\\s*#endregion" - } - } -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 47e724ad..dc0aa964 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,6 @@ "@typescript-eslint/parser": "^5.30.0", "@vscode/test-electron": "^2.2.3", "copy-webpack-plugin": "^9.0.0", - "devreplay": "^1.9.31", "eslint": "^7.28.0", "eslint-plugin-jsdoc": "^35.1.3", "mocha": "^11.1.0", @@ -56,21 +55,6 @@ "vscode": "^1.75.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-validator-identifier": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", @@ -1853,16 +1837,6 @@ "node": ">= 0.8" } }, - "node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || >=14" - } - }, "node_modules/comment-parser": { "version": "1.1.6-beta.0", "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.1.6-beta.0.tgz", @@ -2018,29 +1992,6 @@ "node": ">=0.4.0" } }, - "node_modules/devreplay": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/devreplay/-/devreplay-1.12.0.tgz", - "integrity": "sha512-Ezk3SSU7sm6E/QknXx6j+1HfxA+d6R2CoioYYOWIOGEXYm+Ddl8eIPiBaodJQuTIp44mbds9VDldhMGjHq+XMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "chalk": "4.1.2", - "commander": "^9.3.0", - "diff": "5.1.0", - "lodash": "^4.17.21", - "text-table": "^0.2.0", - "tslib": "^2.4.0", - "v8-compile-cache": "^2.3.0" - }, - "bin": { - "devreplay": "bin/devreplay" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/diff": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", @@ -5472,13 +5423,6 @@ "webpack": "^5.0.0" } }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", diff --git a/package.json b/package.json index 9fa5dd89..2ec2f28b 100644 --- a/package.json +++ b/package.json @@ -100,21 +100,6 @@ } ], "languages": [ - { - "id": "r", - "extensions": [ - ".r", - ".rhistory", - ".rprofile", - ".rt" - ], - "aliases": [ - "R", - "r" - ], - "firstLine": "^#!/.*\\bRscript\\b", - "configuration": "./language/r-configuration.json" - }, { "id": "rd", "extensions": [ @@ -124,18 +109,7 @@ "R documentation", "r documentation" ], - "configuration": "./language/rd-configuration.json" - }, - { - "id": "rmd", - "extensions": [ - ".rmd" - ], - "aliases": [ - "R Markdown", - "r markdown" - ], - "configuration": "./language/rmd-configuration.json" + "configuration": "./language-configuration/rd.json" }, { "id": "debian-control.r", @@ -149,7 +123,7 @@ "DESCRIPTION", ".lintr" ], - "configuration": "./language/dcf-configuration.json" + "configuration": "./language-configuration/dcf.json" }, { "id": "namespace.r", @@ -159,7 +133,7 @@ "filenames": [ "NAMESPACE" ], - "configuration": "./language/rnamespace-configuration.json" + "configuration": "./language-configuration/rnamespace.json" }, { "id": "buildignore.r", @@ -169,7 +143,7 @@ "filenames": [ ".Rbuildignore" ], - "configuration": "./language/rbuildignore-configuration.json" + "configuration": "./language-configuration/rbuildignore.json" } ], "snippets": [ @@ -187,89 +161,21 @@ } ], "grammars": [ - { - "language": "r", - "scopeName": "source.r", - "path": "./syntax/r.json" - }, { "language": "rd", "scopeName": "text.tex.latex.rd", - "path": "./syntax/Rd (R Documentation).json" + "path": "./syntaxes/rd.json" }, { "language": "debian-control.r", "scopeName": "debian-control.r", - "path": "./syntax/dcf.json", + "path": "./syntaxes/dcf.json", "embeddedLanguages": { "meta.embedded.block.r": "r" } }, { - "language": "rmd", - "scopeName": "text.html.rmarkdown", - "path": "./syntax/RMarkdown.json", - "embeddedLanguages": { - "meta.embedded.block.html": "html", - "source.js": "javascript", - "source.css": "css", - "meta.embedded.block.frontmatter": "yaml", - "meta.embedded.block.css": "css", - "meta.embedded.block.ini": "ini", - "meta.embedded.block.java": "java", - "meta.embedded.block.lua": "lua", - "meta.embedded.block.makefile": "makefile", - "meta.embedded.block.perl": "perl", - "meta.embedded.block.r": "r", - "meta.embedded.block.ruby": "ruby", - "meta.embedded.block.php": "php", - "meta.embedded.block.sql": "sql", - "meta.embedded.block.vs_net": "vs_net", - "meta.embedded.block.xml": "xml", - "meta.embedded.block.xsl": "xsl", - "meta.embedded.block.yaml": "yaml", - "meta.embedded.block.dosbatch": "dosbatch", - "meta.embedded.block.clojure": "clojure", - "meta.embedded.block.coffee": "coffee", - "meta.embedded.block.c": "c", - "meta.embedded.block.cpp": "cpp", - "meta.embedded.block.diff": "diff", - "meta.embedded.block.dockerfile": "dockerfile", - "meta.embedded.block.go": "go", - "meta.embedded.block.groovy": "groovy", - "meta.embedded.block.pug": "jade", - "meta.embedded.block.javascript": "javascript", - "meta.embedded.block.json": "json", - "meta.embedded.block.less": "less", - "meta.embedded.block.objc": "objc", - "meta.embedded.block.scss": "scss", - "meta.embedded.block.perl6": "perl6", - "meta.embedded.block.powershell": "powershell", - "meta.embedded.block.python": "python", - "meta.embedded.block.rust": "rust", - "meta.embedded.block.scala": "scala", - "meta.embedded.block.shellscript": "shellscript", - "meta.embedded.block.typescript": "typescript", - "meta.embedded.block.typescriptreact": "typescriptreact", - "meta.embedded.block.csharp": "csharp", - "meta.embedded.block.fsharp": "fsharp" - } - }, - { - "scopeName": "text.html.markdown.redcarpet", - "path": "./syntax/Markdown Redcarpet.json", - "injectTo": [ - "text.html.rmarkdown" - ], - "embeddedLanguages": { - "meta.embedded.block.c": "c", - "meta.embedded.block.cpp": "cpp", - "meta.embedded.block.r": "r", - "meta.embedded.block.yaml": "yaml" - } - }, - { - "path": "./syntax/Rcpp.json", + "path": "./syntaxes/Rcpp.json", "scopeName": "comment.block.r", "injectTo": [ "source.cpp" @@ -278,12 +184,12 @@ { "language": "namespace.r", "scopeName": "namespace.r", - "path": "./syntax/rnamespace.json" + "path": "./syntaxes/rnamespace.json" }, { "language": "buildignore.r", "scopeName": "buildignore.r", - "path": "./syntax/rbuildignore.json" + "path": "./syntaxes/rbuildignore.json" } ], "commands": [ @@ -2078,7 +1984,7 @@ }, "scripts": { "vscode:prepublish": "tsc -p ./html/help && tsc -p ./html/httpgd && webpack --mode production", - "compile": "tsc -p ./html/help && tsc -p ./html/httpgd && webpack --mode none", + "build": "tsc -p ./html/help && tsc -p ./html/httpgd && webpack --mode none", "watch": "webpack --mode none --watch", "watchHelp": "tsc -p ./html/help --watch", "watchHttpgd": "tsc -p ./html/httpgd --watch", @@ -2104,7 +2010,6 @@ "@typescript-eslint/parser": "^5.30.0", "@vscode/test-electron": "^2.2.3", "copy-webpack-plugin": "^9.0.0", - "devreplay": "^1.9.31", "eslint": "^7.28.0", "eslint-plugin-jsdoc": "^35.1.3", "mocha": "^11.1.0", diff --git a/src/test/suite/sesson.test.ts b/src/test/suite/sesson.test.ts index dd3a2edc..a799daa3 100644 --- a/src/test/suite/sesson.test.ts +++ b/src/test/suite/sesson.test.ts @@ -9,7 +9,7 @@ import * as session from '../../session'; import * as workspace from '../../workspaceViewer'; const extension_root: string = path.join(__dirname, '..', '..', '..'); -const workspaceFile = path.join(extension_root, 'test', 'rFiles', 'session', 'workspace.json'); +const workspaceFile = path.join(extension_root, 'src', 'test', 'testdata', 'session', 'workspace.json'); function mockWorkspaceData(sandbox: sinon.SinonSandbox) { const content = fs.readFileSync(workspaceFile, 'utf8'); diff --git a/test/rFiles/session/workspace.json b/src/test/testdata/session/workspace.json similarity index 100% rename from test/rFiles/session/workspace.json rename to src/test/testdata/session/workspace.json diff --git a/syntax/Rcpp.json b/syntaxes/Rcpp.json similarity index 100% rename from syntax/Rcpp.json rename to syntaxes/Rcpp.json diff --git a/syntax/dcf.json b/syntaxes/dcf.json similarity index 100% rename from syntax/dcf.json rename to syntaxes/dcf.json diff --git a/syntax/rbuildignore.json b/syntaxes/rbuildignore.json similarity index 100% rename from syntax/rbuildignore.json rename to syntaxes/rbuildignore.json diff --git a/syntax/Rd (R Documentation).json b/syntaxes/rd.json similarity index 100% rename from syntax/Rd (R Documentation).json rename to syntaxes/rd.json diff --git a/syntax/rnamespace.json b/syntaxes/rnamespace.json similarity index 100% rename from syntax/rnamespace.json rename to syntaxes/rnamespace.json diff --git a/test/rFiles/rmarkdown/basic.rmd b/test/rFiles/rmarkdown/basic.rmd deleted file mode 100644 index fdae8b2d..00000000 --- a/test/rFiles/rmarkdown/basic.rmd +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Hello World ---- - -Hello world \ No newline at end of file From 8fbd7eb79dcef70a041d81da553eb857a373cfdb Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Fri, 30 May 2025 21:08:34 -0700 Subject: [PATCH 13/74] chore: update changelog --- CHANGELOG.md | 1014 +-------------------------------------------- CHANGELOG.old.md | 1011 ++++++++++++++++++++++++++++++++++++++++++++ cliff.toml | 77 ++++ package-lock.json | 240 +++++++++++ package.json | 2 + 5 files changed, 1341 insertions(+), 1003 deletions(-) create mode 100644 CHANGELOG.old.md create mode 100644 cliff.toml diff --git a/CHANGELOG.md b/CHANGELOG.md index 6513f559..4f28ffef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,1011 +1,19 @@ -# Change Log +# Changelog -## Latest updates +## 2.8.6 - 2025-05-31 -You can check all of our changes from [Release Page](https://github.com/REditorSupport/vscode-R/releases) +### Other -## [2.8.5](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.5) +* Syntax update and bump to 2.8.6 ([#1605](https://github.com/REditorSupport/vscode-R/issues/1605)) +* Show sidebar icon only when extension is active ([#1579](https://github.com/REditorSupport/vscode-R/issues/1579)) +* Move R and R markdown syntaxes to vscode-R-syntax ([#1606](https://github.com/REditorSupport/vscode-R/issues/1606)) -* Upgrade Rsyntax -* Use --no-echo instead of --slave +### Refactor -## [2.8.4](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.4) +* refactor: restructure files ([#1613](https://github.com/REditorSupport/vscode-R/issues/1613)) -* Upgrade dependencies +**Full Changelog**: https://github.com/REditorSupport/vscode-R/compare/v2.8.5...v2.8.6 -## [2.8.3](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.3) +See [CHANGELOG.old.md](https://github.com/REditorSupport/vscode-R/blob/master/CHANGELOG.old.md) for changes before v2.8.5. -Enhancements: - -* Substitute variables in `r.rpath` and `r.rterm` settings. (#1444) -* Improve code chunk handling in base .R files. (#1454, thanks @kylebutts) - -Fixes: - -* Fix multiline smart-knit (#1493) -* Fix RMD Progress Bar (#1491) -* Remove `.` as an R language `editor.wordSeparators` (#1503, thanks @opasche) -* `numeric_version()` wants character as of R 4.4 (#1520, #1523, thanks @jennybc and @pawelru) -* Handle terminals created by vscode-Python (#1511, thanks @tomasnobrega) - -## [2.8.2](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.2) - -Enhancements: - -* Update built-in function match regex. (#1431, thanks @MichaelChirico) -* Add `r.useRenvLibPath` setting to opt in adding `renv` package cache to `.libPaths` when R processes (language server, help server, etc.) start up. (#1423, thanks @nateybear) -* Add a VScode task to run `testthat::test_file()`` on the currently open file. (#1415, thanks @gowerc) -* `r.rterm.*` settings now accept paths relative to the current workspace folder to support customized commands -to create R terminals. (#1398, thanks @Tal500) -* Upgrade ag-grid-community to v30.2.0 (#1434) -* Upgrade vscode-languageclient to v9.0.1 (#1435) - -## [2.8.1](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.1) - -Enhancements: - -* A new setting `r.lsp.multiServer` is added. If disabled, only a single language server will be spawned from the first workspace folder to handle all requests from all workspaces and files. (#1375) -* Upgrade ag-grid-community to v30.0.0 (#1379) - -Fixes: - -* Fix handling `r.session.data.pageSize = 0`. (#1364) -* Fix help panel in remote host. (#1374) -* Fix missing package names in "Install CRAN Package". (#1377) - -## [2.8.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.0) - -New Features: - -* A new experimental setting `r.session.useWebServer` is added to support communicating with R session via a web server running in R. This requires R package `httpuv` to be installed. Currently, -it enhances the session symbol completion when accessing R object via `$` and `@`. *This feature is -experimental and may be subject to change in the future.* (#1151) -* A new setting `r.rmarkdown.preview.zoom` is added to support the default zoom level or R markdown -preview. (#1333) - -Enhancements: - -* Improve message when error occurs on loading R packages. (#1334, thanks to @csaybar) -* Upgrade ag-grid-community to v29.3.0 (#1346) - -Fixes: - -* Commands that are not intended in the command pallete are now hidden. (#1327, #1330) - -## [2.7.2](https://github.com/REditorSupport/vscode-R/releases/tag/v2.7.2) - -Enhancements: - -* Upgrade vscode-languageclient to 8.1.0 (#1315) -* Workspace viewer will be cleaned-up when the attached R session exits. (#1318, #1321) -* A new command `r.view` is added to view selected objects. (#1319, thanks @yeyun1999) -* Workspace viewer commands that require an attached R session are now disabled when no R session is attached. (#1323) - -Fixes: - -* Workspace viewer now has a fallback message instead of causing error if session watcher is disabled. (#1317) - -## [2.7.1](https://github.com/REditorSupport/vscode-R/releases/tag/v2.7.1) - -New Features: - -* A new setting `r.source.echo` is added to support sending `source(file, echo = TRUE)` by default. (#1286, thanks @jakub-jedrusiak) -* A new setting `r.removeLeadingComments` is added to remove leading comments when sending code to terminal. (#1245, thanks @gowerc) - -Enhancements: - -* Help page previews from `.Rd` files are now generated asynchronously. (#1273) -* Column name is also displayed in the column tooltip in a data viewer. (#1278, thanks @eitsupi) -* Upgrade ag-grid-community to v29.0.0 (#1290) - -Fixes: - -* Fixed broken tests (#1302) - -## [2.7.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.7.0) - -New Features: - -* New syntax highlighting support for `NAMESPACE` and `.Rbuildignore`. (#1221, thanks @nx10) -* Support help preview in package development. (#1259, #1266) - -Enhancements: - -* The extension is re-published to [Open VSX Registry](https://open-vsx.org/extension/reditorsupport/r). ([open-vsx#591](https://github.com/open-vsx/publish-extensions/issues/591)). -* The WebView panel now supports htmlwidgets using Web Workers. (#1261, thanks @anthonynorth) -* Code block detection now includes parentheses, which is more consistent with RStudio behavior. (#1269) - -Fixes: - -* `View()` no longer stops with `tibble()` that contains objects that do not -implement `asJSON()` method. (#1255) -* Fixed the regex for detecting problems reported by testthat from tasks. (#1257, thans @gowerc) -* Fixed syntax highlighting in help preview under R 4.2.x. (#1268) - -## [2.6.1](https://github.com/REditorSupport/vscode-R/releases/tag/v2.6.1) - -Enhancements: - -* A new setting `r.plot.devArgs` is added to allow customizing png device arguments (e.g. width and height) for the PNG plot viewer. (#1235) - -Fixes: - -* Fixed opening requested file externally when viewer is disabled. (#1209) -* Support trailing slash in code-server's URI template. (#1241) - -## [2.6.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.6.0) - -New Features: - -* A new command "R: Generate C/C++ Configuration" is added to support auto-generating [`c_cpp_properties.json`](https://code.visualstudio.com/docs/cpp/customize-default-settings-cpp) in an R package with C/C++ code for [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) Extension to provide IntelliSense. (#1205, thanks @nx10) - -Enhancements: - -* Support showing KeTeX formula in help viewer. (#1213) - -Fixes: - -* Fixed empty line at the end of help pages as clickable example. (#1194) -* Avoid code highlighting in DESCRIPTION files in help viewer as code examples. (#1199) -* Saving a rmd file no longer triggers the preview to refresh if it is still rendering. (#1219) - -## [2.5.3](https://github.com/REditorSupport/vscode-R/releases/tag/v2.5.3) - -Enhancements: - -* Reload help pages on refresh. (#1188) -* Upgrade to vscode-languageclient 8.0.2. (#1173) - -Fixes: - -* Remove `encoding` from knitting so that renderers that do not have an encoding parameter (e.g. `quarto::quarto_render()`) now work properly. (#1167) - -## [2.5.2](https://github.com/REditorSupport/vscode-R/releases/tag/v2.5.2) - -New Features: - -* R help viewer now highlights code sections on hover and user can click the code to copy it to the clipboard, or press `ctrl+click` (Windows and Linux) or `cmd+click` (macOS) to send it to R terminal by default. A new setting `r.helpPanel.clickCodeExamples` is added to allow customizing the click behavior. (#1138) -* A new command `Create .lintr` is added. (#1112) - -Enhancements: - -* R and Rmd files are added to `Create: New File`. (#1119) -* Improved data viewer column resizing. (#1121) - -Fixes: - -* Hide environment values in R Markdown preview to prevent accidental deletion (#1117) -* Opening and closing a list item in the workspace viewer treeview now works properly. (#1150) - -## [2.5.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.5.0) - -Announcement: - -* [vscode-R](https://marketplace.visualstudio.com/items?itemName=REditorSupport.r) has been transferred to `REditorSupport` as the publisher in the VS Code Marketplace. The unique identifier has been updated to `REditorSupport.r`. (#690) -* [R in Visual Studio Code](https://code.visualstudio.com/docs/languages/r) topic is added to the VS Code documentation. - -New Features: - -* A new setting `r.libPaths` is added to support additional library paths to be appended to `.libPaths()` when R background processes (R language server and help server) are launched. It could be useful for projects with [renv](https://rstudio.github.io/renv/articles/renv.html) enabled where required packages (e.g. `languageserver` and `jsonlite`) to use vscode-R are only installed in other location. For more details, checkout the [wiki](https://github.com/REditorSupport/vscode-R/wiki/Working-with-renv-enabled-projects). (#1071, #1097, #1098) - -Enhancements: - -* The R package build task is separated into Build and Build Binary tasks. (#1029, thanks @Yunuuuu) -* Hide smart knit environment variables to prevent accidental deletion. (#1060) -* A new setting `r.session.data.pageSize` is added to support adjusting the page size of the data viewer. The default is now 500. (#1068) -* The check for languageserver package installation is improved and the prompt could be disabled. (#1071) -* The R Markdown code chunk snippet supports language choice. (#1082, thanks @jooyoungseo) -* It will prompt instead of showing empty choice when no R Markdown templates are found. (#1089) - -Fixes: - -* Guard against evaluation of active bindings in the global environment. (#1038) -* The `http` prefix is unnecessary and removed from several code snippets. (#1084, #1085, thanks @jooyoungseo) -* R Markdown knit and preview scripts now use `loadNamespace()` instead of `requireNamespace()` to fail early if necessary packages are unavailable. (#1086) - -## [2.4.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.4.0) - -New Features: - -* Added "R Markdown: New Draft" command to choose a template for a new R Markdown document. (#984) -* Added *Attached Namespaces* and *Loaded Namespaces* to the workspace viewer. (#1022) - -Enhancements: - -* `spawn` is consistently used to run R scripts and commands. (#985) -* Added a problemMatcher for testthat output from Test task. (#989, thanks @gowerc) -* Code chunk snippets now preserve selected text. (#1001) -* Added more useful Shiny and R Markdown snippets. (#1009, #1012, thanks @jooyoungseo). -* Provides optional `code` argument to `r.runSelection` command for other extensions to execute interactive R code. (#1017, thanks @jjallaire) -* Supports lambda function declaration in syntax higlighting. (#1025) - -Fixes: - -* Fixed code detection with mixed quotes. (#988, thanks @gowerc) -* Fixed syntax highlighting for variables starting with `function`. (#992, thanks @gowerc) -* Fixed R task definition and `resolveTask`. (#994) -* Fixed auto port forwarding for httpgd plot viewer in LiveShare session. (#1026) - -## [2.3.8](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.8) - -Fixes: - -* Fixes languageserver detection failure on Windows by avoiding rpath quoting. (#981) - -## [2.3.7](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.7) - -Note: - -* After v2.3.4, httpgd plot viewer requires `httpgd` 1.2.0 or later. If the plot viewer shows 404 error, installing the latest release of `httpgd` should resolve the problem. (#972) - -Enhancements: - -* Data viewer supports [Apache Arrow Table](https://arrow.apache.org/docs/r) and `r.session.data.rowLimit` setting is added to limit the number of rows to show. (#945, thanks @eitsupi) -* R gitignore file is updated and "R: Create gitignore" also supports multi-root workspace. (#949, thanks @eitsupi). -* Httpgd plot viewer has a delay before refreshing to avoid redrawing too often. (#956) -* Shell commands used in tasks use strong quoting. (#964, thanks @shrektan) -* User will be prompted to install `languageserver` if the package is missing. (#965, @shrektan) -* DCF syntax is updated to support syntax highlighting of `.lintr`. (#970, thanks @eitsupi) -* Column headers show the class and type of each column in tooltips. (#974, thanks @eitsupi) -* Extension is activated if the workspace folder contains `*.{rproj,Rproj,r,R,rd,Rd,rmd,Rmd}` at any level of sub-folders. (#979) - -Fixes: - -* Fix typo in command line arguments. (#954, thanks @achey2016) -* R Markdown commenting uses HTML-style comments outside code blocks. (#958) -* R Markdown rendering process gets `LANG` environment variable to properly handle unicode characters. (#961, thanks @shrektan) - -## [2.3.6](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.6) - -Enhancements: - -* Added raw string syntax. (#922) -* Added support for both single and double brackets in code-server's URI template. (#934, thanks @benz0li) - -Fixes: - -* Fixed syntax highlighting so that variables and function parameters are highlighted more consistently. (#939) -* R processes are now properly terminated on extension deactivation. (#941, thanks @albertosantini and @Yunuuuu) - -## [2.3.5](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.5) - -Enhancements: - -* Added `devtools` tasks to command palette. (#880, thanks @alex-gable) -* Improved help pages readability. (#915, thanks @18kimn) - -Fixes: - -* Fixed R Markdown knit and preview without opening a workspace folder. (#914) -* Fixed `DESCRIPTION` syntax highlighting for `Authors@R` field. (#920) -* Fixed an issue about leaking child processes. All spawned child processes (e.g. help server, language server, R Markdown preview) are cleaned up on exit. (#918) - -## [2.3.4](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.4) - -Enhancements: - -* Quotes in `r.rpath.*` settings are now removed. (#884) -* Alternative CRAN mirrors (e.g. [RStudio Public Package Manager](https://packagemanager.rstudio.com) and [the ropensci universe](https://ropensci.r-universe.dev) are supported. (#876) - -Fixes: - -* Fixed a Uri handling bug in Windows. (#888) -* Fixed a bug in restarting help server when library has changed. (#893) - -## [2.3.3](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.3) - -Enhancements: - -* The information of attached R session now appears in the label and the tooltip of -the status bar item. (#836) -* A new setting `r.rmarkdown.knit.command` is added to support customized knit command if not specified in the document. (#841, #850, thanks @xoolive) -* A terminal profile for R is added via the new terminal API. (#851) -* The help topics are now automatically updated when R packages are installed, removed, or upgraded. (#863) - -Fixes: - -* Fixed the problem with PowerShell on Windows when installing packages. (#846) -* Fixed the handling of single quote in roxygen comments and the roxygen block is now automatically exited after two empty lines. (#847) -* Backtick is added to the list of quote characters for syntax highlighting. (#859, thanks @jan-imbi) -* Fixed detecting the YAML frontmatter in R Markdown documents. (#856) -* Fixed attaching an R session with an open httpgd device that also triggers the plot viewer. (#852) -* Fixed the chunk coloring in R Markdown preview. (#867) -* Fixed the delimiter used in the output of the background knit process. (#868) - -## [2.3.2](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.2) - -Enhancements: - -* `.vsc.browser()` now handles `file://` urls. (#817) -* `r.session.levelOfObjectDetail` gains a `Normal` value for the session watcher to write only first level structure of global objects for performance. (#815) -* Session watcher now supports workspace folder as symlinks. (#827) - -Fixes: - -* Httpgd plot viewer respects the view column specified by `r.session.viewers.viewColumn.plot` setting (#816) -* `View` is completed replaced so that `tibble::view()` could -trigger data viewer (#818) -* Help cache is disabled between sessions (#819) - -## [2.3.1](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.1) - -Enhancements: - -* Proxied requests are now supported to work with [code-server](https://github.com/cdr/code-server). (#275, #803) - -Fixes: - -* `unsafe-eval` is re-enabled in WebView Content Security Policy to make htmlwidgets such as plotly work. (#805) -* The help viewer now respects `r.session.viewers.viewColumn.helpPanel`. (#804) -* The working directory of the knit background process is now consistent with the knit working directory so that `.Rprofile` and `renv` setup are respected. (#807) - -## [2.3.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.0) - -Enhancements - -* R Markdown preview now supports background rendering with progress bar, customizable - working directory, and smart knit button. (#765) -* `{rstudioapi}` emulation is enabled by default. (#769) -* A new setting `r.session.objectLengthLimit` is added to limit the output of the names of global objects with many named elements which might cause significant delay after inputs. (#778) -* `NA` and `Inf` could now be correctly displayed in the data viewer. (#780) -* User-specified R Markdown output format is now respected. (#785) - -Fixes - -* The security policy of WebView is relaxed to support `{flextable}` widgets. (#771) -* The R Markdown background rendering process could be properly terminated now. (#773) - -## [2.2.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.2.0) - -New Features - -* VS Code settings are now accessible from R and all vscode-specifc R options (`vsc.*`) now have -corresponding VS Code settings. (#743) - -Enhancements - -* Check conflict extension `mikhail-arkhipov.r` on activation. (#733) -* Add icons to WebViews. (#759) - -Fixes - -* Fix date filter in data viewer. (#736) -* Fix htmlwidget resource path in WebView. (#739) -* Use `.DollarNames` with default pattern. (#750) -* Fix syntax highlighting for `c()` in function args. (#751) -* Handle error in `capture_str()`. (#756) - -## [2.1.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.1.0) - -Important changes - -* The project is migrated to [REditorSupport](https://github.com/REditorSupport) organization on -GitHub. (#98) -* The R language service (completion, document outline, definition, etc., -formerly implemented in [vscode-r-lsp](https://github.com/REditorSupport/vscode-r-lsp)) is now -integrated into vscode-R (#695). The vscode-r-lsp extension will be unpublished from the -VS Code marketplace -at some point. - * Search `r-lsp` extension, uninstall it and vscode-R will start the R langauge service - automatically. - * The language service still depends on the R package [`languageserver`](https://github.com/REditorSupport/languageserver). Make sure the package is installed before using vscode-R. - * To opt-out the language service, set `"r.lsp.enabled": false` in your user settings. -* R session watcher is now enabled by default. (#670) - * `r.previewDataframe` and `r.previewEnvironment` will use the session watcher if enabled. - * To opt-out, set `"r.sessionWatcher": false` in your user settings. - -New Features - -* Preview R Markdown documents via background process with auto-refresh and dark theme support. (#692, #699) - -Enhancements - -* Several enhancements of the workspace viewer. (#672) -* The plot viewer now supports customizable CSS file via `r.plot.customStyleOverwrites` and - `r.plot.togglePreviewPlots` now cycles through mutlirow/scroll/hidden. (#678, #681) -* The data viewer is now based on [ag-grid](https://github.com/ag-grid/ag-grid) with better performance and better support for filtering and dark theme. (#708) - * The data viewer might not work with existing R sessions started before the extension update. - A restart of sessions is needed to use the new data viewer. -* Command `r.showPlotHistory` is removed in favor of the httpgd-based plot viewer. (#706) -* The plot viewer now supports full window mode. (#709) - -Fixes - -* LiveShare API bug fix and enhancements. (#679) -* Fix syntax highlighting of integers in scientific notation. (#683) - -## [2.0.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.0.0) - -Highlight - -* Thank you for join new collaborator: Elian H. Thiele-Evans(@ElianHugh) - * LiveShare Functionality #626 - * More detail about LiveShare: - * rmarkdown bug squashing and minor changes #663 - * Code cells in .R files #662 - -* Use .DollarNames for object with class in completion #660 - -## [1.6.7](https://github.com/REditorSupport/vscode-R/releases/tag/v1.6.7) - -* Update R syntax #647 -* Fix replacing base::.External.graphics #625 - -Thank you for your contributions. - -* @jolars - * Don't run chunks with eval = FALSE #653 (Fix #651) -* @nx10 - * Integrate httpgd #620 - -## [1.6.6](https://github.com/REditorSupport/vscode-R/releases/tag/v1.6.6) - -Highlight - -* Clarify error messages -* Being more conservative to call object.size() in task callback -* Send code to debug repl -* shim the rstudioapi if it has already been loaded - -Thank you for your contributions. - -* @krlmlr - * Update vscode engine #586 - * Satisfy markdownlint #587 -* @danielbasso - * Initial Workspace Viewer str() functionality #583 - -## 1.6.5 - -* Add links to help pages in hover #578 -* Move `r.runSource` and `r.knitRmd` to `editor/title/run` #573 (Fix #572) -* Fix so code can be run after creating terminal #567 -* Add option to keep terminal hidden after running code #566 -* Scroll to bottom after running a command #559 (Thank you @samkimhis) -* Refactoring and implementation of webviewPanelSerializer #556 -* add option vsc.hover.str.max.level #545 -* Change workspace tooltip #544 (Thank you @ElianHugh) - -## 1.6.4 - -* Better error message when reading aliases (#518) -* Keep promises and active bindings in globalenv (#521) -* Refactor extension.ts (#525) -* Write aliases to file (#526) -* add sendToConsole to rstudioapi emulation (#535) -* Add function to open help for selected text (#531) -* Add initial pipeline completion support (#530) -* Add updatePackage command (#532) -* Add option to preserve focus when opening help view (#541) - -## 1.6.3 - -* Add browser WebView command buttons #494 -* Enable find widget in WebViews #490 -* Disable alwaysShow for addin items #491 -* Only show R menu items in R view #493 -* Modify pre-release action #492 (Fix #484) -* Improve release action #505 (Fix #503) -* Improve help view #502 (Follow up to #497) - -### Thank you for contributors works 1.6.3 - -* @ElianHugh - * Implement R workspace viewer #476 (Fix #416) - * Conditionally show view #487 -* @tdeenes: Find in topic (help panel) #488 (Fix #463) -* @jsta: typo fix #500 - -## 1.6.2 - -* Improve style of help pages #481 - * All help pages: center headings - * Normal functino help pages: hide (rather useless) header bar - * All help pages: hide image placeholders - * Manuel Pages: hide page-internal links - * Manual Pages: suppress mismatching header styles embedded in the html -* Reorganize helppanel, add `?` function #477 -* Modify config #467 -* Fix bug that would leave background R processes running #475 - -* Fix whole of style (Extends #361) (#474) - -### Thank you for contributors works 1.6.2 - -* @markbaas: Fix The Ctrl+Enter shortcut does not work properly when a non-comment line in a function definition contains the "#" character. #462 (Fix #443) -* @kar9222: - * Update README #480 (Fix #465) - * RMarkdown: Add run & navigation commands. More customization. Refactor. #465 - -## 1.6.1 - -This version includes minor fix to stable new functions - -* Add GitHub Action for release #449 -* Highlight all chunks #453 -* Fix checking workspaceFolders in rHelpProviderOptions #456 -* Fix typo in help panel path config #457 - -* @kar9222 Thank you for contribution - * Update README: Add options(vsc.helpPanel = ...) #461 - * Rmd fenced block syntax highlighting for julia, python, etc #460 - -* New feature r.runFromLineToEnd #448 (Thank you @Dave-cruzz) - -## 1.6.0 - -* Integrate help view from vscode-R-help #433 (Implemented by the new collabolator @ManuelHentschel) -* Add terminal information to chooseTerminal error #447 -* Send code at EOF appends new line #444 -* Friendly error message when trying to launch addin picker and vsc.rstudioapi = FALSE #441 -* platform independent content string splitting #436 -* Add runAboveChunks command #434 - -## 1.5.2 - -* Enhance R markdown support #429 (Fix #428, #49, #261) -* Fix and enhance navigateToFile #430 -* Improve handling html help #427 (Fix #426, #380) - -## 1.5.1 - -* Rename init functions #425 (Fix #424) -* Fix issues in rstudioapi emulation #422 (Fix #421) - -## 1.5.0 - -* RStudio Addin Support #408 (Implemented by the new collabolator @MilesMcBain) - * The usage is added on the [wiki page](https://github.com/REditorSupport/vscode-R/wiki/RStudio-addin-support) - -* Recommend radian in README #420 - -## 1.4.6 - -* Remove Run in Active Terminal from README #413 (Fix #412) -* Remove command Run Selection/Line in Active Terminal #409 (Fix #306) -* Check url in browser #406 (Fix #371) - -## 1.4.5 - -* Remove shortcuts Ctrl + 1, 2, 3, 4, 5 #401 (Fix #368) - - These conflicted with default Visual Studio Code keyboard shortcuts. If you would like to restore them, see the [instructions in the Wiki](https://github.com/REditorSupport/vscode-R/wiki/Keyboard-shortcuts#removed-keyboard-shortcuts). - -* Restore R_PROFILE_USER #392 (Fix #391) -* Fix so rTerm is undefined when deleting terminal #403 (Fix #402) - -## 1.4.4 - -* Fix vulnerability issues - -## 1.4.2 - -* New R options and functions to control session watcher behavior #359 - - To work with existing self-managed, persistent R sessions as the extension is upgraded, - source the `init.R` again before attaching. - - ```r - source(file.path(Sys.getenv(if (.Platform$OS.type == "windows") "USERPROFILE" else "HOME"), ".vscode-R", "init.R")) - ``` - -* Remove single quote from doesLineEndInOperator #357 (Fix #356) - -## 1.4.1 - -* Fix View empty environment #350 (Fix #349) -* Change runSelectionInActiveTerm effect to warning #351 -* Improve getBrowserHtml #353 -* Use fs.watch instead of vscode.FileSystemWatcher #348 (Fix #347, #352, #236, #179, #272, #330) - -## 1.4.0 - -### Feature improvement - -* Add syntax highlight for DESCRIPTION and .Rproj #342 (Thank you @qinwf) -* A lot of works (Thank you @gowerc) - * Enable default R location to be used on mac/linux if none is supplied #340 - * Added functionality to switch to an existing R terminal #338 - * Expose send text delay as a parameter #336 - * Supress auto-opening quote in roxygen comment #328 -* Add r.runSelectionRetainCursor #325 - -### Project engineering - -* Convert language files to Json #333 (Thank you @gowerc) -* Define lint in package.json and use it in GitHub Actions #344 - -## 1.3.0 - -* Change so setting changes take effect immediately (Fix #301) -* Fix package volunerability -* Improve .Rprofile -* Remove --no-site-file from default r.rterm.option - -## 1.2.8 - -* Use eslint in GitHub Actions -* Add R Markdown surround and frontmatter comments (Fix #260) - -## 1.2.7 - -* Add [new wiki page](https://github.com/REditorSupport/vscode-R/wiki) ! -* Use Windows registry to find R path -* Fix handling grouped_df in dataview_table -* Use GitHub Actions for linting - -## 1.2.6 - -* Fix showWebView - -## 1.2.5 - -* Check untitled document and save result before running command - -## 1.2.4 - -* Add configurable command runner functions (Thank you @MilesMCBain) -* Change .Platform$GUI to vscode on session start -* Fixed the function snippet (Fixed #230) (Thank you @stanmart) -* Add statement of languageserver features to bug report template (Fixed #210) -* Inject R Markdown features into Markdown grammar (Fixed #220, #116, #48, #36) - -## 1.2.3 - -* Fixed the function snippet (Fixed #230) (Thank you @stanmart) -* Update activationEvents -* Add more logging to session watcher -* Avoid duplicate handling of response update -* Add syntax highlighting for R code in Rcpp comment #225 - -## 1.2.2 - -* View improvement (Thank you @renkun-ken) - * Fix dataview_table handling single row data - * Show WebView triggered by page_viewer in Active column - * Fix WebView Uri replacing - * Add row hover and select - * Improve session watcher initialization - * Use dev.args option when creating png device before replay - * Show plot history - -## 1.2.1 - -* Extend View (Thank you @renkun-ken) -* Fix session watcher init.R path on Windows (Fixed #176) - -## 1.2.0 - -* R session watcher (Thank you @renkun-ken). Usage is written on the README.md - * Attach Active Terminal (by command or clicking status bar item) - * Auto attach on R session startup: if init.R is sourced in .Rprofile, starting an R session will notify vscode-R to automatically attach to it. - * Provide hover to global symbol in attached session - * Show plot file on the fly - * Show WebView to present htmlwidgets and shiny apps - * Show WebView for data.frame and list object when calling View() - -## 1.1.9 - -* Fix bracketed paste on Windows (fix #117) -* Fix function call closing bracket highlight (Thank you @kiendang) - -## 1.1.8 - -* Use word under cursor for previewDataframe, nrow (fix #137) -* Change license MIT -> AGPL-3.0 - -## 1.1.6 - -* Fix behaviour when workplacefolders is Undefiend (Thank you @masterhands) -* Show r.term.option value in settings UI -* Refactoring - -## 1.1.5 - -* Replace deprecated function (Refactoring) -* Add alwaysUseActiveTerminal setting (fix #123) - -## 1.1.4 - -* Fixed spelling, improved formatting #129 (Thank you @wleoncio) -* Automatically comment new lines in roxygen sections (fix #124) -* Fix send code for newlines on Windows (fix #114) -* Add auto-completion of roxygen tags (fix #128) -* Change cursorMove to wrappedLineFirstNonWhitespaceCharacter (fix 126) - -## v1.1.3 - -* RMarkdown knit support (fix #121) (Thank you @dominicwhite) - -## v1.1.2 - -* Fix send code for newlines and Radian #114 #117 - -## v1.1.1 - -* Fix Preview Environment for variable x (fix #111) by @andycraig -* Fix Preview Environment for multi-class objects (fix #111) by @andycraig -* Fix danger package dependency - -## v1.1.0 - -* Fix for R markdown config -* Fix for valunerability - -## v1.0.9 - -* Fix check for Excel Viewer extension - -## v1.0.7 - -* Add web pack for performance by @andycraig - -## v1.0.6 - -* Add runSelectionInActiveTerm command #104 (fix #80 #102) (Thank you @andycraig) - -## v1.0.4 - -* Shortcuts with R functions #101 -(fix #100) (Thank you @MaTo04) - -## v1.0.3 - -* Fix Preview Dataframe command #67(fix #97) (Thank you @andycraig) - -## v1.0.2 - -* Remove excel dependency - -## v1.0.1 - -* Fix Dependency -* Refactoring - -## v1.0.0 - -* Sorry, supporting this extension is ended. Please looking forward to coming new one (). - -## v0.6.2 - -* fix wordPattern to avoid `.` -* fix run selection - -## v0.6.1 - -* Added detection of bracket and pipe blocks #82 (fix #26) (Thank you @andycraig) -* Fix dependency - -## v0.6.0 - -* Remove lintr function. If you want to use lintr, please install R LSP Client - -## v0.5.9 - -* Fix for security dependencies - -## v0.5.8 - -* Fix Run Selected has strange behavior #42 (Thank you @Ladvien) - -## v0.5.7 - -* Disabled lintr for default setting that is already implemented by LSP -* Fix Commented lines are not ignored when determining code blocks #61 (Thank you @Ladvien) - -## v0.5.6 - -* Fix some dependencies for perform and developments - -## v0.5.5 - -* Add package dev commands #58 (Thank you @jacob-long) - -## v0.5.4 - -* fix snippets -* R term name to R interactive (fix #46) -* Send code from Rmd chunk to terminal (fix #49) -* Depend R language server extension - -## v0.5.3 - -* fix default r.rterm.option again to `["--no-save", "--no-restore", "--no-site-file"]` - -## v0.5.2 - -* fix default r.rterm.option to `["--no-save", "--vanilla"]` - -## v0.5.1 - -* Support code region by `#region` and `#endregion` - -## v0.5.0 - -* Support package lint - -## v0.4.9 - -* Add shebang support for R syntax highlight #33(Thank you @dongzhuoer) -* Added block detection and execute whole block #32(Thank you @Ladvien) -* Proposed fix for Load Chunk problems #27 #31(Thank you @Ladvien) -* Update some snippets from VS - -## v0.4.8 - -* Fix Windows key map -* Add some snippets from VS - -## v0.4.7 - -* Fix syntax -* Fix Readme -* Fix icon - -## v0.4.6 - -* Added Environment Viewer command - -## v0.4.5 - -* Fix syntax little -* Set icon dark and light -* Improve data viewer perform(Thank you @Lavien) -* Remove extra package - -## v0.4.4 - -* Add `Run Source` icon - -## v0.4.3 - -* Added Data viewer Command(Thank you @Lavien) - -## v0.4.2 - -* Add Source with echo -* Fix keybind - -## v0.4.1 - -* Add more shortcut key - -## v0.4.0 - -* Add shortcut key -* Fix README.md - -## v0.3.9 - -* Fix problem lintr was running other language's files - -## v0.3.8 - -* Improve `Run Selection/Line` (Thank you @Ladvien) - * Added cursorMove after line execution #13 - * Don't pass Rterm comments #14 - -## v0.3.7 - -* run lintr on did save automaticaly - -## v0.3.6 - -* fix Terminal #7 - -## v0.3.5 - -* fix syntax - -## v0.3.4 - -* add "builtin function" from RBox - -## v0.3.3 - -* New syntax color from R Box -* fix typo(Thank you @Shians) #12 - -## v0.3.1 - -* fix Run Selection/Line only executes the first line of file when nothing was selected #9 - -## v0.3.0 - -* update lintr behavar - -## v0.2.9 - -* fix lintr on Mac - -## v0.2.8 - -* add command `R: Run Selection/Line` - -## v0.2.7 - -* add setting `r.source.focus` #5 - -## v0.2.6 - -* add setting - * `r.lintr.executable` #2 - * `r.rterm.option` #2 - * `r.source.encoding` (Thank you @ondrejpialek) #4 -* save before `R:Run Source` command #5 -* update snippets - -## v0.2.5 - -* add `Run Selected` and `Run Source` command - -## v0.2.4 - -* fix for Windows - -## v0.2.3 - -* support lintr option cache and linters - -## v0.2.2 - -* support lintr on Mac and Linux - -## v0.2.0 - -* support lintr on Windows - -## v0.1.4 - -* use new icon - -## v0.1.3 - -* fix R term's perform - -## v0.1.2 - -* fix packages - -## v0.1.1 - -* Create .gitignore - -## v0.0.9 - -* Fix Run R perform - -## v0.0.8 - -* R Markdown Snippets as Markdown - -## v0.0.7 - -* Support R Markdown - -## v0.0.6 - -* R Integrated Terminal - -## v0.0.5 - -* Rdocumentation Snippets - -## v0.0.4 - -* R Snippets - -## v0.0.3 - -* Support R documentation - -## v0.0.1 - -* Initial release - -## TODO - -* Output Plot -* Debug -* Language Server -* Intellisense + diff --git a/CHANGELOG.old.md b/CHANGELOG.old.md new file mode 100644 index 00000000..6513f559 --- /dev/null +++ b/CHANGELOG.old.md @@ -0,0 +1,1011 @@ +# Change Log + +## Latest updates + +You can check all of our changes from [Release Page](https://github.com/REditorSupport/vscode-R/releases) + +## [2.8.5](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.5) + +* Upgrade Rsyntax +* Use --no-echo instead of --slave + +## [2.8.4](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.4) + +* Upgrade dependencies + +## [2.8.3](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.3) + +Enhancements: + +* Substitute variables in `r.rpath` and `r.rterm` settings. (#1444) +* Improve code chunk handling in base .R files. (#1454, thanks @kylebutts) + +Fixes: + +* Fix multiline smart-knit (#1493) +* Fix RMD Progress Bar (#1491) +* Remove `.` as an R language `editor.wordSeparators` (#1503, thanks @opasche) +* `numeric_version()` wants character as of R 4.4 (#1520, #1523, thanks @jennybc and @pawelru) +* Handle terminals created by vscode-Python (#1511, thanks @tomasnobrega) + +## [2.8.2](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.2) + +Enhancements: + +* Update built-in function match regex. (#1431, thanks @MichaelChirico) +* Add `r.useRenvLibPath` setting to opt in adding `renv` package cache to `.libPaths` when R processes (language server, help server, etc.) start up. (#1423, thanks @nateybear) +* Add a VScode task to run `testthat::test_file()`` on the currently open file. (#1415, thanks @gowerc) +* `r.rterm.*` settings now accept paths relative to the current workspace folder to support customized commands +to create R terminals. (#1398, thanks @Tal500) +* Upgrade ag-grid-community to v30.2.0 (#1434) +* Upgrade vscode-languageclient to v9.0.1 (#1435) + +## [2.8.1](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.1) + +Enhancements: + +* A new setting `r.lsp.multiServer` is added. If disabled, only a single language server will be spawned from the first workspace folder to handle all requests from all workspaces and files. (#1375) +* Upgrade ag-grid-community to v30.0.0 (#1379) + +Fixes: + +* Fix handling `r.session.data.pageSize = 0`. (#1364) +* Fix help panel in remote host. (#1374) +* Fix missing package names in "Install CRAN Package". (#1377) + +## [2.8.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.8.0) + +New Features: + +* A new experimental setting `r.session.useWebServer` is added to support communicating with R session via a web server running in R. This requires R package `httpuv` to be installed. Currently, +it enhances the session symbol completion when accessing R object via `$` and `@`. *This feature is +experimental and may be subject to change in the future.* (#1151) +* A new setting `r.rmarkdown.preview.zoom` is added to support the default zoom level or R markdown +preview. (#1333) + +Enhancements: + +* Improve message when error occurs on loading R packages. (#1334, thanks to @csaybar) +* Upgrade ag-grid-community to v29.3.0 (#1346) + +Fixes: + +* Commands that are not intended in the command pallete are now hidden. (#1327, #1330) + +## [2.7.2](https://github.com/REditorSupport/vscode-R/releases/tag/v2.7.2) + +Enhancements: + +* Upgrade vscode-languageclient to 8.1.0 (#1315) +* Workspace viewer will be cleaned-up when the attached R session exits. (#1318, #1321) +* A new command `r.view` is added to view selected objects. (#1319, thanks @yeyun1999) +* Workspace viewer commands that require an attached R session are now disabled when no R session is attached. (#1323) + +Fixes: + +* Workspace viewer now has a fallback message instead of causing error if session watcher is disabled. (#1317) + +## [2.7.1](https://github.com/REditorSupport/vscode-R/releases/tag/v2.7.1) + +New Features: + +* A new setting `r.source.echo` is added to support sending `source(file, echo = TRUE)` by default. (#1286, thanks @jakub-jedrusiak) +* A new setting `r.removeLeadingComments` is added to remove leading comments when sending code to terminal. (#1245, thanks @gowerc) + +Enhancements: + +* Help page previews from `.Rd` files are now generated asynchronously. (#1273) +* Column name is also displayed in the column tooltip in a data viewer. (#1278, thanks @eitsupi) +* Upgrade ag-grid-community to v29.0.0 (#1290) + +Fixes: + +* Fixed broken tests (#1302) + +## [2.7.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.7.0) + +New Features: + +* New syntax highlighting support for `NAMESPACE` and `.Rbuildignore`. (#1221, thanks @nx10) +* Support help preview in package development. (#1259, #1266) + +Enhancements: + +* The extension is re-published to [Open VSX Registry](https://open-vsx.org/extension/reditorsupport/r). ([open-vsx#591](https://github.com/open-vsx/publish-extensions/issues/591)). +* The WebView panel now supports htmlwidgets using Web Workers. (#1261, thanks @anthonynorth) +* Code block detection now includes parentheses, which is more consistent with RStudio behavior. (#1269) + +Fixes: + +* `View()` no longer stops with `tibble()` that contains objects that do not +implement `asJSON()` method. (#1255) +* Fixed the regex for detecting problems reported by testthat from tasks. (#1257, thans @gowerc) +* Fixed syntax highlighting in help preview under R 4.2.x. (#1268) + +## [2.6.1](https://github.com/REditorSupport/vscode-R/releases/tag/v2.6.1) + +Enhancements: + +* A new setting `r.plot.devArgs` is added to allow customizing png device arguments (e.g. width and height) for the PNG plot viewer. (#1235) + +Fixes: + +* Fixed opening requested file externally when viewer is disabled. (#1209) +* Support trailing slash in code-server's URI template. (#1241) + +## [2.6.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.6.0) + +New Features: + +* A new command "R: Generate C/C++ Configuration" is added to support auto-generating [`c_cpp_properties.json`](https://code.visualstudio.com/docs/cpp/customize-default-settings-cpp) in an R package with C/C++ code for [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) Extension to provide IntelliSense. (#1205, thanks @nx10) + +Enhancements: + +* Support showing KeTeX formula in help viewer. (#1213) + +Fixes: + +* Fixed empty line at the end of help pages as clickable example. (#1194) +* Avoid code highlighting in DESCRIPTION files in help viewer as code examples. (#1199) +* Saving a rmd file no longer triggers the preview to refresh if it is still rendering. (#1219) + +## [2.5.3](https://github.com/REditorSupport/vscode-R/releases/tag/v2.5.3) + +Enhancements: + +* Reload help pages on refresh. (#1188) +* Upgrade to vscode-languageclient 8.0.2. (#1173) + +Fixes: + +* Remove `encoding` from knitting so that renderers that do not have an encoding parameter (e.g. `quarto::quarto_render()`) now work properly. (#1167) + +## [2.5.2](https://github.com/REditorSupport/vscode-R/releases/tag/v2.5.2) + +New Features: + +* R help viewer now highlights code sections on hover and user can click the code to copy it to the clipboard, or press `ctrl+click` (Windows and Linux) or `cmd+click` (macOS) to send it to R terminal by default. A new setting `r.helpPanel.clickCodeExamples` is added to allow customizing the click behavior. (#1138) +* A new command `Create .lintr` is added. (#1112) + +Enhancements: + +* R and Rmd files are added to `Create: New File`. (#1119) +* Improved data viewer column resizing. (#1121) + +Fixes: + +* Hide environment values in R Markdown preview to prevent accidental deletion (#1117) +* Opening and closing a list item in the workspace viewer treeview now works properly. (#1150) + +## [2.5.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.5.0) + +Announcement: + +* [vscode-R](https://marketplace.visualstudio.com/items?itemName=REditorSupport.r) has been transferred to `REditorSupport` as the publisher in the VS Code Marketplace. The unique identifier has been updated to `REditorSupport.r`. (#690) +* [R in Visual Studio Code](https://code.visualstudio.com/docs/languages/r) topic is added to the VS Code documentation. + +New Features: + +* A new setting `r.libPaths` is added to support additional library paths to be appended to `.libPaths()` when R background processes (R language server and help server) are launched. It could be useful for projects with [renv](https://rstudio.github.io/renv/articles/renv.html) enabled where required packages (e.g. `languageserver` and `jsonlite`) to use vscode-R are only installed in other location. For more details, checkout the [wiki](https://github.com/REditorSupport/vscode-R/wiki/Working-with-renv-enabled-projects). (#1071, #1097, #1098) + +Enhancements: + +* The R package build task is separated into Build and Build Binary tasks. (#1029, thanks @Yunuuuu) +* Hide smart knit environment variables to prevent accidental deletion. (#1060) +* A new setting `r.session.data.pageSize` is added to support adjusting the page size of the data viewer. The default is now 500. (#1068) +* The check for languageserver package installation is improved and the prompt could be disabled. (#1071) +* The R Markdown code chunk snippet supports language choice. (#1082, thanks @jooyoungseo) +* It will prompt instead of showing empty choice when no R Markdown templates are found. (#1089) + +Fixes: + +* Guard against evaluation of active bindings in the global environment. (#1038) +* The `http` prefix is unnecessary and removed from several code snippets. (#1084, #1085, thanks @jooyoungseo) +* R Markdown knit and preview scripts now use `loadNamespace()` instead of `requireNamespace()` to fail early if necessary packages are unavailable. (#1086) + +## [2.4.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.4.0) + +New Features: + +* Added "R Markdown: New Draft" command to choose a template for a new R Markdown document. (#984) +* Added *Attached Namespaces* and *Loaded Namespaces* to the workspace viewer. (#1022) + +Enhancements: + +* `spawn` is consistently used to run R scripts and commands. (#985) +* Added a problemMatcher for testthat output from Test task. (#989, thanks @gowerc) +* Code chunk snippets now preserve selected text. (#1001) +* Added more useful Shiny and R Markdown snippets. (#1009, #1012, thanks @jooyoungseo). +* Provides optional `code` argument to `r.runSelection` command for other extensions to execute interactive R code. (#1017, thanks @jjallaire) +* Supports lambda function declaration in syntax higlighting. (#1025) + +Fixes: + +* Fixed code detection with mixed quotes. (#988, thanks @gowerc) +* Fixed syntax highlighting for variables starting with `function`. (#992, thanks @gowerc) +* Fixed R task definition and `resolveTask`. (#994) +* Fixed auto port forwarding for httpgd plot viewer in LiveShare session. (#1026) + +## [2.3.8](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.8) + +Fixes: + +* Fixes languageserver detection failure on Windows by avoiding rpath quoting. (#981) + +## [2.3.7](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.7) + +Note: + +* After v2.3.4, httpgd plot viewer requires `httpgd` 1.2.0 or later. If the plot viewer shows 404 error, installing the latest release of `httpgd` should resolve the problem. (#972) + +Enhancements: + +* Data viewer supports [Apache Arrow Table](https://arrow.apache.org/docs/r) and `r.session.data.rowLimit` setting is added to limit the number of rows to show. (#945, thanks @eitsupi) +* R gitignore file is updated and "R: Create gitignore" also supports multi-root workspace. (#949, thanks @eitsupi). +* Httpgd plot viewer has a delay before refreshing to avoid redrawing too often. (#956) +* Shell commands used in tasks use strong quoting. (#964, thanks @shrektan) +* User will be prompted to install `languageserver` if the package is missing. (#965, @shrektan) +* DCF syntax is updated to support syntax highlighting of `.lintr`. (#970, thanks @eitsupi) +* Column headers show the class and type of each column in tooltips. (#974, thanks @eitsupi) +* Extension is activated if the workspace folder contains `*.{rproj,Rproj,r,R,rd,Rd,rmd,Rmd}` at any level of sub-folders. (#979) + +Fixes: + +* Fix typo in command line arguments. (#954, thanks @achey2016) +* R Markdown commenting uses HTML-style comments outside code blocks. (#958) +* R Markdown rendering process gets `LANG` environment variable to properly handle unicode characters. (#961, thanks @shrektan) + +## [2.3.6](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.6) + +Enhancements: + +* Added raw string syntax. (#922) +* Added support for both single and double brackets in code-server's URI template. (#934, thanks @benz0li) + +Fixes: + +* Fixed syntax highlighting so that variables and function parameters are highlighted more consistently. (#939) +* R processes are now properly terminated on extension deactivation. (#941, thanks @albertosantini and @Yunuuuu) + +## [2.3.5](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.5) + +Enhancements: + +* Added `devtools` tasks to command palette. (#880, thanks @alex-gable) +* Improved help pages readability. (#915, thanks @18kimn) + +Fixes: + +* Fixed R Markdown knit and preview without opening a workspace folder. (#914) +* Fixed `DESCRIPTION` syntax highlighting for `Authors@R` field. (#920) +* Fixed an issue about leaking child processes. All spawned child processes (e.g. help server, language server, R Markdown preview) are cleaned up on exit. (#918) + +## [2.3.4](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.4) + +Enhancements: + +* Quotes in `r.rpath.*` settings are now removed. (#884) +* Alternative CRAN mirrors (e.g. [RStudio Public Package Manager](https://packagemanager.rstudio.com) and [the ropensci universe](https://ropensci.r-universe.dev) are supported. (#876) + +Fixes: + +* Fixed a Uri handling bug in Windows. (#888) +* Fixed a bug in restarting help server when library has changed. (#893) + +## [2.3.3](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.3) + +Enhancements: + +* The information of attached R session now appears in the label and the tooltip of +the status bar item. (#836) +* A new setting `r.rmarkdown.knit.command` is added to support customized knit command if not specified in the document. (#841, #850, thanks @xoolive) +* A terminal profile for R is added via the new terminal API. (#851) +* The help topics are now automatically updated when R packages are installed, removed, or upgraded. (#863) + +Fixes: + +* Fixed the problem with PowerShell on Windows when installing packages. (#846) +* Fixed the handling of single quote in roxygen comments and the roxygen block is now automatically exited after two empty lines. (#847) +* Backtick is added to the list of quote characters for syntax highlighting. (#859, thanks @jan-imbi) +* Fixed detecting the YAML frontmatter in R Markdown documents. (#856) +* Fixed attaching an R session with an open httpgd device that also triggers the plot viewer. (#852) +* Fixed the chunk coloring in R Markdown preview. (#867) +* Fixed the delimiter used in the output of the background knit process. (#868) + +## [2.3.2](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.2) + +Enhancements: + +* `.vsc.browser()` now handles `file://` urls. (#817) +* `r.session.levelOfObjectDetail` gains a `Normal` value for the session watcher to write only first level structure of global objects for performance. (#815) +* Session watcher now supports workspace folder as symlinks. (#827) + +Fixes: + +* Httpgd plot viewer respects the view column specified by `r.session.viewers.viewColumn.plot` setting (#816) +* `View` is completed replaced so that `tibble::view()` could +trigger data viewer (#818) +* Help cache is disabled between sessions (#819) + +## [2.3.1](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.1) + +Enhancements: + +* Proxied requests are now supported to work with [code-server](https://github.com/cdr/code-server). (#275, #803) + +Fixes: + +* `unsafe-eval` is re-enabled in WebView Content Security Policy to make htmlwidgets such as plotly work. (#805) +* The help viewer now respects `r.session.viewers.viewColumn.helpPanel`. (#804) +* The working directory of the knit background process is now consistent with the knit working directory so that `.Rprofile` and `renv` setup are respected. (#807) + +## [2.3.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.3.0) + +Enhancements + +* R Markdown preview now supports background rendering with progress bar, customizable + working directory, and smart knit button. (#765) +* `{rstudioapi}` emulation is enabled by default. (#769) +* A new setting `r.session.objectLengthLimit` is added to limit the output of the names of global objects with many named elements which might cause significant delay after inputs. (#778) +* `NA` and `Inf` could now be correctly displayed in the data viewer. (#780) +* User-specified R Markdown output format is now respected. (#785) + +Fixes + +* The security policy of WebView is relaxed to support `{flextable}` widgets. (#771) +* The R Markdown background rendering process could be properly terminated now. (#773) + +## [2.2.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.2.0) + +New Features + +* VS Code settings are now accessible from R and all vscode-specifc R options (`vsc.*`) now have +corresponding VS Code settings. (#743) + +Enhancements + +* Check conflict extension `mikhail-arkhipov.r` on activation. (#733) +* Add icons to WebViews. (#759) + +Fixes + +* Fix date filter in data viewer. (#736) +* Fix htmlwidget resource path in WebView. (#739) +* Use `.DollarNames` with default pattern. (#750) +* Fix syntax highlighting for `c()` in function args. (#751) +* Handle error in `capture_str()`. (#756) + +## [2.1.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.1.0) + +Important changes + +* The project is migrated to [REditorSupport](https://github.com/REditorSupport) organization on +GitHub. (#98) +* The R language service (completion, document outline, definition, etc., +formerly implemented in [vscode-r-lsp](https://github.com/REditorSupport/vscode-r-lsp)) is now +integrated into vscode-R (#695). The vscode-r-lsp extension will be unpublished from the +VS Code marketplace +at some point. + * Search `r-lsp` extension, uninstall it and vscode-R will start the R langauge service + automatically. + * The language service still depends on the R package [`languageserver`](https://github.com/REditorSupport/languageserver). Make sure the package is installed before using vscode-R. + * To opt-out the language service, set `"r.lsp.enabled": false` in your user settings. +* R session watcher is now enabled by default. (#670) + * `r.previewDataframe` and `r.previewEnvironment` will use the session watcher if enabled. + * To opt-out, set `"r.sessionWatcher": false` in your user settings. + +New Features + +* Preview R Markdown documents via background process with auto-refresh and dark theme support. (#692, #699) + +Enhancements + +* Several enhancements of the workspace viewer. (#672) +* The plot viewer now supports customizable CSS file via `r.plot.customStyleOverwrites` and + `r.plot.togglePreviewPlots` now cycles through mutlirow/scroll/hidden. (#678, #681) +* The data viewer is now based on [ag-grid](https://github.com/ag-grid/ag-grid) with better performance and better support for filtering and dark theme. (#708) + * The data viewer might not work with existing R sessions started before the extension update. + A restart of sessions is needed to use the new data viewer. +* Command `r.showPlotHistory` is removed in favor of the httpgd-based plot viewer. (#706) +* The plot viewer now supports full window mode. (#709) + +Fixes + +* LiveShare API bug fix and enhancements. (#679) +* Fix syntax highlighting of integers in scientific notation. (#683) + +## [2.0.0](https://github.com/REditorSupport/vscode-R/releases/tag/v2.0.0) + +Highlight + +* Thank you for join new collaborator: Elian H. Thiele-Evans(@ElianHugh) + * LiveShare Functionality #626 + * More detail about LiveShare: + * rmarkdown bug squashing and minor changes #663 + * Code cells in .R files #662 + +* Use .DollarNames for object with class in completion #660 + +## [1.6.7](https://github.com/REditorSupport/vscode-R/releases/tag/v1.6.7) + +* Update R syntax #647 +* Fix replacing base::.External.graphics #625 + +Thank you for your contributions. + +* @jolars + * Don't run chunks with eval = FALSE #653 (Fix #651) +* @nx10 + * Integrate httpgd #620 + +## [1.6.6](https://github.com/REditorSupport/vscode-R/releases/tag/v1.6.6) + +Highlight + +* Clarify error messages +* Being more conservative to call object.size() in task callback +* Send code to debug repl +* shim the rstudioapi if it has already been loaded + +Thank you for your contributions. + +* @krlmlr + * Update vscode engine #586 + * Satisfy markdownlint #587 +* @danielbasso + * Initial Workspace Viewer str() functionality #583 + +## 1.6.5 + +* Add links to help pages in hover #578 +* Move `r.runSource` and `r.knitRmd` to `editor/title/run` #573 (Fix #572) +* Fix so code can be run after creating terminal #567 +* Add option to keep terminal hidden after running code #566 +* Scroll to bottom after running a command #559 (Thank you @samkimhis) +* Refactoring and implementation of webviewPanelSerializer #556 +* add option vsc.hover.str.max.level #545 +* Change workspace tooltip #544 (Thank you @ElianHugh) + +## 1.6.4 + +* Better error message when reading aliases (#518) +* Keep promises and active bindings in globalenv (#521) +* Refactor extension.ts (#525) +* Write aliases to file (#526) +* add sendToConsole to rstudioapi emulation (#535) +* Add function to open help for selected text (#531) +* Add initial pipeline completion support (#530) +* Add updatePackage command (#532) +* Add option to preserve focus when opening help view (#541) + +## 1.6.3 + +* Add browser WebView command buttons #494 +* Enable find widget in WebViews #490 +* Disable alwaysShow for addin items #491 +* Only show R menu items in R view #493 +* Modify pre-release action #492 (Fix #484) +* Improve release action #505 (Fix #503) +* Improve help view #502 (Follow up to #497) + +### Thank you for contributors works 1.6.3 + +* @ElianHugh + * Implement R workspace viewer #476 (Fix #416) + * Conditionally show view #487 +* @tdeenes: Find in topic (help panel) #488 (Fix #463) +* @jsta: typo fix #500 + +## 1.6.2 + +* Improve style of help pages #481 + * All help pages: center headings + * Normal functino help pages: hide (rather useless) header bar + * All help pages: hide image placeholders + * Manuel Pages: hide page-internal links + * Manual Pages: suppress mismatching header styles embedded in the html +* Reorganize helppanel, add `?` function #477 +* Modify config #467 +* Fix bug that would leave background R processes running #475 + +* Fix whole of style (Extends #361) (#474) + +### Thank you for contributors works 1.6.2 + +* @markbaas: Fix The Ctrl+Enter shortcut does not work properly when a non-comment line in a function definition contains the "#" character. #462 (Fix #443) +* @kar9222: + * Update README #480 (Fix #465) + * RMarkdown: Add run & navigation commands. More customization. Refactor. #465 + +## 1.6.1 + +This version includes minor fix to stable new functions + +* Add GitHub Action for release #449 +* Highlight all chunks #453 +* Fix checking workspaceFolders in rHelpProviderOptions #456 +* Fix typo in help panel path config #457 + +* @kar9222 Thank you for contribution + * Update README: Add options(vsc.helpPanel = ...) #461 + * Rmd fenced block syntax highlighting for julia, python, etc #460 + +* New feature r.runFromLineToEnd #448 (Thank you @Dave-cruzz) + +## 1.6.0 + +* Integrate help view from vscode-R-help #433 (Implemented by the new collabolator @ManuelHentschel) +* Add terminal information to chooseTerminal error #447 +* Send code at EOF appends new line #444 +* Friendly error message when trying to launch addin picker and vsc.rstudioapi = FALSE #441 +* platform independent content string splitting #436 +* Add runAboveChunks command #434 + +## 1.5.2 + +* Enhance R markdown support #429 (Fix #428, #49, #261) +* Fix and enhance navigateToFile #430 +* Improve handling html help #427 (Fix #426, #380) + +## 1.5.1 + +* Rename init functions #425 (Fix #424) +* Fix issues in rstudioapi emulation #422 (Fix #421) + +## 1.5.0 + +* RStudio Addin Support #408 (Implemented by the new collabolator @MilesMcBain) + * The usage is added on the [wiki page](https://github.com/REditorSupport/vscode-R/wiki/RStudio-addin-support) + +* Recommend radian in README #420 + +## 1.4.6 + +* Remove Run in Active Terminal from README #413 (Fix #412) +* Remove command Run Selection/Line in Active Terminal #409 (Fix #306) +* Check url in browser #406 (Fix #371) + +## 1.4.5 + +* Remove shortcuts Ctrl + 1, 2, 3, 4, 5 #401 (Fix #368) + + These conflicted with default Visual Studio Code keyboard shortcuts. If you would like to restore them, see the [instructions in the Wiki](https://github.com/REditorSupport/vscode-R/wiki/Keyboard-shortcuts#removed-keyboard-shortcuts). + +* Restore R_PROFILE_USER #392 (Fix #391) +* Fix so rTerm is undefined when deleting terminal #403 (Fix #402) + +## 1.4.4 + +* Fix vulnerability issues + +## 1.4.2 + +* New R options and functions to control session watcher behavior #359 + + To work with existing self-managed, persistent R sessions as the extension is upgraded, + source the `init.R` again before attaching. + + ```r + source(file.path(Sys.getenv(if (.Platform$OS.type == "windows") "USERPROFILE" else "HOME"), ".vscode-R", "init.R")) + ``` + +* Remove single quote from doesLineEndInOperator #357 (Fix #356) + +## 1.4.1 + +* Fix View empty environment #350 (Fix #349) +* Change runSelectionInActiveTerm effect to warning #351 +* Improve getBrowserHtml #353 +* Use fs.watch instead of vscode.FileSystemWatcher #348 (Fix #347, #352, #236, #179, #272, #330) + +## 1.4.0 + +### Feature improvement + +* Add syntax highlight for DESCRIPTION and .Rproj #342 (Thank you @qinwf) +* A lot of works (Thank you @gowerc) + * Enable default R location to be used on mac/linux if none is supplied #340 + * Added functionality to switch to an existing R terminal #338 + * Expose send text delay as a parameter #336 + * Supress auto-opening quote in roxygen comment #328 +* Add r.runSelectionRetainCursor #325 + +### Project engineering + +* Convert language files to Json #333 (Thank you @gowerc) +* Define lint in package.json and use it in GitHub Actions #344 + +## 1.3.0 + +* Change so setting changes take effect immediately (Fix #301) +* Fix package volunerability +* Improve .Rprofile +* Remove --no-site-file from default r.rterm.option + +## 1.2.8 + +* Use eslint in GitHub Actions +* Add R Markdown surround and frontmatter comments (Fix #260) + +## 1.2.7 + +* Add [new wiki page](https://github.com/REditorSupport/vscode-R/wiki) ! +* Use Windows registry to find R path +* Fix handling grouped_df in dataview_table +* Use GitHub Actions for linting + +## 1.2.6 + +* Fix showWebView + +## 1.2.5 + +* Check untitled document and save result before running command + +## 1.2.4 + +* Add configurable command runner functions (Thank you @MilesMCBain) +* Change .Platform$GUI to vscode on session start +* Fixed the function snippet (Fixed #230) (Thank you @stanmart) +* Add statement of languageserver features to bug report template (Fixed #210) +* Inject R Markdown features into Markdown grammar (Fixed #220, #116, #48, #36) + +## 1.2.3 + +* Fixed the function snippet (Fixed #230) (Thank you @stanmart) +* Update activationEvents +* Add more logging to session watcher +* Avoid duplicate handling of response update +* Add syntax highlighting for R code in Rcpp comment #225 + +## 1.2.2 + +* View improvement (Thank you @renkun-ken) + * Fix dataview_table handling single row data + * Show WebView triggered by page_viewer in Active column + * Fix WebView Uri replacing + * Add row hover and select + * Improve session watcher initialization + * Use dev.args option when creating png device before replay + * Show plot history + +## 1.2.1 + +* Extend View (Thank you @renkun-ken) +* Fix session watcher init.R path on Windows (Fixed #176) + +## 1.2.0 + +* R session watcher (Thank you @renkun-ken). Usage is written on the README.md + * Attach Active Terminal (by command or clicking status bar item) + * Auto attach on R session startup: if init.R is sourced in .Rprofile, starting an R session will notify vscode-R to automatically attach to it. + * Provide hover to global symbol in attached session + * Show plot file on the fly + * Show WebView to present htmlwidgets and shiny apps + * Show WebView for data.frame and list object when calling View() + +## 1.1.9 + +* Fix bracketed paste on Windows (fix #117) +* Fix function call closing bracket highlight (Thank you @kiendang) + +## 1.1.8 + +* Use word under cursor for previewDataframe, nrow (fix #137) +* Change license MIT -> AGPL-3.0 + +## 1.1.6 + +* Fix behaviour when workplacefolders is Undefiend (Thank you @masterhands) +* Show r.term.option value in settings UI +* Refactoring + +## 1.1.5 + +* Replace deprecated function (Refactoring) +* Add alwaysUseActiveTerminal setting (fix #123) + +## 1.1.4 + +* Fixed spelling, improved formatting #129 (Thank you @wleoncio) +* Automatically comment new lines in roxygen sections (fix #124) +* Fix send code for newlines on Windows (fix #114) +* Add auto-completion of roxygen tags (fix #128) +* Change cursorMove to wrappedLineFirstNonWhitespaceCharacter (fix 126) + +## v1.1.3 + +* RMarkdown knit support (fix #121) (Thank you @dominicwhite) + +## v1.1.2 + +* Fix send code for newlines and Radian #114 #117 + +## v1.1.1 + +* Fix Preview Environment for variable x (fix #111) by @andycraig +* Fix Preview Environment for multi-class objects (fix #111) by @andycraig +* Fix danger package dependency + +## v1.1.0 + +* Fix for R markdown config +* Fix for valunerability + +## v1.0.9 + +* Fix check for Excel Viewer extension + +## v1.0.7 + +* Add web pack for performance by @andycraig + +## v1.0.6 + +* Add runSelectionInActiveTerm command #104 (fix #80 #102) (Thank you @andycraig) + +## v1.0.4 + +* Shortcuts with R functions #101 +(fix #100) (Thank you @MaTo04) + +## v1.0.3 + +* Fix Preview Dataframe command #67(fix #97) (Thank you @andycraig) + +## v1.0.2 + +* Remove excel dependency + +## v1.0.1 + +* Fix Dependency +* Refactoring + +## v1.0.0 + +* Sorry, supporting this extension is ended. Please looking forward to coming new one (). + +## v0.6.2 + +* fix wordPattern to avoid `.` +* fix run selection + +## v0.6.1 + +* Added detection of bracket and pipe blocks #82 (fix #26) (Thank you @andycraig) +* Fix dependency + +## v0.6.0 + +* Remove lintr function. If you want to use lintr, please install R LSP Client + +## v0.5.9 + +* Fix for security dependencies + +## v0.5.8 + +* Fix Run Selected has strange behavior #42 (Thank you @Ladvien) + +## v0.5.7 + +* Disabled lintr for default setting that is already implemented by LSP +* Fix Commented lines are not ignored when determining code blocks #61 (Thank you @Ladvien) + +## v0.5.6 + +* Fix some dependencies for perform and developments + +## v0.5.5 + +* Add package dev commands #58 (Thank you @jacob-long) + +## v0.5.4 + +* fix snippets +* R term name to R interactive (fix #46) +* Send code from Rmd chunk to terminal (fix #49) +* Depend R language server extension + +## v0.5.3 + +* fix default r.rterm.option again to `["--no-save", "--no-restore", "--no-site-file"]` + +## v0.5.2 + +* fix default r.rterm.option to `["--no-save", "--vanilla"]` + +## v0.5.1 + +* Support code region by `#region` and `#endregion` + +## v0.5.0 + +* Support package lint + +## v0.4.9 + +* Add shebang support for R syntax highlight #33(Thank you @dongzhuoer) +* Added block detection and execute whole block #32(Thank you @Ladvien) +* Proposed fix for Load Chunk problems #27 #31(Thank you @Ladvien) +* Update some snippets from VS + +## v0.4.8 + +* Fix Windows key map +* Add some snippets from VS + +## v0.4.7 + +* Fix syntax +* Fix Readme +* Fix icon + +## v0.4.6 + +* Added Environment Viewer command + +## v0.4.5 + +* Fix syntax little +* Set icon dark and light +* Improve data viewer perform(Thank you @Lavien) +* Remove extra package + +## v0.4.4 + +* Add `Run Source` icon + +## v0.4.3 + +* Added Data viewer Command(Thank you @Lavien) + +## v0.4.2 + +* Add Source with echo +* Fix keybind + +## v0.4.1 + +* Add more shortcut key + +## v0.4.0 + +* Add shortcut key +* Fix README.md + +## v0.3.9 + +* Fix problem lintr was running other language's files + +## v0.3.8 + +* Improve `Run Selection/Line` (Thank you @Ladvien) + * Added cursorMove after line execution #13 + * Don't pass Rterm comments #14 + +## v0.3.7 + +* run lintr on did save automaticaly + +## v0.3.6 + +* fix Terminal #7 + +## v0.3.5 + +* fix syntax + +## v0.3.4 + +* add "builtin function" from RBox + +## v0.3.3 + +* New syntax color from R Box +* fix typo(Thank you @Shians) #12 + +## v0.3.1 + +* fix Run Selection/Line only executes the first line of file when nothing was selected #9 + +## v0.3.0 + +* update lintr behavar + +## v0.2.9 + +* fix lintr on Mac + +## v0.2.8 + +* add command `R: Run Selection/Line` + +## v0.2.7 + +* add setting `r.source.focus` #5 + +## v0.2.6 + +* add setting + * `r.lintr.executable` #2 + * `r.rterm.option` #2 + * `r.source.encoding` (Thank you @ondrejpialek) #4 +* save before `R:Run Source` command #5 +* update snippets + +## v0.2.5 + +* add `Run Selected` and `Run Source` command + +## v0.2.4 + +* fix for Windows + +## v0.2.3 + +* support lintr option cache and linters + +## v0.2.2 + +* support lintr on Mac and Linux + +## v0.2.0 + +* support lintr on Windows + +## v0.1.4 + +* use new icon + +## v0.1.3 + +* fix R term's perform + +## v0.1.2 + +* fix packages + +## v0.1.1 + +* Create .gitignore + +## v0.0.9 + +* Fix Run R perform + +## v0.0.8 + +* R Markdown Snippets as Markdown + +## v0.0.7 + +* Support R Markdown + +## v0.0.6 + +* R Integrated Terminal + +## v0.0.5 + +* Rdocumentation Snippets + +## v0.0.4 + +* R Snippets + +## v0.0.3 + +* Support R documentation + +## v0.0.1 + +* Initial release + +## TODO + +* Output Plot +* Debug +* Language Server +* Intellisense diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 00000000..f32dc319 --- /dev/null +++ b/cliff.toml @@ -0,0 +1,77 @@ +[remote.github] +owner = "REditorSupport" +repo = "vscode-R" + +[changelog] +header = """ +# Changelog + +""" +body = """ +{% if version %}\ + ## {{ version | trim_start_matches(pat="v") }} - {{ timestamp | date(format="%Y-%m-%d") }}\ +{% else %}\ + ## Unreleased\ +{% endif %}\ +{% for group, commits in commits | group_by(attribute="group") %} + + ### {{ group | upper_first }} + {% for commit in commits %} + {% set_global issues = [] %}\ + {% if commit.remote.pr_number %}\ + {% set_global issues = issues | concat(with=commit.remote.pr_number) %}\ + {%- endif %}\ + {% for link in commit.links %}\ + {% set_global issues = issues | concat(with=link.text | split(pat="#") | last) %}\ + {%- endfor -%}\ + {% if commit.remote.pr_title -%}\ + {%- set commit_message = commit.remote.pr_title -%}\ + {%- else -%}\ + {%- set commit_message = commit.message -%}\ + {%- endif -%}\ + * {{ commit_message | split(pat="\n") | first | trim }}\ + {% set_global issues = issues | unique %}\ + {% if issues | length > 0 %} (\ + {% for issue in issues %}\ + [#{{ issue }}](https://github.com/REditorSupport/vscode-R/issues/{{ issue }})\ + {% if not loop.last %}, {% endif %}\ + {%- endfor -%})\ + {%- endif %}\ + {%- endfor -%}\n +{% endfor %}\ +{% if version %} + {% if previous.version %} + **Full Changelog**: https://github.com/REditorSupport/vscode-R/compare/{{ previous.version }}...{{ version }} + {% endif %} +{% else -%} + {% raw %}\n{% endraw %} +{% endif %}\ +""" +trim = true +footer = """ +See [CHANGELOG.old.md](https://github.com/REditorSupport/vscode-R/blob/master/CHANGELOG.old.md) for changes before v2.8.5. + + +""" +postprocessors = [] + +[git] +conventional_commits = false +split_commits = false +commit_parsers = [ + { message = "(?i)^feat\\b", group = "Features" }, + { message = "(?i)^fix\\b", group = "Bug Fixes" }, + { message = "(?i)^docs\\b", group = "Documentation" }, + { message = "(?i)^perf\\b", group = "Performance" }, + { message = "(?i)^refactor\\b", group = "Refactor" }, + { message = "(?i)^style\\b", group = "Styling" }, + { message = "(?i)^test\\b", group = "Testing" }, + { message = "(?i)^(chore|bump to|Merge branch)\\b", skip = true }, + { body = ".*", group = "Other" }, +] +link_parsers = [ + { pattern = "(?i)\\b(?:close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved) #(\\d+)", href = "https://github.com/REditorSupport/vscode-R/issues/$1" }, +] +filter_commits = true +topo_order = false +sort_commits = "oldest" diff --git a/package-lock.json b/package-lock.json index dc0aa964..f622c71e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,6 +44,7 @@ "copy-webpack-plugin": "^9.0.0", "eslint": "^7.28.0", "eslint-plugin-jsdoc": "^35.1.3", + "git-cliff": "^2.8.0", "mocha": "^11.1.0", "sinon": "^15.0.1", "ts-loader": "^9.3.1", @@ -2590,6 +2591,46 @@ "node": ">=0.8.x" } }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2931,6 +2972,127 @@ "node": ">= 0.4" } }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-cliff": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/git-cliff/-/git-cliff-2.8.0.tgz", + "integrity": "sha512-iKF5QTXAb9+iVvmu5HpnMPWYw7fs74xkpAaRbSf29+dZaMTTNRIUST/y+Ir2S1bDUWWJNjXlwT9ZT62JuYLQnA==", + "dev": true, + "license": "MIT OR Apache-2.0", + "dependencies": { + "execa": "^8.0.1" + }, + "bin": { + "git-cliff": "lib/cli/cli.js" + }, + "engines": { + "node": ">=18.19 || >=20.6 || >=21" + }, + "optionalDependencies": { + "git-cliff-darwin-arm64": "2.8.0", + "git-cliff-darwin-x64": "2.8.0", + "git-cliff-linux-arm64": "2.8.0", + "git-cliff-linux-x64": "2.8.0", + "git-cliff-windows-arm64": "2.8.0", + "git-cliff-windows-x64": "2.8.0" + } + }, + "node_modules/git-cliff-darwin-arm64": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/git-cliff-darwin-arm64/-/git-cliff-darwin-arm64-2.8.0.tgz", + "integrity": "sha512-rurUV2d1Z2n+c2+wUrO0gZaFb3c1G+ej0bPfKTPfde/CblxiysMkh+4dz23NrVbc8IlS5rSYv/JFGVaVSBNJRw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/git-cliff-darwin-x64": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/git-cliff-darwin-x64/-/git-cliff-darwin-x64-2.8.0.tgz", + "integrity": "sha512-Wtj+FGWZBWmeYUAGlkfz7QPz4+VVxxDPMhQ/7iwKVA3iryIX0slGfzYpqMurEFnTAMr0r+4IU3Q4O/ib7iUscg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/git-cliff-linux-arm64": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/git-cliff-linux-arm64/-/git-cliff-linux-arm64-2.8.0.tgz", + "integrity": "sha512-k4RdfMdORXyefznWlQb+7wDgo7XgQF9qg8hJC34bwyJK2sODirrGau3uTx1/9Fi37g+pAOM7wM+LYppHCTZ2bQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/git-cliff-linux-x64": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/git-cliff-linux-x64/-/git-cliff-linux-x64-2.8.0.tgz", + "integrity": "sha512-FcWX4GHgodYrQlZR03fzooanStgR03JNWvyaMQB1asplQ18nlziK2UyA+PESCIxOQmeLXauqoCApfzmdtp5myg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/git-cliff-windows-arm64": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/git-cliff-windows-arm64/-/git-cliff-windows-arm64-2.8.0.tgz", + "integrity": "sha512-GJSrqmBVTbMtBJI3/YCDxLviZZDgYgnKqYgquBk2u2AELAnnuWFnVFQ7ZEBUqgFF2UJu9EdV2Nv6MV8d/wnP0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/git-cliff-windows-x64": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/git-cliff-windows-x64/-/git-cliff-windows-x64-2.8.0.tgz", + "integrity": "sha512-8jl0YMXPYjUmVygUEeQ4wf1zte3Rv8LPq1sIklUKl80XE4g2Gm/8EIWbKpUPLQH6IncRwepY6VuMgpVpPXbwNw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -3190,6 +3352,16 @@ "node": ">= 14" } }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -3417,6 +3589,19 @@ "node": ">=0.10.0" } }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -3815,6 +4000,19 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/mimic-function": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", @@ -4051,6 +4249,35 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -5134,6 +5361,19 @@ "node": ">=8" } }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", diff --git a/package.json b/package.json index 2ec2f28b..840963d4 100644 --- a/package.json +++ b/package.json @@ -1984,6 +1984,7 @@ }, "scripts": { "vscode:prepublish": "tsc -p ./html/help && tsc -p ./html/httpgd && webpack --mode production", + "changelog": "npx git-cliff v2.8.5.. -o", "build": "tsc -p ./html/help && tsc -p ./html/httpgd && webpack --mode none", "watch": "webpack --mode none --watch", "watchHelp": "tsc -p ./html/help --watch", @@ -2012,6 +2013,7 @@ "copy-webpack-plugin": "^9.0.0", "eslint": "^7.28.0", "eslint-plugin-jsdoc": "^35.1.3", + "git-cliff": "^2.8.0", "mocha": "^11.1.0", "sinon": "^15.0.1", "ts-loader": "^9.3.1", From 61088253ee8adf32933590cd436e2bb93c6f3597 Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Fri, 30 May 2025 21:19:23 -0700 Subject: [PATCH 14/74] chore: fix markdownlint --- CHANGELOG.md | 2 +- cliff.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f28ffef..1d918c0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ * refactor: restructure files ([#1613](https://github.com/REditorSupport/vscode-R/issues/1613)) -**Full Changelog**: https://github.com/REditorSupport/vscode-R/compare/v2.8.5...v2.8.6 +**Full Changelog**: See [CHANGELOG.old.md](https://github.com/REditorSupport/vscode-R/blob/master/CHANGELOG.old.md) for changes before v2.8.5. diff --git a/cliff.toml b/cliff.toml index f32dc319..b14aae69 100644 --- a/cliff.toml +++ b/cliff.toml @@ -41,7 +41,7 @@ body = """ {% endfor %}\ {% if version %} {% if previous.version %} - **Full Changelog**: https://github.com/REditorSupport/vscode-R/compare/{{ previous.version }}...{{ version }} + **Full Changelog**: {% endif %} {% else -%} {% raw %}\n{% endraw %} From 79b70d9f4fc175ac8404b05c66c4c1a42939ba26 Mon Sep 17 00:00:00 2001 From: Mysterious Heroine X <50296128+heroine-x@users.noreply.github.com> Date: Mon, 9 Feb 2026 11:21:12 +0800 Subject: [PATCH 15/74] Allow bracketedPaste on win32 platform (#1631) --- src/rTerminal.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/rTerminal.ts b/src/rTerminal.ts index e527066a..53ef0f62 100644 --- a/src/rTerminal.ts +++ b/src/rTerminal.ts @@ -271,10 +271,8 @@ export async function runTextInTerm(text: string, execute: boolean = true): Prom return; } if (config().get('bracketedPaste')) { - if (process.platform !== 'win32') { - // Surround with ANSI control characters for bracketed paste mode - text = `\x1b[200~${text}\x1b[201~`; - } + // Surround with ANSI control characters for bracketed paste mode + text = `\x1b[200~${text}\x1b[201~`; term.sendText(text, execute); } else { const rtermSendDelay: number = config().get('rtermSendDelay') || 8; From e3136c09f17d17e3821a93ba9367065c919513ce Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Mon, 9 Mar 2026 13:14:52 -0700 Subject: [PATCH 16/74] feat: support multi-root workspaces in single-server mode - Enable multi-root support when lsp.multiServer is disabled - Make lsp.multiServer accept 'auto', true, or false, defaulting to 'auto' - 'auto' uses single server mode for languageserver > 0.3.17, and multi-server otherwise - Refactor LanguageService to simplify client management - Fix bug where multiServer setting was read incorrectly - Fix bug where checkClient caused deadlocks on running servers - Introduce compareVersions utility to avoid external dependency --- package.json | 7 ++- src/languageService.ts | 123 +++++++++++++++++++++++------------------ src/util.ts | 22 ++++++++ 3 files changed, 95 insertions(+), 57 deletions(-) diff --git a/package.json b/package.json index 840963d4..aeef9f05 100644 --- a/package.json +++ b/package.json @@ -1388,9 +1388,10 @@ "description": "Use STDIO connection instead of TCP. (Unix/macOS users only)" }, "r.lsp.multiServer": { - "type": "boolean", - "default": true, - "markdownDescription": "Use multiple language servers for [multi-root workspaces](https://code.visualstudio.com/docs/editor/multi-root-workspaces). If disabled, only one language server will be used to handle all requests from all workspaces and files." + "type": ["string", "boolean"], + "enum": ["auto", true, false], + "default": "auto", + "markdownDescription": "Use multiple language servers for [multi-root workspaces](https://code.visualstudio.com/docs/editor/multi-root-workspaces). When set to `auto`, it will use a single server if the R `languageserver` package version is > 0.3.17, and multiple servers otherwise. Disabling this (or using `auto` with a recent version) is recommended for better performance." }, "r.rmarkdown.codeLensCommands": { "type": "array", diff --git a/src/languageService.ts b/src/languageService.ts index 02c45e2c..43b14e72 100644 --- a/src/languageService.ts +++ b/src/languageService.ts @@ -4,12 +4,11 @@ import * as net from 'net'; import { URL } from 'url'; import { LanguageClient, LanguageClientOptions, StreamInfo, DocumentFilter, ErrorAction, CloseAction, RevealOutputChannelOn } from 'vscode-languageclient/node'; import { Disposable, workspace, Uri, TextDocument, WorkspaceConfiguration, OutputChannel, window, WorkspaceFolder } from 'vscode'; -import { DisposableProcess, getRLibPaths, getRpath, promptToInstallRPackage, spawn, substituteVariables } from './util'; +import { DisposableProcess, getRLibPaths, getRpath, promptToInstallRPackage, spawn, substituteVariables, getRPackageVersion, compareVersions } from './util'; import { extensionContext } from './extension'; import { CommonOptions } from 'child_process'; export class LanguageService implements Disposable { - private client: LanguageClient | undefined; private readonly clients: Map = new Map(); private readonly initSet: Set = new Set(); private readonly config: WorkspaceConfiguration; @@ -17,9 +16,8 @@ export class LanguageService implements Disposable { constructor() { this.outputChannel = window.createOutputChannel('R Language Server'); - this.client = undefined; this.config = workspace.getConfiguration('r'); - void this.startLanguageService(this); + void this.startLanguageService(); } dispose(): Thenable { @@ -53,24 +51,24 @@ export class LanguageService implements Disposable { return childProcess; } - private async createClient(config: WorkspaceConfiguration, selector: DocumentFilter[], + private async createClient(selector: DocumentFilter[], cwd: string, workspaceFolder: WorkspaceFolder | undefined, outputChannel: OutputChannel): Promise { let client: LanguageClient; - const debug = config.get('lsp.debug'); - const useRenvLibPath = config.get('useRenvLibPath') ?? false; + const debug = this.config.get('lsp.debug'); + const useRenvLibPath = this.config.get('useRenvLibPath') ?? false; const rPath = await getRpath() || ''; // TODO: Abort gracefully if (debug) { console.log(`R path: ${rPath}`); } - const use_stdio = config.get('lsp.use_stdio'); + const use_stdio = this.config.get('lsp.use_stdio'); const env = Object.create(process.env) as NodeJS.ProcessEnv; env.VSCR_LSP_DEBUG = debug ? 'TRUE' : 'FALSE'; env.VSCR_LIB_PATHS = getRLibPaths(); env.VSCR_USE_RENV_LIB_PATH = useRenvLibPath ? 'TRUE' : 'FALSE'; - const lang = config.get('lsp.lang'); + const lang = this.config.get('lsp.lang'); if (lang !== '') { env.LANG = lang; } else if (env.LANG === undefined) { @@ -84,7 +82,7 @@ export class LanguageService implements Disposable { const rScriptPath = extensionContext.asAbsolutePath('R/languageServer.R'); const options = { cwd: cwd, env: env }; - const args = (config.get('lsp.args')?.map(substituteVariables) ?? []).concat( + const args = (this.config.get('lsp.args')?.map(substituteVariables) ?? []).concat( '--silent', '--no-echo', '--no-save', @@ -167,9 +165,12 @@ export class LanguageService implements Disposable { if (this.initSet.has(name)) { return true; } - this.initSet.add(name); const client = this.clients.get(name); - return (!!client) && client.needsStop(); + if (client && client.needsStop()) { + return true; + } + this.initSet.add(name); + return false; } private getKey(uri: Uri): string { @@ -183,8 +184,8 @@ export class LanguageService implements Disposable { } } - private startMultiLanguageService(self: LanguageService): void { - async function didOpenTextDocument(document: TextDocument) { + private startMultiLanguageService(): void { + const didOpenTextDocument = async (document: TextDocument) => { if (document.uri.scheme !== 'file' && document.uri.scheme !== 'untitled' && document.uri.scheme !== 'vscode-notebook-cell') { return; } @@ -197,16 +198,16 @@ export class LanguageService implements Disposable { // Each notebook uses a server started from parent folder if (document.uri.scheme === 'vscode-notebook-cell') { - const key = self.getKey(document.uri); - if (!self.checkClient(key)) { + const key = this.getKey(document.uri); + if (!this.checkClient(key)) { console.log(`Start language server for ${document.uri.toString(true)}`); const documentSelector: DocumentFilter[] = [ { scheme: 'vscode-notebook-cell', language: 'r', pattern: `${document.uri.fsPath}` }, ]; - const client = await self.createClient(self.config, documentSelector, - dirname(document.uri.fsPath), folder, self.outputChannel); - self.clients.set(key, client); - self.initSet.delete(key); + const client = await this.createClient(documentSelector, + dirname(document.uri.fsPath), folder, this.outputChannel); + this.clients.set(key, client); + this.initSet.delete(key); } return; } @@ -214,56 +215,56 @@ export class LanguageService implements Disposable { if (folder) { // Each workspace uses a server started from the workspace folder - const key = self.getKey(folder.uri); - if (!self.checkClient(key)) { + const key = this.getKey(folder.uri); + if (!this.checkClient(key)) { console.log(`Start language server for ${document.uri.toString(true)}`); const pattern = `${folder.uri.fsPath}/**/*`; const documentSelector: DocumentFilter[] = [ { scheme: 'file', language: 'r', pattern: pattern }, { scheme: 'file', language: 'rmd', pattern: pattern }, ]; - const client = await self.createClient(self.config, documentSelector, folder.uri.fsPath, folder, self.outputChannel); - self.clients.set(key, client); - self.initSet.delete(key); + const client = await this.createClient(documentSelector, folder.uri.fsPath, folder, this.outputChannel); + this.clients.set(key, client); + this.initSet.delete(key); } } else { // All untitled documents share a server started from home folder if (document.uri.scheme === 'untitled') { - const key = self.getKey(document.uri); - if (!self.checkClient(key)) { + const key = this.getKey(document.uri); + if (!this.checkClient(key)) { console.log(`Start language server for ${document.uri.toString(true)}`); const documentSelector: DocumentFilter[] = [ { scheme: 'untitled', language: 'r' }, { scheme: 'untitled', language: 'rmd' }, ]; - const client = await self.createClient(self.config, documentSelector, os.homedir(), undefined, self.outputChannel); - self.clients.set(key, client); - self.initSet.delete(key); + const client = await this.createClient(documentSelector, os.homedir(), undefined, this.outputChannel); + this.clients.set(key, client); + this.initSet.delete(key); } return; } // Each file outside workspace uses a server started from parent folder if (document.uri.scheme === 'file') { - const key = self.getKey(document.uri); - if (!self.checkClient(key)) { + const key = this.getKey(document.uri); + if (!this.checkClient(key)) { console.log(`Start language server for ${document.uri.toString(true)}`); const documentSelector: DocumentFilter[] = [ { scheme: 'file', pattern: document.uri.fsPath }, ]; - const client = await self.createClient(self.config, documentSelector, - dirname(document.uri.fsPath), undefined, self.outputChannel); - self.clients.set(key, client); - self.initSet.delete(key); + const client = await this.createClient(documentSelector, + dirname(document.uri.fsPath), undefined, this.outputChannel); + this.clients.set(key, client); + this.initSet.delete(key); } return; } } - } + }; - function didCloseTextDocument(document: TextDocument): void { + const didCloseTextDocument = (document: TextDocument): void => { if (document.uri.scheme === 'untitled') { const result = workspace.textDocuments.find((doc) => doc.uri.scheme === 'untitled'); if (result) { @@ -282,34 +283,50 @@ export class LanguageService implements Disposable { } // Stop the language server when single file outside workspace is closed, or the above cases. - const key = self.getKey(document.uri); - const client = self.clients.get(key); + const key = this.getKey(document.uri); + const client = this.clients.get(key); if (client) { - self.clients.delete(key); - self.initSet.delete(key); + this.clients.delete(key); + this.initSet.delete(key); void client.stop(); } - } + }; workspace.onDidOpenTextDocument(didOpenTextDocument); workspace.onDidCloseTextDocument(didCloseTextDocument); workspace.textDocuments.forEach((doc) => void didOpenTextDocument(doc)); workspace.onDidChangeWorkspaceFolders((event) => { for (const folder of event.removed) { - const key = self.getKey(folder.uri); - const client = self.clients.get(key); + const key = this.getKey(folder.uri); + const client = this.clients.get(key); if (client) { - self.clients.delete(key); - self.initSet.delete(key); + this.clients.delete(key); + this.initSet.delete(key); void client.stop(); } } }); } - private async startLanguageService(self: LanguageService): Promise { - if (self.config.get('r.lsp.multiServer')) { - return this.startMultiLanguageService(self); + private async startLanguageService(): Promise { + let useMultiServer = false; + const multiServerConfig = this.config.get('lsp.multiServer'); + + if (multiServerConfig === 'auto') { + const version = await getRPackageVersion('languageserver'); + if (version && compareVersions(version, '0.3.17') <= 0) { + console.log(`languageserver version is ${version}, using multi-server.`); + useMultiServer = true; + } else { + console.log(`languageserver version is ${version || 'unknown'}, using single-server.`); + useMultiServer = false; + } + } else if (multiServerConfig === true || multiServerConfig === 'true') { + useMultiServer = true; + } + + if (useMultiServer) { + this.startMultiLanguageService(); } else { const documentSelector: DocumentFilter[] = [ { language: 'r' }, @@ -318,15 +335,13 @@ export class LanguageService implements Disposable { const workspaceFolder = workspace.workspaceFolders?.[0]; const cwd = workspaceFolder ? workspaceFolder.uri.fsPath : os.homedir(); - self.client = await self.createClient(self.config, documentSelector, cwd, workspaceFolder, self.outputChannel); + const client = await this.createClient(documentSelector, cwd, undefined, this.outputChannel); + this.clients.set('global', client); } } private stopLanguageService(): Thenable { const promises: Thenable[] = []; - if (this.client) { - promises.push(this.client.stop()); - } for (const client of this.clients.values()) { promises.push(client.stop()); } diff --git a/src/util.ts b/src/util.ts index b4e280af..1f1ef86b 100644 --- a/src/util.ts +++ b/src/util.ts @@ -328,6 +328,28 @@ export async function getCranUrl(path: string = '', cwd?: string | URL): Promise return url; } +export async function getRVersion(cwd?: string | URL): Promise { + return await executeRCommand('cat(as.character(getRversion()))', cwd); +} + +export async function getRPackageVersion(name: string, cwd?: string | URL): Promise { + const result = await executeRCommand(`cat(if (requireNamespace('${name}', quietly = TRUE)) as.character(utils::packageVersion('${name}')) else '')`, cwd); + return result || undefined; +} + +export function compareVersions(v1: string, v2: string): number { + const parts1 = v1.split('.').map(Number); + const parts2 = v2.split('.').map(Number); + const len = Math.max(parts1.length, parts2.length); + for (let i = 0; i < len; i++) { + const num1 = parts1[i] || 0; + const num2 = parts2[i] || 0; + if (num1 > num2) return 1; + if (num1 < num2) return -1; + } + return 0; +} + export function getRLibPaths(): string | undefined { return config().get('libPaths')?.map(substituteVariables).join('\n'); } From 8695878e4966f02db8b0cdfe19a8dc313d88c1dd Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Mon, 9 Mar 2026 13:14:53 -0700 Subject: [PATCH 17/74] fix: correct r.term and r.path setting names in error message The error message incorrectly referred to r.term and r.path instead of r.rterm and r.rpath. --- src/rTerminal.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rTerminal.ts b/src/rTerminal.ts index 53ef0f62..a71ee7e5 100644 --- a/src/rTerminal.ts +++ b/src/rTerminal.ts @@ -141,7 +141,7 @@ export async function createRTerm(preserveshow?: boolean): Promise { const termOptions = await makeTerminalOptions(); const termPath = termOptions.shellPath; if(!termPath){ - void vscode.window.showErrorMessage('Could not find R path. Please check r.term and r.path setting.'); + void vscode.window.showErrorMessage('Could not find R path. Please check r.rterm and r.rpath setting.'); return false; } else if(!fs.existsSync(termPath)){ void vscode.window.showErrorMessage(`Cannot find R client at ${termPath}. Please check r.rterm setting.`); From 1c46518548d48a225bd0d1f1f15dc9817d0ff060 Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Mon, 9 Mar 2026 14:37:25 -0700 Subject: [PATCH 18/74] build: migrate from webpack to esbuild - Replace webpack with esbuild for significantly faster build times - Update tsconfig.json to target ES2022 - Fix class field initializers by explicitly using `declare` to adhere to ES2022 standards - Remove obsolete webpack configuration and custom GitHub Actions scripts - Update GitHub workflows to use standard npm install without webpack hooks --- .github/scripts/enableWebpack.js | 19 - .github/scripts/enableWebpack.ts | 29 - .github/workflows/main.yml | 1 - .github/workflows/pre-release.yml | 1 - .github/workflows/release.yml | 2 - .vscodeignore | 8 +- esbuild.js | 61 + package-lock.json | 1849 ++++++++--------------------- package.json | 24 +- src/helpViewer/cran.ts | 2 +- src/helpViewer/treeView.ts | 8 +- src/liveShare/shareTree.ts | 26 +- src/util.ts | 4 +- src/workspaceViewer.ts | 4 +- tsconfig.json | 8 +- webpack.config.js | 54 - 16 files changed, 597 insertions(+), 1503 deletions(-) delete mode 100644 .github/scripts/enableWebpack.js delete mode 100644 .github/scripts/enableWebpack.ts create mode 100644 esbuild.js delete mode 100644 webpack.config.js diff --git a/.github/scripts/enableWebpack.js b/.github/scripts/enableWebpack.js deleted file mode 100644 index f1c2dfb1..00000000 --- a/.github/scripts/enableWebpack.js +++ /dev/null @@ -1,19 +0,0 @@ -"use strict"; -exports.__esModule = true; -var fs = require("fs"); -// adjust .vscodeignore -var fileVscodeignore = './.vscodeignore'; -var vscodeignore = fs.readFileSync(fileVscodeignore, 'utf-8'); -vscodeignore = vscodeignore.replace(/^#(.*)#\s*withWebpack\s*$/gm, '$1'); -vscodeignore = vscodeignore.replace(/^\s*#\s*withoutWebpack(?:.|\r|\n)*?^\s*#\s*\/withoutWebpack/gm, ''); -fs.writeFileSync(fileVscodeignore, vscodeignore); -// adjust package.json -var filePkgJson = './package.json'; -var pkgJson = JSON.parse(fs.readFileSync(filePkgJson, 'utf-8')); -if ('withWebpack' in pkgJson) { - for (var k in pkgJson.withWebpack) { - pkgJson[k] = pkgJson.withWebpack[k]; - } - pkgJson.withWebpack = undefined; -} -fs.writeFileSync(filePkgJson, JSON.stringify(pkgJson, undefined, 2)); diff --git a/.github/scripts/enableWebpack.ts b/.github/scripts/enableWebpack.ts deleted file mode 100644 index 7a422549..00000000 --- a/.github/scripts/enableWebpack.ts +++ /dev/null @@ -1,29 +0,0 @@ - -import * as fs from 'fs'; - -// adjust .vscodeignore -const fileVscodeignore = './.vscodeignore'; - -let vscodeignore = fs.readFileSync(fileVscodeignore, 'utf-8'); -vscodeignore = vscodeignore.replace(/^#(.*)#\s*withWebpack\s*$/gm, '$1'); -vscodeignore = vscodeignore.replace(/^\s*#\s*withoutWebpack(?:.|\r|\n)*?^\s*#\s*\/withoutWebpack/gm, ''); -fs.writeFileSync(fileVscodeignore, vscodeignore); - - -// adjust package.json -const filePkgJson = './package.json'; -interface PkgJson { - withWebpack?: { - [k: string]: any; - } - [k: string]: any; -} - -const pkgJson = JSON.parse(fs.readFileSync(filePkgJson, 'utf-8')) as PkgJson; -if('withWebpack' in pkgJson){ - for(const k in pkgJson.withWebpack){ - pkgJson[k] = pkgJson.withWebpack[k]; - } - pkgJson.withWebpack = undefined; -} -fs.writeFileSync(filePkgJson, JSON.stringify(pkgJson, undefined, 2)); diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index cb26609e..d839a023 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -25,7 +25,6 @@ jobs: VSIX_FILE: vscode-R.vsix steps: - uses: actions/checkout@v3 - - run: node $SCRIPT_DIR/enableWebpack.js - run: npm install - uses: lannonbr/vsce-action@4.0.0 with: diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index dd090eac..9e02c323 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -15,7 +15,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - run: node $SCRIPT_DIR/enableWebpack.js - run: npm install - uses: lannonbr/vsce-action@4.0.0 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ed53ffa0..9ff5de96 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - run: node $SCRIPT_DIR/enableWebpack.js - run: npm install - uses: lannonbr/vsce-action@4.0.0 with: @@ -56,7 +55,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - run: node $SCRIPT_DIR/enableWebpack.js - run: npm install - name: Publish to Open VSX Registry uses: HaaLeo/publish-vscode-extension@v1 diff --git a/.vscodeignore b/.vscodeignore index 6dc2550d..471c3f97 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -14,10 +14,8 @@ src/** test/** **/tsconfig.json vsc-extension-quickstart.md -webpack.config.js +esbuild.js .markdownlint.json .eslintignore - - node_modules - out/ - +node_modules +out/ diff --git a/esbuild.js b/esbuild.js new file mode 100644 index 00000000..b505d1d7 --- /dev/null +++ b/esbuild.js @@ -0,0 +1,61 @@ +const esbuild = require('esbuild'); +const fs = require('fs'); +const path = require('path'); + +const production = process.argv.includes('--production'); +const watch = process.argv.includes('--watch'); + +function copyResources() { + const destDir = path.join(__dirname, 'dist', 'resources'); + fs.mkdirSync(destDir, { recursive: true }); + + const resources = [ + './node_modules/jquery/dist/jquery.min.js', + './node_modules/jquery.json-viewer/json-viewer', + './node_modules/ag-grid-community/dist/ag-grid-community.min.noStyle.js', + './node_modules/ag-grid-community/styles/ag-grid.min.css', + './node_modules/ag-grid-community/styles/ag-theme-balham.min.css' + ]; + + for (const res of resources) { + const srcPath = path.resolve(__dirname, res); + const destName = path.basename(srcPath); + const destPath = path.resolve(destDir, destName); + if (fs.existsSync(srcPath)) { + fs.cpSync(srcPath, destPath, { recursive: true }); + } else { + console.warn(`Warning: Resource not found: ${srcPath}`); + } + } + console.log('Resources copied.'); +} + +async function main() { + copyResources(); + + const ctx = await esbuild.context({ + entryPoints: ['./src/extension.ts'], + bundle: true, + format: 'cjs', + minify: production, + sourcemap: !production, + sourcesContent: false, + platform: 'node', + outfile: 'dist/extension.js', + external: ['vscode', 'utf-8-validate', 'bufferutil'], + logLevel: 'info', + }); + + if (watch) { + await ctx.watch(); + console.log('Watching for changes...'); + } else { + await ctx.rebuild(); + await ctx.dispose(); + } +} + +main().catch(e => { + console.error(e); + process.exit(1); +}); diff --git a/package-lock.json b/package-lock.json index f622c71e..7b88816f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,16 +41,13 @@ "@typescript-eslint/eslint-plugin": "^5.30.0", "@typescript-eslint/parser": "^5.30.0", "@vscode/test-electron": "^2.2.3", - "copy-webpack-plugin": "^9.0.0", + "esbuild": "^0.27.3", "eslint": "^7.28.0", "eslint-plugin-jsdoc": "^35.1.3", "git-cliff": "^2.8.0", "mocha": "^11.1.0", "sinon": "^15.0.1", - "ts-loader": "^9.3.1", - "typescript": "^4.7.2", - "webpack": "^5.99.6", - "webpack-cli": "^4.10.0" + "typescript": "^4.7.2" }, "engines": { "vscode": "^1.75.0" @@ -160,16 +157,6 @@ "node": ">=4" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/@es-joy/jsdoccomment": { "version": "0.9.0-alpha.1", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.9.0-alpha.1.tgz", @@ -195,6 +182,448 @@ "node": ">=12.0.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz", @@ -344,74 +773,10 @@ "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/@microsoft/servicehub-framework": { @@ -572,35 +937,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/express": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", @@ -1018,220 +1354,6 @@ "node": ">=16" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", - "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", - "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", - "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -1288,58 +1410,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -1489,46 +1559,6 @@ "dev": true, "license": "ISC" }, - "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -1572,27 +1602,6 @@ "integrity": "sha512-uF4sHE5uh2VdEZtIRJKGoXAD9jm7bFY0tDRCzH4iLp262TOJ2lrtNHjMG2zc8H+GICOpELIpM7CGW5JeWnb3Hg==", "license": "MIT" }, - "node_modules/caniuse-lite": { - "version": "1.0.30001715", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz", - "integrity": "sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, "node_modules/caught": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/caught/-/caught-0.1.3.tgz", @@ -1691,16 +1700,6 @@ "node": ">= 6" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, "node_modules/cli-cursor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", @@ -1785,21 +1784,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1818,13 +1802,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1854,31 +1831,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "license": "MIT" }, - "node_modules/copy-webpack-plugin": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", - "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "^3.2.7", - "glob-parent": "^6.0.1", - "globby": "^11.0.3", - "normalize-path": "^3.0.0", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -2121,13 +2073,6 @@ "node": ">=0.10.0" } }, - "node_modules/electron-to-chromium": { - "version": "1.5.139", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.139.tgz", - "integrity": "sha512-GGnRYOTdN5LYpwbIr0rwP/ZHOQSvAF6TG0LSzp28uCBb9JiXHJGmaaKw29qjNJc5bGnnp6kXJqRnGMQoELwi5w==", - "dev": true, - "license": "ISC" - }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -2135,20 +2080,6 @@ "dev": true, "license": "MIT" }, - "node_modules/enhanced-resolve": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/enquirer": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", @@ -2175,19 +2106,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/envinfo": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", - "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", - "dev": true, - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -2208,13 +2126,6 @@ "node": ">= 0.4" } }, - "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", - "dev": true, - "license": "MIT" - }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -2241,7 +2152,49 @@ "hasown": "^2.0.2" }, "engines": { - "node": ">= 0.4" + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" } }, "node_modules/escalade": { @@ -2581,16 +2534,6 @@ "integrity": "sha512-8qz9nOz5VeD2z96elrEKD2U433+L3DWdUdDkOINLGOJvx1GsMBbMn0aCeu28y8/e85A6mCigBiFlYMnTBEGlSw==", "license": "MIT" }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/execa": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", @@ -2699,16 +2642,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", @@ -3114,26 +3047,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -3416,26 +3329,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3471,16 +3364,6 @@ "integrity": "sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==", "license": "MIT" }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -3494,22 +3377,6 @@ "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3576,19 +3443,6 @@ "node": ">=8" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", @@ -3628,16 +3482,6 @@ "dev": true, "license": "ISC" }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/isomorphic-ws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", @@ -3681,37 +3525,6 @@ "node": ">=10" } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/jquery": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", @@ -3760,13 +3573,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3823,16 +3629,6 @@ "json-buffer": "3.0.1" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3857,16 +3653,6 @@ "immediate": "~3.0.5" } }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -4169,13 +3955,6 @@ "dev": true, "license": "MIT" }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, "node_modules/nerdbank-streams": { "version": "2.5.60", "resolved": "https://registry.npmjs.org/nerdbank-streams/-/nerdbank-streams-2.5.60.tgz", @@ -4232,13 +4011,6 @@ } } }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true, - "license": "MIT" - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -4500,16 +4272,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -4592,13 +4354,6 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", @@ -4653,75 +4408,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -4819,19 +4505,6 @@ "node": ">=8.10.0" } }, - "node_modules/rechoir": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", - "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -4875,50 +4548,6 @@ "node": ">=0.10.0" } }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -5027,25 +4656,6 @@ "dev": true, "license": "MIT" }, - "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", @@ -5075,19 +4685,6 @@ "dev": true, "license": "MIT" }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -5167,40 +4764,9 @@ }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, "node_modules/spdx-exceptions": { @@ -5399,19 +4965,6 @@ "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/table": { "version": "6.9.0", "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", @@ -5475,147 +5028,6 @@ "node": ">=8" } }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.39.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", - "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", - "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser/node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -5642,27 +5054,6 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, - "node_modules/ts-loader": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz", - "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", @@ -5751,37 +5142,6 @@ "node": ">= 10.0.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -5875,226 +5235,12 @@ "@microsoft/servicehub-framework": "^2.6.74" } }, - "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "license": "BSD-2-Clause" }, - "node_modules/webpack": { - "version": "5.99.6", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.6.tgz", - "integrity": "sha512-TJOLrJ6oeccsGWPl7ujCYuc0pIq2cNsuD6GZDma8i5o5Npvcco/z+NKvZSFsP0/x6SShVb0+X2JK/JHUjKY9dQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", - "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.2.0", - "@webpack-cli/info": "^1.5.0", - "@webpack-cli/serve": "^1.7.0", - "colorette": "^2.0.14", - "commander": "^7.0.0", - "cross-spawn": "^7.0.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", - "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -6121,13 +5267,6 @@ "node": ">= 8" } }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true, - "license": "MIT" - }, "node_modules/winreg": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.5.tgz", diff --git a/package.json b/package.json index aeef9f05..fa2f24f3 100644 --- a/package.json +++ b/package.json @@ -1388,8 +1388,15 @@ "description": "Use STDIO connection instead of TCP. (Unix/macOS users only)" }, "r.lsp.multiServer": { - "type": ["string", "boolean"], - "enum": ["auto", true, false], + "type": [ + "string", + "boolean" + ], + "enum": [ + "auto", + true, + false + ], "default": "auto", "markdownDescription": "Use multiple language servers for [multi-root workspaces](https://code.visualstudio.com/docs/editor/multi-root-workspaces). When set to `auto`, it will use a single server if the R `languageserver` package version is > 0.3.17, and multiple servers otherwise. Disabling this (or using `auto` with a recent version) is recommended for better performance." }, @@ -1984,10 +1991,10 @@ ] }, "scripts": { - "vscode:prepublish": "tsc -p ./html/help && tsc -p ./html/httpgd && webpack --mode production", + "vscode:prepublish": "tsc -p ./html/help && tsc -p ./html/httpgd && node esbuild.js --production", "changelog": "npx git-cliff v2.8.5.. -o", - "build": "tsc -p ./html/help && tsc -p ./html/httpgd && webpack --mode none", - "watch": "webpack --mode none --watch", + "build": "tsc -p ./html/help && tsc -p ./html/httpgd && node esbuild.js", + "watch": "node esbuild.js --watch", "watchHelp": "tsc -p ./html/help --watch", "watchHttpgd": "tsc -p ./html/httpgd --watch", "pretest": "tsc -p ./", @@ -2011,16 +2018,13 @@ "@typescript-eslint/eslint-plugin": "^5.30.0", "@typescript-eslint/parser": "^5.30.0", "@vscode/test-electron": "^2.2.3", - "copy-webpack-plugin": "^9.0.0", + "esbuild": "^0.27.3", "eslint": "^7.28.0", "eslint-plugin-jsdoc": "^35.1.3", "git-cliff": "^2.8.0", "mocha": "^11.1.0", "sinon": "^15.0.1", - "ts-loader": "^9.3.1", - "typescript": "^4.7.2", - "webpack": "^5.99.6", - "webpack-cli": "^4.10.0" + "typescript": "^4.7.2" }, "dependencies": { "ag-grid-community": "^31.3.2", diff --git a/src/helpViewer/cran.ts b/src/helpViewer/cran.ts index 4050cf24..ec6c1237 100644 --- a/src/helpViewer/cran.ts +++ b/src/helpViewer/cran.ts @@ -84,7 +84,7 @@ function parseCranTable(html: string, baseUrl: string): Package[] { tables.each((tableIndex, table) => { const rows = $('tr', table); rows.each((rowIndex, row) => { - if (rowIndex === 0) return; // Skip the header row + if (rowIndex === 0) {return;} // Skip the header row const date = $(row).find('td:nth-child(1)').text().trim(); const href = $(row).find('td:nth-child(2) a').attr('href'); const url = href ? new URL(href, baseUrl).toString() : undefined; diff --git a/src/helpViewer/treeView.ts b/src/helpViewer/treeView.ts index 70e9e943..00b1f627 100644 --- a/src/helpViewer/treeView.ts +++ b/src/helpViewer/treeView.ts @@ -135,11 +135,11 @@ export class HelpViewProvider implements vscode.TreeDataProvider { // rather than modifying this class! abstract class Node extends vscode.TreeItem{ // TreeItem (defaults for this usecase) - public description?: string; + declare public description?: string; public collapsibleState: vscode.TreeItemCollapsibleState = vscode.TreeItemCollapsibleState.None; public contextValue: string = ''; - public label?: string; - public tooltip?: string; + declare public label?: string; + declare public tooltip?: string; // set to null/undefined in derived class to expand/collapse on click public command = { @@ -362,7 +362,7 @@ class PkgRootNode extends NonRootNode { public contextValue = Node.makeContextValue('QUICKPICK', 'clearCache', 'filterPackages', 'showOnlyFavorites', 'unsummarizeTopics'); // Node - public children?: PackageNode[]; + declare public children?: PackageNode[]; // quickpick public qpPrompt = 'Please select a package.'; diff --git a/src/liveShare/shareTree.ts b/src/liveShare/shareTree.ts index eede8cc6..be0941f9 100644 --- a/src/liveShare/shareTree.ts +++ b/src/liveShare/shareTree.ts @@ -64,12 +64,12 @@ export class LiveShareTreeProvider implements vscode.TreeDataProvider { // Base class for adding to abstract class Node extends vscode.TreeItem { - public label?: string; - public tooltip?: string; - public contextValue?: string; - public description?: string; - public iconPath?: vscode.ThemeIcon; - public collapsibleState?: vscode.TreeItemCollapsibleState; + declare public label?: string; + declare public tooltip?: string; + declare public contextValue?: string; + declare public description?: string; + declare public iconPath?: vscode.ThemeIcon; + declare public collapsibleState?: vscode.TreeItemCollapsibleState; constructor() { super(''); @@ -82,12 +82,12 @@ abstract class Node extends vscode.TreeItem { // If a toggle is not required, extend a different Node type. export abstract class ToggleNode extends Node { public toggle(treeProvider: LiveShareTreeProvider): void { treeProvider.refresh(); } - public label?: string; - public tooltip?: string; - public contextValue?: string; - public description?: string; - public iconPath?: vscode.ThemeIcon; - public collapsibleState?: vscode.TreeItemCollapsibleState; + declare public label?: string; + declare public tooltip?: string; + declare public contextValue?: string; + declare public description?: string; + declare public iconPath?: vscode.ThemeIcon; + declare public collapsibleState?: vscode.TreeItemCollapsibleState; constructor(bool: boolean) { super(); @@ -112,7 +112,7 @@ class ShareNode extends ToggleNode { public label: string = 'Share R Workspace'; public tooltip: string = 'Whether guests can access the current R session and its workspace'; public contextValue: string = 'shareNode'; - public description?: string; + declare public description?: string; public iconPath: vscode.ThemeIcon = new vscode.ThemeIcon('broadcast'); public collapsibleState: vscode.TreeItemCollapsibleState = vscode.TreeItemCollapsibleState.None; diff --git a/src/util.ts b/src/util.ts index 1f1ef86b..dfd9174d 100644 --- a/src/util.ts +++ b/src/util.ts @@ -344,8 +344,8 @@ export function compareVersions(v1: string, v2: string): number { for (let i = 0; i < len; i++) { const num1 = parts1[i] || 0; const num2 = parts2[i] || 0; - if (num1 > num2) return 1; - if (num1 < num2) return -1; + if (num1 > num2) {return 1;} + if (num1 < num2) {return -1;} } return 0; } diff --git a/src/workspaceViewer.ts b/src/workspaceViewer.ts index af16e407..c2d4f602 100644 --- a/src/workspaceViewer.ts +++ b/src/workspaceViewer.ts @@ -175,7 +175,7 @@ export class WorkspaceDataProvider implements TreeDataProvider { class PackageItem extends TreeItem { public static command: string = 'r.workspaceViewer.package.showQuickPick'; - public label?: string; + declare public label?: string; public name: string; public pkgNode?: PackageNode; public constructor(label: string, name: string, pkgNode?: PackageNode) { @@ -201,7 +201,7 @@ enum TreeLevel { } export class GlobalEnvItem extends TreeItem { - public label?: string; + declare public label?: string; public desc?: string; public str: string; public type: string; diff --git a/tsconfig.json b/tsconfig.json index 2134c6bf..53b31c95 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,17 +2,15 @@ { "compilerOptions": { "module": "commonjs", - "target": "ES2021", + "target": "ES2022", "outDir": "out", "lib": [ - "ES2021" + "ES2022" ], "sourceMap": true, "rootDir": "src", "strict": true, - "noImplicitAny": true, - "noImplicitThis": true, - "noFallthroughCasesInSwitch": true, + "noFallthroughCasesInSwitch": true }, "exclude": [ "html", diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index a302db17..00000000 --- a/webpack.config.js +++ /dev/null @@ -1,54 +0,0 @@ -//@ts-check - -'use strict'; - -const path = require('path'); -const CopyPlugin = require('copy-webpack-plugin'); - -module.exports = { - target: 'node', // vscode extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/ - - 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', - devtoolModuleFilenameTemplate: '../[resource-path]' - }, - devtool: 'source-map', - externals: { - 'utf-8-validate': 'commonjs utf-8-validate', - bufferutil: 'commonjs bufferutil', - 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/ - }, - 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', - } - ] - } - ] - }, - plugins: [ - // eslint-disable-next-line @typescript-eslint/no-unsafe-call - new CopyPlugin({ - patterns: [ - { from: './node_modules/jquery/dist/jquery.min.js', to: 'resources' }, - { from: './node_modules/jquery.json-viewer/json-viewer', to: 'resources' }, - { from: './node_modules/ag-grid-community/dist/ag-grid-community.min.noStyle.js', to: 'resources' }, - { from: './node_modules/ag-grid-community/styles/ag-grid.min.css', to: 'resources' }, - { from: './node_modules/ag-grid-community/styles/ag-theme-balham.min.css', to: 'resources' }, - ] - }), - ], -}; From b913519462c4d8156adc2436368b67eb92943500 Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Sat, 14 Mar 2026 19:33:04 -0700 Subject: [PATCH 19/74] chore: bump version to 2.8.7 --- .github/workflows/main.yml | 9 - CHANGELOG.md | 17 + cliff.toml | 2 +- package-lock.json | 1228 ++++++++++++++++++------------------ package.json | 4 +- 5 files changed, 641 insertions(+), 619 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d839a023..fa7dda10 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -42,15 +42,6 @@ jobs: node-version: 18 - run: npm install - run: npm run lint - markdownlint-cli: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: nosborn/github-action-markdown-cli@v1.1.1 - with: - files: . - config_file: ".markdownlint.json" - ignore_files: "node_modules/*" lint: runs-on: ubuntu-latest env: diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d918c0a..806f9ecc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## 2.8.7 - 2026-03-15 + +### Bug Fixes + +* fix: correct r.term and r.path setting names in error message + +### Features + +* feat: support multi-root workspaces in single-server mode + +### Other + +* Allow bracketedPaste on win32 platform ([#1631](https://github.com/REditorSupport/vscode-R/issues/1631)) +* feat: default to single language server for multi-root workspaces ([#1682](https://github.com/REditorSupport/vscode-R/issues/1682)) + +**Full Changelog**: + ## 2.8.6 - 2025-05-31 ### Other diff --git a/cliff.toml b/cliff.toml index b14aae69..e886c215 100644 --- a/cliff.toml +++ b/cliff.toml @@ -19,7 +19,7 @@ body = """ {% for commit in commits %} {% set_global issues = [] %}\ {% if commit.remote.pr_number %}\ - {% set_global issues = issues | concat(with=commit.remote.pr_number) %}\ + {% set_global issues = issues | concat(with=commit.remote.pr_number | as_str) %}\ {%- endif %}\ {% for link in commit.links %}\ {% set_global issues = issues | concat(with=link.text | split(pat="#") | last) %}\ diff --git a/package-lock.json b/package-lock.json index 7b88816f..5f82bb2f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "r", - "version": "2.8.6", + "version": "2.8.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "r", - "version": "2.8.6", + "version": "2.8.7", "license": "SEE LICENSE IN LICENSE", "dependencies": { "ag-grid-community": "^31.3.2", @@ -44,7 +44,7 @@ "esbuild": "^0.27.3", "eslint": "^7.28.0", "eslint-plugin-jsdoc": "^35.1.3", - "git-cliff": "^2.8.0", + "git-cliff": "^2.12.0", "mocha": "^11.1.0", "sinon": "^15.0.1", "typescript": "^4.7.2" @@ -53,10 +53,20 @@ "vscode": "^1.75.0" } }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -183,9 +193,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", - "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", + "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", "cpu": [ "ppc64" ], @@ -200,9 +210,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", - "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", + "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", "cpu": [ "arm" ], @@ -217,9 +227,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", - "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", + "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", "cpu": [ "arm64" ], @@ -234,9 +244,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", - "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", + "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", "cpu": [ "x64" ], @@ -251,9 +261,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", - "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", + "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", "cpu": [ "arm64" ], @@ -268,9 +278,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", - "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", + "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", "cpu": [ "x64" ], @@ -285,9 +295,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", - "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", + "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", "cpu": [ "arm64" ], @@ -302,9 +312,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", - "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", + "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", "cpu": [ "x64" ], @@ -319,9 +329,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", - "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", + "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", "cpu": [ "arm" ], @@ -336,9 +346,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", - "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", + "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", "cpu": [ "arm64" ], @@ -353,9 +363,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", - "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", + "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", "cpu": [ "ia32" ], @@ -370,9 +380,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", - "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", + "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", "cpu": [ "loong64" ], @@ -387,9 +397,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", - "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", + "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", "cpu": [ "mips64el" ], @@ -404,9 +414,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", - "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", + "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", "cpu": [ "ppc64" ], @@ -421,9 +431,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", - "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", + "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", "cpu": [ "riscv64" ], @@ -438,9 +448,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", - "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", + "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", "cpu": [ "s390x" ], @@ -455,9 +465,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", - "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", + "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", "cpu": [ "x64" ], @@ -472,9 +482,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", - "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", + "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", "cpu": [ "arm64" ], @@ -489,9 +499,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", - "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", + "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", "cpu": [ "x64" ], @@ -506,9 +516,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", - "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", + "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", "cpu": [ "arm64" ], @@ -523,9 +533,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", - "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", + "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", "cpu": [ "x64" ], @@ -540,9 +550,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", - "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", + "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", "cpu": [ "arm64" ], @@ -557,9 +567,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", - "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", + "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", "cpu": [ "x64" ], @@ -574,9 +584,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", - "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", + "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", "cpu": [ "arm64" ], @@ -591,9 +601,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", - "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", + "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", "cpu": [ "ia32" ], @@ -608,9 +618,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", - "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", + "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", "cpu": [ "x64" ], @@ -625,9 +635,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz", - "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -644,9 +654,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -695,9 +705,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -751,9 +761,9 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -764,13 +774,13 @@ } }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -850,6 +860,26 @@ "node": ">=14" } }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -871,14 +901,13 @@ } }, "node_modules/@sinonjs/samsam": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", - "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", + "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", - "lodash.get": "^4.4.2", "type-detect": "^4.1.0" } }, @@ -896,13 +925,14 @@ "version": "0.7.3", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", + "deprecated": "Deprecated: no longer maintained and no longer used by Sinon packages. See\n https://github.com/sinonjs/nise/issues/243 for replacement details.", "dev": true, "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "dev": true, "license": "MIT", "dependencies": { @@ -938,22 +968,22 @@ "license": "MIT" }, "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "dev": true, "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "*" + "@types/serve-static": "^1" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "version": "4.19.8", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz", + "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==", "dev": true, "license": "MIT", "dependencies": { @@ -996,9 +1026,9 @@ } }, "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", "dev": true, "license": "MIT" }, @@ -1038,29 +1068,29 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "18.19.86", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.86.tgz", - "integrity": "sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ==", + "version": "18.19.130", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", + "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz", + "integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", - "form-data": "^4.0.0" + "form-data": "^4.0.4" } }, "node_modules/@types/qs": { - "version": "6.9.18", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", - "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", "dev": true, "license": "MIT" }, @@ -1072,33 +1102,43 @@ "license": "MIT" }, "node_modules/@types/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", "dev": true, "license": "MIT" }, "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/mime": "^1", "@types/node": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", "dev": true, "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", - "@types/send": "*" + "@types/send": "<1" + } + }, + "node_modules/@types/serve-static/node_modules/@types/send": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, "node_modules/@types/sinon": { @@ -1112,16 +1152,16 @@ } }, "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", - "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-15.0.1.tgz", + "integrity": "sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==", "dev": true, "license": "MIT" }, "node_modules/@types/vscode": { - "version": "1.99.1", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.99.1.tgz", - "integrity": "sha512-cQlqxHZ040ta6ovZXnXRxs3fJiTmlurkIWOfZVcLSZPcm9J4ikFpXuB7gihofGn5ng+kDVma5EmJIclfk0trPQ==", + "version": "1.110.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.110.0.tgz", + "integrity": "sha512-AGuxUEpU4F4mfuQjxPPaQVyuOMhs+VT/xRok1jiHVBubHK7lBRvCuOMZG0LKUwxncrPorJ5qq/uil3IdZBd5lA==", "dev": true, "license": "MIT" }, @@ -1384,9 +1424,9 @@ "license": "MIT" }, "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", "engines": { @@ -1394,9 +1434,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -1434,6 +1474,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -1445,20 +1486,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -1510,19 +1537,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -1530,9 +1544,10 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -1612,6 +1627,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -1663,41 +1679,19 @@ } }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" } }, "node_modules/cli-cursor": { @@ -1788,6 +1782,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -1800,6 +1795,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/combined-stream": { @@ -1829,6 +1825,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, "license": "MIT" }, "node_modules/core-util-is": { @@ -1870,9 +1867,9 @@ "license": "ISC" }, "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", @@ -1886,9 +1883,9 @@ } }, "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", "license": "BSD-2-Clause", "engines": { "node": ">= 6" @@ -1898,9 +1895,9 @@ } }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -1946,9 +1943,9 @@ } }, "node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -2156,9 +2153,9 @@ } }, "node_modules/esbuild": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", - "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", + "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -2169,32 +2166,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.3", - "@esbuild/android-arm": "0.27.3", - "@esbuild/android-arm64": "0.27.3", - "@esbuild/android-x64": "0.27.3", - "@esbuild/darwin-arm64": "0.27.3", - "@esbuild/darwin-x64": "0.27.3", - "@esbuild/freebsd-arm64": "0.27.3", - "@esbuild/freebsd-x64": "0.27.3", - "@esbuild/linux-arm": "0.27.3", - "@esbuild/linux-arm64": "0.27.3", - "@esbuild/linux-ia32": "0.27.3", - "@esbuild/linux-loong64": "0.27.3", - "@esbuild/linux-mips64el": "0.27.3", - "@esbuild/linux-ppc64": "0.27.3", - "@esbuild/linux-riscv64": "0.27.3", - "@esbuild/linux-s390x": "0.27.3", - "@esbuild/linux-x64": "0.27.3", - "@esbuild/netbsd-arm64": "0.27.3", - "@esbuild/netbsd-x64": "0.27.3", - "@esbuild/openbsd-arm64": "0.27.3", - "@esbuild/openbsd-x64": "0.27.3", - "@esbuild/openharmony-arm64": "0.27.3", - "@esbuild/sunos-x64": "0.27.3", - "@esbuild/win32-arm64": "0.27.3", - "@esbuild/win32-ia32": "0.27.3", - "@esbuild/win32-x64": "0.27.3" + "@esbuild/aix-ppc64": "0.27.4", + "@esbuild/android-arm": "0.27.4", + "@esbuild/android-arm64": "0.27.4", + "@esbuild/android-x64": "0.27.4", + "@esbuild/darwin-arm64": "0.27.4", + "@esbuild/darwin-x64": "0.27.4", + "@esbuild/freebsd-arm64": "0.27.4", + "@esbuild/freebsd-x64": "0.27.4", + "@esbuild/linux-arm": "0.27.4", + "@esbuild/linux-arm64": "0.27.4", + "@esbuild/linux-ia32": "0.27.4", + "@esbuild/linux-loong64": "0.27.4", + "@esbuild/linux-mips64el": "0.27.4", + "@esbuild/linux-ppc64": "0.27.4", + "@esbuild/linux-riscv64": "0.27.4", + "@esbuild/linux-s390x": "0.27.4", + "@esbuild/linux-x64": "0.27.4", + "@esbuild/netbsd-arm64": "0.27.4", + "@esbuild/netbsd-x64": "0.27.4", + "@esbuild/openbsd-arm64": "0.27.4", + "@esbuild/openbsd-x64": "0.27.4", + "@esbuild/openharmony-arm64": "0.27.4", + "@esbuild/sunos-x64": "0.27.4", + "@esbuild/win32-arm64": "0.27.4", + "@esbuild/win32-ia32": "0.27.4", + "@esbuild/win32-x64": "0.27.4" } }, "node_modules/escalade": { @@ -2356,16 +2353,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, "node_modules/eslint/node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -2386,19 +2373,6 @@ "node": ">=10" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/eslint/node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -2410,9 +2384,9 @@ } }, "node_modules/eslint/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -2463,9 +2437,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2535,45 +2509,32 @@ "license": "MIT" }, "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" }, "engines": { - "node": ">=16.17" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2598,19 +2559,6 @@ "node": ">=8.6.0" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -2626,9 +2574,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, "funding": [ { @@ -2643,15 +2591,31 @@ "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -2666,27 +2630,27 @@ } }, "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", + "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } }, "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -2751,9 +2715,9 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz", + "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==", "dev": true, "license": "ISC" }, @@ -2775,15 +2739,16 @@ } }, "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -2811,21 +2776,6 @@ "dev": true, "license": "ISC" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -2854,9 +2804,9 @@ } }, "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", "dev": true, "license": "MIT", "engines": { @@ -2906,26 +2856,30 @@ } }, "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/git-cliff": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/git-cliff/-/git-cliff-2.8.0.tgz", - "integrity": "sha512-iKF5QTXAb9+iVvmu5HpnMPWYw7fs74xkpAaRbSf29+dZaMTTNRIUST/y+Ir2S1bDUWWJNjXlwT9ZT62JuYLQnA==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/git-cliff/-/git-cliff-2.12.0.tgz", + "integrity": "sha512-kjTm5439LsvMs/xRxndWBUetrA4aQfLE8DTbR/ER5H7fGn7ioeFG9YNAK1V7dpTtNi6k2uKYY4f3EvT8J1d+1Q==", "dev": true, "license": "MIT OR Apache-2.0", "dependencies": { - "execa": "^8.0.1" + "execa": "^9.6.0" }, "bin": { "git-cliff": "lib/cli/cli.js" @@ -2934,18 +2888,18 @@ "node": ">=18.19 || >=20.6 || >=21" }, "optionalDependencies": { - "git-cliff-darwin-arm64": "2.8.0", - "git-cliff-darwin-x64": "2.8.0", - "git-cliff-linux-arm64": "2.8.0", - "git-cliff-linux-x64": "2.8.0", - "git-cliff-windows-arm64": "2.8.0", - "git-cliff-windows-x64": "2.8.0" + "git-cliff-darwin-arm64": "2.12.0", + "git-cliff-darwin-x64": "2.12.0", + "git-cliff-linux-arm64": "2.12.0", + "git-cliff-linux-x64": "2.12.0", + "git-cliff-windows-arm64": "2.12.0", + "git-cliff-windows-x64": "2.12.0" } }, "node_modules/git-cliff-darwin-arm64": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/git-cliff-darwin-arm64/-/git-cliff-darwin-arm64-2.8.0.tgz", - "integrity": "sha512-rurUV2d1Z2n+c2+wUrO0gZaFb3c1G+ej0bPfKTPfde/CblxiysMkh+4dz23NrVbc8IlS5rSYv/JFGVaVSBNJRw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/git-cliff-darwin-arm64/-/git-cliff-darwin-arm64-2.12.0.tgz", + "integrity": "sha512-k3jzFDmkjc+6MjpnqvRenzMWRbZN5J+w3iQ8WNt9pSmPewNJIm92O/G6AbAxQaCbSfzQapeZ0e+5wSacVc62GA==", "cpu": [ "arm64" ], @@ -2957,9 +2911,9 @@ ] }, "node_modules/git-cliff-darwin-x64": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/git-cliff-darwin-x64/-/git-cliff-darwin-x64-2.8.0.tgz", - "integrity": "sha512-Wtj+FGWZBWmeYUAGlkfz7QPz4+VVxxDPMhQ/7iwKVA3iryIX0slGfzYpqMurEFnTAMr0r+4IU3Q4O/ib7iUscg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/git-cliff-darwin-x64/-/git-cliff-darwin-x64-2.12.0.tgz", + "integrity": "sha512-Kkoe+nfmXM/WMcZuC+OaIGA5vj847Ima6NEaaHnyb7Xsri+OAJryPXlABV7q6UeGfiiN2MlL8UsoHgnIEIQLqQ==", "cpu": [ "x64" ], @@ -2971,9 +2925,9 @@ ] }, "node_modules/git-cliff-linux-arm64": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/git-cliff-linux-arm64/-/git-cliff-linux-arm64-2.8.0.tgz", - "integrity": "sha512-k4RdfMdORXyefznWlQb+7wDgo7XgQF9qg8hJC34bwyJK2sODirrGau3uTx1/9Fi37g+pAOM7wM+LYppHCTZ2bQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/git-cliff-linux-arm64/-/git-cliff-linux-arm64-2.12.0.tgz", + "integrity": "sha512-eTp2gZjV4LmfzdlhFsYFYuWf5mojALU03X/37r3VmnpuabaijuTEQo/zm/0BKP8gPiLKLR4ofdUvE1OSisCE1A==", "cpu": [ "arm64" ], @@ -2985,9 +2939,9 @@ ] }, "node_modules/git-cliff-linux-x64": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/git-cliff-linux-x64/-/git-cliff-linux-x64-2.8.0.tgz", - "integrity": "sha512-FcWX4GHgodYrQlZR03fzooanStgR03JNWvyaMQB1asplQ18nlziK2UyA+PESCIxOQmeLXauqoCApfzmdtp5myg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/git-cliff-linux-x64/-/git-cliff-linux-x64-2.12.0.tgz", + "integrity": "sha512-abidFG6dH2N5hPUF245/kRYdwViP11Pz7ZwIW/a86CJLZ/WSE7dJt0f2cUIkxTcFSsp11OwuLc5k1hAbwmiIRw==", "cpu": [ "x64" ], @@ -2999,9 +2953,9 @@ ] }, "node_modules/git-cliff-windows-arm64": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/git-cliff-windows-arm64/-/git-cliff-windows-arm64-2.8.0.tgz", - "integrity": "sha512-GJSrqmBVTbMtBJI3/YCDxLviZZDgYgnKqYgquBk2u2AELAnnuWFnVFQ7ZEBUqgFF2UJu9EdV2Nv6MV8d/wnP0g==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/git-cliff-windows-arm64/-/git-cliff-windows-arm64-2.12.0.tgz", + "integrity": "sha512-rFuI+D/3Yq3jqafazZw5E68HsXEvcwI/B/5IPDIZD+QqZh8vETf4IXs7wVxYWWtHQJDC+G9ZrR3vE5648mdG3A==", "cpu": [ "arm64" ], @@ -3013,9 +2967,9 @@ ] }, "node_modules/git-cliff-windows-x64": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/git-cliff-windows-x64/-/git-cliff-windows-x64-2.8.0.tgz", - "integrity": "sha512-8jl0YMXPYjUmVygUEeQ4wf1zte3Rv8LPq1sIklUKl80XE4g2Gm/8EIWbKpUPLQH6IncRwepY6VuMgpVpPXbwNw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/git-cliff-windows-x64/-/git-cliff-windows-x64-2.12.0.tgz", + "integrity": "sha512-jskb3nyVGr4dekHSCDM/J6iho45t37wnmMGkPNq42kOoUp04JS96yMBrNRdXfXV9ViZsaZq3NaNu1e3QkhFlyA==", "cpu": [ "x64" ], @@ -3027,9 +2981,10 @@ ] }, "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -3047,10 +3002,23 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3058,13 +3026,13 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -3140,6 +3108,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -3266,13 +3235,13 @@ } }, "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=16.17.0" + "node": ">=18.18.0" } }, "node_modules/ieee754": { @@ -3364,19 +3333,6 @@ "integrity": "sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==", "license": "MIT" }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3433,37 +3389,50 @@ "node": ">=0.12.0" } }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3508,15 +3477,14 @@ } }, "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", "license": "Apache-2.0", "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", + "async": "^3.2.6", "filelist": "^1.0.4", - "minimatch": "^3.1.2" + "picocolors": "^1.1.1" }, "bin": { "jake": "bin/cli.js" @@ -3545,9 +3513,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -3588,9 +3556,9 @@ "license": "MIT" }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -3670,17 +3638,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "dev": true, "license": "MIT" }, @@ -3715,6 +3675,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -3732,13 +3705,6 @@ "node": ">= 0.4" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3786,19 +3752,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mimic-function": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", @@ -3813,9 +3766,10 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -3825,39 +3779,40 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/mocha": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", - "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", + "version": "11.7.5", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.5.tgz", + "integrity": "sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", + "chokidar": "^4.0.1", "debug": "^4.3.5", - "diff": "^5.2.0", + "diff": "^7.0.0", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", "glob": "^10.4.5", "he": "^1.2.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", + "minimatch": "^9.0.5", "ms": "^2.1.3", + "picocolors": "^1.1.1", "serialize-javascript": "^6.0.2", "strip-json-comments": "^3.1.1", "supports-color": "^8.1.1", - "workerpool": "^6.5.1", + "workerpool": "^9.2.0", "yargs": "^17.7.2", "yargs-parser": "^21.1.1", "yargs-unparser": "^2.0.0" @@ -3871,36 +3826,29 @@ } }, "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, - "node_modules/mocha/node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mocha/node_modules/supports-color": { @@ -4011,27 +3959,18 @@ } } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^4.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4131,9 +4070,9 @@ } }, "node_modules/ora/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -4144,9 +4083,9 @@ } }, "node_modules/ora/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", "engines": { @@ -4157,25 +4096,12 @@ } }, "node_modules/ora/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, "license": "MIT" }, - "node_modules/ora/node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ora/node_modules/log-symbols": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", @@ -4225,13 +4151,13 @@ } }, "node_modules/ora/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -4299,13 +4225,26 @@ "node": ">=6" } }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse5": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "license": "MIT", "dependencies": { - "entities": "^4.5.0" + "entities": "^6.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -4324,6 +4263,18 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4392,7 +4343,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, "license": "ISC" }, "node_modules/picomatch": { @@ -4418,6 +4368,22 @@ "node": ">= 0.8.0" } }, + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -4493,16 +4459,17 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/regexpp": { @@ -4607,7 +4574,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -4657,9 +4624,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -4741,6 +4708,16 @@ "url": "https://opencollective.com/sinon" } }, + "node_modules/sinon/node_modules/diff": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz", + "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -4788,9 +4765,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.21", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", - "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", "dev": true, "license": "CC0-1.0" }, @@ -4872,9 +4849,9 @@ "license": "MIT" }, "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -4885,13 +4862,13 @@ } }, "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -4928,13 +4905,13 @@ } }, "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4957,6 +4934,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4983,9 +4961,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { @@ -5054,6 +5032,13 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", @@ -5070,13 +5055,6 @@ "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" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5133,6 +5111,19 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "license": "MIT" }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -5190,18 +5181,18 @@ } }, "node_modules/vscode-languageclient/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/vscode-languageclient/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -5284,9 +5275,9 @@ } }, "node_modules/workerpool": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", + "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", "dev": true, "license": "Apache-2.0" }, @@ -5350,9 +5341,9 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { @@ -5363,9 +5354,9 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", "engines": { @@ -5376,13 +5367,13 @@ } }, "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -5399,9 +5390,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -5474,6 +5465,16 @@ "node": ">=10" } }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -5508,6 +5509,19 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index fa2f24f3..f24378ed 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "r", "displayName": "R", "description": "R Extension for Visual Studio Code", - "version": "2.8.6", + "version": "2.8.7", "author": "REditorSupport", "license": "SEE LICENSE IN LICENSE", "publisher": "REditorSupport", @@ -2021,7 +2021,7 @@ "esbuild": "^0.27.3", "eslint": "^7.28.0", "eslint-plugin-jsdoc": "^35.1.3", - "git-cliff": "^2.8.0", + "git-cliff": "^2.12.0", "mocha": "^11.1.0", "sinon": "^15.0.1", "typescript": "^4.7.2" From c60a7780844a5c9d7b6ac93358e28375d9848c33 Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Tue, 24 Mar 2026 12:27:34 -0700 Subject: [PATCH 20/74] feat: change default of r.lsp.multiServer to false - Change r.lsp.multiServer type to boolean and default to false. - Simplify language service startup by removing legacy "auto" handling. - Remove unused getRPackageVersion and compareVersions imports. - Remove unused parseCranJson function in src/helpViewer/cran.ts. --- package.json | 14 +++----------- src/helpViewer/cran.ts | 15 +-------------- src/languageService.ts | 15 +++------------ 3 files changed, 7 insertions(+), 37 deletions(-) diff --git a/package.json b/package.json index f24378ed..9903804c 100644 --- a/package.json +++ b/package.json @@ -1388,17 +1388,9 @@ "description": "Use STDIO connection instead of TCP. (Unix/macOS users only)" }, "r.lsp.multiServer": { - "type": [ - "string", - "boolean" - ], - "enum": [ - "auto", - true, - false - ], - "default": "auto", - "markdownDescription": "Use multiple language servers for [multi-root workspaces](https://code.visualstudio.com/docs/editor/multi-root-workspaces). When set to `auto`, it will use a single server if the R `languageserver` package version is > 0.3.17, and multiple servers otherwise. Disabling this (or using `auto` with a recent version) is recommended for better performance." + "type": "boolean", + "default": false, + "markdownDescription": "Use multiple language servers for [multi-root workspaces](https://code.visualstudio.com/docs/editor/multi-root-workspaces). Disabling this is recommended for better performance. `languageserver` > 0.3.17 supports multi-root workspace in a single server by default." }, "r.rmarkdown.codeLensCommands": { "type": "array", diff --git a/src/helpViewer/cran.ts b/src/helpViewer/cran.ts index ec6c1237..ea822e6b 100644 --- a/src/helpViewer/cran.ts +++ b/src/helpViewer/cran.ts @@ -56,20 +56,7 @@ function parseCranPackagesFile(html: string): Package[] { return packages; } -function parseCranJson(jsonString: string): Package[] { - const lines = jsonString.split('\n').filter(v => v); - const pkgs = lines.map(line => { - const j = JSON.parse(line) as {[key: string]: string}; - const pkg: Package = { - name: j['Package'], - description: j['Title'], - date: j['modified'], - isCran: true - }; - return pkg; - }); - return pkgs; -} + function parseCranTable(html: string, baseUrl: string): Package[] { if(!html){ diff --git a/src/languageService.ts b/src/languageService.ts index 43b14e72..73a9bec6 100644 --- a/src/languageService.ts +++ b/src/languageService.ts @@ -4,7 +4,7 @@ import * as net from 'net'; import { URL } from 'url'; import { LanguageClient, LanguageClientOptions, StreamInfo, DocumentFilter, ErrorAction, CloseAction, RevealOutputChannelOn } from 'vscode-languageclient/node'; import { Disposable, workspace, Uri, TextDocument, WorkspaceConfiguration, OutputChannel, window, WorkspaceFolder } from 'vscode'; -import { DisposableProcess, getRLibPaths, getRpath, promptToInstallRPackage, spawn, substituteVariables, getRPackageVersion, compareVersions } from './util'; +import { DisposableProcess, getRLibPaths, getRpath, promptToInstallRPackage, spawn, substituteVariables } from './util'; import { extensionContext } from './extension'; import { CommonOptions } from 'child_process'; @@ -310,18 +310,9 @@ export class LanguageService implements Disposable { private async startLanguageService(): Promise { let useMultiServer = false; - const multiServerConfig = this.config.get('lsp.multiServer'); + const multiServerConfig = this.config.get('lsp.multiServer'); - if (multiServerConfig === 'auto') { - const version = await getRPackageVersion('languageserver'); - if (version && compareVersions(version, '0.3.17') <= 0) { - console.log(`languageserver version is ${version}, using multi-server.`); - useMultiServer = true; - } else { - console.log(`languageserver version is ${version || 'unknown'}, using single-server.`); - useMultiServer = false; - } - } else if (multiServerConfig === true || multiServerConfig === 'true') { + if (multiServerConfig === true) { useMultiServer = true; } From 5a08d76387c45c505c669569d32db46d7fa9df1d Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Tue, 24 Mar 2026 12:36:59 -0700 Subject: [PATCH 21/74] chore: bump version to 2.8.8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9903804c..d9d5fc63 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "r", "displayName": "R", "description": "R Extension for Visual Studio Code", - "version": "2.8.7", + "version": "2.8.8", "author": "REditorSupport", "license": "SEE LICENSE IN LICENSE", "publisher": "REditorSupport", From a8cfdf6e1033b724134993274f7cdea753f1a55a Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Tue, 24 Mar 2026 12:47:43 -0700 Subject: [PATCH 22/74] chore: update changelog for 2.8.8 --- CHANGELOG.md | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 806f9ecc..4f124e34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 2.8.7 - 2026-03-15 +## 2.8.8 - 2026-03-24 ### Bug Fixes @@ -9,27 +9,14 @@ ### Features * feat: support multi-root workspaces in single-server mode +* feat: change default of r.lsp.multiServer to false ### Other * Allow bracketedPaste on win32 platform ([#1631](https://github.com/REditorSupport/vscode-R/issues/1631)) * feat: default to single language server for multi-root workspaces ([#1682](https://github.com/REditorSupport/vscode-R/issues/1682)) -**Full Changelog**: - -## 2.8.6 - 2025-05-31 - -### Other - -* Syntax update and bump to 2.8.6 ([#1605](https://github.com/REditorSupport/vscode-R/issues/1605)) -* Show sidebar icon only when extension is active ([#1579](https://github.com/REditorSupport/vscode-R/issues/1579)) -* Move R and R markdown syntaxes to vscode-R-syntax ([#1606](https://github.com/REditorSupport/vscode-R/issues/1606)) - -### Refactor - -* refactor: restructure files ([#1613](https://github.com/REditorSupport/vscode-R/issues/1613)) - -**Full Changelog**: +**Full Changelog**: See [CHANGELOG.old.md](https://github.com/REditorSupport/vscode-R/blob/master/CHANGELOG.old.md) for changes before v2.8.5. From 1bd81ccf66804fc12fdeae336e298f14230a562e Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Tue, 24 Mar 2026 12:56:31 -0700 Subject: [PATCH 23/74] bump to v2.8.8 --- CHANGELOG.md | 1803 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1801 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f124e34..1466f852 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ ## 2.8.8 - 2026-03-24 +### Features + +* feat: change default of r.lsp.multiServer to false + +**Full Changelog**: + +## 2.8.7 - 2026-03-15 + ### Bug Fixes * fix: correct r.term and r.path setting names in error message @@ -9,14 +17,1805 @@ ### Features * feat: support multi-root workspaces in single-server mode -* feat: change default of r.lsp.multiServer to false ### Other * Allow bracketedPaste on win32 platform ([#1631](https://github.com/REditorSupport/vscode-R/issues/1631)) * feat: default to single language server for multi-root workspaces ([#1682](https://github.com/REditorSupport/vscode-R/issues/1682)) -**Full Changelog**: +**Full Changelog**: + +## 2.8.6 - 2025-05-31 + +### Other + +* Syntax update and bump to 2.8.6 ([#1605](https://github.com/REditorSupport/vscode-R/issues/1605)) +* Show sidebar icon only when extension is active ([#1579](https://github.com/REditorSupport/vscode-R/issues/1579)) +* Move R and R markdown syntaxes to vscode-R-syntax ([#1606](https://github.com/REditorSupport/vscode-R/issues/1606)) + +### Refactor + +* refactor: restructure files ([#1613](https://github.com/REditorSupport/vscode-R/issues/1613)) + +**Full Changelog**: + +## 2.8.5 - 2025-04-10 + +### Other + +* Don't close stale issues ([#1522](https://github.com/REditorSupport/vscode-R/issues/1522)) +* Do not mark issues as stale +* Do not mark issues as stale ([#1561](https://github.com/REditorSupport/vscode-R/issues/1561)) +* Rsyntax ([#1560](https://github.com/REditorSupport/vscode-R/issues/1560)) +* Bump path-to-regexp from 6.2.2 to 6.3.0 ([#1563](https://github.com/REditorSupport/vscode-R/issues/1563)) +* chore ([#1598](https://github.com/REditorSupport/vscode-R/issues/1598)) +* Release 2.8.5 ([#1599](https://github.com/REditorSupport/vscode-R/issues/1599)) + +**Full Changelog**: + +## 2.8.4 - 2024-05-18 + +### Bug Fixes + +* Fix code + +### Other + +* Upgrade dependencies +* Upgrade dependencies +* Update package.json +* release 2.8.4 + +**Full Changelog**: + +## 2.8.3 - 2024-05-07 + +### Bug Fixes + +* Fix multiline smart-knit ([#1493](https://github.com/REditorSupport/vscode-R/issues/1493)) +* Fix RMD Progress Bar ([#1491](https://github.com/REditorSupport/vscode-R/issues/1491)) + +### Other + +* Substitute variables in `r.rpath` and `r.rterm` settings ([#1444](https://github.com/REditorSupport/vscode-R/issues/1444)) +* Substitute variables in r.rterm.option and r.lsp.args settings +* getRLibPaths uses substituteVariables +* Improve code chunk handling in base `.R` files ([#1454](https://github.com/REditorSupport/vscode-R/issues/1454)) +* Improvements to `.R` file chunks: ([#1455](https://github.com/REditorSupport/vscode-R/issues/1455)) +* remove '.' as an R language editor.wordSeparators ([#1503](https://github.com/REditorSupport/vscode-R/issues/1503)) +* `numeric_version()` wants character as of R 4.4 ([#1520](https://github.com/REditorSupport/vscode-R/issues/1520)) +* handling terminals created by vscode-Python ([#1511](https://github.com/REditorSupport/vscode-R/issues/1511)) +* `numeric_version()` with character arg ([#1523](https://github.com/REditorSupport/vscode-R/issues/1523)) +* Bump ejs from 3.1.7 to 3.1.10 ([#1519](https://github.com/REditorSupport/vscode-R/issues/1519)) +* Update init.R ([#1525](https://github.com/REditorSupport/vscode-R/issues/1525)) +* release 2.8.3 + +**Full Changelog**: + +## 2.8.2 - 2023-10-08 + +### Other + +* Bump semver from 7.3.5 to 7.5.3 ([#1388](https://github.com/REditorSupport/vscode-R/issues/1388)) +* Bump word-wrap from 1.2.3 to 1.2.4 ([#1395](https://github.com/REditorSupport/vscode-R/issues/1395)) +* Update built-in function match regex ([#1431](https://github.com/REditorSupport/vscode-R/issues/1431)) +* Add Option to Sync renv Cache ([#1423](https://github.com/REditorSupport/vscode-R/issues/1423)) +* Add task to run `testthat::test_file()` on current file ([#1415](https://github.com/REditorSupport/vscode-R/issues/1415)) +* Fix indentation_linter message ([#1433](https://github.com/REditorSupport/vscode-R/issues/1433)) +* allow to invoke R terminal also in relative paths ([#1398](https://github.com/REditorSupport/vscode-R/issues/1398)) +* Upgrade ag-grid-community to v30.2.0 ([#1434](https://github.com/REditorSupport/vscode-R/issues/1434)) +* Upgrade vscode-languageclient to 9.0.1 ([#1435](https://github.com/REditorSupport/vscode-R/issues/1435)) +* release 2.8.2 + +**Full Changelog**: + +## 2.8.1 - 2023-06-09 + +### Bug Fixes + +* Fix handling pageSize=0 ([#1364](https://github.com/REditorSupport/vscode-R/issues/1364)) +* Fix help panel in remote host ([#1374](https://github.com/REditorSupport/vscode-R/issues/1374)) +* Fix install package name ([#1377](https://github.com/REditorSupport/vscode-R/issues/1377)) + +### Other + +* Add `r.lsp.multiServer` setting ([#1375](https://github.com/REditorSupport/vscode-R/issues/1375)) +* Upgrade to ag-grid-community-v30.0.0 ([#1379](https://github.com/REditorSupport/vscode-R/issues/1379)) +* release 2.8.1 + +**Full Changelog**: + +## 2.8.0 - 2023-04-28 + +### Bug Fixes + +* Fix markdown lint + +### Other + +* Hide most help panel commands in command palette ([#1327](https://github.com/REditorSupport/vscode-R/issues/1327)) +* Hide liveshare toggle command ([#1330](https://github.com/REditorSupport/vscode-R/issues/1330)) +* Bump webpack from 5.38.1 to 5.76.0 ([#1331](https://github.com/REditorSupport/vscode-R/issues/1331)) +* Handle errors in `getAliases.R` ([#1334](https://github.com/REditorSupport/vscode-R/issues/1334)) +* Remove unused ag-theme-balham-dark.min.css +* Upgrade to ag-grid-community-v29.3.0 ([#1346](https://github.com/REditorSupport/vscode-R/issues/1346)) +* Websocket communication ([#1151](https://github.com/REditorSupport/vscode-R/issues/1151)) +* RMD Preview: font-size setting ([#1333](https://github.com/REditorSupport/vscode-R/issues/1333)) +* release 2.8.0 +* release 2.8.0 + +**Full Changelog**: + +## 2.7.2 - 2023-03-06 + +### Other + +* Basic unit test for workspace viewer ([#1305](https://github.com/REditorSupport/vscode-R/issues/1305)) +* Update yarn.lock +* Upgrade vscode-languageclient to 8.1.0 ([#1315](https://github.com/REditorSupport/vscode-R/issues/1315)) +* Explicit workspace behaviour ([#1317](https://github.com/REditorSupport/vscode-R/issues/1317)) +* Ensure workspace is cleared ([#1318](https://github.com/REditorSupport/vscode-R/issues/1318)) +* Added r.view command: View(variable) ([#1319](https://github.com/REditorSupport/vscode-R/issues/1319)) +* Always check pid before clearing workspace ([#1321](https://github.com/REditorSupport/vscode-R/issues/1321)) +* Workspace viewer command visibility ([#1323](https://github.com/REditorSupport/vscode-R/issues/1323)) +* release 2.7.2 + +**Full Changelog**: + +## 2.7.1 - 2023-02-15 + +### Bug Fixes + +* Fix broken tests ([#1302](https://github.com/REditorSupport/vscode-R/issues/1302)) + +### Other + +* Bump minimatch from 3.0.4 to 3.1.2 ([#1271](https://github.com/REditorSupport/vscode-R/issues/1271)) +* Make help preview async ([#1273](https://github.com/REditorSupport/vscode-R/issues/1273)) +* Add the column name to the tooltip on data viewer ([#1278](https://github.com/REditorSupport/vscode-R/issues/1278)) +* Ability to set echo=TRUE in Run source by default ([#1286](https://github.com/REditorSupport/vscode-R/issues/1286)) +* Remove leading comments from terminal submission (#1244) ([#1245](https://github.com/REditorSupport/vscode-R/issues/1245)) +* Upgrade ag-grid-community to v29.0.0 ([#1290](https://github.com/REditorSupport/vscode-R/issues/1290)) +* Migrate to @vscode/test-electron ([#1303](https://github.com/REditorSupport/vscode-R/issues/1303)) +* release 2.7.1 + +**Full Changelog**: + +## 2.7.0 - 2022-12-04 + +### Bug Fixes + +* fix typo in dialog ([#1249](https://github.com/REditorSupport/vscode-R/issues/1249)) + +### Other + +* Enable publishToOpenVSX +* Add Open VSX Registry installation option to README ([#1102](https://github.com/REditorSupport/vscode-R/issues/1102)) +* Use `force=TRUE` when viewing data.frame and list ([#1255](https://github.com/REditorSupport/vscode-R/issues/1255)) +* fixed broken tasks problemMatcher regex ([#1257](https://github.com/REditorSupport/vscode-R/issues/1257)) +* Fix webview: Add webview csp directives for web workers ([#1261](https://github.com/REditorSupport/vscode-R/issues/1261)) +* Add language support for NAMESPACE & .Rbuildignore ([#1221](https://github.com/REditorSupport/vscode-R/issues/1221)) +* Implement help preview for local package(s) ([#1259](https://github.com/REditorSupport/vscode-R/issues/1259)) +* Encoding fix +* Respect RdMacros ([#1266](https://github.com/REditorSupport/vscode-R/issues/1266)) +* Change code block detection to include parentheses ([#1269](https://github.com/REditorSupport/vscode-R/issues/1269)) +* Remove script tags in R v4.2.x help pages ([#1268](https://github.com/REditorSupport/vscode-R/issues/1268)) +* release 2.7.0 + +**Full Changelog**: + +## 2.6.1 - 2022-10-31 + +### Bug Fixes + +* Fix checking `request.viewer` ([#1234](https://github.com/REditorSupport/vscode-R/issues/1234)) + +### Other + +* Tweak settings ([#1235](https://github.com/REditorSupport/vscode-R/issues/1235)) +* Support trailing slash in code-server's URI template ([#1241](https://github.com/REditorSupport/vscode-R/issues/1241)) +* release 2.6.1 + +**Full Changelog**: + +## 2.6.0 - 2022-10-11 + +### Bug Fixes + +* Fix empty code examples ([#1194](https://github.com/REditorSupport/vscode-R/issues/1194)) +* Fix help +* Fix help katex support under remote development ([#1217](https://github.com/REditorSupport/vscode-R/issues/1217)) +* Fix use of asExternalUri + +### Other + +* Avoid code highlighting in DESCRIPTION files ([#1199](https://github.com/REditorSupport/vscode-R/issues/1199)) +* Avoid .R file lock on windows ([#1192](https://github.com/REditorSupport/vscode-R/issues/1192)) +* devTasks ([#1200](https://github.com/REditorSupport/vscode-R/issues/1200)) +* Add generated .js files to .gitignore +* Bug report template: Minor spelling and formatting adjustments ([#1206](https://github.com/REditorSupport/vscode-R/issues/1206)) +* Implement c_cpp_properties.json file generator fixes #1201 ([#1205](https://github.com/REditorSupport/vscode-R/issues/1205), [#1201](https://github.com/REditorSupport/vscode-R/issues/1201)) +* Refactoring: Strict TypeScript Fix #1208 ([#1209](https://github.com/REditorSupport/vscode-R/issues/1209), [#1208](https://github.com/REditorSupport/vscode-R/issues/1208)) +* [Chore] Remove unused NPM dependencies fix #232 ([#1216](https://github.com/REditorSupport/vscode-R/issues/1216)) +* Support KaTeX in help page viewer ([#1213](https://github.com/REditorSupport/vscode-R/issues/1213)) +* Use asExternalUri instead +* Not trigger preview on file change when rmd is still rendering ([#1219](https://github.com/REditorSupport/vscode-R/issues/1219)) +* release 2.6.0 + +**Full Changelog**: + +## 2.5.3 - 2022-09-06 + +### Other + +* Bump terser from 5.7.0 to 5.14.2 ([#1154](https://github.com/REditorSupport/vscode-R/issues/1154)) +* Remove encoding param from knitting ([#1167](https://github.com/REditorSupport/vscode-R/issues/1167)) +* Reload help pages on help refresh ([#1188](https://github.com/REditorSupport/vscode-R/issues/1188)) +* Upgrade to vscode-languageclient 8.0.2 ([#1173](https://github.com/REditorSupport/vscode-R/issues/1173)) +* release 2.5.3 + +**Full Changelog**: + +## 2.5.2 - 2022-07-15 + +### Bug Fixes + +* Workspace viewer fix ([#1150](https://github.com/REditorSupport/vscode-R/issues/1150)) + +### Other + +* Publish to Open VSX Registry ([#1101](https://github.com/REditorSupport/vscode-R/issues/1101)) +* Create issues.yml ([#1061](https://github.com/REditorSupport/vscode-R/issues/1061)) +* Remove nesting: guard clauses ([#1110](https://github.com/REditorSupport/vscode-R/issues/1110)) +* Hide preview env values to prevent accidental deletion ([#1117](https://github.com/REditorSupport/vscode-R/issues/1117)) +* Add file creation to file/newFile ([#1119](https://github.com/REditorSupport/vscode-R/issues/1119)) +* Bump jquery.json-viewer from 1.4.0 to 1.5.0 ([#1123](https://github.com/REditorSupport/vscode-R/issues/1123)) +* Update data viewer column resizing ([#1121](https://github.com/REditorSupport/vscode-R/issues/1121)) +* Click code in help views ([#1138](https://github.com/REditorSupport/vscode-R/issues/1138)) +* Adapt to lintr 3.0 ([#1141](https://github.com/REditorSupport/vscode-R/issues/1141)) +* Whitespace in typescript files ([#1142](https://github.com/REditorSupport/vscode-R/issues/1142)) +* Add `Create .linr` command ([#1112](https://github.com/REditorSupport/vscode-R/issues/1112)) +* Add .yarnrc +* Upgrade to ag-grid-community 28.0.0 ([#1144](https://github.com/REditorSupport/vscode-R/issues/1144)) +* release 2.5.1 +* Disable publish to openvsx +* release 2.5.2 + +**Full Changelog**: + +## 2.5.0 - 2022-05-14 + +### Bug Fixes + +* Fix console err ([#1034](https://github.com/REditorSupport/vscode-R/issues/1034)) +* Fix lintr complain + +### Other + +* add R package build task - build source and build binary like RStudio ([#1029](https://github.com/REditorSupport/vscode-R/issues/1029)) +* Use `bindingIsActive` ([#1031](https://github.com/REditorSupport/vscode-R/issues/1031)) +* guard against evaluation of active bindings ([#1038](https://github.com/REditorSupport/vscode-R/issues/1038), [#1030](https://github.com/REditorSupport/vscode-R/issues/1030)) +* Upgrade `ag-grid-community` to v27.1.0 ([#1049](https://github.com/REditorSupport/vscode-R/issues/1049)) +* Hide smart knit env values to prevent accidental deletion ([#1060](https://github.com/REditorSupport/vscode-R/issues/1060)) +* Add `r.session.data.pageSize` ([#1068](https://github.com/REditorSupport/vscode-R/issues/1068)) +* Bump ansi-regex from 3.0.0 to 3.0.1 ([#1070](https://github.com/REditorSupport/vscode-R/issues/1070)) +* Bump minimist from 1.2.5 to 1.2.6 ([#1069](https://github.com/REditorSupport/vscode-R/issues/1069)) +* Update rGitignore.ts +* Add lsp settings to support disabling prompt and additional libPaths ([#1071](https://github.com/REditorSupport/vscode-R/issues/1071)) +* More choices for code chunk snippet ([#1082](https://github.com/REditorSupport/vscode-R/issues/1082)) +* Take out http from `Insert image` Rmd snippet ([#1084](https://github.com/REditorSupport/vscode-R/issues/1084)) +* Take out http from link snippet ([#1085](https://github.com/REditorSupport/vscode-R/issues/1085)) +* Bump cross-fetch from 3.1.4 to 3.1.5 ([#1087](https://github.com/REditorSupport/vscode-R/issues/1087)) +* Bump ejs from 3.1.6 to 3.1.7 ([#1088](https://github.com/REditorSupport/vscode-R/issues/1088)) +* Use `loadNamespace` ([#1086](https://github.com/REditorSupport/vscode-R/issues/1086)) +* Prompt when no templates found ([#1089](https://github.com/REditorSupport/vscode-R/issues/1089)) +* Update publisher id ([#1093](https://github.com/REditorSupport/vscode-R/issues/1093)) +* R language server and help supports additional libPaths ([#1097](https://github.com/REditorSupport/vscode-R/issues/1097)) +* Move r.libPaths in setting +* Update `r.libPaths` behavior ([#1098](https://github.com/REditorSupport/vscode-R/issues/1098)) +* release 2.5.0 + +**Full Changelog**: + +## 2.4.0 - 2022-03-07 + +### Bug Fixes + +* Fix commented pipe bug ([#988](https://github.com/REditorSupport/vscode-R/issues/988)) +* Fix resolveTask ([#994](https://github.com/REditorSupport/vscode-R/issues/994)) +* Fix incorrect syntax highlighting for variables starting with "function" ([#992](https://github.com/REditorSupport/vscode-R/issues/992), [#982](https://github.com/REditorSupport/vscode-R/issues/982)) + +### Other + +* Use spawn ([#985](https://github.com/REditorSupport/vscode-R/issues/985)) +* WIP: Add problemMatching to task ([#989](https://github.com/REditorSupport/vscode-R/issues/989)) +* R markdown templates ([#984](https://github.com/REditorSupport/vscode-R/issues/984)) +* Preserve selected text in rmd snippet ([#1001](https://github.com/REditorSupport/vscode-R/issues/1001)) +* Provide optional 'code' argument to r.runSelection command ([#1017](https://github.com/REditorSupport/vscode-R/issues/1017)) +* Add Shiny snippets ([#1012](https://github.com/REditorSupport/vscode-R/issues/1012), [#1011](https://github.com/REditorSupport/vscode-R/issues/1011)) +* Add lambda to function-declarations ([#1025](https://github.com/REditorSupport/vscode-R/issues/1025)) +* Enhance workspace viewer ([#1022](https://github.com/REditorSupport/vscode-R/issues/1022)) +* Share httpgd url for LiveShare ([#1026](https://github.com/REditorSupport/vscode-R/issues/1026)) +* Add some useful Rmd snippets ([#1009](https://github.com/REditorSupport/vscode-R/issues/1009)) +* release 2.4.0 + +**Full Changelog**: + +## 2.3.8 - 2022-02-07 + +### Other + +* Avoid rpath quoting ([#981](https://github.com/REditorSupport/vscode-R/issues/981)) +* release 2.3.8 + +**Full Changelog**: + +## 2.3.7 - 2022-02-07 + +### Bug Fixes + +* Fix rmd comment ([#958](https://github.com/REditorSupport/vscode-R/issues/958)) + +### Other + +* correcting typo on command argument (slient instead of silent) ([#954](https://github.com/REditorSupport/vscode-R/issues/954)) +* update the .gitignore file for R ([#949](https://github.com/REditorSupport/vscode-R/issues/949)) +* Add delay before refreshing plots ([#956](https://github.com/REditorSupport/vscode-R/issues/956)) +* Add row limit setting of data viewer and support Apache Arrow Table ([#945](https://github.com/REditorSupport/vscode-R/issues/945)) +* Bump node-fetch from 2.6.1 to 2.6.7 ([#962](https://github.com/REditorSupport/vscode-R/issues/962)) +* set the LANG env when rendering rmarkdown ([#961](https://github.com/REditorSupport/vscode-R/issues/961)) +* should use Strong quote for shell commands ([#964](https://github.com/REditorSupport/vscode-R/issues/964)) +* Add note about required httpgd package version ([#972](https://github.com/REditorSupport/vscode-R/issues/972)) +* update dcf syntax and add support ".lintr" file ([#970](https://github.com/REditorSupport/vscode-R/issues/970)) +* prompt to install languageserver is not available ([#965](https://github.com/REditorSupport/vscode-R/issues/965)) +* [data frame viewer] Add type of column to headerTooltip ([#974](https://github.com/REditorSupport/vscode-R/issues/974)) +* Upgrade ag-grid-community to 26.2.1 ([#975](https://github.com/REditorSupport/vscode-R/issues/975)) +* Activate extension on subfolder ([#979](https://github.com/REditorSupport/vscode-R/issues/979)) +* release 2.3.7 + +**Full Changelog**: + +## 2.3.6 - 2022-01-16 + +### Bug Fixes + +* Fix syntax file ([#939](https://github.com/REditorSupport/vscode-R/issues/939)) + +### Other + +* Add raw string tokens ([#922](https://github.com/REditorSupport/vscode-R/issues/922)) +* Support both single and double brackets in code-server's URI template ([#934](https://github.com/REditorSupport/vscode-R/issues/934)) +* Rename `R/session/.Rprofile` to `R/session/profile.R` ([#938](https://github.com/REditorSupport/vscode-R/issues/938)) +* Use taskkill for win32 ([#936](https://github.com/REditorSupport/vscode-R/issues/936)) +* Fixed `"punctuation.section.parens.end.r"` under `"function-parameters"` ([#931](https://github.com/REditorSupport/vscode-R/issues/931)) +* Use `taskkill` for win32 ([#941](https://github.com/REditorSupport/vscode-R/issues/941)) +* release 2.3.6 + +**Full Changelog**: + +## 2.3.5 - 2021-12-18 + +### Bug Fixes + +* Fix dcf syntax ([#920](https://github.com/REditorSupport/vscode-R/issues/920)) + +### Other + +* adding devtools tasks to command palette ([#880](https://github.com/REditorSupport/vscode-R/issues/880)) +* RMD - don't set undefined wd ([#914](https://github.com/REditorSupport/vscode-R/issues/914)) +* Use `SIGKILL` to kill help server ([#912](https://github.com/REditorSupport/vscode-R/issues/912)) +* readability adjustments for help pages ([#915](https://github.com/REditorSupport/vscode-R/issues/915)) +* Clean-up child processes on dispose ([#918](https://github.com/REditorSupport/vscode-R/issues/918)) +* release 2.3.5 + +**Full Changelog**: + +## 2.3.4 - 2021-11-30 + +### Bug Fixes + +* Fix helpserver issue ([#893](https://github.com/REditorSupport/vscode-R/issues/893)) + +### Other + +* Remove quotes from rpath if necessary ([#884](https://github.com/REditorSupport/vscode-R/issues/884)) +* Try different CRAN URLs ([#885](https://github.com/REditorSupport/vscode-R/issues/885)) +* Use `Uri.file` instead of `Uri.parse` ([#888](https://github.com/REditorSupport/vscode-R/issues/888)) +* Update bug_report.md +* Clean up of help related files ([#887](https://github.com/REditorSupport/vscode-R/issues/887)) +* Use httpgd NPM package ([#823](https://github.com/REditorSupport/vscode-R/issues/823)) +* release 2.3.4 + +**Full Changelog**: + +## 2.3.3 - 2021-11-21 + +### Bug Fixes + +* Fix package installation ([#846](https://github.com/REditorSupport/vscode-R/issues/846)) +* Fix detecting yaml frontmatter ([#856](https://github.com/REditorSupport/vscode-R/issues/856)) +* Fix rmd preview chunk colouring ([#867](https://github.com/REditorSupport/vscode-R/issues/867)) + +### Other + +* Add R info to status bar item text and tooltip ([#836](https://github.com/REditorSupport/vscode-R/issues/836)) +* get knit command from settings ([#841](https://github.com/REditorSupport/vscode-R/issues/841)) +* Add support for indented Roxygen ([#847](https://github.com/REditorSupport/vscode-R/issues/847)) +* Syntax highlighting for indented roxygen ([#850](https://github.com/REditorSupport/vscode-R/issues/850)) +* Use new terminal API ([#851](https://github.com/REditorSupport/vscode-R/issues/851)) +* Add backtick to list of quote characters for syntax highlighting. ([#859](https://github.com/REditorSupport/vscode-R/issues/859)) +* Auto refresh help ([#863](https://github.com/REditorSupport/vscode-R/issues/863)) +* Show httpgd plot on attach ([#852](https://github.com/REditorSupport/vscode-R/issues/852)) +* Update lim ([#868](https://github.com/REditorSupport/vscode-R/issues/868)) +* release 2.3.3 + +**Full Changelog**: + +## 2.3.2 - 2021-10-22 + +### Other + +* Httpgd plot viewer respects `r.session.viewers.viewColumn.plot` ([#816](https://github.com/REditorSupport/vscode-R/issues/816)) +* Completely replace `View()` ([#818](https://github.com/REditorSupport/vscode-R/issues/818)) +* Change help cache default ([#819](https://github.com/REditorSupport/vscode-R/issues/819)) +* browser handles `file://` ([#817](https://github.com/REditorSupport/vscode-R/issues/817)) +* Add `r.session.levelOfObjectDetail=Normal` for `max.level=1` ([#815](https://github.com/REditorSupport/vscode-R/issues/815)) +* Update address +* Check workspace folder with both original and real path ([#827](https://github.com/REditorSupport/vscode-R/issues/827)) +* release 2.3.2 + +**Full Changelog**: + +## 2.3.1 - 2021-10-07 + +### Other + +* Support `VSCODE_PROXY_URI` ([#803](https://github.com/REditorSupport/vscode-R/issues/803)) +* Reenable 'unsafe-eval' in script-src CSP ([#805](https://github.com/REditorSupport/vscode-R/issues/805)) +* Use r.session.viewers.viewColumn.helpPanel ([#804](https://github.com/REditorSupport/vscode-R/issues/804)) +* Use cwd in knit process ([#807](https://github.com/REditorSupport/vscode-R/issues/807)) +* Bump version +* release 2.3.1 + +**Full Changelog**: + +## 2.3.0 - 2021-09-23 + +### Bug Fixes + +* Fix RMD requireNamespace ([#784](https://github.com/REditorSupport/vscode-R/issues/784)) +* Fix hljs usage + +### Other + +* Enable rstudioapi by default ([#769](https://github.com/REditorSupport/vscode-R/issues/769)) +* Use unsafe-inline for script-src ([#771](https://github.com/REditorSupport/vscode-R/issues/771)) +* R Markdown Enhancements (Knit Manager) ([#765](https://github.com/REditorSupport/vscode-R/issues/765)) +* (Refactoring) Simplify RMD child process disposal ([#773](https://github.com/REditorSupport/vscode-R/issues/773)) +* Add object length limit ([#778](https://github.com/REditorSupport/vscode-R/issues/778)) +* Write NA as string ([#780](https://github.com/REditorSupport/vscode-R/issues/780)) +* Use R files for background process ([#783](https://github.com/REditorSupport/vscode-R/issues/783)) +* Respect preview output format ([#785](https://github.com/REditorSupport/vscode-R/issues/785)) +* Bump @types/vscode from 1.57.0 to 1.60.0 ([#786](https://github.com/REditorSupport/vscode-R/issues/786)) +* Extend providers to rmd ([#787](https://github.com/REditorSupport/vscode-R/issues/787)) +* Bump nth-check from 2.0.0 to 2.0.1 ([#795](https://github.com/REditorSupport/vscode-R/issues/795)) +* Update vscode and ag-grid version +* Update dependencies +* Update highlight.js version +* release 2.3.0 + +**Full Changelog**: + +## 2.2.0 - 2021-08-21 + +### Bug Fixes + +* Fix date filter in data viewer ([#736](https://github.com/REditorSupport/vscode-R/issues/736)) +* Fix README +* Fix issues with c() in function args ([#751](https://github.com/REditorSupport/vscode-R/issues/751), [#713](https://github.com/REditorSupport/vscode-R/issues/713)) + +### Other + +* Check conflict extension ([#733](https://github.com/REditorSupport/vscode-R/issues/733)) +* Rename liveshare folder to liveShare ([#738](https://github.com/REditorSupport/vscode-R/issues/738)) +* Viewer fix: invalid html_widget resource paths ([#739](https://github.com/REditorSupport/vscode-R/issues/739)) +* Accessing VS Code settings in R ([#743](https://github.com/REditorSupport/vscode-R/issues/743)) +* Use .DollarNames with default pattern ([#750](https://github.com/REditorSupport/vscode-R/issues/750)) +* Handle error in capture_str ([#756](https://github.com/REditorSupport/vscode-R/issues/756)) +* Add icons to webviews ([#759](https://github.com/REditorSupport/vscode-R/issues/759)) +* release 2.2.0 + +**Full Changelog**: + +## 2.1.0 - 2021-07-20 + +### Bug Fixes + +* Fix README links +* Fix typo in url +* Fix typo + +### Other + +* Minor workspace-related changes ([#672](https://github.com/REditorSupport/vscode-R/issues/672)) +* Update README ([#669](https://github.com/REditorSupport/vscode-R/issues/669)) +* Enable r.sessionWatcher by default +* Update previewDataframe and previewEnvironment +* Enable r.sessionWatcher by default ([#670](https://github.com/REditorSupport/vscode-R/issues/670)) +* Add customization options to plot viewer ([#678](https://github.com/REditorSupport/vscode-R/issues/678)) +* Catch LiveShare API errors ([#679](https://github.com/REditorSupport/vscode-R/issues/679)) +* Small Plot Viewer adjustments ([#681](https://github.com/REditorSupport/vscode-R/issues/681)) +* Integer syntax supports e.g. 1e2L +* Integer syntax supports e.g. 1e2L ([#683](https://github.com/REditorSupport/vscode-R/issues/683)) +* Change License owner +* Update url and author +* Update url and author ([#694](https://github.com/REditorSupport/vscode-R/issues/694)) +* Preview R Markdown files via background process ([#692](https://github.com/REditorSupport/vscode-R/issues/692)) +* RMD Preview fixes ([#699](https://github.com/REditorSupport/vscode-R/issues/699)) +* Update r.rmarkdown.codeLensCommands ([#707](https://github.com/REditorSupport/vscode-R/issues/707)) +* Remove show plot history command ([#706](https://github.com/REditorSupport/vscode-R/issues/706)) +* Add full window mode for plots ([#709](https://github.com/REditorSupport/vscode-R/issues/709)) +* Use ag-grid in data viewer ([#708](https://github.com/REditorSupport/vscode-R/issues/708)) +* Integrate vscode-r-lsp ([#695](https://github.com/REditorSupport/vscode-R/issues/695)) +* prerelease 2.1.0 +* release 2.1.0 +* release 2.1.0 + +**Full Changelog**: + +## 2.0.0 - 2021-06-12 + +### Bug Fixes + +* Fix getCurrentChunk and use chunks.find for most cases + +### Other + +* Use .DollarNames for object with class in completion +* Use `.DollarNames` for object with class in completion ([#660](https://github.com/REditorSupport/vscode-R/issues/660)) +* Code cells in .R files +* Update rmarkdown.ts +* Remove unused languages +* Code cells in .R files ([#662](https://github.com/REditorSupport/vscode-R/issues/662)) +* Squash bugs +* Change source & knit icons +* Jump to cursor +* Remove image files not used +* rmarkdown bug squashing and minor changes ([#663](https://github.com/REditorSupport/vscode-R/issues/663)) +* Bump css-what from 5.0.0 to 5.0.1 +* Bump css-what from 5.0.0 to 5.0.1 ([#664](https://github.com/REditorSupport/vscode-R/issues/664)) +* Bugfix +* LiveShare Functionality ([#626](https://github.com/REditorSupport/vscode-R/issues/626)) +* prerelease 2.0.0 ([#667](https://github.com/REditorSupport/vscode-R/issues/667)) + +**Full Changelog**: + +## 1.6.8 - 2021-05-31 + +### Bug Fixes + +* Fix typo in internal file name +* Fix Webview Identification Function ([#650](https://github.com/REditorSupport/vscode-R/issues/650)) +* Fix bugs in helpviewer ([#658](https://github.com/REditorSupport/vscode-R/issues/658)) + +### Other + +* Fix typo in internal file name ([#643](https://github.com/REditorSupport/vscode-R/issues/643)) +* Revert syntax for lambda +* Revert syntax for lambda ([#657](https://github.com/REditorSupport/vscode-R/issues/657)) +* version 1.6.8 + +**Full Changelog**: + +## 1.6.7 - 2021-05-31 + +### Bug Fixes + +* Fix replacing base::.External.graphics +* Fix Github actions +* fix highlight.js + +### Other + +* Adding markdownlint on extension.json and GitHub Actions ([#591](https://github.com/REditorSupport/vscode-R/issues/591)) +* Fix replacing `base::.External.graphics` ([#625](https://github.com/REditorSupport/vscode-R/issues/625)) +* Integrate httpgd ([#620](https://github.com/REditorSupport/vscode-R/issues/620)) +* Minor fix of README +* Prefer rPath from PATH +* Prefer rPath from PATH ([#649](https://github.com/REditorSupport/vscode-R/issues/649)) +* Improve development workflow ([#641](https://github.com/REditorSupport/vscode-R/issues/641)) +* Don't run chunks with eval = FALSE. Fixes #651 ([#651](https://github.com/REditorSupport/vscode-R/issues/651)) +* Don't run chunks with eval = FALSE. Fixes #651 ([#653](https://github.com/REditorSupport/vscode-R/issues/653), [#651](https://github.com/REditorSupport/vscode-R/issues/651)) +* Add pipe and lambda to syntax +* Update doesLineEndInOperator +* Update R syntax ([#647](https://github.com/REditorSupport/vscode-R/issues/647)) +* prerelease 1.6.7 +* update changelog +* Prerelease 1.6.7 ([#655](https://github.com/REditorSupport/vscode-R/issues/655)) + +**Full Changelog**: + +## 1.6.6 - 2021-04-11 + +### Bug Fixes + +* Fix leading/trailing newlines +* fix package volunerability + +### Other + +* Update vscode engine +* Update vscode engine ([#586](https://github.com/REditorSupport/vscode-R/issues/586)) +* Satisfy markdownlint +* Satisfy markdownlint ([#587](https://github.com/REditorSupport/vscode-R/issues/587)) +* Initial Workspace Viewer str() functionality (#577) +* Initial Workspace Viewer str() functionality ([#583](https://github.com/REditorSupport/vscode-R/issues/583)) +* Thread execute argument through to term.sendText() ([#585](https://github.com/REditorSupport/vscode-R/issues/585)) +* Remove object.size +* Use cache to store object size for objects in globalenv +* Add option vsc.show_object_size +* Update object size when length changes +* Update getSizeString() to be consistent with format() in R +* Being more conservative to call object.size() in task callback ([#581](https://github.com/REditorSupport/vscode-R/issues/581)) +* Send code to debug repl +* Send code to debug repl ([#582](https://github.com/REditorSupport/vscode-R/issues/582)) +* Clarify R path error messages ([#596](https://github.com/REditorSupport/vscode-R/issues/596)) +* Add tasks Check, Document, Install, Test ([#603](https://github.com/REditorSupport/vscode-R/issues/603)) +* shim the rstudioapi if it has already been loaded +* make lintr happy +* shim the rstudioapi if it has already been loaded ([#610](https://github.com/REditorSupport/vscode-R/issues/610)) +* Clarify error messages ([#607](https://github.com/REditorSupport/vscode-R/issues/607)) +* version 1.6.6 + +### Refactor + +* Refactor R code ([#602](https://github.com/REditorSupport/vscode-R/issues/602)) + +**Full Changelog**: + +## 1.6.5 - 2021-03-15 + +### Bug Fixes + +* Fix get_timestamp() so that it will not be affected by e.g. options(digits=3) ([#550](https://github.com/REditorSupport/vscode-R/issues/550)) +* Fix so code can be run after creating terminal +* Fix #572 ([#572](https://github.com/REditorSupport/vscode-R/issues/572)) + +### Other + +* Change workspace tooltip ([#544](https://github.com/REditorSupport/vscode-R/issues/544)) +* add option vsc.hover.str.max.level ([#545](https://github.com/REditorSupport/vscode-R/issues/545)) +* Refactoring and implementation of webviewPanelSerializer ([#556](https://github.com/REditorSupport/vscode-R/issues/556)) +* Scroll to bottom after running a command ([#559](https://github.com/REditorSupport/vscode-R/issues/559)) +* Add option to keep terminal hidden +* Clarify r.source.focus options in description +* Add option to keep terminal hidden after running code ([#566](https://github.com/REditorSupport/vscode-R/issues/566)) +* Check rTerm is defined before showing +* Fix so code can be run after creating terminal ([#567](https://github.com/REditorSupport/vscode-R/issues/567)) +* Move `r.runSource` and `r.knitRmd` to `editor/title/run` (Fix #572) ([#573](https://github.com/REditorSupport/vscode-R/issues/573), [#572](https://github.com/REditorSupport/vscode-R/issues/572)) +* Add links to help pages in hover +* Improve the formatting +* Add links to help pages in hover ([#578](https://github.com/REditorSupport/vscode-R/issues/578)) +* version 1.6.5 +* update vscode engine + +**Full Changelog**: + +## 1.6.4 - 2021-02-01 + +### Other + +* Better error message when reading aliases ([#518](https://github.com/REditorSupport/vscode-R/issues/518)) +* Keep promises and active bindings in globalenv ([#521](https://github.com/REditorSupport/vscode-R/issues/521)) +* (Maybe) Fix Aliases ([#526](https://github.com/REditorSupport/vscode-R/issues/526)) +* add sendToConsole to rstudioapi emulation ([#535](https://github.com/REditorSupport/vscode-R/issues/535)) +* Add updatePackage command ([#532](https://github.com/REditorSupport/vscode-R/issues/532)) +* Add initial pipeline completion support ([#530](https://github.com/REditorSupport/vscode-R/issues/530)) +* Add function to open help for selected text ([#531](https://github.com/REditorSupport/vscode-R/issues/531)) +* Preserve focus when opening help view ([#541](https://github.com/REditorSupport/vscode-R/issues/541)) +* update packages +* version 1.6.4 +* Prerelease version 1.6.4 ([#542](https://github.com/REditorSupport/vscode-R/issues/542)) +* version 1.6.4 + +### Refactor + +* Refactor extension.ts ([#525](https://github.com/REditorSupport/vscode-R/issues/525)) +* refactor import statements + +**Full Changelog**: + +## 1.6.3 - 2021-01-01 + +### Other + +* Implement R workspace viewer ([#476](https://github.com/REditorSupport/vscode-R/issues/476)) +* add a new collaborator +* Conditionally show view ([#487](https://github.com/REditorSupport/vscode-R/issues/487)) +* Enable find widget in WebViews ([#490](https://github.com/REditorSupport/vscode-R/issues/490)) +* Find in topic (help panel) #463 ([#488](https://github.com/REditorSupport/vscode-R/issues/488)) +* Disable alwaysShow for addin items ([#491](https://github.com/REditorSupport/vscode-R/issues/491)) +* Only show R menu items in R view ([#493](https://github.com/REditorSupport/vscode-R/issues/493)) +* Modify pre-release action ([#492](https://github.com/REditorSupport/vscode-R/issues/492)) +* Add browser WebView command buttons ([#494](https://github.com/REditorSupport/vscode-R/issues/494)) +* typo fix +* typo fix ([#500](https://github.com/REditorSupport/vscode-R/issues/500)) +* Improve help view ([#502](https://github.com/REditorSupport/vscode-R/issues/502)) +* releaseAction ([#505](https://github.com/REditorSupport/vscode-R/issues/505)) +* Strict null checking in help related code ([#507](https://github.com/REditorSupport/vscode-R/issues/507)) +* WIP: Pre fixing for version 1.6.3 ([#508](https://github.com/REditorSupport/vscode-R/issues/508)) +* version 1.6.3 + +**Full Changelog**: + +## 1.6.2 - 2020-12-06 + +### Bug Fixes + +* Fix bug that would leave background R processes running ([#475](https://github.com/REditorSupport/vscode-R/issues/475)) +* Fix whole of style (Extends #361) ([#474](https://github.com/REditorSupport/vscode-R/issues/474)) + +### Other + +* Add pre-release ([#468](https://github.com/REditorSupport/vscode-R/issues/468)) +* Improve Help Panel ([#470](https://github.com/REditorSupport/vscode-R/issues/470)) +* RMarkdown: Add run & navigation commands. More customization. Refactor. ([#465](https://github.com/REditorSupport/vscode-R/issues/465)) +* Fixes #443 ([#462](https://github.com/REditorSupport/vscode-R/issues/462)) +* Reorganize helppanel, add `?` function ([#477](https://github.com/REditorSupport/vscode-R/issues/477)) +* Update README for #465 +* Update README for #465 ([#480](https://github.com/REditorSupport/vscode-R/issues/480)) +* Improve style of help pages ([#481](https://github.com/REditorSupport/vscode-R/issues/481)) +* Modify config ([#467](https://github.com/REditorSupport/vscode-R/issues/467)) +* update devreplay rules +* back the previous custom rules +* version 1.6.2 + +**Full Changelog**: + +## 1.6.1 - 2020-11-24 + +### Bug Fixes + +* Fix type in help panel path config +* Fix lint: missing semicolon +* Fix checking workspaceFolders in rHelpProviderOptions + +### Other + +* Don't use rterm as fallback for help panel R path +* Fix typo in help panel path config ([#457](https://github.com/REditorSupport/vscode-R/issues/457)) +* New feature r.runFromLineToEnd +* New feature r.runFromLineToEnd ([#448](https://github.com/REditorSupport/vscode-R/issues/448)) +* Also check length +* Fix checking workspaceFolders in rHelpProviderOptions ([#456](https://github.com/REditorSupport/vscode-R/issues/456)) +* Highlight all chunks +* Highlight all chunks ([#453](https://github.com/REditorSupport/vscode-R/issues/453)) +* Add GitHub Action for release +* Add GitHub Action for release ([#449](https://github.com/REditorSupport/vscode-R/issues/449)) +* Add Rmd fenced_block_* for julia, python, etc +* Rmd fenced block syntax highlighting for julia, python, etc ([#460](https://github.com/REditorSupport/vscode-R/issues/460)) +* Update README: Add options(vsc.helpPanel = ...) +* Update README: Add options(vsc.helpPanel = ...) ([#461](https://github.com/REditorSupport/vscode-R/issues/461)) +* version 1.6.1 + +**Full Changelog**: + +## 1.6.0 - 2020-11-21 + +### Bug Fixes + +* Fix usage of GlobPattern +* Fix leading slash in tmpDir path +* Fix showWebView +* Fix build.yml +* Fix handling group_df in dataview_table +* fix extension tslint to eslint +* fix #265 ([#265](https://github.com/REditorSupport/vscode-R/issues/265)) +* Fix main.yml +* Fix eslint +* fix vlunerability +* fix vscode version +* Fix code formatting +* Fix main.yml +* Fix .lintr +* Fix .Rprofile line length +* fix package dependencies +* fix package-lock.json +* Fix typo in showWebView +* fix devreplay error +* Fix lintr github action +* Fix new test cases +* Fix outFiles in launch.json +* Fix View empty environment +* Fix typo in README.md +* Fix homedir on Windows +* fix for new conventions +* fix config title r to R +* Fix viewer and page_viewer url +* Fix plot viewer +* Fix typo +* Fix typo +* fix dependencies +* Fix previewDataframe for 2+ letter variables +* Fix so rTerm is undefined when deleting terminal +* fix package volunerability +* Fix more functions to use runTextInTerm +* fix package dependencies +* fix webpack for the new webpack interface +* Fix linting message +* fix and enhance navigateToFile +* fix toString -> toString() + +### Other + +* version 1.2.2 +* Update FAQ +* Add logging to session watcher +* Add more logging to session watcher ([#208](https://github.com/REditorSupport/vscode-R/issues/208)) +* updateResponse only handles response when responseLineCount increases +* updateResponse only handles response when responseLineCount changes +* Avoid duplicate handling of response update ([#211](https://github.com/REditorSupport/vscode-R/issues/211)) +* first tslint cleanup +* Update activationEvents +* Update activationEvents +* Update activationEvents ([#224](https://github.com/REditorSupport/vscode-R/issues/224)) +* Add syntax highlighting for R code in Rcpp comment +* Add syntax highlighting for R code in Rcpp comment ([#225](https://github.com/REditorSupport/vscode-R/issues/225)) +* Fixed the function snippet (Issue #230) +* Fixed the function snippet (Issue #230) ([#231](https://github.com/REditorSupport/vscode-R/issues/231)) +* add collaborator +* version 1.2.3 +* update vscode +* Add statement of languageserver features to bug_report.md +* Add statement of languageserver features to bug report template ([#229](https://github.com/REditorSupport/vscode-R/issues/229)) +* string interpolation command runner +* add runCommandWithPath and clean +* swtich to '$$' replacement target, editor paths unquoted +* Add command runner function doco to README +* add quotes to runCommandWithPath example +* handle unsaved and unititled files +* global replace enabled for $$ +* use escaped double quotes in keybinding example +* Add configurable command runner functions ([#237](https://github.com/REditorSupport/vscode-R/issues/237)) +* Minor refine README.md +* Fix leading slash in tmpDir path ([#221](https://github.com/REditorSupport/vscode-R/issues/221)) +* Change platform gui in init.R +* Change .Platform$GUI to vscode on session start ([#234](https://github.com/REditorSupport/vscode-R/issues/234)) +* Inject R Markdown features into Markdown grammar +* Remove non-bracket code chunks from R Markdown grammar +* Inject R Markdown features into Markdown grammar ([#228](https://github.com/REditorSupport/vscode-R/issues/228)) +* version 1.2.4 +* version 1.2.5 +* Check untitled document and save result before running command +* Update code +* Check untitled document and save result before running command ([#239](https://github.com/REditorSupport/vscode-R/issues/239)) +* Fix showWebView ([#246](https://github.com/REditorSupport/vscode-R/issues/246)) +* version 1.2.6 +* Add lint workflows +* Rename lint action name +* Combine lint workflows +* Use GitHub Actions for linting ([#251](https://github.com/REditorSupport/vscode-R/issues/251)) +* Add build.yml +* Combine to single main.yml +* Refine main.yml +* Use GitHub Actions to build extension ([#253](https://github.com/REditorSupport/vscode-R/issues/253)) +* Use Windows registry to find R path +* Refine getRpath +* Update package dependencies +* Add logging +* Use async getRpath() +* Update README.md +* Use Windows registry to find R path ([#252](https://github.com/REditorSupport/vscode-R/issues/252)) +* Fix handling grouped_df in dataview_table ([#248](https://github.com/REditorSupport/vscode-R/issues/248)) +* try to adding eslint +* version 1.2.7 +* try to adding eslint ([#254](https://github.com/REditorSupport/vscode-R/issues/254)) +* Add wiki link on README +* support single quote +* add backtick support +* Support single quote (Fix #260) ([#264](https://github.com/REditorSupport/vscode-R/issues/264), [#260](https://github.com/REditorSupport/vscode-R/issues/260)) +* Use eslint in GitHub Actions +* Update package-lock.json +* Use setup-node +* Use eslint in GitHub Actions ([#266](https://github.com/REditorSupport/vscode-R/issues/266)) +* Add languages embedded in markdown +* Add surround support for R Markdown files +* Add backtick support for R documentation files +* Remove backtick auto-closing pair for R Markdown +* Add R Markdown surround and frontmatter comments ([#269](https://github.com/REditorSupport/vscode-R/issues/269)) +* update eslint rules +* back tsconfig and remove tslint +* version 1.2.8 +* Update lintr +* Fix R code formatting according to linting results ([#278](https://github.com/REditorSupport/vscode-R/issues/278)) +* Use env to specify vsix file in github actions build +* Make rebind also work in attached packages +* Make rebind also work with attached packages ([#268](https://github.com/REditorSupport/vscode-R/issues/268)) +* Make plot update more smart using magic null dev size +* Refine code +* Make plot update smarter using magic null dev size ([#274](https://github.com/REditorSupport/vscode-R/issues/274)) +* lintr action error on any non-empty lintr result +* Fix lintr action ([#280](https://github.com/REditorSupport/vscode-R/issues/280)) +* Remove --no-site-file from default r.rterm.option +* Remove --no-site-file from default r.rterm.option ([#284](https://github.com/REditorSupport/vscode-R/issues/284)) +* Source Rprofile.site at last +* Remove Rprofile.site +* Update .Rprofile +* Update .Rprofile +* Improve .Rprofile ([#282](https://github.com/REditorSupport/vscode-R/issues/282)) +* update vscode engine +* Change so setting changes take effect immediately ([#301](https://github.com/REditorSupport/vscode-R/issues/301)) +* version 1.3.0 +* update contributing.md +* Refine .Rprofile +* Refine .Rprofile to remove unnecessary printing in R startup message. ([#303](https://github.com/REditorSupport/vscode-R/issues/303)) +* Change runTextInTerm to string from string[] +* Change signatures to string from string[] +* Simplify removeCommentedLines +* Use bracketed paste for more commands #294 ([#305](https://github.com/REditorSupport/vscode-R/issues/305)) +* Add command Run from Beginning to Line +* Add command Run from Beginning to Line ([#290](https://github.com/REditorSupport/vscode-R/issues/290)) +* add devreplay +* Making the vscode-r original coding conventions ([#308](https://github.com/REditorSupport/vscode-R/issues/308)) +* merge 3 repeated keyword.operator.comparison.r in r.json file. +* merge 3 repeated keyword.operator.comparison.r in r.json file. ([#311](https://github.com/REditorSupport/vscode-R/issues/311)) +* Fix typo in showWebView ([#310](https://github.com/REditorSupport/vscode-R/issues/310)) +* No remove blank or comment lines +* Remove removeCommentedLines as unused +* Remove checkForBlankOrComment as unused +* No remove blank or comment lines ([#313](https://github.com/REditorSupport/vscode-R/issues/313)) +* Add vscode-test dependency +* Update package-lock.json after adding vscode-test +* Update scripts for test and pretest +* Add runTest.ts and index.ts for new test format +* Remove old format test index.ts +* Move test file +* Update path +* Change double quotes to single quotes +* Update tsconfig.json for new test format +* Remove launch configuration Launch Tests +* Ignore .vscode-test +* Add test to github actions +* Refine test github action +* Migrate to vscode-test #315 ([#317](https://github.com/REditorSupport/vscode-R/issues/317)) +* Fix lintr github action ([#319](https://github.com/REditorSupport/vscode-R/issues/319)) +* extendSelection only handles brackets outside quotes +* Add test cases for extendSelection and fix formatting +* Refine condition flow +* Add test/*.ts to eslint +* Refine eslint github action +* extendSelection only handles brackets outside quotes ([#314](https://github.com/REditorSupport/vscode-R/issues/314)) +* Add r.runSelectionRetainCursor +* Add r.runSelectionRetainCursor ([#325](https://github.com/REditorSupport/vscode-R/issues/325)) +* Add launch tests to launch.json +* Update launch.json +* Update tasks.json and launch.json +* Update launch.json and tasks.json +* Update launch.json and tasks.json +* Add launch tests to launch.json ([#320](https://github.com/REditorSupport/vscode-R/issues/320)) +* supress auto-opening quote in roxygen comment +* supress auto-opening quote in roxygen comment ([#328](https://github.com/REditorSupport/vscode-R/issues/328)) +* converted Rmd file to json format +* converted Rcpp language file to json +* converted RD language file to json +* converted indentation to spaces to be consistent +* Convert language files to Json ([#333](https://github.com/REditorSupport/vscode-R/issues/333)) +* exposure send text delay as a parameter +* changed description of rtermsenddelay; stopped multiple config reads +* expose send text delay as a parameter ([#336](https://github.com/REditorSupport/vscode-R/issues/336)) +* Added functionality to switch to active R terminal +* fixed rTermNameOptions typo +* updated to select last created Rterminal +* Added functionality to switch to an existing R terminal ([#338](https://github.com/REditorSupport/vscode-R/issues/338)) +* added functionality to search PATH in mac/linux +* updated to auto detect R on windows as well +* added missing argument type +* Enable default R location to be used on mac/linux if none is supplied ([#340](https://github.com/REditorSupport/vscode-R/issues/340)) +* add dcf +* add syntax highlight for DESCRIPTION and .Rproj ([#342](https://github.com/REditorSupport/vscode-R/issues/342)) +* Define lint in package.json and use it in GitHub Actions +* Update main.yml +* Define lint in package.json and use it in GitHub Actions ([#344](https://github.com/REditorSupport/vscode-R/issues/344)) +* version 1.4.0 +* Fix View empty environment ([#350](https://github.com/REditorSupport/vscode-R/issues/350)) +* Use fs.watch instead of vscode.FileSystemWatcher +* Only handle request of R session started from workspace folders or subfolders +* Use request lock file to avoid partial change +* Use plot.lock and globalenv.lock +* Update README.md +* Update init.R +* Not source init.R in RStudio +* Use fs.watch instead of vscode.FileSystemWatcher ([#348](https://github.com/REditorSupport/vscode-R/issues/348)) +* Improve getBrowserHtml +* Improve getBrowserHtml ([#353](https://github.com/REditorSupport/vscode-R/issues/353)) +* Change runSelectionInActiveTerm effect to warning +* Change runSelectionInActiveTerm effect to warning ([#351](https://github.com/REditorSupport/vscode-R/issues/351)) +* update/remove packages +* version 1.4.1 +* Initial rewrite of init.R +* Rewrite session watcher +* Update init.R +* Update options +* Update options +* Update options +* Use viewer === false to open externally +* Clean up and use .vsc.attach() +* Support htmlwidget input and title in viewer and page_viewer +* Rename parseResult to request +* normalizePath in webview +* Session watcher options ([#359](https://github.com/REditorSupport/vscode-R/issues/359)) +* Remove single quote from doesLineEndInOperator +* Add test cases for extendSelection with quotes +* Remove single quote from doesLineEndInOperator ([#357](https://github.com/REditorSupport/vscode-R/issues/357)) +* update CHANGELOG for following #359 +* Update changelog +* Update changelog ([#362](https://github.com/REditorSupport/vscode-R/issues/362)) +* version 1.4.2 +* update change log links +* Add session watcher functions and options to README +* Update README +* Update README +* Update README +* Update README +* Update README +* Update README +* Fix plot viewer ([#365](https://github.com/REditorSupport/vscode-R/issues/365)) +* Minor update readme +* Accept all dir when no workspace folder is open +* Only accept session started from home folder +* Handle undefined workspace folders ([#367](https://github.com/REditorSupport/vscode-R/issues/367)) +* On Mac & Linux, rely on PATH being set up +* Update package.json +* On Mac & Linux, rely on PATH being set up ([#374](https://github.com/REditorSupport/vscode-R/issues/374)) +* version 1.4.3 +* update webpack options +* update mocha option +* version 1.4.4 +* Fix previewDataframe for 2+ letter variables ([#390](https://github.com/REditorSupport/vscode-R/issues/390)) +* fixed typo and added sep choice +* fixed typo and added sep choice ([#397](https://github.com/REditorSupport/vscode-R/issues/397)) +* Fix so rTerm is undefined when deleting terminal ([#403](https://github.com/REditorSupport/vscode-R/issues/403)) +* Restore R_PROFILE_USER +* Restore R_PROFILE_USER ([#392](https://github.com/REditorSupport/vscode-R/issues/392)) +* Remove Ctrl + 1, 2, 3, 4, 5 shortcuts +* Update CHANGELOG for removing Ctrl + 1, 2, 3, 4, 5 +* Remove Ctrl + 1, 2, 3, 4, 5 shortcuts ([#401](https://github.com/REditorSupport/vscode-R/issues/401)) +* version 1.4.5 +* Check url in browser +* Use path_to_uri in browser +* Check url in browser ([#406](https://github.com/REditorSupport/vscode-R/issues/406)) +* Remove active parameter from chooseTerminal() +* Remove term parameter from runTextInTerm() +* Remove chooseTerminalAndSendText() +* Remove term parameter from runSelectionInTerm() +* Remove command runSelectionInActiveTerm +* Remove trailing whitespace +* Remove command Run Selection/Line in Active Terminal ([#409](https://github.com/REditorSupport/vscode-R/issues/409)) +* Remove Run in Active Terminal from README +* Remove Run in Active Terminal from README ([#413](https://github.com/REditorSupport/vscode-R/issues/413)) +* version 1.4.6 +* update change log +* Recommend radian in README +* Recommend radian in README ([#420](https://github.com/REditorSupport/vscode-R/issues/420)) +* RStudio Addin Support ([#408](https://github.com/REditorSupport/vscode-R/issues/408)) +* remove winattr for the character error +* add missed file +* version 1.5.0 +* make update addin registry a safe call +* tested glitch protection in addin.dcf read +* supply actual version numbers to keep {cli} happy +* require rstudioapi emulation be enabled via option +* note about option in README +* move tryCatch to dcf read/parse +* move guards for vsc.rstudioapi +* move rstudioapi_enabled to init.R +* lintr fixes +* don't need active rTerm +* Fix issues in rstudioapi emulation ([#422](https://github.com/REditorSupport/vscode-R/issues/422)) +* Rename init functions +* Rename init functions ([#425](https://github.com/REditorSupport/vscode-R/issues/425)) +* version 1.5.1 +* Use help_type='html' only when unspecified +* Print url before sending browser request to trigger auto port-forwarding +* Improve handling html help ([#427](https://github.com/REditorSupport/vscode-R/issues/427)) +* fix and enhance navigateToFile ([#430](https://github.com/REditorSupport/vscode-R/issues/430)) +* Enhance R markdown support ([#429](https://github.com/REditorSupport/vscode-R/issues/429)) +* version 1.5.2 +* Add runAboveChunks command +* Drop empty chunks in runChunksInTerm +* Send trimmed text from chunks +* Add runAboveChunks command ([#434](https://github.com/REditorSupport/vscode-R/issues/434)) +* patform independent content string splitting +* nicer error when can't find list of rstudio addins +* platform independent content string splitting ([#436](https://github.com/REditorSupport/vscode-R/issues/436)) +* Merge remote-tracking branch 'upstream/master' +* remove full stop +* Friendly error message when trying to launch addin picker and vsc.rstudioapi = FALSE ([#441](https://github.com/REditorSupport/vscode-R/issues/441)) +* Send code at EOF appends new line +* Send code at EOF appends new line ([#444](https://github.com/REditorSupport/vscode-R/issues/444)) +* Add terminal information to chooseTerminal error ([#447](https://github.com/REditorSupport/vscode-R/issues/447)) +* Integrate help view from vscode-R-help ([#433](https://github.com/REditorSupport/vscode-R/issues/433)) +* version 1.6.0 + +### Refactor + +* refactor + +### Styling + +* style fix + +**Full Changelog**: + +## 1.2.1-20200124-625ae35 - 2020-01-24 + +### Bug Fixes + +* fix PositionNeg implementation +* fix depencency +* fix defaul runSelection +* fix SetFocus to choose terminal +* Fix to allow creation of first terminal +* Fix check for Excel Viewer extension +* fix for valunerability +* Fix for R markdown config +* Fix Preview Environment for multi-class objects +* Fix Preview Environment for variable x +* fix for tslint +* fix package dependencies +* fix behaviour when workplacefolders is Undefiend +* fix LICENSE to MIT +* fix vlunerable packages +* Fix function call closing bracket highlight +* Fix typo in init.R +* Fix for tslint +* Fix error message +* Fix bootstrap dependency +* Fix #168 ([#168](https://github.com/REditorSupport/vscode-R/issues/168)) +* Fix session watcher init.R path on Windows +* Fix typo +* Fix typo +* fix style +* Fix type check for completion of function +* Fix usage of CancellationToken +* Fix WebView Uri replacing +* Fix dataview_table handling single row data + +### Other + +* Update ISSUE_TEMPLATE.md +* add wordPattern (fixed #75) ([#75](https://github.com/REditorSupport/vscode-R/issues/75)) +* version 0.6.2 +* sorry, I can not continue support +* version 1.0.1 +* version 1.0.2 +* Update issue templates +* Create PULL_REQUEST_TEMPLATE.md +* Update bug_report.md +* typo +* Preview Dataframe checks for whitespace +* Preview Dataframe command works again +* Fix Preview Dataframe command #67 ([#97](https://github.com/REditorSupport/vscode-R/issues/97)) +* version 1.0.3 +* Adapt runSelection to use RCommands as Shortcut +* Adapt runSelection to use RCommands as Shortcut ([#101](https://github.com/REditorSupport/vscode-R/issues/101)) +* version 1.0.4 +* version 1.0.5 +* Add runSelectionInActiveTerm +* Add first terminal check to chooseTerminal +* Add animation showing SSH use +* Add runSelectionInActiveTerm command #80 #102 ([#104](https://github.com/REditorSupport/vscode-R/issues/104)) +* miss to merge +* version 1.0.7 +* .gitignore is now working +* version 1.0.8 +* Fix check for Excel Viewer extension #96 ([#108](https://github.com/REditorSupport/vscode-R/issues/108)) +* add gc-excel installer +* version 1.0.9 +* version 1.1.0 +* Fix Preview Environment for multi-class objects #111 ([#113](https://github.com/REditorSupport/vscode-R/issues/113)) +* Fix Preview Environment for variable x #111 ([#115](https://github.com/REditorSupport/vscode-R/issues/115)) +* version 1.1.1 +* version 1.1.2 +* Add bracketed paste mode option +* Do not send blank lines to console +* Fix send code for newlines and Radian #114 #117 ([#119](https://github.com/REditorSupport/vscode-R/issues/119)) +* Added Rmd knit shortcut +* Add knit to PDF command +* Added HTMl and all as Knit options +* Remove icons for all but Knit default +* RMarkdown knit support ([#122](https://github.com/REditorSupport/vscode-R/issues/122)) +* version 1.1.3 +* Fixed spelling, improved formatting +* Fixed spelling, improved formatting ([#129](https://github.com/REditorSupport/vscode-R/issues/129)) +* Automatically comment new lines in roxygen sections +* Automatically comment new lines in roxygen sections #124 ([#130](https://github.com/REditorSupport/vscode-R/issues/130)) +* Do not send blank lines ending in CRLF to console +* Fix send code for newlines on Windows #114 ([#125](https://github.com/REditorSupport/vscode-R/issues/125)) +* add roxygen comments +* Add auto-completion of roxygen tags +* Add auto-completion of roxygen tags #128 ([#131](https://github.com/REditorSupport/vscode-R/issues/131)) +* Change cursorMove +* Change cursorMove to wrappedLineFirstNonWhitespaceCharacter ([#127](https://github.com/REditorSupport/vscode-R/issues/127)) +* version 1.1.4 +* replace deprecated function +* Remove redundant functions +* Move send text functions into rTerminal +* Add alwaysUseActiveTerminal setting +* Add alwaysUseActiveTerminal to README, templates +* Add alwaysUseActiveTerminal setting #123 ([#133](https://github.com/REditorSupport/vscode-R/issues/133)) +* version 1.1.5 +* Show r.term.option value in settings UI +* Show r.term.option value in settings UI ([#136](https://github.com/REditorSupport/vscode-R/issues/136)) +* fix behaviour when workplacefolders is Undefiend ([#138](https://github.com/REditorSupport/vscode-R/issues/138)) +* refactoring +* version 1.1.6 +* remove duplicated quote #139 +* version 1.1.7 +* Use word under cursor for previewDataframe, nrow +* Apply functions once instead of to each line +* remove extra calling +* Use word under cursor for previewDataframe, nrow #137 ([#141](https://github.com/REditorSupport/vscode-R/issues/141)) +* Delete LICENSE +* Create LICENSE +* version 1.1.8 +* version 1.1.8 +* Delete LICENSE +* Send code all at once in bracketed paste mode +* Use no bracketed paste characters on Windows +* Fix bracketed paste on Windows ([#149](https://github.com/REditorSupport/vscode-R/issues/149)) +* Fix function call closing bracket highlight ([#151](https://github.com/REditorSupport/vscode-R/issues/151)) +* version 1.1.9 +* Hover works with update +* Attach active command switches session +* Detects changes to plot +* First implementation of showWebView +* Not change pid on webview response +* Use vscode.open to open plot file on update +* Markdown hover text +* Update view column +* Update webview options +* Use console logging +* start log watcher on activation +* Add status bar item +* Update status bar +* Add session init R script +* Add opt-in r.sessionWatcher option +* Implement deploySessionWatcher +* Read file in async method +* Refine updateSessionWatcher +* Remove unused data output init.R +* Add plot hook in session init.R to support ggplot2 +* Remove session files on terminal close +* Add rebind to init.R +* Add time stamp in respond +* Implement showDataView +* Force color in showWebView +* Update table class +* Refine table font size +* Include dataview resources +* Support View matrix +* Not rely on tempdir(check=TRUE) which requires R >= 3.5.0 +* Support browser command +* Add portMapping to WebView created in showBrowser +* Change name and title of browser WebView +* Change WebView title of browser +* Use workspaceFolders instead of deprecated rootPath +* Use WebView.asWebviewUri +* Use WebView.asWebviewUri +* Add R session watcher section to README.md +* Update README.md +* Use json for View(data.frame) +* Refine table_to_json in init.R +* Check windows in source script +* Check if init.R already sourced +* Use DataTables JS sourced data for View(data.frame) +* Refine showDataView +* remove outside files +* Use webpack to copy resources to dist +* Remove resources folder as no longer needed +* Update README.md +* Use column.type to fix ordering in View +* R session watcher ([#150](https://github.com/REditorSupport/vscode-R/issues/150)) +* version 1.2.0 +* Use empty order when creating DataTables in getTableHtml +* Use empty order when creating DataTables in getTableHtml ([#157](https://github.com/REditorSupport/vscode-R/issues/157)) +* Use utils::str in init.R ([#169](https://github.com/REditorSupport/vscode-R/issues/169)) +* Fix session watcher init.R path on Windows ([#177](https://github.com/REditorSupport/vscode-R/issues/177)) +* Support View(environment) +* Add initial support of View(function) +* Handle function in showDataView +* Support View any object +* Support View list that cannot be converted to json +* Make init.R more robust +* Make init.R more robust +* Refine init.R and use html help by default +* Use retainContextWhenHidden in all WebViews +* Update init.R +* Use FixedHeader extension in View(data.frame) +* Add row id to dataview_table for table without row names +* Extend View ([#161](https://github.com/REditorSupport/vscode-R/issues/161)) +* version 1.2.1 +* Update issue templates +* Provide completion for session symbols +* Update README.md +* Provide completion for elements in list-like objects +* Implement bracket completions +* Unify completion provider +* Use tryCatch in update +* Provide bracket completion with condition +* Provide completion for session symbols ([#165](https://github.com/REditorSupport/vscode-R/issues/165)) +* Initial implementation of plot history +* Make image viewer center of page +* Update plot history WebView and resources +* Add some error handling +* Show plot history ([#181](https://github.com/REditorSupport/vscode-R/issues/181)) +* Add row hover and select +* Use table-active as selected row style +* Add row hover and select ([#186](https://github.com/REditorSupport/vscode-R/issues/186)) +* Fix WebView Uri replacing ([#188](https://github.com/REditorSupport/vscode-R/issues/188)) +* Show page_viewer WebView in Active column +* Show WebView triggered by page_viewer in Active column ([#189](https://github.com/REditorSupport/vscode-R/issues/189)) +* Fix dataview_table handling single row data ([#198](https://github.com/REditorSupport/vscode-R/issues/198)) +* Use dev.args option when creating png device before replay +* Use dev.args option when creating png device before replay ([#182](https://github.com/REditorSupport/vscode-R/issues/182)) +* Update session watcher section in README.md +* Update README.md +* Update README.md +* Update README.md +* Add link and short description of radian +* Use R_PROFILE_USER +* init.R only work with TERM_PROGRAM=vscode +* Update README.md +* Respect existing R_PROFILE_USER +* Update README.md +* Update README.md +* Improve session watcher initialization ([#184](https://github.com/REditorSupport/vscode-R/issues/184)) + +### Refactor + +* refactor +* refactor and add webpack + +### Styling + +* style fix + +**Full Changelog**: + +## 0.6.1 - 2018-08-17 + +### Bug Fixes + +* Fix for #42 +* fix CO +* fix #65 ([#65](https://github.com/REditorSupport/vscode-R/issues/65)) +* fix tsconfig to publish +* fix dependencies +* fix categories +* fix dependency and lintr +* fix readability + +### Other + +* update dependency +* Fix for #42 ([#63](https://github.com/REditorSupport/vscode-R/issues/63)) +* revert fix +* version 0.5.8 +* version 0.5.9 +* remove lint function +* version 0.6.0 +* Issue 26: Added detection of bracket and pipe blocks. +* Issue 26: Added detection of bracket and pipe blocks. ([#82](https://github.com/REditorSupport/vscode-R/issues/82)) +* version 0.6.1 + +**Full Changelog**: + +## 0.5.7 - 2018-04-22 + +### Bug Fixes + +* fix grammer based on atom +* Fix for #61 + +### Other + +* update some dependencies +* version 0.5.6 +* disable lintr from default +* Additional Fix #61 ([#61](https://github.com/REditorSupport/vscode-R/issues/61)) +* version 0.5.7 + +### Refactor + +* refactor + +**Full Changelog**: + +## 0.5.5 - 2018-03-21 + +### Other + +* Add package dev commands +* Add package dev commands ([#58](https://github.com/REditorSupport/vscode-R/issues/58)) +* version 0.5.5 + +**Full Changelog**: + +## 0.5.4 - 2018-02-17 + +### Bug Fixes + +* fix +* fix lint +* fix Readme +* fix change log +* fix import order +* fix R syntax grammer +* fix light icon path +* Fix syntax +* fix by tslint +* fix lintr issue on windows +* fix document style +* fix default rterm.option +* fix default rterm +* fix snippets + +### Other + +* Update README.md +* Update README.md +* Update README.md +* add shortcut +* version 0.4.0 +* source r short cut +* add SourcewithEcho +* version 0.4.2 +* init next function +* Added dataframe viewer +* Added sample data sets to demonstrate 5mb bug +* Mac and Linux hidden folder and disposal +* Cleaned up Preview Dataframe +* Cleaned package.json +* Restored package.json +* Added DS_Store to .gitignore +* Removed DS_Store +* Added Dataviewer Command ([#20](https://github.com/REditorSupport/vscode-R/issues/20)) +* version 0.4.3 +* lint fix +* add run source icon +* version 0.4.4 +* add document +* Create CODE_OF_CONDUCT.md +* Added data frame preview GIF +* Added Data frame GIF as img +* Corrected Markdown to Display GIF +* little fix +* update run icon(fix #21) ([#21](https://github.com/REditorSupport/vscode-R/issues/21)) +* remove extra test +* Fixed dataframe preview on win32; hidden folder and longer write wait +* Updated Dataframe Preview filesize limit +* remove extra dependencies +* Merge remote-tracking branch 'upstream/master' +* Update TODO +* version 0.4.5 +* Environment preview #23 +* version 0.4.5 +* remove extra files +* update typescript version +* update syntax +* mobr test files +* Update Readme and vesion up +* update some snippets from VS +* Attend win short cut +* version 0.4.8 +* Create ISSUE_TEMPLATE.md +* Slowed commands being pushed on RTerm +* Removed new line +* Proposed fix for Load Chunk problems #27 ([#31](https://github.com/REditorSupport/vscode-R/issues/31)) +* Added block detection and execute whole block +* Added warning if R client is not located. Corrected space in warning +* Added block detection and execute whole block ([#32](https://github.com/REditorSupport/vscode-R/issues/32)) +* add white space +* add shebang support for R syntax highlight ([#33](https://github.com/REditorSupport/vscode-R/issues/33)) +* update snippets +* version 0.4.9 +* support lint package +* version 0.5.0 +* fix lintr issue on windows ([#35](https://github.com/REditorSupport/vscode-R/issues/35)) +* return lintr code +* support code region +* version 0.5.1 +* little fix +* version 0.5.2 +* version 0.5.3 +* R term name to R interactive (fix #46) ([#46](https://github.com/REditorSupport/vscode-R/issues/46)) +* Send code from Rmd chunk to terminal #49 +* version 0.5.4 + +### Refactor + +* refactor +* refactor +* refactor +* refactor +* refactor + +**Full Changelog**: + +## 0.3.9 - 2017-07-08 + +### Bug Fixes + +* fix +* fix +* fix lintr + +### Other + +* Added cursorMove down on line execution +* Don't pass Rterm comments +* Cleaned up skip comments +* Added cursorMove after line execution +* Update extension.ts +* Added cursorMove after line execution ([#13](https://github.com/REditorSupport/vscode-R/issues/13)) +* Don't pass Rterm comments ([#14](https://github.com/REditorSupport/vscode-R/issues/14)) +* version 0.3.8 +* update logo +* version 0.3.9 + +**Full Changelog**: + +## 0.3.7 - 2017-07-02 + +### Other + +* auto lintr +* version v0.3.7 + +**Full Changelog**: + +## 0.3.6 - 2017-06-23 + +### Bug Fixes + +* fix +* fix syntax +* fix #7 ([#7](https://github.com/REditorSupport/vscode-R/issues/7)) + +### Other + +* version 0.3.5 +* update +* little fix syntax +* version 0.3.6 + +### Refactor + +* refactor + +**Full Changelog**: + +## 0.3.4 - 2017-06-17 + +### Bug Fixes + +* fix something + +### Other + +* clean +* Merge pull request #1 from Ikuyadeu/master +* Fixed typos +* Fixed typos +* Fixed typos +* Fixing typos ([#12](https://github.com/REditorSupport/vscode-R/issues/12)) +* use rbox +* version 0.3.1 +* version 0.3.4 + +**Full Changelog**: + +## 0.3.1 - 2017-06-15 + +### Bug Fixes + +* fix #9 ([#9](https://github.com/REditorSupport/vscode-R/issues/9)) + +### Other + +* version 0.3.1 + +**Full Changelog**: + +## 0.3.0 - 2017-06-09 + +### Bug Fixes + +* fix lintr onMac +* fix lintr output + +### Other + +* version 0.2.9 +* update package +* version 0.3.0 + +**Full Changelog**: + +## 0.2.8 - 2017-06-04 + +### Other + +* add runSelection/Line +* version 0.2.8 + +**Full Changelog**: + +## 0.2.7 - 2017-06-04 + +### Other + +* update based project in README.md +* tslint +* set focus #5 +* version 0.2.7 + +**Full Changelog**: + +## 0.2.6 - 2017-06-02 + +### Bug Fixes + +* fix Terminal type +* fix #1 ([#1](https://github.com/REditorSupport/vscode-R/issues/1)) +* fix keywords +* fix for windows +* fix +* fix #2 ([#2](https://github.com/REditorSupport/vscode-R/issues/2)) + +### Other + +* update icon +* Create LICENCE +* add license +* version 0.1.8 +* add tslint +* setup use lintr +* support lintr +* version 0.2.0 +* add install lintr +* version 0.2.1 +* Delete vsc-extension-quickstart.md +* version 0.2.2 +* add option +* version 0.2.3 +* update README.md +* version 0.2.4 +* add selectedLine +* version 0.2.5 +* add keywords +* Add support for custom encoding (so that UTF-8 scripts can be executed properly) +* Custom encoding support ([#4](https://github.com/REditorSupport/vscode-R/issues/4)) +* add lintr term +* update r-snippets.json from atom language-r +* save before Run Source +* update README.md +* version 0.2.6 + +**Full Changelog**: + +## 0.1.3 - 2017-05-03 + +### Bug Fixes + +* fix perform + +### Other + +* v0.1.3 + +**Full Changelog**: + +## 0.1.2 - 2017-04-30 + +### Bug Fixes + +* fix Readme.md + +### Other + +* update summary in package and readme +* update package.json +* version 0.1.2 + +**Full Changelog**: + +## 0.1.1 - 2017-04-29 + +### Bug Fixes + +* fix change log +* fix run r perform +* fix for unix os + +### Other + +* version 0.0.9 +* update figure +* support r gitignore +* version 1.1 + +**Full Changelog**: + +## 0.0.8 - 2017-04-11 + +### Other + +* remove rd-snippets +* add rmd snippets +* version 0.0.8 + +**Full Changelog**: + +## 0.0.7 - 2017-04-09 + +### Bug Fixes + +* fix readme +* fix readme + +### Other + +* update document +* update document +* support R Markdown +* version 0.0.7 + +**Full Changelog**: + +## 0.0.6 - 2017-04-07 + +### Other + +* make create R terminal +* integrated R +* version 0.0.6 + +**Full Changelog**: + +## 0.0.5 - 2017-04-05 + +### Bug Fixes + +* fix Run .R +* fix test.r +* fix extension's name +* fix summary +* fix publisher + +### Other + +* init +* add contributes +* update package.json +* add runR +* Update README.md +* createRterm only name +* set multi platform +* Tool to Tools +* update configuration +* add repository +* add feature.png +* Update README.md +* add icon +* update version +* support R doumantation +* version 0.0.3 +* add snippets +* version 0.0.4 +* support rd-snippets +* version 0.0.5 See [CHANGELOG.old.md](https://github.com/REditorSupport/vscode-R/blob/master/CHANGELOG.old.md) for changes before v2.8.5. From 4e1ca8bf76f23a843bfe880b1a0de5a732ea59a0 Mon Sep 17 00:00:00 2001 From: Randy Lai Date: Tue, 24 Mar 2026 13:13:02 -0700 Subject: [PATCH 24/74] feat(sess): migrate session watcher to WebSockets/JSON-RPC 2.0 Introduce the 'sess' R package for WebSocket IPC, implement terminal orchestration, and modernize the session watcher architecture for improved reliability and performance. --- package.json | 125 +-- sess/.lintr | 7 + sess/DESCRIPTION | 19 + sess/NAMESPACE | 6 + sess/R/dispatch.R | 81 ++ sess/R/handlers.R | 155 ++++ sess/R/hooks.R | 297 +++++++ sess/R/rstudioapi.R | 444 +++++++++++ sess/R/server.R | 134 ++++ sess/R/utils.R | 48 ++ sess/R/zzz.R | 1 + sess/README.md | 177 +++++ sess/man/notify_client.Rd | 16 + sess/man/register_hooks.Rd | 16 + sess/man/request_client.Rd | 16 + sess/man/rpc_send.Rd | 22 + sess/man/sess_app.Rd | 20 + src/extension.ts | 21 +- src/helpViewer/cran.ts | 1 - src/languageService.ts | 6 +- src/plotViewer/httpgdViewer.ts | 632 +++++++++++++++ src/plotViewer/index.ts | 852 ++------------------ src/plotViewer/standardViewer.ts | 179 +++++ src/plotViewer/types.ts | 15 + src/plotViewer/webview/index.ejs | 25 + src/plotViewer/webview/index.ts | 238 ++++++ src/plotViewer/webview/smallPlot.ejs | 15 + src/plotViewer/webview/style.css | 136 ++++ src/plotViewer/webview/styleOverwrites.css | 15 + src/plotViewer/webview/vars.css | 470 +++++++++++ src/plotViewer/webviewMessages.ts | 66 ++ src/rTerminal.ts | 16 +- src/session.ts | 861 +++++++++++---------- src/webViewer/index.ts | 76 ++ src/webViewer/webview/index.ts | 84 ++ src/webViewer/webview/style.css | 13 + src/webViewer/webviewMessages.ts | 31 + 37 files changed, 4055 insertions(+), 1281 deletions(-) create mode 100644 sess/.lintr create mode 100644 sess/DESCRIPTION create mode 100644 sess/NAMESPACE create mode 100644 sess/R/dispatch.R create mode 100644 sess/R/handlers.R create mode 100644 sess/R/hooks.R create mode 100644 sess/R/rstudioapi.R create mode 100644 sess/R/server.R create mode 100644 sess/R/utils.R create mode 100644 sess/R/zzz.R create mode 100644 sess/README.md create mode 100644 sess/man/notify_client.Rd create mode 100644 sess/man/register_hooks.Rd create mode 100644 sess/man/request_client.Rd create mode 100644 sess/man/rpc_send.Rd create mode 100644 sess/man/sess_app.Rd create mode 100644 src/plotViewer/httpgdViewer.ts create mode 100644 src/plotViewer/standardViewer.ts create mode 100644 src/plotViewer/types.ts create mode 100644 src/plotViewer/webview/index.ejs create mode 100644 src/plotViewer/webview/index.ts create mode 100644 src/plotViewer/webview/smallPlot.ejs create mode 100644 src/plotViewer/webview/style.css create mode 100644 src/plotViewer/webview/styleOverwrites.css create mode 100644 src/plotViewer/webview/vars.css create mode 100644 src/plotViewer/webviewMessages.ts create mode 100644 src/webViewer/index.ts create mode 100644 src/webViewer/webview/index.ts create mode 100644 src/webViewer/webview/style.css create mode 100644 src/webViewer/webviewMessages.ts diff --git a/package.json b/package.json index d9d5fc63..501e2a82 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "r", "displayName": "R", "description": "R Extension for Visual Studio Code", - "version": "2.8.8", + "version": "3.0.0-rc.0", "author": "REditorSupport", "license": "SEE LICENSE IN LICENSE", "publisher": "REditorSupport", @@ -26,7 +26,7 @@ "R Markdown" ], "engines": { - "vscode": "^1.75.0" + "vscode": "^1.110.0" }, "activationEvents": [ "workspaceContains:**/*.{rproj,Rproj,r,R,rd,Rd,rmd,Rmd}", @@ -393,9 +393,14 @@ "command": "r.generateCCppProperties" }, { - "title": "Attach Active Terminal", + "title": "Activate R Session", "category": "R", - "command": "r.attachActive" + "command": "r.activateRSession" + }, + { + "title": "Connect to R Session", + "category": "R", + "command": "r.connectToSession" }, { "title": "Run Command With Selection or Word in Terminal", @@ -1615,26 +1620,26 @@ "r.session.useWebServer": { "type": "boolean", "default": false, - "markdownDescription": "Enable experimental use of web server in the R session to handle session requests from the extension. Changes the option `vsc.use_webserver` in R. Requires `#r.sessionWatcher#` to be set to `true`. Requires the `httpuv` R package." + "markdownDescription": "Enable experimental use of web server in the R session to handle session requests from the extension. Requires `#r.sessionWatcher#` to be set to `true`. Requires the `httpuv` R package." }, "r.session.watchGlobalEnvironment": { "type": "boolean", "default": true, - "markdownDescription": "Watch the global environment to provide hover, autocompletions, and workspace viewer information. Changes the option `vsc.globalenv` in R. Requires `#r.sessionWatcher#` to be set to `true`." + "markdownDescription": "Watch the global environment to provide hover, autocompletions, and workspace viewer information. Requires `#r.sessionWatcher#` to be set to `true`." }, "r.session.objectLengthLimit": { "type": "integer", "default": 2000, - "markdownDescription": "The upper limit of object length to show object details in workspace viewer and provide session symbol completion. Decrease this value if you experience significant delay after executing R commands caused by large global objects with many elements. Changes the option `vsc.object_length_limit` in R. Requires `#r.sessionWatcher#` to be set to `true`." + "markdownDescription": "The upper limit of object length to show object details in workspace viewer and provide session symbol completion. Decrease this value if you experience significant delay after executing R commands caused by large global objects with many elements. Requires `#r.sessionWatcher#` to be set to `true`." }, "r.session.objectTimeout": { "type": "integer", "default": 50, - "markdownDescription": "The maximum number of milliseconds to get information of a single object in the global environment. Decrease this value if you experience significant delay after executing R commands caused by large global objects with many elements. Changes the option `vsc.object_timeout` in R. Requires `#r.sessionWatcher#` to be set to `true`." + "markdownDescription": "The maximum number of milliseconds to get information of a single object in the global environment. Decrease this value if you experience significant delay after executing R commands caused by large global objects with many elements. Requires `#r.sessionWatcher#` to be set to `true`." }, "r.session.levelOfObjectDetail": { "type": "string", - "markdownDescription": "How much of the object to show on hover, autocompletion, and in the workspace viewer? Changes the option `vsc.str.max.level` in R. Requires `#r.sessionWatcher#` to be set to `true`.", + "markdownDescription": "How much of the object to show on hover, autocompletion, and in the workspace viewer? Requires `#r.sessionWatcher#` to be set to `true`.", "default": "Minimal", "enum": [ "Minimal", @@ -1650,12 +1655,12 @@ "r.session.emulateRStudioAPI": { "type": "boolean", "default": true, - "markdownDescription": "Emulate the RStudio API for addin support and other {rstudioapi} calls. Changes the option `vsc.rstudioapi` in R. Requires `#r.sessionWatcher#` to be set to `true`." + "markdownDescription": "Emulate the RStudio API for addin support and other {rstudioapi} calls. Requires `#r.sessionWatcher#` to be set to `true`." }, "r.session.data.rowLimit": { "type": "integer", "default": 0, - "markdownDescription": "The maximum number of rows to be displayed in the data viewer. `0` means no limit. Changes the option `vsc.row_limit` in R. Requires `#r.sessionWatcher#` to be set to `true`." + "markdownDescription": "The maximum number of rows to be displayed in the data viewer. `0` means no limit. Changes the option `sess.row_limit` in R. Requires `#r.sessionWatcher#` to be set to `true`." }, "r.session.data.pageSize": { "type": "integer", @@ -1676,7 +1681,7 @@ "properties": { "plot": { "type": "string", - "description": "Which view column to show the plot file on graphics update? \n\nChanges the option 'vsc.plot' in R.", + "description": "Which view column to show the plot viewer on graphics update?", "enum": [ "Two", "Active", @@ -1693,7 +1698,7 @@ }, "browser": { "type": "string", - "description": "Which view column to show the WebView triggered by browser (e.g. shiny apps)? \n\nChanges the option 'vsc.browser' in R.", + "description": "Which view column to show the WebView triggered by browser (e.g. shiny apps)?", "enum": [ "Two", "Active", @@ -1710,7 +1715,7 @@ }, "viewer": { "type": "string", - "description": "Which view column to show the WebView triggered by viewer (e.g. htmlwidgets)? \n\nChanges the option 'vsc.viewer' in R.", + "description": "Which view column to show the WebView triggered by viewer (e.g. htmlwidgets)?", "enum": [ "Two", "Active", @@ -1727,7 +1732,7 @@ }, "pageViewer": { "type": "string", - "description": "Which view column to show the WebView triggered by the page viewer (e.g. profvis)? \n\nChanges the option 'vsc.page_viewer' in R.", + "description": "Which view column to show the WebView triggered by the page viewer (e.g. profvis)?", "enum": [ "Two", "Active", @@ -1744,7 +1749,7 @@ }, "view": { "type": "string", - "description": "Which view column to show the WebView triggered by View()? \n\nChanges the option 'vsc.view' in R.", + "description": "Which view column to show the WebView triggered by View()? \n\nChanges the option 'sess.dataview' in R.", "enum": [ "Two", "Active", @@ -1761,7 +1766,7 @@ }, "helpPanel": { "type": "string", - "description": "Which view column to show the WebView triggered by the help panel? \n\nChanges the option 'vsc.help_panel' in R.", + "description": "Which view column to show the WebView triggered by the help panel? \n\nChanges the option 'sess.helpPanel' in R.", "enum": [ "Two", "Active", @@ -1787,7 +1792,7 @@ "r.workspaceViewer.showObjectSize": { "type": "boolean", "default": false, - "markdownDescription": "Show object size when hovering over a workspace viewer item. Changes the option `vsc.show_object_size` in R." + "markdownDescription": "Show object size when hovering over a workspace viewer item." }, "r.workspaceViewer.removeHiddenItems": { "type": "boolean", @@ -1821,7 +1826,7 @@ }, "r.plot.devArgs": { "type": "object", - "markdownDescription": "The arguments for the png device to replay user graphics to show in VSCode. Requires `#r.plot.useHttpgd#` to be set to `false`. \n\nChanges the option `vsc.dev.args` in R.", + "markdownDescription": "The supplementary arguments for the rendering device (e.g., `png()` or `svglite()`) used by the standard plot viewer. Note that width and height are now handled dynamically by the responsive viewer and will be overridden. Requires `#r.plot.useHttpgd#` to be set to `false`. \n\nChanges the option `sess.devArgs` in R.", "default": { "width": 800, "height": 1200 @@ -1829,12 +1834,12 @@ "properties": { "width": { "type": "number", - "description": "Width of the graphic device.", + "description": "Width of the graphic device (Note: This is now handled dynamically by the responsive viewer).", "default": 480 }, "height": { "type": "number", - "description": "Height of the graphic device.", + "description": "Height of the graphic device (Note: This is now handled dynamically by the responsive viewer).", "default": 480 }, "units": { @@ -1855,7 +1860,16 @@ "r.plot.useHttpgd": { "type": "boolean", "default": false, - "markdownDescription": "Use the httpgd-based plot viewer instead of the base VSCode-R plot viewer. Changes the option `vsc.use_httpgd` in R.\n\nRequires the `httpgd` R package version 1.2.0 or later." + "markdownDescription": "Use the httpgd-based plot viewer instead of the base VSCode-R plot viewer.\n\nRequires the `httpgd` R package version 1.2.0 or later." + }, + "r.plot.format": { + "type": "string", + "default": "svglite", + "enum": [ + "png", + "svglite" + ], + "description": "The graphics format to use for the standard plot viewer. Requires `#r.plot.useHttpgd#` to be set to `false`." }, "r.plot.defaults.colorTheme": { "type": "string", @@ -1983,56 +1997,57 @@ ] }, "scripts": { - "vscode:prepublish": "tsc -p ./html/help && tsc -p ./html/httpgd && node esbuild.js --production", + "vscode:prepublish": "node esbuild.js --production", "changelog": "npx git-cliff v2.8.5.. -o", - "build": "tsc -p ./html/help && tsc -p ./html/httpgd && node esbuild.js", + "build": "node esbuild.js && Rscript -e \"remotes::install_local('sess', force=TRUE)\"", "watch": "node esbuild.js --watch", - "watchHelp": "tsc -p ./html/help --watch", - "watchHttpgd": "tsc -p ./html/httpgd --watch", - "pretest": "tsc -p ./", - "test": "node ./out/test/runTest.js", - "lint": "eslint src --ext ts" + "clean": "rimraf out", + "pretest": "npm run clean && tsc -p ./", + "test": "vscode-test", + "lint": "eslint src --ext ts && Rscript -e \"lintr::lint_package('sess')\"" }, "devDependencies": { - "@types/cheerio": "^0.22.29", - "@types/ejs": "^3.0.6", - "@types/express": "^4.17.12", - "@types/fs-extra": "^9.0.11", - "@types/glob": "^8.0.0", + "@types/cheerio": "^0.22.35", + "@types/ejs": "^3.1.5", + "@types/express": "^4.17.25", + "@types/fs-extra": "^9.0.13", "@types/highlight.js": "^10.1.0", - "@types/js-yaml": "^4.0.2", - "@types/mocha": "^8.2.2", - "@types/node": "^18.17.1", - "@types/node-fetch": "^2.5.10", - "@types/sinon": "^10.0.13", + "@types/js-yaml": "^4.0.9", + "@types/mocha": "^8.2.3", + "@types/node": "^18.19.130", + "@types/node-fetch": "^2.6.13", + "@types/sinon": "^10.0.20", "@types/vscode": "^1.75.0", - "@types/winreg": "^1.2.31", - "@typescript-eslint/eslint-plugin": "^5.30.0", - "@typescript-eslint/parser": "^5.30.0", - "@vscode/test-electron": "^2.2.3", - "esbuild": "^0.27.3", - "eslint": "^7.28.0", - "eslint-plugin-jsdoc": "^35.1.3", + "@types/winreg": "^1.2.36", + "@types/ws": "^8.18.1", + "@typescript-eslint/eslint-plugin": "^5.62.0", + "@typescript-eslint/parser": "^5.62.0", + "@vscode/test-cli": "^0.0.12", + "@vscode/test-electron": "^2.5.2", + "esbuild": "^0.27.4", + "eslint": "^7.32.0", + "eslint-plugin-jsdoc": "^35.5.1", "git-cliff": "^2.12.0", - "mocha": "^11.1.0", - "sinon": "^15.0.1", - "typescript": "^4.7.2" + "mocha": "^11.7.5", + "sinon": "^15.2.0", + "typescript": "^4.9.5" }, "dependencies": { - "ag-grid-community": "^31.3.2", + "ag-grid-community": "^31.3.4", "cheerio": "1.0.0-rc.12", "crypto": "^1.0.1", "ejs": "^3.1.10", - "fs-extra": "^10.0.0", - "highlight.js": "^11.9.0", + "fs-extra": "^10.1.0", + "highlight.js": "^11.11.1", "httpgd": "0.1.6", "jquery": "^3.7.1", "jquery.json-viewer": "^1.5.0", - "js-yaml": "^4.1.0", - "node-fetch": "^2.6.7", + "js-yaml": "^4.1.1", + "node-fetch": "^2.7.0", "vscode-languageclient": "^9.0.1", "vsls": "^1.0.4753", - "winreg": "^1.2.4" + "winreg": "^1.2.5", + "ws": "^8.19.0" }, "extensionDependencies": [ "REditorSupport.r-syntax" diff --git a/sess/.lintr b/sess/.lintr new file mode 100644 index 00000000..a52d190b --- /dev/null +++ b/sess/.lintr @@ -0,0 +1,7 @@ +linters: linters_with_defaults( + line_length_linter = line_length_linter(100), + object_usage_linter = NULL, + object_length_linter = NULL, + object_name_linter = NULL, + commented_code_linter = NULL, + pipe_continuation_linter = NULL) diff --git a/sess/DESCRIPTION b/sess/DESCRIPTION new file mode 100644 index 00000000..69fe2f97 --- /dev/null +++ b/sess/DESCRIPTION @@ -0,0 +1,19 @@ +Package: sess +Type: Package +Title: Modern R IPC Server +Version: 0.1.0 +Author: Gemini +Maintainer: Gemini +Description: Implements a high-performance HTTP and WebSocket server for R Inter-Process Communication, replacing legacy file-system watchers. This package provides a generic protocol for IDEs and other clients to communicate with an R session. +License: MIT +Encoding: UTF-8 +LazyData: true +Imports: + websocket, + later, + jsonlite, + utils, + methods, + rstudioapi, + svglite +RoxygenNote: 7.3.3 diff --git a/sess/NAMESPACE b/sess/NAMESPACE new file mode 100644 index 00000000..b4d6a57d --- /dev/null +++ b/sess/NAMESPACE @@ -0,0 +1,6 @@ +# Generated by roxygen2: do not edit by hand + +export(notify_client) +export(register_hooks) +export(request_client) +export(sess_app) diff --git a/sess/R/dispatch.R b/sess/R/dispatch.R new file mode 100644 index 00000000..207cb3bb --- /dev/null +++ b/sess/R/dispatch.R @@ -0,0 +1,81 @@ +#' Send a message to the client via WebSocket (JSON-RPC 2.0) +#' +#' This is the internal workhorse for both Notifications and Requests. +#' +#' @param method String. The JSON-RPC method. +#' @param params List. The parameters for the method. +#' @param request Logical. If TRUE, sends a Request and waits for a Response. +#' @return The result of the request if request=TRUE, otherwise TRUE if sent. +#' @keywords internal +rpc_send <- function(method, params = list(), request = FALSE) { + if (is.null(.sess_env$ws)) { + return(invisible(FALSE)) + } + + msg <- list( + jsonrpc = "2.0", + method = method, + params = params + ) + + req_id <- NULL + if (request) { + req_id <- basename(tempfile("req_", tmpdir = .sess_env$tempdir)) + msg$id <- req_id + } + + # Push over the websocket + payload <- jsonlite::toJSON(msg, auto_unbox = TRUE, null = "null", force = TRUE) + tryCatch( + { + .sess_env$ws$send(payload) + }, + error = function(e) { + warning("Failed to send IPC message: ", e$message) + invisible(FALSE) + } + ) + + if (!request) { + return(invisible(TRUE)) + } + + # NON-BLOCKING WAIT: + # Process HTTP/WS events in the background while blocking the R console execution + # This prevents the R event loop from locking up. + while (is.null(.sess_env$pending_responses[[req_id]])) { + later::run_now() + Sys.sleep(0.01) + } + + # Retrieve and clean up response + response <- .sess_env$pending_responses[[req_id]] + .sess_env$pending_responses[[req_id]] <- NULL + + # Handle JSON-RPC Errors if any + if (inherits(response, "json_rpc_error")) { + stop(sprintf("JSON-RPC Error [%d]: %s", response$code, response$message)) + } + + response +} + +#' Notify the client via WebSocket (JSON-RPC 2.0 Notification) +#' +#' Pushes an event instantly to the client extension via the active WebSocket connection. +#' +#' @param method A string representing the action (e.g., "dataview", "plot_updated") +#' @param params A list containing the arguments for the command +#' @export +notify_client <- function(method, params = list()) { + rpc_send(method, params, request = FALSE) +} + +#' Emulate rstudioapi (or any client action) synchronously but without blocking the R Event Loop +#' +#' @param action String of the action name +#' @param args List of arguments +#' @export +request_client <- function(action, args = list()) { + rpc_send(action, args, request = TRUE) +} diff --git a/sess/R/handlers.R b/sess/R/handlers.R new file mode 100644 index 00000000..05e25771 --- /dev/null +++ b/sess/R/handlers.R @@ -0,0 +1,155 @@ +# Handlers for the client Pull Requests (HTTP GET/POST) + +get_workspace_data <- function() { + env <- .GlobalEnv + all_names <- ls(env) + + objs <- lapply(all_names, function(name) { + obj <- env[[name]] + list( + class = class(obj), + type = typeof(obj), + length = length(obj), + # Create a concise string representation + str = paste0( + utils::capture.output(utils::str(obj, max.level = 0, give.attr = FALSE)), + collapse = "\n" + ) + ) + }) + names(objs) <- all_names + + list( + globalenv = objs, + search = search()[-1], + loaded_namespaces = loadedNamespaces() + ) +} + +handle_hover <- function(expr_str) { + tryCatch( + { + expr <- parse(text = expr_str, keep.source = FALSE)[[1]] + obj <- eval(expr, .GlobalEnv) + str_preview <- paste0( + utils::capture.output(utils::str(obj, max.level = 0, give.attr = FALSE)), + collapse = "\n" + ) + list(str = str_preview) + }, + error = function(e) NULL + ) +} + +handle_complete <- function(expr_str, trigger = NULL) { + obj <- tryCatch( + { + expr <- parse(text = expr_str, keep.source = FALSE)[[1]] + eval(expr, .GlobalEnv) + }, + error = function(e) NULL + ) + + if (is.null(obj) || is.null(trigger)) { + return(NULL) + } + + if (trigger == "$") { + nms <- if (is.object(obj)) { + utils::.DollarNames(obj, pattern = "") + } else if (is.recursive(obj)) { + names(obj) + } else { + NULL + } + + if (is.null(nms)) { + return(NULL) + } + + return(lapply(nms, function(n) { + item <- obj[[n]] + list( + name = n, + type = typeof(item), + str = paste0(class(item), collapse = ", ") + ) + })) + } + + if (trigger == "@" && methods::isS4(obj)) { + nms <- methods::slotNames(obj) + return(lapply(nms, function(n) { + item <- methods::slot(obj, n) + list( + name = n, + type = typeof(item), + str = paste0(class(item), collapse = ", ") + ) + })) + } + + NULL +} + +handle_plot_latest <- function(params) { + record <- .sess_env$latest_plot_record + if (is.null(record)) { + return(list(data = NULL)) + } + + width <- if (is.null(params$width)) 800 else as.numeric(params$width) + height <- if (is.null(params$height)) 600 else as.numeric(params$height) + format <- if (is.null(params$format)) "svglite" else as.character(params$format) + + plot_file <- tempfile(tmpdir = .sess_env$tempdir, fileext = paste0(".", format)) + + dev_args <- params$devArgs + if (is.null(dev_args)) { + dev_args <- list() + } + # Remove arguments that we handle ourselves + dev_args$filename <- NULL + dev_args$file <- NULL + dev_args$width <- NULL + dev_args$height <- NULL + dev_args$res <- NULL + + if (format == "svglite") { + if (requireNamespace("svglite", quietly = TRUE)) { + do.call(svglite::svglite, c(list( + filename = plot_file, width = width / 72, height = height / 72 + ), dev_args)) + } else { + # Fallback to png + do.call(grDevices::png, c(list( + filename = plot_file, width = width, height = height, res = 72 + ), dev_args)) + } + } else { + do.call(grDevices::png, c(list( + filename = plot_file, width = width, height = height, res = 72 + ), dev_args)) + } + + on.exit({ + if (file.exists(plot_file)) unlink(plot_file) + }) + + grDevices::replayPlot(record) + grDevices::dev.off() + + if (file.exists(plot_file)) { + raw_img <- readBin(plot_file, "raw", file.info(plot_file)$size) + list( + data = as.character(jsonlite::base64_enc(raw_img)), + format = if (format == "svglite" && !requireNamespace("svglite", quietly = TRUE)) { + "png" + } else { + format + } + ) + } else { + list(data = NULL) + } +} diff --git a/sess/R/hooks.R b/sess/R/hooks.R new file mode 100644 index 00000000..34f8fc04 --- /dev/null +++ b/sess/R/hooks.R @@ -0,0 +1,297 @@ +dataview_data_type <- function(x) { + if (is.numeric(x)) { + if (is.null(attr(x, "class"))) { + "num" + } else { + "num-fmt" + } + } else if (inherits(x, "Date")) { + "date" + } else { + "string" + } +} + +dataview_table <- function(data) { + if (is.data.frame(data)) { + nrow <- nrow(data) + colnames <- colnames(data) + if (is.null(colnames)) { + colnames <- sprintf("(X%d)", seq_len(ncol(data))) + } else { + colnames <- trimws(colnames) + } + if (.row_names_info(data) > 0L) { + rownames <- rownames(data) + rownames(data) <- NULL + } else { + rownames <- seq_len(nrow) + } + data <- c(list(" " = rownames), .subset(data)) + colnames <- c(" ", colnames) + types <- vapply(data, dataview_data_type, + character(1L), + USE.NAMES = FALSE + ) + data <- vapply(data, function(x) { + trimws(format(x)) + }, character(nrow), USE.NAMES = FALSE) + dim(data) <- c(length(rownames), length(colnames)) + } else if (is.matrix(data)) { + if (is.factor(data)) { + data <- format(data) + } + types <- rep(dataview_data_type(data), ncol(data)) + colnames <- colnames(data) + colnames(data) <- NULL + if (is.null(colnames)) { + colnames <- sprintf("(X%d)", seq_len(ncol(data))) + } else { + colnames <- trimws(colnames) + } + rownames <- rownames(data) + rownames(data) <- NULL + data <- trimws(format(data)) + if (is.null(rownames)) { + types <- c("num", types) + rownames <- seq_len(nrow(data)) + } else { + types <- c("string", types) + rownames <- trimws(rownames) + } + dim(data) <- c(length(rownames), length(colnames)) + colnames <- c(" ", colnames) + data <- cbind(rownames, data) + } else { + stop("data must be data.frame or matrix") + } + columns <- .mapply(function(title, type, index) { + class <- if (type == "string") "text-left" else "text-right" + list( + headerName = jsonlite::unbox(title), + field = jsonlite::unbox(as.character(index - 1L)), + cellClass = jsonlite::unbox(class), + type = jsonlite::unbox(if (type == "date") "dateColumn" else type) + ) + }, list(colnames, types, seq_along(colnames)), NULL) + list(columns = columns, data = data) +} + +#' Register hooks for the client IPC +#' +#' @param use_rstudioapi Logical. Enable rstudioapi emulation. +#' @param use_httpgd Logical. Enable httpgd plot device if available. +#' @export +register_hooks <- function(use_rstudioapi = TRUE, use_httpgd = TRUE) { + # 1. Override View() to push data directly via WebSocket + show_dataview <- function(x, title = deparse(substitute(x))) { + # make sure title is computed. + force(title) + # Dump to a temporary file locally so the payload size over WS isn't massive + file_path <- tempfile(tmpdir = .sess_env$tempdir, fileext = ".json") + + row_limit <- abs(getOption("sess.row_limit", 100)) + + as_truncated_data <- function(.data) { + .nrow <- nrow(.data) + if (row_limit != 0 && row_limit < .nrow) { + title <<- sprintf("%s (limited to %d/%d)", title, row_limit, .nrow) + .data <- utils::head(.data, n = row_limit) + } + .data + } + + if (inherits(x, "ArrowTabular")) { + x <- as_truncated_data(x) + x <- as.data.frame(x) + } + + if (is.data.frame(x) || is.matrix(x)) { + x <- as_truncated_data(x) + data <- dataview_table(x) + jsonlite::write_json( + data, file_path, + matrix = "rowmajor", auto_unbox = TRUE, null = "null", na = "string" + ) + + notify_client("dataview", list( + title = title, + file = file_path, + source = "table", + type = "json", + viewer = getOption("sess.dataview", "Two") + )) + } else if (is.list(x)) { + jsonlite::write_json(x, file_path, auto_unbox = TRUE, null = "null", na = "string") + notify_client("dataview", list( + title = title, + file = file_path, + source = "list", + type = "json", + viewer = getOption("sess.dataview", "Two") + )) + } else { + code <- if (is.primitive(x)) utils::capture.output(print(x)) else deparse(x) + file_path <- tempfile(tmpdir = .sess_env$tempdir, fileext = ".R") + writeLines(code, file_path) + notify_client("dataview", list( + title = title, + file = file_path, + source = "object", + type = "R", + viewer = getOption("sess.dataview", "Two") + )) + } + } + rebind("View", show_dataview, ns = "utils") + + # 2. Browser & Webview Options + viewer <- function(url, ...) { + if (!is.character(url)) { + real_url <- NULL + temp_viewer <- function(url, ...) { + real_url <<- url + } + op <- options(viewer = temp_viewer, page_viewer = temp_viewer) + on.exit(options(op)) + print(url) + if (is.character(real_url)) { + url <- real_url + } else { + stop("Invalid object") + } + } + + url <- sub("^file\\://", "", url) + if (file.exists(url)) { + url <- normalizePath(url, "/", mustWork = TRUE) + } + notify_client("webview", list(url = url)) + } + + options( + browser = viewer, + viewer = viewer, + page_viewer = viewer, + help_type = "html" + ) + + # 3. Help System Interception + sess_print.help_files_with_topic <- function(x, ...) { + if (length(x) >= 1 && is.character(x)) { + file <- x[1] + pkgname <- basename(dirname(dirname(file))) + requestPath <- paste0("/library/", pkgname, "/html/", basename(file), ".html") + notify_client("help", list( + requestPath = requestPath, + viewer = getOption("sess.helpPanel", "Two") + )) + } else { + utils:::print.help_files_with_topic(x, ...) + } + invisible(x) + } + registerS3method( + "print", "help_files_with_topic", sess_print.help_files_with_topic, + envir = asNamespace("utils") + ) + + sess_print.hsearch <- function(x, ...) { + if (length(x) >= 1) { + requestPath <- paste0("/doc/html/Search?pattern=", tools:::escapeAmpersand(x$pattern)) + notify_client("help", list( + requestPath = requestPath, + viewer = getOption("sess.helpPanel", "Two") + )) + } else { + utils:::print.hsearch(x, ...) + } + invisible(x) + } + + # 4. httpgd or Static Plot Hook + if (use_httpgd && requireNamespace("httpgd", quietly = TRUE)) { + options(device = function(...) { + httpgd::hgd(silent = TRUE) + notify_client("httpgd", list(url = httpgd::hgd_url())) + }) + } else { + # Default to static plot capturing (Re-implementation based on legacy plot handler) + plot_file <- .sess_env$latest_plot_path + file.create(plot_file, showWarnings = FALSE) + + plot_updated <- FALSE + last_plot_record_length <- 0 + + check_null_dev <- function() { + cur <- grDevices::dev.cur() + id <- getOption("sess.null_dev") + !is.null(id) && cur == id + } + + new_plot <- function() { + if (check_null_dev()) { + plot_updated <<- TRUE + } + } + + options(device = function(...) { + grDevices::pdf(NULL, width = 7, height = 7, bg = "white") + options(sess.null_dev = grDevices::dev.cur()) + grDevices::dev.control(displaylist = "enable") + }) + + update_plot <- function(...) { + tryCatch( + { + if (check_null_dev()) { + # Only record if we are reasonably sure there is something to record + # and we are on the null device. + record <- grDevices::recordPlot() + if (length(record[[1L]])) { + curr_length <- length(record[[1L]]) + if (plot_updated || curr_length != last_plot_record_length) { + plot_updated <<- FALSE + last_plot_record_length <<- curr_length + .sess_env$latest_plot_record <- record + notify_client("plot_updated") + } + } + } + }, + error = function(e) { + warning("Error in sess update_plot: ", e$message) + } + ) + TRUE + } + + setHook("plot.new", new_plot, "replace") + setHook("grid.newpage", new_plot, "replace") + + update_plot() + addTaskCallback(update_plot, name = "sess.plot") + } + + # 5. rstudioapi hooks + if (use_rstudioapi) { + setHook(packageEvent("rstudioapi", "onLoad"), function(...) { + patch_rstudioapi() + }, action = "append") + + if ("rstudioapi" %in% loadedNamespaces()) { + patch_rstudioapi() + } + } + + # 6. Workspace Update Callback + # This notifies the client whenever a top-level command is completed, + # suggesting that the Global Environment might have changed. + removeTaskCallback("sess.workspace") + addTaskCallback(function(...) { + notify_client("workspace_updated") + TRUE + }, name = "sess.workspace") + + invisible(NULL) +} diff --git a/sess/R/rstudioapi.R b/sess/R/rstudioapi.R new file mode 100644 index 00000000..6812c36e --- /dev/null +++ b/sess/R/rstudioapi.R @@ -0,0 +1,444 @@ +getActiveDocumentContext <- function() { + editor_context <- request_client("rstudioapi/active_editor_context", args = list()) + make_rs_document_context(editor_context) +} + +getSourceEditorContext <- getActiveDocumentContext + +verifyAvailable <- function(version_needed = NULL) { + if (is.null(version_needed)) { + return(TRUE) + } + getVersion() >= numeric_version(version_needed) +} + +isAvailable <- function(version_needed = NULL, child_ok = FALSE) { + verifyAvailable(version_needed) +} + +insertText <- function(location, text, id = NULL) { + if (missing(text) && is.character(location) && length(location) == 1) { + return(invisible(request_client( + "rstudioapi/replace_text_in_current_selection", + args = list(text = location, id = id) + ))) + } else if (missing(location)) { + return(invisible(request_client( + "rstudioapi/replace_text_in_current_selection", + args = list(text = text, id = id) + ))) + } else if (is.null(location) && missing(text)) { + return(invisible(NULL)) + } + + normalised_location <- normalise_pos_or_range_arg(location) + normalised_text <- normalise_text_arg(text, length(normalised_location)) + + query <- mapply(function(location, text) { + list( + operation = if (rstudioapi::is.document_range(location)) "modifyRange" else "insertText", + location = serialize_location(location), + text = text + ) + }, normalised_location, normalised_text, SIMPLIFY = FALSE) + + invisible(request_client("rstudioapi/insert_or_modify_text", args = list(query = query, id = id))) +} + +modifyRange <- insertText + +readPreference <- function(name, default) default +readRStudioPreference <- readPreference + +.sess_rstudioapi_env <- environment() + +hasFun <- function(name, version_needed = NULL, ...) { + if (!is.null(version_needed)) { + if (!verifyAvailable(version_needed)) { + return(FALSE) + } + } + obj <- .sess_rstudioapi_env[[name]] + is.function(obj) && !identical(obj, .sess_not_yet_implemented) +} + +findFun <- function(name, version_needed = NULL, ...) { + if (!is.null(version_needed)) { + if (!verifyAvailable(version_needed)) { + stop("the generic IPC client does not support used of 'version_needed' > 0.") + } + } + if (hasFun(name, version_needed = version_needed, ...)) { + .sess_rstudioapi_env[[name]] + } else { + stop("Cannot find function '", name, "'") + } +} + +showDialog <- function(title, message, url = "") { + message <- sprintf("%s: %s \n%s", title, message, url) + invisible(request_client("rstudioapi/show_dialog", args = list(message = message))) +} + +navigateToFile <- function(file, line = 1L, column = 1L) { + invisible(request_client("rstudioapi/navigate_to_file", args = list( + file = normalizePath(file), + line = line, + column = column + ))) +} + +setSelectionRanges <- function(ranges, id = NULL) { + ranges_or_positions <- normalise_pos_or_range_arg(ranges) + ranges <- lapply(ranges_or_positions, function(location) { + if (rstudioapi::is.document_position(location)) { + rstudioapi::document_range(location, location) + } else { + location + } + }) + sess_ranges <- lapply(ranges, serialize_range) + invisible(request_client( + "rstudioapi/set_selection_ranges", + args = list(ranges = sess_ranges, id = id) + )) +} + +setCursorPosition <- setSelectionRanges + +documentSave <- function(id = NULL) { + invisible(request_client("rstudioapi/document_save", args = list(id = id))) +} + +getActiveProject <- function() { + path_object <- request_client("rstudioapi/get_project_path", args = list()) + path_object$path # Should be NULL if no project is open +} + +document_context <- function(id = NULL) { + request_client("rstudioapi/document_context", args = list(id = id)) +} + +documentId <- function(allowConsole = TRUE) document_context()$id$external +documentPath <- function(id = NULL) document_context(id)$id$path + +documentSaveAll <- function() { + invisible(request_client("rstudioapi/document_save_all", args = list())) +} + +documentNew <- function(text = "", type = c("r", "rmarkdown", "sql"), + position = rstudioapi::document_position(1, 1), + execute = FALSE) { + if (!rstudioapi::is.document_position((position))) { + stop("DocumentNew requires a document_position object") + } + if (length(text) != 1 || !is.character(text)) { + stop("text for DocumentNew must be a length one character vector.") + } + invisible(request_client("rstudioapi/document_new", args = list( + text = text, + type = match.arg(type), + position = serialize_pos(position) + ))) +} + +setDocumentContents <- function(text, id = NULL) { + whole_document_range <- rstudioapi::document_range( + rstudioapi::document_position(1, 1), + rstudioapi::document_position(Inf, Inf) + ) + insertText(whole_document_range, text, id) +} + +restartSession <- function(command = "", clean = FALSE) { + invisible(notify_client("restart_r", params = list(command = command, clean = clean))) +} + +viewer <- function(url, height = NULL) { + notify_client("webview", list(file = url, title = "Viewer")) +} + +page_viewer <- function(url, title = NULL) { + notify_client("browser", list(url = url, title = if (is.null(title)) "Page Viewer" else title)) +} + +getVersion <- function() numeric_version("0") + +versionInfo <- function() { + list( + citation = "", mode = "generic-ipc", version = numeric_version("0"), + release_name = "generic-ipc" + ) +} + +sendToConsole <- function(code, echo = TRUE, execute = TRUE, focus = TRUE, animate = FALSE) { + if (!echo) { + warning("rstudioapi::sendToConsole echo = FALSE is not supported in the generic IPC client.") + } + code_to_run <- paste0(code, collapse = "\n") + invisible(notify_client("rstudioapi/send_to_console", params = list( + code = code_to_run, execute = execute, focus = focus, animate = animate + ))) +} + +documentClose <- function(id = NULL, save = TRUE) { + invisible(request_client("rstudioapi/document_close", args = list(id = id, save = save))) +} + +.sess_not_yet_implemented <- function(...) { + stop("This {rstudioapi} function is not currently implemented for generic IPC.") +} + +# Add missing helpers from rstudioapi_util +make_rs_range <- function(sess_selection) { + if (is.null(sess_selection$start$line) && !is.null(sess_selection[["start.line"]])) { + start_line <- sess_selection[["start.line"]] + start_character <- sess_selection[["start.character"]] + end_line <- sess_selection[["end.line"]] + end_character <- sess_selection[["end.character"]] + } else { + start_line <- sess_selection$start$line + start_character <- sess_selection$start$character + end_line <- sess_selection$end$line + end_character <- sess_selection$end$character + } + rstudioapi::document_range( + start = rstudioapi::document_position(row = start_line, column = start_character), + end = rstudioapi::document_position(row = end_line, column = end_character) + ) +} + +extract_document_ranges <- function(sess_selections) { + if (is.data.frame(sess_selections)) { + lapply(seq_len(nrow(sess_selections)), function(i) { + make_rs_range(as.list(sess_selections[i, , drop = FALSE])) + }) + } else { + lapply(sess_selections, make_rs_range) + } +} + +to_content_lines <- function(contents, ranges) { + content_lines <- strsplit(contents, "\n|\r\n|\r$")[[1]] + + if (length(ranges) == 0) { + return(content_lines) + } + + range_end_row <- unlist(lapply(ranges, function(range) range$end["row"])) + last_row <- max(range_end_row, na.rm = TRUE) + if (is.finite(last_row) && last_row == length(content_lines) + 1) { + content_lines <- c(content_lines, "") + } + + content_lines +} + +extract_range_text <- function(range, content_lines) { + if (!range_has_text(range)) { + return("") + } + start_row <- range$start["row"] + end_row <- range$end["row"] + if (start_row > length(content_lines)) { + return("") + } + + content_rows <- content_lines[start_row:min(end_row, length(content_lines))] + + # Adjust end + if (end_row <= length(content_lines)) { + content_rows[length(content_rows)] <- substring( + content_rows[length(content_rows)], 1, range$end["column"] - 1 + ) + } + + # Adjust start + content_rows[1] <- substring(content_rows[1], range$start["column"]) + + paste0(content_rows, collapse = "\n") +} + +range_has_text <- function(range) { + (range$end["row"] - range$start["row"]) + + (range$end["column"] - range$start["column"]) > 0 +} + +make_rs_document_selection <- function(ranges, range_texts) { + structure( + mapply( + function(range, text) { + list(range = range, text = text) + }, ranges, range_texts, + SIMPLIFY = FALSE + ), + class = "document_selection" + ) +} + +make_rs_document_context <- function(editor_context) { + document_ranges <- extract_document_ranges(editor_context$selection) + content_lines <- to_content_lines(editor_context$contents, document_ranges) + document_range_texts <- lapply(document_ranges, extract_range_text, content_lines) + document_selection <- make_rs_document_selection(document_ranges, document_range_texts) + structure(list( + id = editor_context$id$external, + path = editor_context$path, + contents = content_lines, + selection = document_selection + ), class = "document_context") +} + +is_positionable <- function(p) is.numeric(p) && length(p) == 2 +is_rangable <- function(r) is.numeric(r) && length(r) == 4 + +normalise_pos_or_range_arg <- function(location) { + if (rstudioapi::is.document_position(location)) { + list(location) + } else if (is_positionable(location)) { + list(rstudioapi::as.document_position(location)) + } else if (rstudioapi::is.document_range(location)) { + list(location) + } else if (is_rangable(location)) { + list(rstudioapi::as.document_range(location)) + } else if (is.list(location)) { + lapply(location, function(a_location) { + is_pos <- rstudioapi::is.document_position(a_location) + is_range <- rstudioapi::is.document_range(a_location) + if (is_pos || is_range) { + a_location + } else if (is_positionable(a_location)) { + rstudioapi::as.document_position(a_location) + } else if (is_rangable((a_location))) { + rstudioapi::as.document_range(a_location) + } else { + stop("object in location list was not a document_position or document_range") + } + }) + } else { + stop("location object was not a document_position or document_range") + } +} + +normalise_text_arg <- function(text, location_length) { + if (length(text) == location_length) { + text + } else if (length(text) == 1 && location_length > 1) { + rep(text, location_length) + } else { + stop("text vector needs to be of length 1 or the same length as location list") + } +} + +serialize_pos <- function(pos) { + as.numeric(c(pos[["row"]], pos[["column"]])) +} + +serialize_range <- function(range) { + list(start = serialize_pos(range$start), end = serialize_pos(range$end)) +} + +serialize_location <- function(location) { + if (rstudioapi::is.document_position(location)) { + serialize_pos(location) + } else if (rstudioapi::is.document_range(location)) { + serialize_range(location) + } else { + location + } +} + +namespace_has <- function(obj, namespace) { + attempt <- try(getFromNamespace(obj, namespace), silent = TRUE) + !inherits(attempt, "try-error") +} + +patch_rstudioapi <- function() { + overrides <- list( + getActiveDocumentContext = getActiveDocumentContext, + getSourceEditorContext = getSourceEditorContext, + insertText = insertText, + modifyRange = modifyRange, + showDialog = showDialog, + navigateToFile = navigateToFile, + setSelectionRanges = setSelectionRanges, + setCursorPosition = setCursorPosition, + documentSave = documentSave, + getActiveProject = getActiveProject, + documentId = documentId, + documentPath = documentPath, + documentSaveAll = documentSaveAll, + documentNew = documentNew, + setDocumentContents = setDocumentContents, + restartSession = restartSession, + viewer = viewer, + page_viewer = page_viewer, + getVersion = getVersion, + versionInfo = versionInfo, + sendToConsole = sendToConsole, + documentClose = documentClose, + hasFun = hasFun, + findFun = findFun, + isAvailable = isAvailable, + verifyAvailable = verifyAvailable, + readPreference = readPreference, + readRStudioPreference = readRStudioPreference, + getConsoleEditorContext = .sess_not_yet_implemented, + sourceMarkers = .sess_not_yet_implemented, + showPrompt = .sess_not_yet_implemented, + showQuestion = .sess_not_yet_implemented, + updateDialog = .sess_not_yet_implemented, + openProject = .sess_not_yet_implemented, + initializeProject = .sess_not_yet_implemented, + addTheme = .sess_not_yet_implemented, + applyTheme = .sess_not_yet_implemented, + convertTheme = .sess_not_yet_implemented, + getThemeInfo = .sess_not_yet_implemented, + getThemes = .sess_not_yet_implemented, + removeTheme = .sess_not_yet_implemented, + jobAdd = .sess_not_yet_implemented, + jobAddOutput = .sess_not_yet_implemented, + jobAddProgress = .sess_not_yet_implemented, + jobRemove = .sess_not_yet_implemented, + jobRunScript = .sess_not_yet_implemented, + jobSetProgress = .sess_not_yet_implemented, + jobSetState = .sess_not_yet_implemented, + jobSetStatus = .sess_not_yet_implemented, + launcherGetInfo = .sess_not_yet_implemented, + launcherAvailable = .sess_not_yet_implemented, + launcherGetJobs = .sess_not_yet_implemented, + launcherConfig = .sess_not_yet_implemented, + launcherContainer = .sess_not_yet_implemented, + launcherControlJob = .sess_not_yet_implemented, + launcherGetJob = .sess_not_yet_implemented, + launcherHostMount = .sess_not_yet_implemented, + launcherNfsMount = .sess_not_yet_implemented, + launcherPlacementConstraint = .sess_not_yet_implemented, + launcherResourceLimit = .sess_not_yet_implemented, + launcherSubmitJob = .sess_not_yet_implemented, + launcherSubmitR = .sess_not_yet_implemented, + previewRd = .sess_not_yet_implemented, + previewSql = .sess_not_yet_implemented, + writePreference = .sess_not_yet_implemented, + writeRStudioPreference = .sess_not_yet_implemented, + getPersistentValue = .sess_not_yet_implemented, + setPersistentValue = .sess_not_yet_implemented, + savePlotAsImage = .sess_not_yet_implemented, + createProjectTemplate = .sess_not_yet_implemented, + hasColourConsole = .sess_not_yet_implemented, + bugReport = .sess_not_yet_implemented, + buildToolsCheck = .sess_not_yet_implemented, + buildToolsInstall = .sess_not_yet_implemented, + buildToolsExec = .sess_not_yet_implemented, + dictionariesPath = .sess_not_yet_implemented, + userDictionariesPath = .sess_not_yet_implemented, + executeCommand = .sess_not_yet_implemented, + translateLocalUrl = .sess_not_yet_implemented + ) + + for (name in names(overrides)) { + if (exists(name, envir = asNamespace("rstudioapi"), inherits = FALSE)) { + rebind(name, overrides[[name]], "rstudioapi") + } + } +} diff --git a/sess/R/server.R b/sess/R/server.R new file mode 100644 index 00000000..dc7e0732 --- /dev/null +++ b/sess/R/server.R @@ -0,0 +1,134 @@ +#' Start the client R IPC connection +#' +#' @param port Integer. The port of the VS Code WebSocket server. +#' If NULL, it will use SESS_PORT env var. +#' @param token String. The authentication token. If NULL, it will use SESS_TOKEN env var. +#' @param use_rstudioapi Logical. Should the rstudioapi emulation layer +#' be enabled? Defaults to TRUE. +#' @param use_httpgd Logical. Should httpgd be used for plotting if available? Defaults to TRUE +#' @export +sess_app <- function(port = NULL, token = NULL, use_rstudioapi = TRUE, use_httpgd = TRUE) { + # Initialize state + .sess_env$server <- NULL + .sess_env$ws <- NULL + .sess_env$pending_responses <- list() + + # Specific tempdir for vscode-R + .sess_env$tempdir <- file.path(tempdir(), "sess") + dir.create(.sess_env$tempdir, showWarnings = FALSE, recursive = TRUE) + + # Temporary file for static plot serving + .sess_env$latest_plot_path <- file.path(.sess_env$tempdir, "sess_plot.png") + + if (is.null(port) || is.na(port)) { + port <- Sys.getenv("SESS_PORT") + } + if (is.null(token) || is.na(token) || !nzchar(token)) { + token <- Sys.getenv("SESS_TOKEN") + } + + if (!nzchar(port) || !nzchar(token)) { + warning("[sess] SESS_PORT or SESS_TOKEN not set. Cannot connect to VS Code.") + return(invisible(NULL)) + } + + print_async_msg <- function(msg) { + prompt <- if (interactive()) getOption("prompt") else "" + cat(sprintf("\r%s\n\n%s", msg, prompt)) + } + + url <- sprintf("ws://127.0.0.1:%s/?token=%s", port, token) + ws <- websocket::WebSocket$new(url, autoConnect = FALSE) + + ws$onOpen(function(event) { + .sess_env$ws <- ws + print_async_msg("[sess] Connected to VS Code") + + # Send the attach handshake immediately upon connection + notify_client("attach", list( + version = sprintf("%s.%s", R.version$major, R.version$minor), + pid = Sys.getpid(), + tempdir = .sess_env$tempdir, + wd = getwd(), + info = list( + command = commandArgs()[[1L]], + version = R.version.string, + start_time = format(Sys.time()) + ) + )) + }) + + ws$onMessage(function(event) { + # Handle JSON-RPC 2.0 messages COMING FROM the client + payload <- tryCatch(jsonlite::fromJSON(event$data), error = function(e) NULL) + + if (!is.null(payload) && !is.null(payload$id)) { + if (!is.null(payload$method)) { + # It's a Request from the Client (e.g., 'workspace', 'plot_latest') + handlers <- list( + "workspace" = function(p) get_workspace_data(), + "hover" = function(p) handle_hover(p$expr), + "completion" = function(p) handle_complete(p$expr, p$trigger), + "plot_latest" = function(p) handle_plot_latest(p) + ) + + if (payload$method %in% names(handlers)) { + res <- tryCatch( + { + handlers[[payload$method]](payload$params) + }, + error = function(e) { + warning(sprintf( + "[sess] Error in handler for '%s': %s", + payload$method, e$message + )) + NULL + } + ) + + succ_resp <- list( + jsonrpc = "2.0", + id = payload$id, + result = res + ) + ws$send(jsonlite::toJSON(succ_resp, auto_unbox = TRUE, null = "null", force = TRUE)) + } else { + err_resp <- list( + jsonrpc = "2.0", + id = payload$id, + error = list(code = -32601, message = "Method not found") + ) + ws$send(jsonlite::toJSON(err_resp, auto_unbox = TRUE, null = "null", force = TRUE)) + } + } else { + # It's a Response (to our RStudio API request) + if (!is.null(payload$result)) { + .sess_env$pending_responses[[as.character(payload$id)]] <- + payload$result + } else if (!is.null(payload$error)) { + .sess_env$pending_responses[[as.character(payload$id)]] <- + structure(payload$error, class = "json_rpc_error") + } + } + } + }) + + ws$onClose(function(event) { + .sess_env$ws <- NULL + print_async_msg("[sess] Disconnected from VS Code") + }) + + ws$onError(function(event) { + print_async_msg(sprintf("[sess] WebSocket error: %s", event$message)) + }) + + # Connect to VS Code + ws$connect() + + # Register runtime hooks + if (is.na(use_rstudioapi)) use_rstudioapi <- TRUE + if (is.na(use_httpgd)) use_httpgd <- TRUE + register_hooks(use_rstudioapi = use_rstudioapi, use_httpgd = use_httpgd) + + invisible(NULL) +} diff --git a/sess/R/utils.R b/sess/R/utils.R new file mode 100644 index 00000000..bbe7b6f2 --- /dev/null +++ b/sess/R/utils.R @@ -0,0 +1,48 @@ +# Helper to format JSON-RPC 2.0 Responses +json_rpc_response <- function(id, result) { + list( + status = 200L, + headers = list("Content-Type" = "application/json"), + body = jsonlite::toJSON(list( + jsonrpc = "2.0", + id = id, + result = result + ), auto_unbox = TRUE, null = "null", force = TRUE) + ) +} + +# Helper to format JSON-RPC 2.0 Errors +json_rpc_error <- function(id, code, message, data = NULL) { + list( + status = 200L, # JSON-RPC typically returns 200 even for errors + headers = list("Content-Type" = "application/json"), + body = jsonlite::toJSON(list( + jsonrpc = "2.0", + id = id, + error = list( + code = code, + message = message, + data = data + ) + ), auto_unbox = TRUE, null = "null", force = TRUE) + ) +} + +# Helper to safely hijack and override R internal functions +rebind <- function(sym, value, ns) { + if (is.character(ns)) { + Recall(sym, value, getNamespace(ns)) + pkg <- paste0("package:", ns) + if (pkg %in% search()) { + Recall(sym, value, as.environment(pkg)) + } + } else if (is.environment(ns)) { + if (bindingIsLocked(sym, ns)) { + unlockBinding(sym, ns) + on.exit(lockBinding(sym, ns)) + } + assign(sym, value, ns) + } else { + stop("ns must be a string or environment") + } +} diff --git a/sess/R/zzz.R b/sess/R/zzz.R new file mode 100644 index 00000000..9e70877a --- /dev/null +++ b/sess/R/zzz.R @@ -0,0 +1 @@ +.sess_env <- new.env(parent = emptyenv()) diff --git a/sess/README.md b/sess/README.md new file mode 100644 index 00000000..658fab78 --- /dev/null +++ b/sess/README.md @@ -0,0 +1,177 @@ +# `sess`: Modern R IPC Server Protocol + +The `sess` package provides a high-performance, token-authenticated IPC (Inter-Process Communication) mechanism between R and a client (such as an IDE or editor extension). It uses a pure **WebSocket** architecture to replace legacy file-based watchers. + +## 1. Connection Handshake + +### Starting the Server + +The server can be started by calling `sess::sess_app()`: + +```r +sess::sess_app( + port = NULL, # Integer: Server port (random if NULL) + token = NULL, # String: Authentication token (random if NULL) + use_rstudioapi = TRUE, # Logical: Enable RStudio API emulation + use_httpgd = TRUE # Logical: Use httpgd for plotting if available +) +``` + +It prints a connection string to the R console: + +```text +[sess] Server address: ws://127.0.0.1:PORT?token=TOKEN +``` + +## 2. Communication Channels + +`sess` uses a pure WebSocket architecture following the **JSON-RPC 2.0** specification for all structured data exchange. The WebSocket connection serves three main purposes: pushing instantaneous events from R to the client via notifications, allowing R to synchronously call client-side methods, and allowing the client to query R state via asynchronous requests. + +### 1. Client Notifications (`notify_client`) + +The WebSocket is used for instantaneous events pushed from R to the client as **JSON-RPC Notifications** (no `id`). + +**Notification Format:** + +```json +{ + "jsonrpc": "2.0", + "method": "method_name", + "params": { ... } +} +``` + +The following methods are sent as notifications from R to the client: + +- **`attach`**: Sent immediately upon connection. Includes PID, R version, and session metadata. +- **`detach`**: Sent when the R session is shutting down (params: `pid`). +- **`dataview`**: Triggered by `View()`. Params include a temporary JSON file path containing the data. +- **`plot_updated`**: Notifies that a new static plot is available. The client should request the `plot_latest` method. +- **`httpgd`**: Provides a URL for an `httpgd` live plot server (params: `url`). +- **`help`**: Requests the client to display an R help page (params: `requestPath`). +- **`browser`**: Requests the client to open a URL (params: `url`, `title`, `viewer`). +- **`webview`**: Requests the client to open a local HTML file or URL in a webview (params: `file`, `title`, `viewer`). +- **`restart_r`**: Requests the client to restart the R session (params: `command`, `clean`). +- **`send_to_console`**: Sends code to the console for execution without blocking the R session (params: `code`, `execute`, `focus`, `animate`). + +### 2. Synchronous Client Requests (`request_client`) + +The `request_client()` function allows R to call client-side functions synchronously by sending a **JSON-RPC Request** (with an `id`) over the WebSocket. This is primarily used to emulate the RStudio API. + +**Coordinate Handling**: The `sess` protocol uses **1-indexed** coordinates for all rows (lines) and columns (characters) on the wire. This aligns with R's internal representation. The client (e.g., VS Code extension) is responsible for converting these to its internal 0-indexed representation if necessary. + +**Serialization Format**: + +- **Position**: A numeric array `[row, column]`. +- **Range**: An object `{ "start": [row, column], "end": [row, column] }`. + +Below are the JSON-RPC methods sent from R to the client to emulate RStudio API functionality: + +- **`rstudioapi/active_editor_context`**: Requests the current context of the active editor. +- **`rstudioapi/replace_text_in_current_selection`**: Replaces text in the current selection (params: `text`, `id`). +- **`rstudioapi/insert_or_modify_text`**: Inserts or modifies text at specific locations (params: `query`, `id`). +- **`rstudioapi/show_dialog`**: Displays a message dialog to the user (params: `message`). +- **`rstudioapi/navigate_to_file`**: Opens and navigates to a specific file, line, and column (params: `file`, `line`, `column`). +- **`rstudioapi/set_selection_ranges`**: Sets the cursor or selection ranges in the editor (params: `ranges`, `id`). +- **`rstudioapi/document_save`**: Saves the specified document (params: `id`). +- **`rstudioapi/get_project_path`**: Retrieves the current project path. +- **`rstudioapi/document_context`**: Retrieves the context of a specific document (params: `id`). +- **`rstudioapi/document_save_all`**: Saves all open documents. +- **`rstudioapi/document_new`**: Creates a new document with specified text and type (params: `text`, `type`, `position`). +- **`rstudioapi/document_close`**: Closes the specified document (params: `id`, `save`). + +### 3. Server Requests (Pull API) + +The Pull API allows the client to query state using **JSON-RPC Requests** sent over the active WebSocket. + +#### JSON-RPC Request Format + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "method": "method_name", + "params": { ... } +} +``` + +#### Available Methods + +**`workspace`** +Returns object metadata from the Global Environment. + +- **Request Params**: None. +- **Response Result**: + + ```json + { + "globalenv": { + "my_df": { "class": "data.frame", "type": "list", "length": 5, "str": "data.frame: 32 obs. of 11 variables:" } + }, + "search": ["package:stats", "package:graphics"], + "loaded_namespaces": ["sess", "httpuv"] + } + ``` + +**`plot_latest`** +Returns the most recent static plot captured by the R session. + +- **Request Params**: None. +- **Response Result**: `{"data": "iVBORw0KGgoAAAANSUhEUgA..."}` (base64 encoded PNG string). Returns `{"data": null}` if no plot exists. + +**`hover`** + +- **Request Params**: `{"expr": "head(mtcars)"}` +- **Response Result**: `{"str": " 'data.frame': 6 obs. of 11 variables: ..."}` + +**`completion`** + +- **Request Params**: `{"expr": "mtcars", "trigger": "$"}` +- **Response Result**: + + ```json + [ + { "name": "mpg", "type": "double", "str": "numeric" }, + { "name": "cyl", "type": "double", "str": "numeric" } + ] + ``` + +--- + +## 3. Hook Registration & Options + +By default, the package does not inject hooks into the R session on load. Calling `sess::sess_app()` will start the server and automatically call `sess::register_hooks()` to enable features like automatic `View()` interception or plot redirection. + +### Intercepted Functions + +- **`utils::View()`**: Redirects data to the client's data viewer. Supports `data.frame`, `matrix`, `list`, and `ArrowTabular` objects. +- **`browser()`**, **`viewer()`**, **`page_viewer()`**: Redirects URLs and HTML files to the client's browser or webview. +- **Help System**: Intercepts help topic printing to route HTML help to the client. + +### Global Options + +- **`sess.row_limit`**: Limits the number of rows sent to the data viewer (default: 100). Set to 0 for no limit. +- **`sess.dataview`**: Target viewer column for data (default: `"Two"`). +- **`sess.browser`**: Target viewer for browser (default: `"Active"`). +- **`sess.webview`**: Target viewer for webview (default: `"Two"`). +- **`sess.helpPanel`**: Target viewer for help (default: `"Two"`). + +## 4. Comparison with Legacy IPC + +The `sess` package replaces the legacy file-based IPC mechanism with a modern, in-memory WebSocket architecture using **JSON-RPC 2.0**. + +| Feature | Legacy IPC (File-based) | Modern IPC (`sess`) | +| :--- | :--- | :--- | +| **Command Dispatch** | `request.log` + `request.lock` | **WS Notification** (JSON-RPC) | +| **Workspace State** | `workspace.json` + `workspace.lock` | **WS Request `workspace`** (On-demand) | +| **Static Plots** | `plot.png` + `plot.lock` | **WS Notification** + **WS Request `plot_latest`** | +| **RStudio API (Sync)**| `request.log` + `response.lock` | **WS Request** (JSON-RPC) | +| **Client Queries** | Internal HTTP Server (`httpuv`) | **WS Request** (JSON-RPC 2.0) | +| **Transport Reliability**| OS-level File System Watchers | **WebSocket** | +| **Protocol Standard** | Ad-hoc JSON formats | **JSON-RPC 2.0** | + +### Architectural Shifts + +1. **Elimination of File Watchers**: Replaces unreliable OS-level file system watchers with persistent WebSocket connections for instantaneous event pushing. +2. **On-Demand Evaluation**: Evaluations of the Global Environment are now performed only when requested by the client, reducing R's background workload. +3. **Unified Standard**: Unifies all structured communication under the **JSON-RPC 2.0** standard across a single WebSocket connection. diff --git a/sess/man/notify_client.Rd b/sess/man/notify_client.Rd new file mode 100644 index 00000000..1545127e --- /dev/null +++ b/sess/man/notify_client.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/dispatch.R +\name{notify_client} +\alias{notify_client} +\title{Notify the client via WebSocket (JSON-RPC 2.0 Notification)} +\usage{ +notify_client(method, params = list()) +} +\arguments{ +\item{method}{A string representing the action (e.g., "dataview", "plot_updated")} + +\item{params}{A list containing the arguments for the command} +} +\description{ +Pushes an event instantly to the client extension via the active WebSocket connection. +} diff --git a/sess/man/register_hooks.Rd b/sess/man/register_hooks.Rd new file mode 100644 index 00000000..3736802b --- /dev/null +++ b/sess/man/register_hooks.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/hooks.R +\name{register_hooks} +\alias{register_hooks} +\title{Register hooks for the client IPC} +\usage{ +register_hooks(use_rstudioapi = TRUE, use_httpgd = TRUE) +} +\arguments{ +\item{use_rstudioapi}{Logical. Enable rstudioapi emulation.} + +\item{use_httpgd}{Logical. Enable httpgd plot device if available.} +} +\description{ +Register hooks for the client IPC +} diff --git a/sess/man/request_client.Rd b/sess/man/request_client.Rd new file mode 100644 index 00000000..e311b9e5 --- /dev/null +++ b/sess/man/request_client.Rd @@ -0,0 +1,16 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/dispatch.R +\name{request_client} +\alias{request_client} +\title{Emulate rstudioapi (or any client action) synchronously but without blocking the R Event Loop} +\usage{ +request_client(action, args = list()) +} +\arguments{ +\item{action}{String of the action name} + +\item{args}{List of arguments} +} +\description{ +Emulate rstudioapi (or any client action) synchronously but without blocking the R Event Loop +} diff --git a/sess/man/rpc_send.Rd b/sess/man/rpc_send.Rd new file mode 100644 index 00000000..7404dcfd --- /dev/null +++ b/sess/man/rpc_send.Rd @@ -0,0 +1,22 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/dispatch.R +\name{rpc_send} +\alias{rpc_send} +\title{Send a message to the client via WebSocket (JSON-RPC 2.0)} +\usage{ +rpc_send(method, params = list(), request = FALSE) +} +\arguments{ +\item{method}{String. The JSON-RPC method.} + +\item{params}{List. The parameters for the method.} + +\item{request}{Logical. If TRUE, sends a Request and waits for a Response.} +} +\value{ +The result of the request if request=TRUE, otherwise TRUE if sent. +} +\description{ +This is the internal workhorse for both Notifications and Requests. +} +\keyword{internal} diff --git a/sess/man/sess_app.Rd b/sess/man/sess_app.Rd new file mode 100644 index 00000000..59967e1c --- /dev/null +++ b/sess/man/sess_app.Rd @@ -0,0 +1,20 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/server.R +\name{sess_app} +\alias{sess_app} +\title{Start the client R IPC connection} +\usage{ +sess_app(port = NULL, token = NULL, use_rstudioapi = TRUE, use_httpgd = TRUE) +} +\arguments{ +\item{port}{Integer. The port of the VS Code WebSocket server. If NULL, it will use SESS_PORT env var.} + +\item{token}{String. The authentication token. If NULL, it will use SESS_TOKEN env var.} + +\item{use_rstudioapi}{Logical. Should the rstudioapi emulation layer be enabled? Defaults to TRUE.} + +\item{use_httpgd}{Logical. Should httpgd be used for plotting if available? Defaults to TRUE} +} +\description{ +Start the client R IPC connection +} diff --git a/src/extension.ts b/src/extension.ts index 67a07ea0..3354393c 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,4 +1,3 @@ - 'use strict'; // interfaces, functions, etc. provided by vscode @@ -21,7 +20,8 @@ import * as apiImplementation from './apiImplementation'; import * as rHelp from './helpViewer'; import * as completions from './completions'; import * as rShare from './liveShare'; -import * as httpgdViewer from './plotViewer'; +import * as plotViewer from './plotViewer'; +import { PlotManager } from './plotViewer/types'; import * as languageService from './languageService'; import { RTaskProvider } from './tasks'; @@ -33,7 +33,7 @@ export let rWorkspace: workspaceViewer.WorkspaceDataProvider | undefined = undef export let globalRHelp: rHelp.RHelp | undefined = undefined; export let extensionContext: vscode.ExtensionContext; export let enableSessionWatcher: boolean | undefined = undefined; -export let globalHttpgdManager: httpgdViewer.HttpgdManager | undefined = undefined; +export let globalPlotManager: PlotManager | undefined = undefined; export let rmdPreviewManager: rmarkdown.RMarkdownPreviewManager | undefined = undefined; export let rmdKnitManager: rmarkdown.RMarkdownKnitManager | undefined = undefined; export let sessionStatusBarItem: vscode.StatusBarItem | undefined = undefined; @@ -133,7 +133,8 @@ export async function activate(context: vscode.ExtensionContext): Promise('lsp.enabled')) { @@ -199,8 +201,8 @@ export async function activate(context: vscode.ExtensionContext): Promise { + const url = new URL(urlString); + const host = url.host; + const token = url.searchParams.get('token') || undefined; + const ind = this.viewers.findIndex( + (viewer) => viewer.host === host + ); + if (ind >= 0) { + const viewer = this.viewers.splice(ind, 1)[0]; + this.viewers.unshift(viewer); + viewer.show(); + } else { + const conf = config(); + const colorTheme = conf.get('plot.defaults.colorTheme', 'vscode'); + this.viewerOptions.stripStyles = (colorTheme === 'vscode'); + this.viewerOptions.previewPlotLayout = conf.get('plot.defaults.plotPreviewLayout', 'multirow'); + this.viewerOptions.refreshTimeoutLength = conf.get('plot.timing.refreshInterval', 10); + this.viewerOptions.resizeTimeoutLength = conf.get('plot.timing.resizeInterval', 100); + this.viewerOptions.fullWindow = conf.get('plot.defaults.fullWindowMode', false); + this.viewerOptions.token = token; + const viewer = new HttpgdViewer(host, this.viewerOptions); + if (isHost() && autoShareBrowser) { + const disposable = await shareServer(url, 'httpgd'); + viewer.webviewPanel?.onDidDispose(() => void disposable.dispose()); + } + this.viewers.unshift(viewer); + } + } + + public registerActiveViewer(viewer: HttpgdViewer): void { + const ind = this.recentlyActiveViewers.indexOf(viewer); + if (ind >= 0) { + this.recentlyActiveViewers.splice(ind, 1); + } + this.recentlyActiveViewers.unshift(viewer); + } + + public getRecentViewer(): HttpgdViewer | undefined { + return this.recentlyActiveViewers.find((viewer) => !!viewer.webviewPanel); + } + + public getNewestViewer(): HttpgdViewer | undefined { + return this.viewers[0]; + } + + public async openUrl(): Promise { + const clipText = await vscode.env.clipboard.readText(); + const val0 = clipText.trim().split(/[\n ]/)[0]; + const options: vscode.InputBoxOptions = { + value: val0, + prompt: 'Please enter the httpgd url' + }; + const urlString = await vscode.window.showInputBox(options); + if (urlString) { + await this.showViewer(urlString); + } + } +} + +interface EjsData { + overwriteStyles: boolean; + previewPlotLayout: PreviewPlotLayout; + activePlot?: HttpgdPlotId; + plots: HttpgdPlot[]; + largePlot: HttpgdPlot; + host: string; + asLocalPath: (relPath: string) => string; + asWebViewPath: (localPath: string) => string; + makeCommandUri: (command: string, ...args: unknown[]) => string; + overwriteCssPath: string; + plot?: HttpgdPlot; +} + +interface ShowOptions { + viewColumn: vscode.ViewColumn, + preserveFocus?: boolean +} + +export class HttpgdViewer implements IHttpgdViewer, PlotViewer { + readonly id: string; + readonly parent: HttpgdManager; + readonly host: string; + readonly token?: string; + webviewPanel?: vscode.WebviewPanel; + readonly api: Httpgd; + plots: HttpgdPlot[] = []; + activePlot?: HttpgdPlotId; + hiddenPlots: HttpgdPlotId[] = []; + readonly defaultStripStyles: boolean = true; + stripStyles: boolean; + readonly defaultPreviewPlotLayout: PreviewPlotLayout = 'multirow'; + previewPlotLayout: PreviewPlotLayout; + readonly defaultFullWindow: boolean = false; + fullWindow: boolean; + customOverwriteCssPath?: string; + viewHeight: number = 600; + viewWidth: number = 800; + plotHeight: number = 600; + plotWidth: number = 800; + readonly zoom0: number = 1; + zoom: number = this.zoom0; + protected resizeTimeout?: NodeJS.Timeout; + readonly resizeTimeoutLength: number = 1300; + protected refreshTimeout?: NodeJS.Timeout; + readonly refreshTimeoutLength: number = 10; + private lastExportUri?: vscode.Uri; + readonly htmlTemplate: string; + readonly smallPlotTemplate: string; + readonly htmlRoot: string; + readonly showOptions: ShowOptions; + readonly webviewOptions: vscode.WebviewPanelOptions & vscode.WebviewOptions; + + protected get activeIndex(): number { + if(!this.activePlot){ + return -1; + } + return this.getIndex(this.activePlot); + } + protected set activeIndex(ind: number) { + if (this.plots.length === 0) { + this.activePlot = undefined; + } else { + ind = Math.max(ind, 0); + ind = Math.min(ind, this.plots.length - 1); + this.activePlot = this.plots[ind].id; + } + } + + constructor(host: string, options: HttpgdViewerOptions) { + this.host = host; + this.id = host; + this.token = options.token; + this.parent = options.parent; + + this.api = new Httpgd(this.host, this.token, true); + this.api.onPlotsChanged((newState) => { + void this.refreshPlotsDelayed(newState.plots); + }); + const conf = config(); + this.customOverwriteCssPath = conf.get('plot.customStyleOverwrites', ''); + const localResourceRoots = ( + this.customOverwriteCssPath ? + [extensionContext.extensionUri, vscode.Uri.file(path.dirname(this.customOverwriteCssPath))] : + undefined + ); + this.htmlRoot = options.htmlRoot; + this.htmlTemplate = fs.readFileSync(path.join(this.htmlRoot, 'index.ejs'), 'utf-8'); + this.smallPlotTemplate = fs.readFileSync(path.join(this.htmlRoot, 'smallPlot.ejs'), 'utf-8'); + this.showOptions = { + viewColumn: options.viewColumn ?? asViewColumn(conf.get('session.viewers.viewColumn.plot'), vscode.ViewColumn.Two), + preserveFocus: !!options.preserveFocus + }; + this.webviewOptions = { + enableCommandUris: true, + enableScripts: true, + retainContextWhenHidden: true, + localResourceRoots: localResourceRoots + }; + this.stripStyles = options.stripStyles ?? this.defaultStripStyles; + this.previewPlotLayout = options.previewPlotLayout ?? this.defaultPreviewPlotLayout; + this.fullWindow = options.fullWindow ?? this.defaultFullWindow; + this.resizeTimeoutLength = options.refreshTimeoutLength ?? this.resizeTimeoutLength; + this.refreshTimeoutLength = options.refreshTimeoutLength ?? this.refreshTimeoutLength; + void this.api.connect(); + } + + public handleCommand(command: string, ...args: unknown[]): void | Promise { + const stringArg = findItemOfType(args, 'string'); + const boolArg = findItemOfType(args, 'boolean'); + + switch (command) { + case 'showIndex': return this.focusPlot(stringArg); + case 'nextPlot': return this.nextPlot(boolArg); + case 'prevPlot': return this.prevPlot(boolArg); + case 'lastPlot': return this.nextPlot(true); + case 'firstPlot': return this.prevPlot(true); + case 'resetPlots': return this.resetPlots(); + case 'toggleStyle': return this.toggleStyle(boolArg); + case 'togglePreviewPlots': return this.togglePreviewPlots(stringArg as PreviewPlotLayout); + case 'closePlot': return this.closePlot(stringArg); + case 'hidePlot': return this.hidePlot(stringArg); + case 'exportPlot': return this.exportPlot(stringArg); + case 'zoomIn': return this.zoomIn(); + case 'zoomOut': return this.zoomOut(); + case 'openExternal': return this.openExternal(); + case 'toggleFullWindow': return this.toggleFullWindow(); + } + } + + public show(preserveFocus?: boolean): void { + preserveFocus ??= this.showOptions.preserveFocus; + if (!this.webviewPanel) { + const showOptions = { + ...this.showOptions, + preserveFocus: preserveFocus + }; + this.webviewPanel = this.makeNewWebview(showOptions); + this.refreshHtml(); + } else { + this.webviewPanel.reveal(undefined, preserveFocus); + } + this.parent.registerActiveViewer(this); + } + + public openExternal(): void { + let urlString = `http://${this.host}/live`; + if (this.token) { + urlString += `?token=${this.token}`; + } + const uri = vscode.Uri.parse(urlString); + void vscode.env.openExternal(uri); + } + + public async focusPlot(id?: HttpgdPlotId): Promise { + this.activePlot = id || this.activePlot; + const plt = this.plots[this.activeIndex]; + if (plt && (plt.height !== this.viewHeight || plt.width !== this.viewHeight || plt.zoom !== this.zoom)) { + await this.refreshPlots(this.api.getPlots()); + } else { + this._focusPlot(); + } + } + protected _focusPlot(plotId?: HttpgdPlotId): void { + plotId ??= this.activePlot; + if(!plotId){ + return; + } + const msg: FocusPlotMessage = { + message: 'focusPlot', + plotId: plotId + }; + this.postWebviewMessage(msg); + void this.setContextValues(); + } + + public async nextPlot(last?: boolean): Promise { + this.activeIndex = last ? this.plots.length - 1 : this.activeIndex + 1; + await this.focusPlot(); + } + public async prevPlot(first?: boolean): Promise { + this.activeIndex = first ? 0 : this.activeIndex - 1; + await this.focusPlot(); + } + + public resetPlots(): void { + this.hiddenPlots = []; + this.zoom = this.zoom0; + void this.refreshPlots(this.api.getPlots(), true, true); + } + + public hidePlot(id?: HttpgdPlotId): void { + id ??= this.activePlot; + if (!id) { return; } + const tmpIndex = this.activeIndex; + this.hiddenPlots.push(id); + this.plots = this.plots.filter((plt) => !this.hiddenPlots.includes(plt.id)); + if (id === this.activePlot) { + this.activeIndex = tmpIndex; + this._focusPlot(); + } + this._hidePlot(id); + } + protected _hidePlot(id: HttpgdPlotId): void { + const msg: HidePlotMessage = { + message: 'hidePlot', + plotId: id + }; + this.postWebviewMessage(msg); + } + + public async closePlot(id?: HttpgdPlotId): Promise { + id ??= this.activePlot; + if (id) { + this.hidePlot(id); + await this.api.removePlot({ id: id }); + } + } + + public toggleStyle(force?: boolean): void { + this.stripStyles = force ?? !this.stripStyles; + const msg: ToggleStyleMessage = { + message: 'toggleStyle', + useOverwrites: this.stripStyles + }; + this.postWebviewMessage(msg); + } + + public toggleFullWindow(force?: boolean): void { + this.fullWindow = force ?? !this.fullWindow; + const msg: ToggleFullWindowMessage = { + message: 'toggleFullWindow', + useFullWindow: this.fullWindow + }; + this.postWebviewMessage(msg); + } + + public togglePreviewPlots(force?: PreviewPlotLayout): void { + if (force) { + this.previewPlotLayout = force; + } else if (this.previewPlotLayout === 'multirow') { + this.previewPlotLayout = 'scroll'; + } else if (this.previewPlotLayout === 'scroll') { + this.previewPlotLayout = 'hidden'; + } else if (this.previewPlotLayout === 'hidden') { + this.previewPlotLayout = 'multirow'; + } + const msg: PreviewPlotLayoutMessage = { + message: 'togglePreviewPlotLayout', + style: this.previewPlotLayout + }; + this.postWebviewMessage(msg); + } + + public zoomOut(): void { + if (this.zoom > 0.1) { + this.zoom -= 0.1; + void this.resizePlot(); + } + } + + public zoomIn(): void { + this.zoom += 0.1; + void this.resizePlot(); + } + + public async setContextValues(mightBeInBackground: boolean = false): Promise { + if (this.webviewPanel?.active) { + this.parent.registerActiveViewer(this); + await setContext('r.plot.active', true); + await setContext('r.plot.canGoBack', this.activeIndex > 0); + await setContext('r.plot.canGoForward', this.activeIndex < this.plots.length - 1); + } else if (!mightBeInBackground) { + await setContext('r.plot.active', false); + } + } + + public getPanelPath(): string | undefined { + if (!this.webviewPanel) { + return undefined; + } + const dummyUri = this.webviewPanel.webview.asWebviewUri(vscode.Uri.file('')); + const m = /^[^.]*/.exec(dummyUri.authority); + const webviewId = m?.[0] || ''; + return `webview-panel/webview-${webviewId}`; + } + + protected getIndex(id: HttpgdPlotId): number { + return this.plots.findIndex((plt: HttpgdPlot) => plt.id === id); + } + + protected handleResize(height: number, width: number, userTriggered: boolean = false): void { + this.viewHeight = height; + this.viewWidth = width; + if (userTriggered || this.resizeTimeoutLength === 0) { + if(this.resizeTimeout){ + clearTimeout(this.resizeTimeout); + } + this.resizeTimeout = undefined; + void this.resizePlot(); + } else if (!this.resizeTimeout) { + this.resizeTimeout = setTimeout(() => { + void this.resizePlot().then(() => + this.resizeTimeout = undefined + ); + }, this.resizeTimeoutLength); + } + } + + protected async resizePlot(id?: HttpgdPlotId): Promise { + id ??= this.activePlot; + if (!id) { return; } + const plt = await this.getPlotContent(id, this.viewWidth, this.viewHeight, this.zoom); + this.plotWidth = plt.width; + this.plotHeight = plt.height; + this.updatePlot(plt); + } + + protected async refreshPlotsDelayed(plotsIdResponse: HttpgdIdResponse[], redraw: boolean = false, force: boolean = false): Promise { + if(this.refreshTimeoutLength === 0){ + await this.refreshPlots(plotsIdResponse, redraw, force); + } else{ + clearTimeout(this.refreshTimeout); + this.refreshTimeout = setTimeout(() => { + void this.refreshPlots(plotsIdResponse, redraw, force).then(() => + this.refreshTimeout = undefined + ); + }, this.refreshTimeoutLength); + } + } + + protected async refreshPlots(plotsIdResponse: HttpgdIdResponse[], redraw: boolean = false, force: boolean = false): Promise { + const nPlots = this.plots.length; + let plotIds = plotsIdResponse.map((x) => x.id); + plotIds = plotIds.filter((id) => !this.hiddenPlots.includes(id)); + const newPlotPromises = plotIds.map(async (id) => { + const plot = this.plots.find((plt) => plt.id === id); + if (force || !plot || id === this.activePlot) { + return await this.getPlotContent(id, this.viewWidth, this.viewHeight, this.zoom); + } else { + return plot; + } + }); + const newPlots = await Promise.all(newPlotPromises); + const oldPlotIds = this.plots.map(plt => plt.id); + this.plots = newPlots; + if (this.plots.length !== nPlots) { + this.activePlot = this.plots[this.plots.length - 1]?.id; + } + if (redraw || !this.webviewPanel) { + this.refreshHtml(); + } else { + for (const plt of this.plots) { + if (oldPlotIds.includes(plt.id)) { + this.updatePlot(plt); + } else { + this.addPlot(plt); + } + } + this._focusPlot(); + } + } + + protected updatePlot(plt: HttpgdPlot): void { + const msg: UpdatePlotMessage = { + message: 'updatePlot', + plotId: plt.id, + svg: plt.data + }; + this.postWebviewMessage(msg); + } + + protected addPlot(plt: HttpgdPlot): void { + const ejsData = this.makeEjsData(); + ejsData.plot = plt; + const html = ejs.render(this.smallPlotTemplate, ejsData); + const msg: AddPlotMessage = { + message: 'addPlot', + html: html + }; + this.postWebviewMessage(msg); + void this.focusPlot(plt.id); + void this.setContextValues(); + } + + protected async getPlotContent(id: HttpgdPlotId, width: number, height: number, zoom: number): Promise> { + const args = { + id: id, + height: height, + width: width, + zoom: zoom, + renderer: 'svgp' + }; + const plotContent = await this.api.getPlot(args); + const svg = await plotContent?.text() || ''; + const plt: HttpgdPlot = { + id: id, + data: svg, + height: height, + width: width, + zoom: zoom, + }; + this.viewHeight = plt.height; + this.viewWidth = plt.width; + return plt; + } + + protected refreshHtml(): void { + this.webviewPanel ??= this.makeNewWebview(); + this.webviewPanel.webview.html = ''; + this.webviewPanel.webview.html = this.makeHtml(); + this.toggleFullWindow(this.fullWindow); + void this.setContextValues(true); + } + + protected makeHtml(): string { + const ejsData = this.makeEjsData(); + return ejs.render(this.htmlTemplate, ejsData); + } + + protected makeEjsData(): EjsData { + const asLocalPath = (relPath: string) => { + if (!this.webviewPanel) { + return relPath; + } + const localUri = vscode.Uri.file(path.join(this.htmlRoot, relPath)); + return localUri.fsPath; + }; + const asWebViewPath = (localPath: string) => { + if (!this.webviewPanel) { + return localPath; + } + const localUri = vscode.Uri.file(path.join(this.htmlRoot, localPath)); + const webViewUri = this.webviewPanel.webview.asWebviewUri(localUri); + return webViewUri.toString(); + }; + let overwriteCssPath = ''; + if (this.customOverwriteCssPath) { + const uri = vscode.Uri.file(this.customOverwriteCssPath); + overwriteCssPath = this.webviewPanel?.webview.asWebviewUri(uri).toString() || ''; + } else { + overwriteCssPath = asWebViewPath('styleOverwrites.css'); + } + return { + overwriteStyles: this.stripStyles, + previewPlotLayout: this.previewPlotLayout, + plots: this.plots, + largePlot: this.plots[this.activeIndex], + activePlot: this.activePlot, + host: this.host, + asLocalPath: asLocalPath, + asWebViewPath: asWebViewPath, + makeCommandUri: makeWebviewCommandUriString, + overwriteCssPath: overwriteCssPath + }; + } + + protected makeNewWebview(showOptions?: ShowOptions): vscode.WebviewPanel { + const webviewPanel = vscode.window.createWebviewPanel( + 'RPlot', + 'R Plot', + showOptions || this.showOptions, + this.webviewOptions + ); + webviewPanel.iconPath = new UriIcon('graph'); + webviewPanel.onDidDispose(() => this.webviewPanel = undefined); + webviewPanel.onDidChangeViewState(() => { + void this.setContextValues(); + }); + webviewPanel.webview.onDidReceiveMessage((e: OutMessage) => { + this.handleWebviewMessage(e); + }); + return webviewPanel; + } + + protected handleWebviewMessage(msg: OutMessage): void { + if (msg.message === 'log') { + console.log(msg.body); + } else if (msg.message === 'resize') { + void this.handleResize(msg.height, msg.width, msg.userTriggered); + } + } + + protected postWebviewMessage(msg: InMessage): void { + void this.webviewPanel?.webview.postMessage(msg); + } + + public async exportPlot(id?: HttpgdPlotId, rendererId?: HttpgdRendererId, outFile?: string): Promise { + id ||= this.activePlot || this.plots[this.plots.length - 1]?.id; + const plot = this.plots.find((plt) => plt.id === id); + if (!plot) { + void vscode.window.showWarningMessage('No plot available for export.'); + return; + } + if (!rendererId) { + const renderers = this.api.getRenderers(); + const qpItems = renderers.map(renderer => ({ + label: renderer.name, + detail: renderer.descr, + id: renderer.id + })); + const qpPick = await vscode.window.showQuickPick(qpItems, { placeHolder: 'Please choose a file format' }); + rendererId = qpPick?.id; + if(!rendererId){ + return; + } + } + if (!outFile) { + const options: vscode.SaveDialogOptions = {}; + const renderer = this.api.getRenderers().find(r => r.id === rendererId); + const ext = renderer?.ext.replace(/^\./, ''); + if(this.lastExportUri){ + const noExtPath = this.lastExportUri.fsPath.replace(/\.[^.]*$/, ''); + options.defaultUri = vscode.Uri.file(noExtPath + (ext ? `.${ext}` : '')); + } else { + const defaultFolder = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath; + if(defaultFolder) {options.defaultUri = vscode.Uri.file(path.join(defaultFolder, 'plot' + (ext ? `.${ext}` : '')));} + } + if(ext && renderer?.name) {options.filters = { [renderer.name]: [ext], ['All']: ['*'] };} + const outUri = await vscode.window.showSaveDialog(options); + if(outUri){ + this.lastExportUri = outUri; + outFile = outUri.fsPath; + } else {return;} + } + const plt = await this.api.getPlot({ id: this.activePlot, renderer: rendererId }) as unknown as { body: NodeJS.ReadableStream }; + const dest = fs.createWriteStream(outFile); + dest.on('error', (err) => void vscode.window.showErrorMessage(`Export failed: ${err.message}`)); + dest.on('close', () => void vscode.window.showInformationMessage(`Export done: ${outFile || ''}`)); + plt.body.pipe(dest); + } + + public dispose(): void { + this.api.disconnect(); + } +} + +function findItemOfType(arr: unknown[], type: 'string'): string | undefined; +function findItemOfType(arr: unknown[], type: 'boolean'): boolean | undefined; +function findItemOfType(arr: unknown[], type: 'number'): number | undefined; +function findItemOfType(arr: unknown[], type: string): T { + const item = arr.find((elm) => typeof elm === type) as T; + return item; +} diff --git a/src/plotViewer/index.ts b/src/plotViewer/index.ts index 20f81d63..0c48c7d1 100644 --- a/src/plotViewer/index.ts +++ b/src/plotViewer/index.ts @@ -1,24 +1,11 @@ -/* eslint-disable @typescript-eslint/no-unsafe-argument */ -/* eslint-disable @typescript-eslint/no-unsafe-assignment */ -/* eslint-disable @typescript-eslint/no-explicit-any */ - import * as vscode from 'vscode'; -import { Httpgd } from 'httpgd'; -import { HttpgdPlot, IHttpgdViewer, HttpgdViewerOptions } from './httpgdTypes'; -import * as path from 'path'; -import * as fs from 'fs'; -import * as ejs from 'ejs'; - -import { asViewColumn, config, setContext, UriIcon, makeWebviewCommandUriString } from '../util'; - +import { PlotViewer, PlotManager } from './types'; +import { HttpgdManager, HttpgdViewer } from './httpgdViewer'; +export { HttpgdManager }; +import { StandardPlotViewer } from './standardViewer'; import { extensionContext } from '../extension'; -import { FocusPlotMessage, InMessage, OutMessage, ToggleStyleMessage, UpdatePlotMessage, HidePlotMessage, AddPlotMessage, PreviewPlotLayout, PreviewPlotLayoutMessage, ToggleFullWindowMessage } from './webviewMessages'; -import { HttpgdIdResponse, HttpgdPlotId, HttpgdRendererId } from 'httpgd/lib/types'; -import { Response } from 'node-fetch'; -import { autoShareBrowser, isHost, shareServer } from '../liveShare'; - const commands = [ 'showViewers', 'openUrl', @@ -39,823 +26,76 @@ const commands = [ 'zoomOut' ] as const; -type CommandName = typeof commands[number]; - -export function initializeHttpgd(): HttpgdManager { - const httpgdManager = new HttpgdManager(); - for (const cmd of commands) { - const fullCommand = `r.plot.${cmd}`; - const cb = httpgdManager.getCommandHandler(cmd); - extensionContext.subscriptions.push( - vscode.commands.registerCommand(fullCommand, cb) - ); - } - return httpgdManager; -} - -export class HttpgdManager { - viewers: HttpgdViewer[] = []; - - viewerOptions: HttpgdViewerOptions; - - recentlyActiveViewers: HttpgdViewer[] = []; +export class CommonPlotManager implements PlotManager { + public httpgdManager: HttpgdManager; + public standardPlotViewer: StandardPlotViewer; constructor() { - const htmlRoot = extensionContext.asAbsolutePath('html/httpgd'); - this.viewerOptions = { - parent: this, - htmlRoot: htmlRoot, - preserveFocus: true - }; - } - - public async showViewer(urlString: string): Promise { - const url = new URL(urlString); - const host = url.host; - const token = url.searchParams.get('token') || undefined; - const ind = this.viewers.findIndex( - (viewer) => viewer.host === host - ); - if (ind >= 0) { - const viewer = this.viewers.splice(ind, 1)[0]; - this.viewers.unshift(viewer); - viewer.show(); - } else { - const conf = config(); - const colorTheme = conf.get('plot.defaults.colorTheme', 'vscode'); - this.viewerOptions.stripStyles = (colorTheme === 'vscode'); - this.viewerOptions.previewPlotLayout = conf.get('plot.defaults.plotPreviewLayout', 'multirow'); - this.viewerOptions.refreshTimeoutLength = conf.get('plot.timing.refreshInterval', 10); - this.viewerOptions.resizeTimeoutLength = conf.get('plot.timing.resizeInterval', 100); - this.viewerOptions.fullWindow = conf.get('plot.defaults.fullWindowMode', false); - this.viewerOptions.token = token; - const viewer = new HttpgdViewer(host, this.viewerOptions); - if (isHost() && autoShareBrowser) { - const disposable = await shareServer(url, 'httpgd'); - viewer.webviewPanel?.onDidDispose(() => void disposable.dispose()); - } - this.viewers.unshift(viewer); - } + this.httpgdManager = new HttpgdManager(); + this.standardPlotViewer = new StandardPlotViewer(); } - public registerActiveViewer(viewer: HttpgdViewer): void { - const ind = this.recentlyActiveViewers.indexOf(viewer); - if (ind) { - this.recentlyActiveViewers.splice(ind, 1); - } - this.recentlyActiveViewers.unshift(viewer); + get viewers(): PlotViewer[] { + const viewers: PlotViewer[] = [...this.httpgdManager.viewers]; + viewers.push(this.standardPlotViewer); + return viewers; } - public getRecentViewer(): HttpgdViewer | undefined { - return this.recentlyActiveViewers.find((viewer) => !!viewer.webviewPanel); + get activeViewer(): PlotViewer | undefined { + return this.httpgdManager.getRecentViewer() || this.standardPlotViewer; } - public getNewestViewer(): HttpgdViewer | undefined { - return this.viewers[0]; + public initialize(): void { + for (const cmd of commands) { + const fullCommand = `r.plot.${cmd}`; + extensionContext.subscriptions.push( + vscode.commands.registerCommand(fullCommand, (hostOrWebviewUri?: string | vscode.Uri, ...args: unknown[]) => { + void this.handleCommand(cmd, hostOrWebviewUri, ...args); + }) + ); + } } - public getCommandHandler(command: CommandName): (...args: any[]) => void { - return (...args: any[]) => { - this.handleCommand(command, ...args); - }; + public async showStandardPlot(): Promise { + await this.standardPlotViewer.update(); } - public async openUrl(): Promise { - const clipText = await vscode.env.clipboard.readText(); - const val0 = clipText.trim().split(/[\n ]/)[0]; - const options: vscode.InputBoxOptions = { - value: val0, - prompt: 'Please enter the httpgd url' - }; - const urlString = await vscode.window.showInputBox(options); - if (urlString) { - await this.showViewer(urlString); - } + public async showHttpgdPlot(url: string): Promise { + await this.httpgdManager.showViewer(url); } - // generic command handler - public handleCommand(command: CommandName, hostOrWebviewUri?: string | vscode.Uri, ...args: any[]): void { - // the number and type of arguments given to a command can vary, depending on where it was called from: - // - calling from the title bar menu provides two arguments, the first of which identifies the webview - // - calling from the command palette provides no arguments - // - calling from a command uri provides a flexible number/type of arguments - // below is an attempt to handle these different combinations efficiently and (somewhat) robustly - // - + private async handleCommand(command: string, hostOrWebviewUri?: string | vscode.Uri, ...args: unknown[]): Promise { if (command === 'showViewers') { - this.viewers.forEach(viewer => { + for (const viewer of this.viewers) { viewer.show(true); - }); + } return; - } else if (command === 'openUrl') { - void this.openUrl(); + } + + if (command === 'openUrl') { + await this.httpgdManager.openUrl(); return; } // Identify the correct viewer - let viewer: HttpgdViewer | undefined; + let viewer: PlotViewer | undefined; if (typeof hostOrWebviewUri === 'string') { - const host = hostOrWebviewUri; - viewer = this.viewers.find((viewer) => viewer.host === host); + viewer = this.httpgdManager.viewers.find((v: HttpgdViewer) => v.host === hostOrWebviewUri); } else if (hostOrWebviewUri instanceof vscode.Uri) { - const uri = hostOrWebviewUri; - viewer = this.viewers.find((viewer) => viewer.getPanelPath() === uri.path); + viewer = this.httpgdManager.viewers.find((v: HttpgdViewer) => v.getPanelPath() === hostOrWebviewUri.path); } - // fall back to most recent viewer - viewer ||= this.getRecentViewer(); + // Fallback to active viewer + viewer ||= this.activeViewer; - // Abort if no viewer identified - if (!viewer) { - return; + if (viewer) { + await viewer.handleCommand(command, ...args); } - - // Get possible arguments for commands: - const stringArg = findItemOfType(args, 'string'); - const boolArg = findItemOfType(args, 'boolean'); - - // Call corresponding method, possibly with an argument: - switch (command) { - case 'showIndex': { - void viewer.focusPlot(stringArg); - break; - } case 'nextPlot': { - void viewer.nextPlot(boolArg); - break; - } case 'prevPlot': { - void viewer.prevPlot(boolArg); - break; - } case 'lastPlot': { - void viewer.nextPlot(true); - break; - } case 'firstPlot': { - void viewer.prevPlot(true); - break; - } case 'resetPlots': { - viewer.resetPlots(); - break; - } case 'toggleStyle': { - void viewer.toggleStyle(boolArg); - break; - } case 'togglePreviewPlots': { - void viewer.togglePreviewPlots(stringArg as PreviewPlotLayout); - break; - } case 'closePlot': { - void viewer.closePlot(stringArg); - break; - } case 'hidePlot': { - void viewer.hidePlot(stringArg); - break; - } case 'exportPlot': { - void viewer.exportPlot(stringArg); - break; - } case 'zoomIn': { - void viewer.zoomIn(); - break; - } case 'zoomOut': { - void viewer.zoomOut(); - break; - } case 'openExternal': { - void viewer.openExternal(); - break; - } case 'toggleFullWindow': { - void viewer.toggleFullWindow(); - break; - } default: { - break; - } - } - } -} - - -interface EjsData { - overwriteStyles: boolean; - previewPlotLayout: PreviewPlotLayout; - activePlot?: HttpgdPlotId; - plots: HttpgdPlot[]; - largePlot: HttpgdPlot; - host: string; - asLocalPath: (relPath: string) => string; - asWebViewPath: (localPath: string) => string; - makeCommandUri: (command: string, ...args: any[]) => string; - overwriteCssPath: string; - - // only used to render an individual smallPlot div: - plot?: HttpgdPlot; -} - -interface ShowOptions { - viewColumn: vscode.ViewColumn, - preserveFocus?: boolean -} - -export class HttpgdViewer implements IHttpgdViewer { - - readonly parent: HttpgdManager; - - readonly host: string; - readonly token?: string; - - // Actual webview where the plot viewer is shown - // Will have to be created anew, if the user closes it and the plot changes - webviewPanel?: vscode.WebviewPanel; - - // Api that provides plot contents etc. - readonly api: Httpgd; - - // active plots - plots: HttpgdPlot[] = []; - - // Id of the currently viewed plot - activePlot?: HttpgdPlotId; - - // Ids of plots that are not shown, but not closed inside httpgd - hiddenPlots: HttpgdPlotId[] = []; - - readonly defaultStripStyles: boolean = true; - stripStyles: boolean; - - readonly defaultPreviewPlotLayout: PreviewPlotLayout = 'multirow'; - previewPlotLayout: PreviewPlotLayout; - - readonly defaultFullWindow: boolean = false; - fullWindow: boolean; - - // Custom file to be used instead of `styleOverwrites.css` - customOverwriteCssPath?: string; - - // Size of the view area: - viewHeight: number = 600; - viewWidth: number = 800; - - // Size of the shown plot (as computed): - plotHeight: number = 600; - plotWidth: number = 800; - - readonly zoom0: number = 1; - zoom: number = this.zoom0; - - protected resizeTimeout?: NodeJS.Timeout; - readonly resizeTimeoutLength: number = 1300; - - protected refreshTimeout?: NodeJS.Timeout; - readonly refreshTimeoutLength: number = 10; - - private lastExportUri?: vscode.Uri; - - readonly htmlTemplate: string; - readonly smallPlotTemplate: string; - readonly htmlRoot: string; - - readonly showOptions: ShowOptions; - readonly webviewOptions: vscode.WebviewPanelOptions & vscode.WebviewOptions; - - // Computed properties: - - // Get/set active plot by index instead of id: - protected get activeIndex(): number { - if(!this.activePlot){ - return -1; - } - return this.getIndex(this.activePlot); - } - protected set activeIndex(ind: number) { - if (this.plots.length === 0) { - this.activePlot = undefined; - } else { - ind = Math.max(ind, 0); - ind = Math.min(ind, this.plots.length - 1); - this.activePlot = this.plots[ind].id; - } - } - - // constructor called by the session watcher if a corresponding function was called in R - // creates a new api instance itself - constructor(host: string, options: HttpgdViewerOptions) { - this.host = host; - this.token = options.token; - this.parent = options.parent; - - this.api = new Httpgd(this.host, this.token, true); - this.api.onPlotsChanged((newState) => { - void this.refreshPlotsDelayed(newState.plots); - }); - this.api.onConnectionChanged(() => { - // todo - }); - this.api.onDeviceActiveChanged(() => { - // todo - }); - const conf = config(); - this.customOverwriteCssPath = conf.get('plot.customStyleOverwrites', ''); - const localResourceRoots = ( - this.customOverwriteCssPath ? - [extensionContext.extensionUri, vscode.Uri.file(path.dirname(this.customOverwriteCssPath))] : - undefined - ); - this.htmlRoot = options.htmlRoot; - this.htmlTemplate = fs.readFileSync(path.join(this.htmlRoot, 'index.ejs'), 'utf-8'); - this.smallPlotTemplate = fs.readFileSync(path.join(this.htmlRoot, 'smallPlot.ejs'), 'utf-8'); - this.showOptions = { - viewColumn: options.viewColumn ?? asViewColumn(conf.get('session.viewers.viewColumn.plot'), vscode.ViewColumn.Two), - preserveFocus: !!options.preserveFocus - }; - this.webviewOptions = { - enableCommandUris: true, - enableScripts: true, - retainContextWhenHidden: true, - localResourceRoots: localResourceRoots - }; - this.defaultStripStyles = options.stripStyles ?? this.defaultStripStyles; - this.stripStyles = this.defaultStripStyles; - this.defaultPreviewPlotLayout = options.previewPlotLayout ?? this.defaultPreviewPlotLayout; - this.previewPlotLayout = this.defaultPreviewPlotLayout; - this.defaultFullWindow = options.fullWindow ?? this.defaultFullWindow; - this.fullWindow = this.defaultFullWindow; - this.resizeTimeoutLength = options.refreshTimeoutLength ?? this.resizeTimeoutLength; - this.refreshTimeoutLength = options.refreshTimeoutLength ?? this.refreshTimeoutLength; - void this.api.connect(); - //void this.checkState(); - } - - - // Methods to interact with the webview - // Can e.g. be called by vscode commands + menu items: - - // Called to create a new webview if the user closed the old one: - public show(preserveFocus?: boolean): void { - preserveFocus ??= this.showOptions.preserveFocus; - if (!this.webviewPanel) { - const showOptions = { - ...this.showOptions, - preserveFocus: preserveFocus - }; - this.webviewPanel = this.makeNewWebview(showOptions); - this.refreshHtml(); - } else { - this.webviewPanel.reveal(undefined, preserveFocus); - } - this.parent.registerActiveViewer(this); - } - - public openExternal(): void { - let urlString = `http://${this.host}/live`; - if (this.token) { - urlString += `?token=${this.token}`; - } - const uri = vscode.Uri.parse(urlString); - void vscode.env.openExternal(uri); - } - - // focus a specific plot id - public async focusPlot(id?: HttpgdPlotId): Promise { - this.activePlot = id || this.activePlot; - const plt = this.plots[this.activeIndex]; - if (plt.height !== this.viewHeight || plt.width !== this.viewHeight || plt.zoom !== this.zoom) { - await this.refreshPlots(this.api.getPlots()); - } else { - this._focusPlot(); - } - } - protected _focusPlot(plotId?: HttpgdPlotId): void { - plotId ??= this.activePlot; - if(!plotId){ - return; - } - const msg: FocusPlotMessage = { - message: 'focusPlot', - plotId: plotId - }; - this.postWebviewMessage(msg); - void this.setContextValues(); - } - - // navigate through plots (supply `true` to go to end/beginning of list) - public async nextPlot(last?: boolean): Promise { - this.activeIndex = last ? this.plots.length - 1 : this.activeIndex + 1; - await this.focusPlot(); - } - public async prevPlot(first?: boolean): Promise { - this.activeIndex = first ? 0 : this.activeIndex - 1; - await this.focusPlot(); - } - - // restore closed plots, reset zoom, redraw html - public resetPlots(): void { - this.hiddenPlots = []; - this.zoom = this.zoom0; - void this.refreshPlots(this.api.getPlots(), true, true); - } - - public hidePlot(id?: HttpgdPlotId): void { - id ??= this.activePlot; - if (!id) { return; } - const tmpIndex = this.activeIndex; - this.hiddenPlots.push(id); - this.plots = this.plots.filter((plt) => !this.hiddenPlots.includes(plt.id)); - if (id === this.activePlot) { - this.activeIndex = tmpIndex; - this._focusPlot(); - } - this._hidePlot(id); - } - protected _hidePlot(id: HttpgdPlotId): void { - const msg: HidePlotMessage = { - message: 'hidePlot', - plotId: id - }; - this.postWebviewMessage(msg); - } - - public async closePlot(id?: HttpgdPlotId): Promise { - id ??= this.activePlot; - if (id) { - this.hidePlot(id); - await this.api.removePlot({ id: id }); - } - } - - public toggleStyle(force?: boolean): void { - this.stripStyles = force ?? !this.stripStyles; - const msg: ToggleStyleMessage = { - message: 'toggleStyle', - useOverwrites: this.stripStyles - }; - this.postWebviewMessage(msg); - } - - public toggleFullWindow(force?: boolean): void { - this.fullWindow = force ?? !this.fullWindow; - const msg: ToggleFullWindowMessage = { - message: 'toggleFullWindow', - useFullWindow: this.fullWindow - }; - this.postWebviewMessage(msg); - } - - public togglePreviewPlots(force?: PreviewPlotLayout): void { - if (force) { - this.previewPlotLayout = force; - } else if (this.previewPlotLayout === 'multirow') { - this.previewPlotLayout = 'scroll'; - } else if (this.previewPlotLayout === 'scroll') { - this.previewPlotLayout = 'hidden'; - } else if (this.previewPlotLayout === 'hidden') { - this.previewPlotLayout = 'multirow'; - } - const msg: PreviewPlotLayoutMessage = { - message: 'togglePreviewPlotLayout', - style: this.previewPlotLayout - }; - this.postWebviewMessage(msg); - } - - public zoomOut(): void { - if (this.zoom > 0) { - this.zoom -= 0.1; - void this.resizePlot(); - } - } - - public zoomIn(): void { - this.zoom += 0.1; - void this.resizePlot(); - } - - - public async setContextValues(mightBeInBackground: boolean = false): Promise { - if (this.webviewPanel?.active) { - this.parent.registerActiveViewer(this); - await setContext('r.plot.active', true); - await setContext('r.plot.canGoBack', this.activeIndex > 0); - await setContext('r.plot.canGoForward', this.activeIndex < this.plots.length - 1); - } else if (!mightBeInBackground) { - await setContext('r.plot.active', false); - } - } - - public getPanelPath(): string | undefined { - if (!this.webviewPanel) { - return undefined; - } - const dummyUri = this.webviewPanel.webview.asWebviewUri(vscode.Uri.file('')); - const m = /^[^.]*/.exec(dummyUri.authority); - const webviewId = m?.[0] || ''; - return `webview-panel/webview-${webviewId}`; - } - - protected getIndex(id: HttpgdPlotId): number { - return this.plots.findIndex((plt: HttpgdPlot) => plt.id === id); - } - - protected handleResize(height: number, width: number, userTriggered: boolean = false): void { - this.viewHeight = height; - this.viewWidth = width; - if (userTriggered || this.resizeTimeoutLength === 0) { - if(this.resizeTimeout){ - clearTimeout(this.resizeTimeout); - } - this.resizeTimeout = undefined; - void this.resizePlot(); - } else if (!this.resizeTimeout) { - this.resizeTimeout = setTimeout(() => { - void this.resizePlot().then(() => - this.resizeTimeout = undefined - ); - }, this.resizeTimeoutLength); - } - } - - protected async resizePlot(id?: HttpgdPlotId): Promise { - id ??= this.activePlot; - if (!id) { return; } - const plt = await this.getPlotContent(id, this.viewWidth, this.viewHeight, this.zoom); - this.plotWidth = plt.width; - this.plotHeight = plt.height; - this.updatePlot(plt); - } - - protected async refreshPlotsDelayed(plotsIdResponse: HttpgdIdResponse[], redraw: boolean = false, force: boolean = false): Promise { - if(this.refreshTimeoutLength === 0){ - await this.refreshPlots(plotsIdResponse, redraw, force); - } else{ - clearTimeout(this.refreshTimeout); - this.refreshTimeout = setTimeout(() => { - void this.refreshPlots(plotsIdResponse, redraw, force).then(() => - this.refreshTimeout = undefined - ); - }, this.refreshTimeoutLength); - } - } - - protected async refreshPlots(plotsIdResponse: HttpgdIdResponse[], redraw: boolean = false, force: boolean = false): Promise { - const nPlots = this.plots.length; - let plotIds = plotsIdResponse.map((x) => x.id); - plotIds = plotIds.filter((id) => !this.hiddenPlots.includes(id)); - const newPlotPromises = plotIds.map(async (id) => { - const plot = this.plots.find((plt) => plt.id === id); - if (force || !plot || id === this.activePlot) { - return await this.getPlotContent(id, this.viewWidth, this.viewHeight, this.zoom); - } else { - return plot; - } - }); - const newPlots = await Promise.all(newPlotPromises); - const oldPlotIds = this.plots.map(plt => plt.id); - this.plots = newPlots; - if (this.plots.length !== nPlots) { - this.activePlot = this.plots[this.plots.length - 1]?.id; - } - if (redraw || !this.webviewPanel) { - this.refreshHtml(); - } else { - for (const plt of this.plots) { - if (oldPlotIds.includes(plt.id)) { - this.updatePlot(plt); - } else { - this.addPlot(plt); - } - } - this._focusPlot(); - } - } - - protected updatePlot(plt: HttpgdPlot): void { - const msg: UpdatePlotMessage = { - message: 'updatePlot', - plotId: plt.id, - svg: plt.data - }; - this.postWebviewMessage(msg); - } - - protected addPlot(plt: HttpgdPlot): void { - const ejsData = this.makeEjsData(); - ejsData.plot = plt; - const html = ejs.render(this.smallPlotTemplate, ejsData); - const msg: AddPlotMessage = { - message: 'addPlot', - html: html - }; - this.postWebviewMessage(msg); - void this.focusPlot(plt.id); - void this.setContextValues(); - } - - // get content of a single plot - protected async getPlotContent(id: HttpgdPlotId, width: number, height: number, zoom: number): Promise> { - - const args = { - id: id, - height: height, - width: width, - zoom: zoom, - renderer: 'svgp' - }; - - const plotContent = await this.api.getPlot(args); - const svg = await plotContent?.text() || ''; - - const plt: HttpgdPlot = { - id: id, - data: svg, - height: height, - width: width, - zoom: zoom, - }; - - this.viewHeight ??= plt.height; - this.viewWidth ??= plt.width; - return plt; - } - - - // functions for initial or re-drawing of html: - - protected refreshHtml(): void { - this.webviewPanel ??= this.makeNewWebview(); - this.webviewPanel.webview.html = ''; - this.webviewPanel.webview.html = this.makeHtml(); - // make sure that fullWindow is set correctly: - this.toggleFullWindow(this.fullWindow); - void this.setContextValues(true); - } - - protected makeHtml(): string { - const ejsData = this.makeEjsData(); - const html = ejs.render(this.htmlTemplate, ejsData); - return html; - } - - protected makeEjsData(): EjsData { - const asLocalPath = (relPath: string) => { - if (!this.webviewPanel) { - return relPath; - } - const localUri = vscode.Uri.file(path.join(this.htmlRoot, relPath)); - return localUri.fsPath; - }; - const asWebViewPath = (localPath: string) => { - if (!this.webviewPanel) { - return localPath; - } - const localUri = vscode.Uri.file(path.join(this.htmlRoot, localPath)); - const webViewUri = this.webviewPanel.webview.asWebviewUri(localUri); - return webViewUri.toString(); - }; - let overwriteCssPath = ''; - if (this.customOverwriteCssPath) { - const uri = vscode.Uri.file(this.customOverwriteCssPath); - overwriteCssPath = this.webviewPanel?.webview.asWebviewUri(uri).toString() || ''; - } else { - overwriteCssPath = asWebViewPath('styleOverwrites.css'); - } - const ejsData: EjsData = { - overwriteStyles: this.stripStyles, - previewPlotLayout: this.previewPlotLayout, - plots: this.plots, - largePlot: this.plots[this.activeIndex], - activePlot: this.activePlot, - host: this.host, - asLocalPath: asLocalPath, - asWebViewPath: asWebViewPath, - makeCommandUri: makeWebviewCommandUriString, - overwriteCssPath: overwriteCssPath - }; - return ejsData; - } - - protected makeNewWebview(showOptions?: ShowOptions): vscode.WebviewPanel { - const webviewPanel = vscode.window.createWebviewPanel( - 'RPlot', - 'R Plot', - showOptions || this.showOptions, - this.webviewOptions - ); - webviewPanel.iconPath = new UriIcon('graph'); - webviewPanel.onDidDispose(() => this.webviewPanel = undefined); - webviewPanel.onDidChangeViewState(() => { - void this.setContextValues(); - }); - webviewPanel.webview.onDidReceiveMessage((e: OutMessage) => { - this.handleWebviewMessage(e); - }); - return webviewPanel; - } - - protected handleWebviewMessage(msg: OutMessage): void { - if (msg.message === 'log') { - console.log(msg.body); - } else if (msg.message === 'resize') { - const height = msg.height; - const width = msg.width; - const userTriggered = msg.userTriggered; - void this.handleResize(height, width, userTriggered); - } - } - - protected postWebviewMessage(msg: InMessage): void { - void this.webviewPanel?.webview.postMessage(msg); - } - - - // export plot - // if no format supplied, show a quickpick menu etc. - // if no filename supplied, show selector window - public async exportPlot(id?: HttpgdPlotId, rendererId?: HttpgdRendererId, outFile?: string): Promise { - // make sure id is valid or return: - id ||= this.activePlot || this.plots[this.plots.length - 1]?.id; - const plot = this.plots.find((plt) => plt.id === id); - if (!plot) { - void vscode.window.showWarningMessage('No plot available for export.'); - return; - } - // make sure format is valid or return: - if (!rendererId) { - const renderers = this.api.getRenderers(); - const qpItems = renderers.map(renderer => ({ - label: renderer.name, - detail: renderer.descr, - id: renderer.id - })); - const options: vscode.QuickPickOptions = { - placeHolder: 'Please choose a file format' - }; - // format = await vscode.window.showQuickPick(formats, options); - const qpPick = await vscode.window.showQuickPick(qpItems, options); - rendererId = qpPick?.id; - if(!rendererId){ - return; - } - } - // make sure outFile is valid or return: - if (!outFile) { - const options: vscode.SaveDialogOptions = {}; - - // Suggest a file extension: - const renderer = this.api.getRenderers().find(r => r.id === rendererId); - const ext = renderer?.ext.replace(/^\./, ''); - - // try to set default URI: - if(this.lastExportUri){ - const noExtPath = this.lastExportUri.fsPath.replace(/\.[^.]*$/, ''); - const defaultPath = noExtPath + (ext ? `.${ext}` : ''); - options.defaultUri = vscode.Uri.file(defaultPath); - } else { - // construct default Uri - const defaultFolder = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath; - if(defaultFolder){ - const defaultName = 'plot' + (ext ? `.${ext}` : ''); - options.defaultUri = vscode.Uri.file(path.join(defaultFolder, defaultName)); - } - } - // set file extension filter - if(ext && renderer?.name){ - options.filters = { - [renderer.name]: [ext], - ['All']: ['*'], - }; - } - - const outUri = await vscode.window.showSaveDialog(options); - if(outUri){ - this.lastExportUri = outUri; - outFile = outUri.fsPath; - } else { - return; - } - } - // get plot: - const plt = await this.api.getPlot({ - id: this.activePlot, - renderer: rendererId - }) as unknown as Response; // I am not sure why eslint thinks this is the - // browser Response object and not the node-fetch one. - // cross-fetch problem or config problem in vscode-r? - - const dest = fs.createWriteStream(outFile); - dest.on('error', (err) => void vscode.window.showErrorMessage( - `Export failed: ${err.message}` - )); - dest.on('close', () => void vscode.window.showInformationMessage( - `Export done: ${outFile || ''}` - )); - void plt.body.pipe(dest); - } - - // Dispose-function to clean up when vscode closes - // E.g. to close connections etc., notify R, ... - public dispose(): void { - this.api.disconnect(); } } -// helper function to handle argument lists that might contain (useless) extra arguments -function findItemOfType(arr: any[], type: 'string'): string | undefined; -function findItemOfType(arr: any[], type: 'boolean'): boolean | undefined; -function findItemOfType(arr: any[], type: 'number'): number | undefined; -function findItemOfType(arr: any[], type: string): T { - const item = arr.find((elm) => typeof elm === type) as T; - return item; +export function initializePlotManager(): PlotManager { + const manager = new CommonPlotManager(); + manager.initialize(); + return manager; } diff --git a/src/plotViewer/standardViewer.ts b/src/plotViewer/standardViewer.ts new file mode 100644 index 00000000..622b8c77 --- /dev/null +++ b/src/plotViewer/standardViewer.ts @@ -0,0 +1,179 @@ + +import * as vscode from 'vscode'; +import { asViewColumn, config, UriIcon } from '../util'; +import { sessionRequest, server } from '../session'; +import { PlotViewer } from './types'; + +interface PlotResponse { + data: string; + format: string; +} + +export class StandardPlotViewer implements PlotViewer { + readonly id: string = 'standard'; + private panel: vscode.WebviewPanel | undefined; + private viewWidth: number = 800; + private viewHeight: number = 600; + private plotData: string | undefined; + private plotFormat: string | undefined; + + public async update(): Promise { + const viewColumn = asViewColumn(config().get('session.viewers.viewColumn.plot'), vscode.ViewColumn.Two); + if (!this.panel) { + this.createPanel(viewColumn); + } else { + this.panel.reveal(viewColumn, true); + await this.requestPlot(); + } + } + + public show(preserveFocus?: boolean): void { + if (this.panel) { + this.panel.reveal(undefined, preserveFocus); + } + } + + public handleCommand(command: string): void { + if (command === 'showViewers') { + this.show(); + } + // Other commands are not supported by the standard viewer + } + + public dispose(): void { + this.panel?.dispose(); + } + + private createPanel(viewColumn: vscode.ViewColumn) { + this.panel = vscode.window.createWebviewPanel( + 'r.standardPlot', + 'R Plot', + { + viewColumn, + preserveFocus: true + }, + { + enableScripts: true, + retainContextWhenHidden: true + } + ); + + this.panel.iconPath = new UriIcon('graph'); + this.panel.webview.html = this.getHtml(); + + this.panel.webview.onDidReceiveMessage(async (msg: { type: string, width?: number, height?: number }) => { + if (msg.type === 'resize') { + this.viewWidth = msg.width || this.viewWidth; + this.viewHeight = msg.height || this.viewHeight; + await this.requestPlot(); + } + }); + + this.panel.onDidDispose(() => { + this.panel = undefined; + }); + } + + private async requestPlot() { + if (!server || !this.panel) { + return; + } + + const format = config().get('plot.format', 'svglite'); + const devArgs = config().get>('plot.devArgs'); + const response = await sessionRequest(server, { + method: 'plot_latest', + params: { + width: this.viewWidth, + height: this.viewHeight, + format: format, + devArgs: devArgs + } + }) as PlotResponse | undefined; + + if (response?.data) { + this.plotData = response.data; + this.plotFormat = response.format || format; + void this.panel.webview.postMessage({ + type: 'update', + data: this.plotData, + format: this.plotFormat + }); + } + } + + private getHtml() { + return ` + + + + + + + + +
+ + + + `; + } +} diff --git a/src/plotViewer/types.ts b/src/plotViewer/types.ts new file mode 100644 index 00000000..478c2d29 --- /dev/null +++ b/src/plotViewer/types.ts @@ -0,0 +1,15 @@ + +export interface PlotViewer { + readonly id: string; + show(preserveFocus?: boolean): void; + dispose(): void; + handleCommand(command: string, ...args: unknown[]): void | Promise; +} + +export interface PlotManager { + viewers: PlotViewer[]; + activeViewer: PlotViewer | undefined; + initialize(): void; + showStandardPlot(): Promise; + showHttpgdPlot(url: string): Promise; +} diff --git a/src/plotViewer/webview/index.ejs b/src/plotViewer/webview/index.ejs new file mode 100644 index 00000000..99036c41 --- /dev/null +++ b/src/plotViewer/webview/index.ejs @@ -0,0 +1,25 @@ + + + + + + > + + + +
> + <%- largePlot?.data %> +
+
+
+ <% plots.forEach((plot)=> { %> +
+ <%- include(asLocalPath('./smallPlot.ejs'), {plot: plot}) %> +
+ <% }) %> +
+
+ + + + diff --git a/src/plotViewer/webview/index.ts b/src/plotViewer/webview/index.ts new file mode 100644 index 00000000..117fb3fb --- /dev/null +++ b/src/plotViewer/webview/index.ts @@ -0,0 +1,238 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +/* eslint-disable @typescript-eslint/no-unsafe-call */ +/* eslint-disable @typescript-eslint/no-explicit-any */ + + +interface Plot { + // unique ID for this plot (w.r.t. this connection/device) + id: string; + + // svg of the plot + svg: string; + + height?: number; + width?: number; +} + +import { acquireVsCodeApi, ResizeMessage, InMessage, PreviewPlotLayout } from '../webviewMessages'; +const vscode = acquireVsCodeApi() as { postMessage: (msg: any) => void }; + +// globals +let oldHeight = -1; +let oldWidth = -1; + + +const handler = document.querySelector('#handler') as HTMLDivElement; +const largePlotDiv = document.querySelector('#largePlot') as HTMLDivElement; +const largeSvg = largePlotDiv.querySelector('svg') as SVGElement; +const cssLink = document.querySelector('link.overwrites') as HTMLLinkElement; +const smallPlotDiv = document.querySelector('#smallPlots') as HTMLDivElement; + + +function getSmallPlots(): HTMLAnchorElement[] { + const smallPlots: HTMLAnchorElement[] = []; + document.querySelectorAll('a.focusPlot').forEach(elm => { + smallPlots.push(elm as HTMLAnchorElement); + }); + return smallPlots; +} + +let isHandlerDragging = false; + + +let isFullWindow = false; + +function postResizeMessage(userTriggered: boolean = false){ + let newHeight = largePlotDiv.clientHeight; + let newWidth = largePlotDiv.clientWidth; + if(isFullWindow){ + newHeight = window.innerHeight; + newWidth = window.innerWidth; + } + if(userTriggered || newHeight !== oldHeight || newWidth !== oldWidth){ + const msg: ResizeMessage = { + message: 'resize', + height: newHeight, + width: newWidth, + userTriggered: userTriggered + }; + vscode.postMessage(msg); + oldHeight = newHeight; + oldWidth = newWidth; + } +} + +window.addEventListener('message', (ev: MessageEvent) => { + const msg = ev.data; + if(msg.message === 'updatePlot'){ + updatePlot({ + id: String(msg.plotId), + svg: msg.svg + }); + } else if(msg.message === 'focusPlot'){ + focusPlot(String(msg.plotId)); + } else if(msg.message === 'toggleStyle'){ + toggleStyle(msg.useOverwrites); + } else if(msg.message === 'hidePlot'){ + hidePlot(msg.plotId); + } else if(msg.message === 'addPlot'){ + addPlot(msg.html); + } else if(msg.message === 'togglePreviewPlotLayout'){ + togglePreviewPlotLayout(msg.style); + } else if(msg.message === 'toggleFullWindow'){ + toggleFullWindowMode(msg.useFullWindow); + } +}); + +function addPlot(html: string){ + const wrapper = document.createElement('div'); + wrapper.classList.add('wrapper'); + wrapper.innerHTML = html; + smallPlotDiv.appendChild(wrapper); +} + +function focusPlot(plotId: string): void { + + const smallPlots = getSmallPlots(); + + const ind = findIndex(plotId, smallPlots); + if(ind < 0){ + return; + } + + for(const elm of smallPlots){ + elm.classList.remove('active'); + } + + const smallPlot = smallPlots[ind]; + + smallPlot.classList.add('active'); + + largePlotDiv.innerHTML = smallPlot.innerHTML; +} + +function updatePlot(plt: Plot): void { + + const smallPlots = getSmallPlots(); + + const ind = findIndex(plt.id, smallPlots); + if(ind<0){ + return; + } + + smallPlots[ind].innerHTML = plt.svg; + + if(smallPlots[ind].classList.contains('active')){ + largePlotDiv.innerHTML = plt.svg; + } +} + +function hidePlot(plotId: string): void { + const smallPlots = getSmallPlots(); + + const ind = findIndex(plotId, smallPlots); + if(ind<0){ + return; + } + + if(smallPlots[ind].classList.contains('active')){ + largePlotDiv.innerHTML = ''; + } + + smallPlots[ind].parentElement?.remove(); +} + +function findIndex(plotId: string, smallPlots?: Element[]): number { + smallPlots ||= getSmallPlots(); + const ind = smallPlots.findIndex(elm => elm.getAttribute('plotId') === String(plotId)); + if(ind<0){ + console.warn(`plotId not found: ${plotId}`); + } + return ind; +} + +function toggleStyle(useOverwrites: boolean): void { + cssLink.disabled = !useOverwrites; +} + +function togglePreviewPlotLayout(newStyle: PreviewPlotLayout): void { + smallPlotDiv.classList.remove('multirow', 'scroll', 'hidden'); + smallPlotDiv.classList.add(newStyle); +} + +function toggleFullWindowMode(useFullWindow: boolean): void { + isFullWindow = useFullWindow; + if(useFullWindow){ + document.body.classList.add('fullWindow'); + window.scrollTo(0, 0); + } else { + document.body.classList.remove('fullWindow'); + } + postResizeMessage(true); +} + +//// +// On window load +//// + +window.onload = () => { + largePlotDiv.style.height = `${largeSvg.clientHeight}px`; + postResizeMessage(true); +}; + + +//// +// Resize bar +//// + + +document.addEventListener('mousedown', (e) => { + // If mousedown event is fired from .handler, toggle flag to true + if (!isFullWindow && e.target === handler) { + isHandlerDragging = true; + handler.classList.add('dragging'); + document.body.style.cursor = 'ns-resize'; + } +}); + +document.addEventListener('mousemove', (e) => { + // Don't do anything if dragging flag is false + if (isFullWindow || !isHandlerDragging) { + return false; + } + + // postLogMessage('mousemove'); + + // Get offset + const containerOffsetTop = document.body.offsetTop; + + // Get x-coordinate of pointer relative to container + const pointerRelativeYpos = e.clientY - containerOffsetTop + window.scrollY; + + // Arbitrary minimum width set on box A, otherwise its inner content will collapse to width of 0 + const largePlotMinHeight = 60; + + // Resize large plot + const newHeight = Math.max(largePlotMinHeight, pointerRelativeYpos - 5); // <- why 5? + const newHeightString = `${newHeight}px`; + + if(largePlotDiv.style.height !== newHeightString){ + largePlotDiv.style.height = newHeightString; + postResizeMessage(); + } +}); + +window.onresize = () => postResizeMessage(); + +document.addEventListener('mouseup', () => { + // Turn off dragging flag when user mouse is up + if(isHandlerDragging){ + postResizeMessage(true); + document.body.style.cursor = ''; + } + handler.classList.remove('dragging'); + isHandlerDragging = false; +}); + diff --git a/src/plotViewer/webview/smallPlot.ejs b/src/plotViewer/webview/smallPlot.ejs new file mode 100644 index 00000000..7d833766 --- /dev/null +++ b/src/plotViewer/webview/smallPlot.ejs @@ -0,0 +1,15 @@ + + <%- plot.data %> + + + ✖ + diff --git a/src/plotViewer/webview/style.css b/src/plotViewer/webview/style.css new file mode 100644 index 00000000..c7d30c9b --- /dev/null +++ b/src/plotViewer/webview/style.css @@ -0,0 +1,136 @@ + +/* Use box-sizing: border-box everywhere: */ +html { + box-sizing: border-box; +} +*, *::before, *::after { + box-sizing: inherit; +} + +/* General styling: */ +body { + padding-left: 1px; + padding-right: 1px; +} +body.fullWindow { + overflow-x: hidden; + overflow-y: hidden; +} + +svg { + user-select: none; +} + +/* Stretch large plot during resizing, */ +/* Keep small plots the same size: */ +.httpgd { + width: 100%; + height: 100%; +} + +/* Main plot area: */ +#largePlot { + overflow-x: auto; + overflow-y: hidden; + padding: 10px; + width: 100%; + height: 100%; +} +body.fullWindow #largePlot { + overflow-x: hidden; + width: 100vw !important; + height: 100vh !important; +} + +/* Dragbar to resize main plot: */ +#handler { + background-color: var(--vscode-textSeparator-foreground); + height: 4px; + cursor: ns-resize; +} +#handler:hover, #handler.dragging { + background-color: var(--vscode-focusBorder); + transition: background-color .1s ease-out; + transition-delay: .2s; +} +body.fullWindow #handler { + display: none; +} + +#placeholder { + height: 95vh; +} +body.fullWindow #placeHolder { + display: none; +} + +/* Plot history: */ + +#smallPlots { + display: flex; + /* flex-direction: row; */ + position: relative; + overflow-x: auto; + flex-direction: row; + overflow-y: hidden; + padding: 10px; +} +body.fullWindow #smallPlots { + display: none; +} + +#smallPlots.multirow { + overflow-x: hidden; + flex-wrap: wrap; +} + +#smallPlots.hidden { + display: none; +} + +/* Each small plot: */ + +#smallPlots .wrapper { + position: relative; + height: 15vw; + width: 19vw; + flex: none; + padding: 3px; + padding-bottom: 12px; +} + +a.focusPlot { + height: 100%; + width: 100%; +} + +a.hidePlot { + display: none; + position: absolute; + top: 0; + right: 5px; + text-decoration: none; + font-size: 2em; + user-select: none; + color: var(--vscode-foreground); +} + +.plotContent { + height: 100%; + width: 100%; +} + +.smallPlot:not(.active):hover { + background-color: var(--vscode-list-hoverBackground); + background-clip: content-box; +} + +/* Hide plot button: */ +#smallPlots .wrapper:hover a.hidePlot { + display: block; +} + +#smallPlots .wrapper a.hidePlot:hover { + color: var(--vscode-errorForeground); +} + diff --git a/src/plotViewer/webview/styleOverwrites.css b/src/plotViewer/webview/styleOverwrites.css new file mode 100644 index 00000000..953ac561 --- /dev/null +++ b/src/plotViewer/webview/styleOverwrites.css @@ -0,0 +1,15 @@ + + +.httpgd rect { + stroke: none !important; + fill: none !important; +} + +svg text { + font-family: var(--vscode-editor-font-family) !important; + fill: var(--vscode-foreground) !important; +} + +.httpgd line, .httpgd polyline, .httpgd polygon, .httpgd path, .httpgd circle, .httpgd rect:not(:first-of-type) { + stroke: var(--vscode-foreground) !important; +} diff --git a/src/plotViewer/webview/vars.css b/src/plotViewer/webview/vars.css new file mode 100644 index 00000000..d20aad6b --- /dev/null +++ b/src/plotViewer/webview/vars.css @@ -0,0 +1,470 @@ +/* This file contains a list of variables available in a vscode webview and their values from the Dark+ theme */ + +.fromvscode { + --vscode-font-family: "Segoe WPC", "Segoe UI", sans-serif; + --vscode-font-weight: normal; + --vscode-font-size: 13px; + --vscode-editor-font-family: Consolas, "Courier New", monospace; + --vscode-editor-font-weight: normal; + --vscode-editor-font-size: 14px; + --vscode-foreground: #cccccc; + --vscode-errorForeground: #f48771; + --vscode-descriptionForeground: rgba(204, 204, 204, 0.7); + --vscode-icon-foreground: #c5c5c5; + --vscode-focusBorder: #007fd4; + --vscode-textSeparator-foreground: rgba(255, 255, 255, 0.18); + --vscode-textLink-foreground: #3794ff; + --vscode-textLink-activeForeground: #3794ff; + --vscode-textPreformat-foreground: #d7ba7d; + --vscode-textBlockQuote-background: rgba(127, 127, 127, 0.1); + --vscode-textBlockQuote-border: rgba(0, 122, 204, 0.5); + --vscode-textCodeBlock-background: rgba(10, 10, 10, 0.4); + --vscode-widget-shadow: rgba(0, 0, 0, 0.36); + --vscode-input-background: #3c3c3c; + --vscode-input-foreground: #cccccc; + --vscode-inputOption-activeBorder: rgba(0, 122, 204, 0); + --vscode-inputOption-activeBackground: rgba(0, 127, 212, 0.4); + --vscode-inputOption-activeForeground: #ffffff; + --vscode-input-placeholderForeground: #a6a6a6; + --vscode-inputValidation-infoBackground: #063b49; + --vscode-inputValidation-infoBorder: #007acc; + --vscode-inputValidation-warningBackground: #352a05; + --vscode-inputValidation-warningBorder: #b89500; + --vscode-inputValidation-errorBackground: #5a1d1d; + --vscode-inputValidation-errorBorder: #be1100; + --vscode-dropdown-background: #3c3c3c; + --vscode-dropdown-foreground: #f0f0f0; + --vscode-dropdown-border: #3c3c3c; + --vscode-checkbox-background: #3c3c3c; + --vscode-checkbox-foreground: #f0f0f0; + --vscode-checkbox-border: #3c3c3c; + --vscode-button-foreground: #ffffff; + --vscode-button-background: #0e639c; + --vscode-button-hoverBackground: #1177bb; + --vscode-button-secondaryForeground: #ffffff; + --vscode-button-secondaryBackground: #3a3d41; + --vscode-button-secondaryHoverBackground: #45494e; + --vscode-badge-background: #4d4d4d; + --vscode-badge-foreground: #ffffff; + --vscode-scrollbar-shadow: #000000; + --vscode-scrollbarSlider-background: rgba(121, 121, 121, 0.4); + --vscode-scrollbarSlider-hoverBackground: rgba(100, 100, 100, 0.7); + --vscode-scrollbarSlider-activeBackground: rgba(191, 191, 191, 0.4); + --vscode-progressBar-background: #0e70c0; + --vscode-editorError-foreground: #f48771; + --vscode-editorWarning-foreground: #cca700; + --vscode-editorInfo-foreground: #75beff; + --vscode-editorHint-foreground: rgba(238, 238, 238, 0.7); + --vscode-sash-hoverBorder: #007fd4; + --vscode-editor-background: #1e1e1e; + --vscode-editor-foreground: #d4d4d4; + --vscode-editorWidget-background: #252526; + --vscode-editorWidget-foreground: #cccccc; + --vscode-editorWidget-border: #454545; + --vscode-quickInput-background: #252526; + --vscode-quickInput-foreground: #cccccc; + --vscode-quickInputTitle-background: rgba(255, 255, 255, 0.1); + --vscode-pickerGroup-foreground: #3794ff; + --vscode-pickerGroup-border: #3f3f46; + --vscode-editor-selectionBackground: #264f78; + --vscode-editor-inactiveSelectionBackground: #3a3d41; + --vscode-editor-selectionHighlightBackground: rgba(173, 214, 255, 0.15); + --vscode-editor-findMatchBackground: #515c6a; + --vscode-editor-findMatchHighlightBackground: rgba(234, 92, 0, 0.33); + --vscode-editor-findRangeHighlightBackground: rgba(58, 61, 65, 0.4); + --vscode-searchEditor-findMatchBackground: rgba(234, 92, 0, 0.22); + --vscode-editor-hoverHighlightBackground: rgba(38, 79, 120, 0.25); + --vscode-editorHoverWidget-background: #252526; + --vscode-editorHoverWidget-foreground: #cccccc; + --vscode-editorHoverWidget-border: #454545; + --vscode-editorHoverWidget-statusBarBackground: #2c2c2d; + --vscode-editorLink-activeForeground: #4e94ce; + --vscode-editorInlineHint-foreground: #252526; + --vscode-editorInlineHint-background: #cccccc; + --vscode-editorLightBulb-foreground: #ffcc00; + --vscode-editorLightBulbAutoFix-foreground: #75beff; + --vscode-diffEditor-insertedTextBackground: rgba(155, 185, 85, 0.2); + --vscode-diffEditor-removedTextBackground: rgba(255, 0, 0, 0.2); + --vscode-diffEditor-diagonalFill: rgba(204, 204, 204, 0.2); + --vscode-list-focusOutline: #007fd4; + --vscode-list-activeSelectionBackground: #094771; + --vscode-list-activeSelectionForeground: #ffffff; + --vscode-list-inactiveSelectionBackground: #37373d; + --vscode-list-hoverBackground: #2a2d2e; + --vscode-list-dropBackground: #383b3d; + --vscode-list-highlightForeground: #0097fb; + --vscode-list-invalidItemForeground: #b89500; + --vscode-list-errorForeground: #f88070; + --vscode-list-warningForeground: #cca700; + --vscode-listFilterWidget-background: #653723; + --vscode-listFilterWidget-outline: rgba(0, 0, 0, 0); + --vscode-listFilterWidget-noMatchesOutline: #be1100; + --vscode-list-filterMatchBackground: rgba(234, 92, 0, 0.33); + --vscode-tree-indentGuidesStroke: #585858; + --vscode-tree-tableColumnsBorder: rgba(204, 204, 204, 0.13); + --vscode-list-deemphasizedForeground: #8c8c8c; + --vscode-quickInputList-focusBackground: #062f4a; + --vscode-menu-foreground: #cccccc; + --vscode-menu-background: #252526; + --vscode-menu-selectionForeground: #ffffff; + --vscode-menu-selectionBackground: #094771; + --vscode-menu-separatorBackground: #bbbbbb; + --vscode-toolbar-hoverBackground: rgba(90, 93, 94, 0.31); + --vscode-toolbar-activeBackground: rgba(99, 102, 103, 0.31); + --vscode-editor-snippetTabstopHighlightBackground: rgba(124, 124, 124, 0.3); + --vscode-editor-snippetFinalTabstopHighlightBorder: #525252; + --vscode-breadcrumb-foreground: rgba(204, 204, 204, 0.8); + --vscode-breadcrumb-background: #1e1e1e; + --vscode-breadcrumb-focusForeground: #e0e0e0; + --vscode-breadcrumb-activeSelectionForeground: #e0e0e0; + --vscode-breadcrumbPicker-background: #252526; + --vscode-merge-currentHeaderBackground: rgba(64, 200, 174, 0.5); + --vscode-merge-currentContentBackground: rgba(64, 200, 174, 0.2); + --vscode-merge-incomingHeaderBackground: rgba(64, 166, 255, 0.5); + --vscode-merge-incomingContentBackground: rgba(64, 166, 255, 0.2); + --vscode-merge-commonHeaderBackground: rgba(96, 96, 96, 0.4); + --vscode-merge-commonContentBackground: rgba(96, 96, 96, 0.16); + --vscode-editorOverviewRuler-currentContentForeground: rgba(64, 200, 174, 0.5); + --vscode-editorOverviewRuler-incomingContentForeground: rgba(64, 166, 255, 0.5); + --vscode-editorOverviewRuler-commonContentForeground: rgba(96, 96, 96, 0.4); + --vscode-editorOverviewRuler-findMatchForeground: rgba(209, 134, 22, 0.49); + --vscode-editorOverviewRuler-selectionHighlightForeground: rgba(160, 160, 160, 0.8); + --vscode-minimap-findMatchHighlight: #d18616; + --vscode-minimap-selectionHighlight: #264f78; + --vscode-minimap-errorHighlight: rgba(255, 18, 18, 0.7); + --vscode-minimap-warningHighlight: #cca700; + --vscode-minimapSlider-background: rgba(121, 121, 121, 0.2); + --vscode-minimapSlider-hoverBackground: rgba(100, 100, 100, 0.35); + --vscode-minimapSlider-activeBackground: rgba(191, 191, 191, 0.2); + --vscode-problemsErrorIcon-foreground: #f48771; + --vscode-problemsWarningIcon-foreground: #cca700; + --vscode-problemsInfoIcon-foreground: #75beff; + --vscode-charts-foreground: #cccccc; + --vscode-charts-lines: rgba(204, 204, 204, 0.5); + --vscode-charts-red: #f48771; + --vscode-charts-blue: #75beff; + --vscode-charts-yellow: #cca700; + --vscode-charts-orange: #d18616; + --vscode-charts-green: #89d185; + --vscode-charts-purple: #b180d7; + --vscode-editor-lineHighlightBorder: #282828; + --vscode-editor-rangeHighlightBackground: rgba(255, 255, 255, 0.04); + --vscode-editor-symbolHighlightBackground: rgba(234, 92, 0, 0.33); + --vscode-editorCursor-foreground: #aeafad; + --vscode-editorWhitespace-foreground: rgba(227, 228, 226, 0.16); + --vscode-editorIndentGuide-background: #404040; + --vscode-editorIndentGuide-activeBackground: #707070; + --vscode-editorLineNumber-foreground: #858585; + --vscode-editorActiveLineNumber-foreground: #c6c6c6; + --vscode-editorLineNumber-activeForeground: #c6c6c6; + --vscode-editorRuler-foreground: #5a5a5a; + --vscode-editorCodeLens-foreground: #999999; + --vscode-editorBracketMatch-background: rgba(0, 100, 0, 0.1); + --vscode-editorBracketMatch-border: #888888; + --vscode-editorOverviewRuler-border: rgba(127, 127, 127, 0.3); + --vscode-editorGutter-background: #1e1e1e; + --vscode-editorUnnecessaryCode-opacity: rgba(0, 0, 0, 0.67); + --vscode-editorOverviewRuler-rangeHighlightForeground: rgba(0, 122, 204, 0.6); + --vscode-editorOverviewRuler-errorForeground: rgba(255, 18, 18, 0.7); + --vscode-editorOverviewRuler-warningForeground: #cca700; + --vscode-editorOverviewRuler-infoForeground: #75beff; + --vscode-symbolIcon-arrayForeground: #cccccc; + --vscode-symbolIcon-booleanForeground: #cccccc; + --vscode-symbolIcon-classForeground: #ee9d28; + --vscode-symbolIcon-colorForeground: #cccccc; + --vscode-symbolIcon-constantForeground: #cccccc; + --vscode-symbolIcon-constructorForeground: #b180d7; + --vscode-symbolIcon-enumeratorForeground: #ee9d28; + --vscode-symbolIcon-enumeratorMemberForeground: #75beff; + --vscode-symbolIcon-eventForeground: #ee9d28; + --vscode-symbolIcon-fieldForeground: #75beff; + --vscode-symbolIcon-fileForeground: #cccccc; + --vscode-symbolIcon-folderForeground: #cccccc; + --vscode-symbolIcon-functionForeground: #b180d7; + --vscode-symbolIcon-interfaceForeground: #75beff; + --vscode-symbolIcon-keyForeground: #cccccc; + --vscode-symbolIcon-keywordForeground: #cccccc; + --vscode-symbolIcon-methodForeground: #b180d7; + --vscode-symbolIcon-moduleForeground: #cccccc; + --vscode-symbolIcon-namespaceForeground: #cccccc; + --vscode-symbolIcon-nullForeground: #cccccc; + --vscode-symbolIcon-numberForeground: #cccccc; + --vscode-symbolIcon-objectForeground: #cccccc; + --vscode-symbolIcon-operatorForeground: #cccccc; + --vscode-symbolIcon-packageForeground: #cccccc; + --vscode-symbolIcon-propertyForeground: #cccccc; + --vscode-symbolIcon-referenceForeground: #cccccc; + --vscode-symbolIcon-snippetForeground: #cccccc; + --vscode-symbolIcon-stringForeground: #cccccc; + --vscode-symbolIcon-structForeground: #cccccc; + --vscode-symbolIcon-textForeground: #cccccc; + --vscode-symbolIcon-typeParameterForeground: #cccccc; + --vscode-symbolIcon-unitForeground: #cccccc; + --vscode-symbolIcon-variableForeground: #75beff; + --vscode-editorOverviewRuler-bracketMatchForeground: #a0a0a0; + --vscode-editor-linkedEditingBackground: rgba(255, 0, 0, 0.3); + --vscode-editor-wordHighlightBackground: rgba(87, 87, 87, 0.72); + --vscode-editor-wordHighlightStrongBackground: rgba(0, 73, 114, 0.72); + --vscode-editorOverviewRuler-wordHighlightForeground: rgba(160, 160, 160, 0.8); + --vscode-editorOverviewRuler-wordHighlightStrongForeground: rgba(192, 160, 192, 0.8); + --vscode-editor-foldBackground: rgba(38, 79, 120, 0.3); + --vscode-editorGutter-foldingControlForeground: #c5c5c5; + --vscode-peekViewTitle-background: #1e1e1e; + --vscode-peekViewTitleLabel-foreground: #ffffff; + --vscode-peekViewTitleDescription-foreground: rgba(204, 204, 204, 0.7); + --vscode-peekView-border: #007acc; + --vscode-peekViewResult-background: #252526; + --vscode-peekViewResult-lineForeground: #bbbbbb; + --vscode-peekViewResult-fileForeground: #ffffff; + --vscode-peekViewResult-selectionBackground: rgba(51, 153, 255, 0.2); + --vscode-peekViewResult-selectionForeground: #ffffff; + --vscode-peekViewEditor-background: #001f33; + --vscode-peekViewEditorGutter-background: #001f33; + --vscode-peekViewResult-matchHighlightBackground: rgba(234, 92, 0, 0.3); + --vscode-peekViewEditor-matchHighlightBackground: rgba(255, 143, 0, 0.6); + --vscode-editorMarkerNavigationError-background: #f48771; + --vscode-editorMarkerNavigationWarning-background: #cca700; + --vscode-editorMarkerNavigationInfo-background: #75beff; + --vscode-editorMarkerNavigation-background: #2d2d30; + --vscode-editorSuggestWidget-background: #252526; + --vscode-editorSuggestWidget-border: #454545; + --vscode-editorSuggestWidget-foreground: #d4d4d4; + --vscode-editorSuggestWidget-selectedBackground: #062f4a; + --vscode-editorSuggestWidget-highlightForeground: #0097fb; + --vscode-tab-activeBackground: #1e1e1e; + --vscode-tab-unfocusedActiveBackground: #1e1e1e; + --vscode-tab-inactiveBackground: #2d2d2d; + --vscode-tab-unfocusedInactiveBackground: #2d2d2d; + --vscode-tab-activeForeground: #ffffff; + --vscode-tab-inactiveForeground: rgba(255, 255, 255, 0.5); + --vscode-tab-unfocusedActiveForeground: rgba(255, 255, 255, 0.5); + --vscode-tab-unfocusedInactiveForeground: rgba(255, 255, 255, 0.25); + --vscode-tab-border: #252526; + --vscode-tab-lastPinnedBorder: rgba(204, 204, 204, 0.2); + --vscode-tab-activeModifiedBorder: #3399cc; + --vscode-tab-inactiveModifiedBorder: rgba(51, 153, 204, 0.5); + --vscode-tab-unfocusedActiveModifiedBorder: rgba(51, 153, 204, 0.5); + --vscode-tab-unfocusedInactiveModifiedBorder: rgba(51, 153, 204, 0.25); + --vscode-editorPane-background: #1e1e1e; + --vscode-editorGroupHeader-tabsBackground: #252526; + --vscode-editorGroupHeader-noTabsBackground: #1e1e1e; + --vscode-editorGroup-border: #444444; + --vscode-editorGroup-dropBackground: rgba(83, 89, 93, 0.5); + --vscode-imagePreview-border: rgba(128, 128, 128, 0.35); + --vscode-panel-background: #1e1e1e; + --vscode-panel-border: rgba(128, 128, 128, 0.35); + --vscode-panelTitle-activeForeground: #e7e7e7; + --vscode-panelTitle-inactiveForeground: rgba(231, 231, 231, 0.6); + --vscode-panelTitle-activeBorder: #e7e7e7; + --vscode-panel-dropBorder: #e7e7e7; + --vscode-panelSection-dropBackground: rgba(83, 89, 93, 0.5); + --vscode-panelSectionHeader-background: rgba(128, 128, 128, 0.2); + --vscode-panelSection-border: rgba(128, 128, 128, 0.35); + --vscode-statusBar-foreground: #ffffff; + --vscode-statusBar-noFolderForeground: #ffffff; + --vscode-statusBar-background: #007acc; + --vscode-statusBar-noFolderBackground: #68217a; + --vscode-statusBarItem-activeBackground: rgba(255, 255, 255, 0.18); + --vscode-statusBarItem-hoverBackground: rgba(255, 255, 255, 0.12); + --vscode-statusBarItem-prominentForeground: #ffffff; + --vscode-statusBarItem-prominentBackground: rgba(0, 0, 0, 0.5); + --vscode-statusBarItem-prominentHoverBackground: rgba(0, 0, 0, 0.3); + --vscode-statusBarItem-errorBackground: #c72e0f; + --vscode-statusBarItem-errorForeground: #ffffff; + --vscode-activityBar-background: #333333; + --vscode-activityBar-foreground: #ffffff; + --vscode-activityBar-inactiveForeground: rgba(255, 255, 255, 0.4); + --vscode-activityBar-activeBorder: #ffffff; + --vscode-activityBar-dropBorder: #ffffff; + --vscode-activityBarBadge-background: #007acc; + --vscode-activityBarBadge-foreground: #ffffff; + --vscode-statusBarItem-remoteBackground: #16825d; + --vscode-statusBarItem-remoteForeground: #ffffff; + --vscode-extensionBadge-remoteBackground: #007acc; + --vscode-extensionBadge-remoteForeground: #ffffff; + --vscode-sideBar-background: #252526; + --vscode-sideBarTitle-foreground: #bbbbbb; + --vscode-sideBar-dropBackground: rgba(83, 89, 93, 0.5); + --vscode-sideBarSectionHeader-background: rgba(0, 0, 0, 0); + --vscode-sideBarSectionHeader-border: rgba(204, 204, 204, 0.2); + --vscode-titleBar-activeForeground: #cccccc; + --vscode-titleBar-inactiveForeground: rgba(204, 204, 204, 0.6); + --vscode-titleBar-activeBackground: #3c3c3c; + --vscode-titleBar-inactiveBackground: rgba(60, 60, 60, 0.6); + --vscode-menubar-selectionForeground: #cccccc; + --vscode-menubar-selectionBackground: rgba(255, 255, 255, 0.1); + --vscode-notifications-foreground: #cccccc; + --vscode-notifications-background: #252526; + --vscode-notificationLink-foreground: #3794ff; + --vscode-notificationCenterHeader-background: #303031; + --vscode-notifications-border: #303031; + --vscode-notificationsErrorIcon-foreground: #f48771; + --vscode-notificationsWarningIcon-foreground: #cca700; + --vscode-notificationsInfoIcon-foreground: #75beff; + --vscode-editorGutter-commentRangeForeground: #c5c5c5; + --vscode-debugToolBar-background: #333333; + --vscode-debugIcon-startForeground: #89d185; + --vscode-settings-headerForeground: #e7e7e7; + --vscode-settings-modifiedItemIndicator: #0c7d9d; + --vscode-settings-dropdownBackground: #3c3c3c; + --vscode-settings-dropdownForeground: #f0f0f0; + --vscode-settings-dropdownBorder: #3c3c3c; + --vscode-settings-dropdownListBorder: #454545; + --vscode-settings-checkboxBackground: #3c3c3c; + --vscode-settings-checkboxForeground: #f0f0f0; + --vscode-settings-checkboxBorder: #3c3c3c; + --vscode-settings-textInputBackground: #3c3c3c; + --vscode-settings-textInputForeground: #cccccc; + --vscode-settings-numberInputBackground: #3c3c3c; + --vscode-settings-numberInputForeground: #cccccc; + --vscode-settings-focusedRowBackground: rgba(128, 128, 128, 0.14); + --vscode-notebook-rowHoverBackground: rgba(128, 128, 128, 0.07); + --vscode-notebook-focusedRowBorder: rgba(255, 255, 255, 0.12); + --vscode-terminal-foreground: #cccccc; + --vscode-terminal-selectionBackground: rgba(255, 255, 255, 0.25); + --vscode-terminal-border: rgba(128, 128, 128, 0.35); + --vscode-testing-iconFailed: #f14c4c; + --vscode-testing-iconErrored: #f14c4c; + --vscode-testing-iconPassed: #73c991; + --vscode-testing-runAction: #73c991; + --vscode-testing-iconQueued: #cca700; + --vscode-testing-iconUnset: #848484; + --vscode-testing-iconSkipped: #848484; + --vscode-testing-peekBorder: #f48771; + --vscode-testing-message\.error\.decorationForeground: #f48771; + --vscode-testing-message\.error\.lineBackground: rgba(255, 0, 0, 0.2); + --vscode-testing-message\.warning\.decorationForeground: #cca700; + --vscode-testing-message\.warning\.lineBackground: rgba(255, 208, 0, 0.2); + --vscode-testing-message\.info\.decorationForeground: #75beff; + --vscode-testing-message\.info\.lineBackground: rgba(0, 127, 255, 0.2); + --vscode-testing-message\.hint\.decorationForeground: rgba(238, 238, 238, 0.7); + --vscode-welcomePage-tileBackground: #252526; + --vscode-welcomePage-tileHoverBackground: #2c2c2d; + --vscode-welcomePage-tileShadow\.: rgba(0, 0, 0, 0.36); + --vscode-welcomePage-progress\.background: #3c3c3c; + --vscode-welcomePage-progress\.foreground: #3794ff; + --vscode-workspaceTrust-trustedForegound: #89d185; + --vscode-workspaceTrust-untrustedForeground: #f48771; + --vscode-workspaceTrust-tileBackground: #252526; + --vscode-statusBar-debuggingBackground: #cc6633; + --vscode-statusBar-debuggingForeground: #ffffff; + --vscode-debugExceptionWidget-border: #a31515; + --vscode-debugExceptionWidget-background: #420b0d; + --vscode-editorGutter-modifiedBackground: #0c7d9d; + --vscode-editorGutter-addedBackground: #587c0c; + --vscode-editorGutter-deletedBackground: #94151b; + --vscode-minimapGutter-modifiedBackground: #0c7d9d; + --vscode-minimapGutter-addedBackground: #587c0c; + --vscode-minimapGutter-deletedBackground: #94151b; + --vscode-editorOverviewRuler-modifiedForeground: rgba(12, 125, 157, 0.6); + --vscode-editorOverviewRuler-addedForeground: rgba(88, 124, 12, 0.6); + --vscode-editorOverviewRuler-deletedForeground: rgba(148, 21, 27, 0.6); + --vscode-notebook-cellBorderColor: #37373d; + --vscode-notebook-focusedEditorBorder: #007fd4; + --vscode-notebookStatusSuccessIcon-foreground: #89d185; + --vscode-notebookStatusErrorIcon-foreground: #f48771; + --vscode-notebookStatusRunningIcon-foreground: #cccccc; + --vscode-notebook-outputContainerBackgroundColor: #37373d; + --vscode-notebook-cellToolbarSeparator: rgba(128, 128, 128, 0.35); + --vscode-notebook-selectedCellBackground: #37373d; + --vscode-notebook-selectedCellBorder: #37373d; + --vscode-notebook-focusedCellBorder: #007fd4; + --vscode-notebook-inactiveFocusedCellBorder: #37373d; + --vscode-notebook-cellStatusBarItemHoverBackground: rgba(255, 255, 255, 0.15); + --vscode-notebook-cellInsertionIndicator: #007fd4; + --vscode-notebookScrollbarSlider-background: rgba(121, 121, 121, 0.4); + --vscode-notebookScrollbarSlider-hoverBackground: rgba(100, 100, 100, 0.7); + --vscode-notebookScrollbarSlider-activeBackground: rgba(191, 191, 191, 0.4); + --vscode-notebook-symbolHighlightBackground: rgba(255, 255, 255, 0.04); + --vscode-editor-stackFrameHighlightBackground: rgba(255, 255, 0, 0.2); + --vscode-editor-focusedStackFrameHighlightBackground: rgba(122, 189, 122, 0.3); + --vscode-debugIcon-breakpointForeground: #e51400; + --vscode-debugIcon-breakpointDisabledForeground: #848484; + --vscode-debugIcon-breakpointUnverifiedForeground: #848484; + --vscode-debugIcon-breakpointCurrentStackframeForeground: #ffcc00; + --vscode-debugIcon-breakpointStackframeForeground: #89d185; + --vscode-scm-providerBorder: #454545; + --vscode-extensionButton-prominentBackground: #0e639c; + --vscode-extensionButton-prominentForeground: #ffffff; + --vscode-extensionButton-prominentHoverBackground: #1177bb; + --vscode-extensionIcon-starForeground: #ff8e00; + --vscode-terminal-ansiBlack: #000000; + --vscode-terminal-ansiRed: #cd3131; + --vscode-terminal-ansiGreen: #0dbc79; + --vscode-terminal-ansiYellow: #e5e510; + --vscode-terminal-ansiBlue: #2472c8; + --vscode-terminal-ansiMagenta: #bc3fbc; + --vscode-terminal-ansiCyan: #11a8cd; + --vscode-terminal-ansiWhite: #e5e5e5; + --vscode-terminal-ansiBrightBlack: #666666; + --vscode-terminal-ansiBrightRed: #f14c4c; + --vscode-terminal-ansiBrightGreen: #23d18b; + --vscode-terminal-ansiBrightYellow: #f5f543; + --vscode-terminal-ansiBrightBlue: #3b8eea; + --vscode-terminal-ansiBrightMagenta: #d670d6; + --vscode-terminal-ansiBrightCyan: #29b8db; + --vscode-terminal-ansiBrightWhite: #e5e5e5; + --vscode-debugTokenExpression-name: #c586c0; + --vscode-debugTokenExpression-value: rgba(204, 204, 204, 0.6); + --vscode-debugTokenExpression-string: #ce9178; + --vscode-debugTokenExpression-boolean: #4e94ce; + --vscode-debugTokenExpression-number: #b5cea8; + --vscode-debugTokenExpression-error: #f48771; + --vscode-debugView-exceptionLabelForeground: #cccccc; + --vscode-debugView-exceptionLabelBackground: #6c2022; + --vscode-debugView-stateLabelForeground: #cccccc; + --vscode-debugView-stateLabelBackground: rgba(136, 136, 136, 0.27); + --vscode-debugView-valueChangedHighlight: #569cd6; + --vscode-debugConsole-infoForeground: #75beff; + --vscode-debugConsole-warningForeground: #cca700; + --vscode-debugConsole-errorForeground: #f48771; + --vscode-debugConsole-sourceForeground: #cccccc; + --vscode-debugConsoleInputIcon-foreground: #cccccc; + --vscode-debugIcon-pauseForeground: #75beff; + --vscode-debugIcon-stopForeground: #f48771; + --vscode-debugIcon-disconnectForeground: #f48771; + --vscode-debugIcon-restartForeground: #89d185; + --vscode-debugIcon-stepOverForeground: #75beff; + --vscode-debugIcon-stepIntoForeground: #75beff; + --vscode-debugIcon-stepOutForeground: #75beff; + --vscode-debugIcon-continueForeground: #75beff; + --vscode-debugIcon-stepBackForeground: #75beff; + --vscode-gitDecoration-addedResourceForeground: #81b88b; + --vscode-gitDecoration-modifiedResourceForeground: #e2c08d; + --vscode-gitDecoration-deletedResourceForeground: #c74e39; + --vscode-gitDecoration-renamedResourceForeground: #73c991; + --vscode-gitDecoration-untrackedResourceForeground: #73c991; + --vscode-gitDecoration-ignoredResourceForeground: #8c8c8c; + --vscode-gitDecoration-stageModifiedResourceForeground: #e2c08d; + --vscode-gitDecoration-stageDeletedResourceForeground: #c74e39; + --vscode-gitDecoration-conflictingResourceForeground: #e4676b; + --vscode-gitDecoration-submoduleResourceForeground: #8db9e2; + --vscode-bookmarks-lineBackground: rgba(0, 0, 0, 0); + --vscode-bookmarks-lineBorder: rgba(0, 0, 0, 0); + --vscode-bookmarks-overviewRuler: rgba(21, 126, 251, 0.53); + --vscode-gitlens-gutterBackgroundColor: rgba(255, 255, 255, 0.07); + --vscode-gitlens-gutterForegroundColor: #bebebe; + --vscode-gitlens-gutterUncommittedForegroundColor: rgba(0, 188, 242, 0.6); + --vscode-gitlens-trailingLineBackgroundColor: rgba(0, 0, 0, 0); + --vscode-gitlens-trailingLineForegroundColor: rgba(153, 153, 153, 0.35); + --vscode-gitlens-lineHighlightBackgroundColor: rgba(0, 188, 242, 0.2); + --vscode-gitlens-lineHighlightOverviewRulerColor: rgba(0, 188, 242, 0.6); + --vscode-gitlens-closedPullRequestIconColor: #f85149; + --vscode-gitlens-openPullRequestIconColor: #56d364; + --vscode-gitlens-mergedPullRequestIconColor: #995dff; + --vscode-gitlens-unpushlishedChangesIconColor: #35b15e; + --vscode-gitlens-unpublishedCommitIconColor: #35b15e; + --vscode-gitlens-unpulledChangesIconColor: #b15e35; + --vscode-gitlens-decorations\.addedForegroundColor: #81b88b; + --vscode-gitlens-decorations\.copiedForegroundColor: #73c991; + --vscode-gitlens-decorations\.deletedForegroundColor: #c74e39; + --vscode-gitlens-decorations\.ignoredForegroundColor: #8c8c8c; + --vscode-gitlens-decorations\.modifiedForegroundColor: #e2c08d; + --vscode-gitlens-decorations\.untrackedForegroundColor: #73c991; + --vscode-gitlens-decorations\.renamedForegroundColor: #73c991; + --vscode-gitlens-decorations\.branchAheadForegroundColor: #35b15e; + --vscode-gitlens-decorations\.branchBehindForegroundColor: #b15e35; + --vscode-gitlens-decorations\.branchDivergedForegroundColor: #d8af1b; + --vscode-gitlens-decorations\.branchUnpublishedForegroundColor: #35b15e; + --vscode-gitlens-decorations\.branchMissingUpstreamForegroundColor: #c74e39; +} diff --git a/src/plotViewer/webviewMessages.ts b/src/plotViewer/webviewMessages.ts new file mode 100644 index 00000000..2cdf8a6b --- /dev/null +++ b/src/plotViewer/webviewMessages.ts @@ -0,0 +1,66 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +export interface VsCode { + postMessage: (msg: OutMessage) => void; + setState: (state: string) => void; +} +/** + * Function declared by VS Code in Webview + */ +export const acquireVsCodeApi: () => VsCode = (globalThis as { acquireVsCodeApi?: () => VsCode }).acquireVsCodeApi || (() => ({} as VsCode)); + +export interface IMessage { + message: string; +} + +export interface ResizeMessage extends IMessage { + message: 'resize', + height: number, + width: number, + userTriggered: boolean +} +export interface LogMessage extends IMessage { + message: 'log', + body: any +} + +export type OutMessage = ResizeMessage | LogMessage; + +export interface UpdatePlotMessage extends IMessage { + message: 'updatePlot', + svg: string, + plotId: string +} + +export interface FocusPlotMessage extends IMessage { + message: 'focusPlot', + plotId: string +} + +export interface ToggleStyleMessage extends IMessage { + message: 'toggleStyle', + useOverwrites: boolean +} + +export interface ToggleFullWindowMessage extends IMessage { + message: 'toggleFullWindow', + useFullWindow: boolean +} + +export type PreviewPlotLayout = 'multirow' | 'scroll' | 'hidden'; +export interface PreviewPlotLayoutMessage extends IMessage { + message: 'togglePreviewPlotLayout', + style: PreviewPlotLayout +} + +export interface HidePlotMessage extends IMessage { + message: 'hidePlot', + plotId: string +} + +export interface AddPlotMessage extends IMessage { + message: 'addPlot', + html: string +} + +export type InMessage = UpdatePlotMessage | FocusPlotMessage | ToggleStyleMessage | HidePlotMessage | AddPlotMessage | PreviewPlotLayoutMessage | ToggleFullWindowMessage; diff --git a/src/rTerminal.ts b/src/rTerminal.ts index a71ee7e5..28332a35 100644 --- a/src/rTerminal.ts +++ b/src/rTerminal.ts @@ -5,7 +5,7 @@ import { isDeepStrictEqual } from 'util'; import * as vscode from 'vscode'; -import { extensionContext, homeExtDir } from './extension'; +import { extensionContext } from './extension'; import * as util from './util'; import * as selection from './selection'; import { getSelection } from './selection'; @@ -114,6 +114,8 @@ export async function runFromLineToEnd(): Promise { await runTextInTerm(text); } +import { getGlobalSessionServer } from './session'; + export async function makeTerminalOptions(): Promise { const workspaceFolderPath = getCurrentWorkspaceFolder()?.uri.fsPath; const termPath = await getRterm(); @@ -124,14 +126,16 @@ export async function makeTerminalOptions(): Promise { shellArgs: shellArgs, cwd: workspaceFolderPath, }; - const newRprofile = extensionContext.asAbsolutePath(path.join('R', 'session', 'profile.R')); - const initR = extensionContext.asAbsolutePath(path.join('R', 'session','init.R')); + const newRprofile = extensionContext.asAbsolutePath(path.join('R', 'profile.R')); if (config().get('sessionWatcher')) { + const { port, token } = await getGlobalSessionServer(); termOptions.env = { R_PROFILE_USER_OLD: process.env.R_PROFILE_USER, R_PROFILE_USER: newRprofile, - VSCODE_INIT_R: initR, - VSCODE_WATCHER_DIR: homeExtDir() + SESS_PORT: port.toString(), + SESS_TOKEN: token, + SESS_RSTUDIOAPI: config().get('session.emulateRStudioAPI') ? 'TRUE' : 'FALSE', + SESS_USE_HTTPGD: config().get('plot.useHttpgd') ? 'TRUE' : 'FALSE' }; } return termOptions; @@ -139,6 +143,7 @@ export async function makeTerminalOptions(): Promise { export async function createRTerm(preserveshow?: boolean): Promise { const termOptions = await makeTerminalOptions(); + void util.promptToInstallSessPackage(termOptions.cwd); const termPath = termOptions.shellPath; if(!termPath){ void vscode.window.showErrorMessage('Could not find R path. Please check r.rterm and r.rpath setting.'); @@ -149,6 +154,7 @@ export async function createRTerm(preserveshow?: boolean): Promise { } rTerm = vscode.window.createTerminal(termOptions); rTerm.show(preserveshow); + return true; } diff --git a/src/session.ts b/src/session.ts index b5959019..f385afb1 100644 --- a/src/session.ts +++ b/src/session.ts @@ -1,20 +1,33 @@ 'use strict'; import * as fs from 'fs-extra'; -import * as os from 'os'; import * as path from 'path'; -import { Agent } from 'http'; -import fetch from 'node-fetch'; -import { commands, StatusBarItem, Uri, ViewColumn, Webview, window, workspace, env, WebviewPanelOnDidChangeViewStateEvent, WebviewPanel } from 'vscode'; +import * as vscode from 'vscode'; +import { commands, Uri, ViewColumn, Webview, window, workspace, env } from 'vscode'; -import { runTextInTerm } from './rTerminal'; -import { FSWatcher } from 'fs-extra'; +import { restartRTerminal } from './rTerminal'; import { config, readContent, setContext, UriIcon } from './util'; -import { purgeAddinPickerItems, dispatchRStudioAPICall } from './rstudioapi'; +import * as rTerminal from './rTerminal'; +import { purgeAddinPickerItems, RSEditOperation, RSRange } from './rstudioapi'; -import { IRequest } from './liveShare/shareSession'; -import { homeExtDir, rWorkspace, globalRHelp, globalHttpgdManager, extensionContext, sessionStatusBarItem } from './extension'; -import { UUID, rHostService, rGuestService, isLiveShare, isHost, isGuestSession, closeBrowser, guestResDir, shareBrowser, openVirtualDoc, shareWorkspace } from './liveShare'; +import { homeExtDir, rWorkspace, globalRHelp, globalPlotManager, sessionStatusBarItem } from './extension'; +import { rHostService, rGuestService, isLiveShare, isHost, isGuestSession, guestResDir, shareBrowser, openVirtualDoc } from './liveShare'; + +import { showWebView } from './webViewer'; + +import WebSocket from 'ws'; + +export interface SessionInfo { + version: string; + command: string; + start_time: string; +} + +interface ExtWebSocket extends WebSocket { + _terminalPid?: number; + _port?: number; + _token?: string; +} export interface GlobalEnv { [key: string]: { @@ -41,39 +54,52 @@ export interface SessionServer { token: string; } +export class Session { + public server: SessionServer; + public ws: WebSocket; + public pid: string; + public rVer: string; + public info: SessionInfo; + public sessionDir: string; + public workingDir: string; + public workspaceData: WorkspaceData; + + constructor(server: SessionServer, ws: WebSocket) { + this.server = server; + this.ws = ws; + this.pid = ''; + this.rVer = ''; + this.info = { version: '', command: '', start_time: '' }; + this.sessionDir = ''; + this.workingDir = ''; + this.workspaceData = { search: [], loaded_namespaces: [], globalenv: {} }; + } +} + export let workspaceData: WorkspaceData; let resDir: string; export let requestFile: string; export let requestLockFile: string; -let requestTimeStamp: number; -let responseTimeStamp: number; export let sessionDir: string; export let workingDir: string; let rVer: string; let pid: string; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -let info: any; -const httpAgent = new Agent({ keepAlive: true }); +let info: SessionInfo; export let server: SessionServer | undefined; export let workspaceFile: string; -let workspaceLockFile: string; -let workspaceTimeStamp: number; -let plotFile: string; -let plotLockFile: string; -let plotTimeStamp: number; -let workspaceWatcher: FSWatcher; -let plotWatcher: FSWatcher; -let activeBrowserPanel: WebviewPanel | undefined; + +const sessions = new Map(); +export let activeSession: Session | undefined; let activeBrowserUri: Uri | undefined; -let activeBrowserExternalUri: Uri | undefined; export function deploySessionWatcher(extensionPath: string): void { console.info(`[deploySessionWatcher] extensionPath: ${extensionPath}`); resDir = path.join(extensionPath, 'dist', 'resources'); - const initPath = path.join(extensionPath, 'R', 'session', 'init.R'); - const linkPath = path.join(homeExtDir(), 'init.R'); - fs.writeFileSync(linkPath, `local(source("${initPath.replace(/\\/g, '\\\\')}", chdir = TRUE, local = TRUE))\n`); + // Initialize the WebSocket server when the extension activates + void getGlobalSessionServer().catch(err => { + console.error('Failed to initialize global session server', err); + }); writeSettings(); workspace.onDidChangeConfiguration(event => { @@ -83,28 +109,127 @@ export function deploySessionWatcher(extensionPath: string): void { }); } -export function startRequestWatcher(sessionStatusBarItem: StatusBarItem): void { - console.info('[startRequestWatcher] Starting'); - requestFile = path.join(homeExtDir(), 'request.log'); - requestLockFile = path.join(homeExtDir(), 'request.lock'); - requestTimeStamp = 0; - responseTimeStamp = 0; - if (!fs.existsSync(requestLockFile)) { - fs.createFileSync(requestLockFile); - } - fs.watch(requestLockFile, {}, () => { - void updateRequest(sessionStatusBarItem); +import * as crypto from 'crypto'; + +let wsClient: ExtWebSocket | undefined; +export const activeConnections = new Set(); + +const pendingRequests = new Map void, reject: (reason?: unknown) => void }>(); + +let globalSessionServer: { port: number, token: string } | undefined; + +export async function getGlobalSessionServer(): Promise<{ port: number, token: string }> { + if (globalSessionServer) { + return globalSessionServer; + } + + return new Promise((resolve, reject) => { + const token = crypto.randomBytes(16).toString('hex'); + const wss = new WebSocket.Server({ port: 0, host: '127.0.0.1' }); + + wss.on('listening', () => { + const address = wss.address(); + if (typeof address === 'object' && address !== null) { + globalSessionServer = { port: address.port, token }; + console.info(`[SessionServer] Listening on ws://127.0.0.1:${address.port}?token=${token}`); + + // Initialize the old global server object for compatibility + server = { host: '127.0.0.1', port: address.port, token }; + resolve(globalSessionServer); + } else { + reject(new Error('Failed to get WebSocket server address')); + } + }); + + wss.on('connection', (ws: ExtWebSocket, req) => { + const url = new URL(req.url || '', `http://${req.headers.host || '127.0.0.1'}`); + const clientToken = url.searchParams.get('token'); + + if (clientToken !== token) { + console.warn('[SessionServer] Connection rejected: invalid token'); + ws.close(); + return; + } + + console.info('[SessionServer] Client connected'); + activeConnections.add(ws); + wsClient = ws; + + ws.on('message', (data: WebSocket.Data) => { + void (async () => { + try { + const message = JSON.parse(data.toString()) as Record; + if (message.id !== undefined && !message.method) { + // Response to a client request + const id = Number(message.id); + const pending = pendingRequests.get(id); + if (pending) { + pendingRequests.delete(id); + if (message.error) { + pending.reject(message.error); + } else { + pending.resolve(message.result); + } + } + } else if (!message.id) { + // Notification from server + await handleNotification(message, ws); + } else { + // Request from server + await handleRequest(message, ws); + } + } catch (e) { + console.error('[SessionServer] Error handling message', e); + } + })(); + }); + + ws.on('close', () => { + console.info('[SessionServer] Client disconnected'); + activeConnections.delete(ws); + if (wsClient === ws) { + wsClient = undefined; + } + }); + }); + + wss.on('error', (err) => { + console.error('[SessionServer] Server error', err); + reject(err); + }); }); - console.info('[startRequestWatcher] Done'); } -export function attachActive(): void { +export async function activateRSession(): Promise { if (config().get('sessionWatcher')) { - console.info('[attachActive]'); - void runTextInTerm('.vsc.attach()'); - if (isLiveShare() && shareWorkspace) { - rHostService?.notifyRequest(requestFile, true); + console.info('[activateRSession]'); + const terminal = window.activeTerminal; + if (terminal) { + const pidArg = await terminal.processId; + if (pidArg) { + const session = sessions.get(String(pidArg)); + if (session) { + console.info(`[activateRSession] Found existing session for PID: ${pidArg}`); + await activateSession(session); + terminal.show(); + return; + } + } + } + + if (activeSession) { + console.info('[activateRSession] Focusing terminal of the active session'); + for (const term of window.terminals) { + const termPid = await term.processId; + if (termPid && sessions.get(String(termPid)) === activeSession) { + term.show(); + return; + } + } } + + console.info('[activateRSession] Creating new R terminal'); + await rTerminal.createRTerm(); } else { void window.showInformationMessage('This command requires that r.sessionWatcher be enabled.'); } @@ -143,82 +268,28 @@ function writeSettings() { fs.writeFileSync(settingPath, JSON.stringify(config())); } -function updateSessionWatcher() { - console.info(`[updateSessionWatcher] PID: ${pid}`); - console.info('[updateSessionWatcher] Create workspaceWatcher'); - workspaceFile = path.join(sessionDir, 'workspace.json'); - workspaceLockFile = path.join(sessionDir, 'workspace.lock'); - workspaceTimeStamp = 0; - if (workspaceWatcher !== undefined) { - workspaceWatcher.close(); - } - if (fs.existsSync(workspaceLockFile)) { - workspaceWatcher = fs.watch(workspaceLockFile, {}, () => { - void updateWorkspace(); - }); - void updateWorkspace(); - } else { - console.info('[updateSessionWatcher] workspaceLockFile not found'); - } - - console.info('[updateSessionWatcher] Create plotWatcher'); - plotFile = path.join(sessionDir, 'plot.png'); - plotLockFile = path.join(sessionDir, 'plot.lock'); - plotTimeStamp = 0; - if (plotWatcher !== undefined) { - plotWatcher.close(); - } - if (fs.existsSync(plotLockFile)) { - plotWatcher = fs.watch(plotLockFile, {}, () => { - void updatePlot(); - }); - void updatePlot(); - } else { - console.info('[updateSessionWatcher] plotLockFile not found'); - } - console.info('[updateSessionWatcher] Done'); -} - async function updatePlot() { - console.info(`[updatePlot] ${plotFile}`); - const lockContent = await fs.readFile(plotLockFile, 'utf8'); - const newTimeStamp = Number.parseFloat(lockContent); - if (newTimeStamp !== plotTimeStamp) { - plotTimeStamp = newTimeStamp; - if (fs.existsSync(plotFile) && fs.statSync(plotFile).size > 0) { - void commands.executeCommand('vscode.open', Uri.file(plotFile), { - preserveFocus: true, - preview: true, - viewColumn: ViewColumn[(config().get('session.viewers.viewColumn.plot') || 'Two') as keyof typeof ViewColumn], - }); - console.info('[updatePlot] Done'); - if (isLiveShare()) { - void rHostService?.notifyPlot(plotFile); - } - } else { - console.info('[updatePlot] File not found'); - } - } + if (!server) {return;} + await globalPlotManager?.showStandardPlot(); } -async function updateWorkspace() { - console.info(`[updateWorkspace] ${workspaceFile}`); - - const lockContent = await fs.readFile(workspaceLockFile, 'utf8'); - const newTimeStamp = Number.parseFloat(lockContent); - if (newTimeStamp !== workspaceTimeStamp) { - workspaceTimeStamp = newTimeStamp; - if (fs.existsSync(workspaceFile)) { - const content = await fs.readFile(workspaceFile, 'utf8'); - workspaceData = JSON.parse(content) as WorkspaceData; +export async function updateWorkspace() { + if (!server) {return;} + try { + const response = await sessionRequest(server, { method: 'workspace' }); + if (response) { + workspaceData = response as WorkspaceData; + if (activeSession) { + activeSession.workspaceData = workspaceData; + } void rWorkspace?.refresh(); console.info('[updateWorkspace] Done'); if (isLiveShare()) { rHostService?.notifyWorkspace(workspaceData); } - } else { - console.info('[updateWorkspace] File not found'); } + } catch (e) { + console.error(e); } } @@ -228,78 +299,25 @@ export async function showBrowser(url: string, title: string, viewer: string | b if (viewer === false) { void env.openExternal(uri); } else { - const externalUri = await env.asExternalUri(uri); - const panel = window.createWebviewPanel( - 'browser', - title, - { - preserveFocus: true, - viewColumn: ViewColumn[String(viewer) as keyof typeof ViewColumn], - }, - { - enableFindWidget: true, - enableScripts: true, - retainContextWhenHidden: true, - }); + const viewColumn = ViewColumn[String(viewer) as keyof typeof ViewColumn]; + await commands.executeCommand('simpleBrowser.show', url, { + preserveFocus: true, + viewColumn: viewColumn, + }); if (isHost()) { await shareBrowser(url, title); } - panel.onDidChangeViewState((e: WebviewPanelOnDidChangeViewStateEvent) => { - if (e.webviewPanel.active) { - activeBrowserPanel = panel; - activeBrowserUri = uri; - activeBrowserExternalUri = externalUri; - } else { - activeBrowserPanel = undefined; - activeBrowserUri = undefined; - activeBrowserExternalUri = undefined; - } - void commands.executeCommand('setContext', 'r.browser.active', e.webviewPanel.active); - }); - panel.onDidDispose(() => { - activeBrowserPanel = undefined; - activeBrowserUri = undefined; - activeBrowserExternalUri = undefined; - if (isHost()) { - closeBrowser(url); - } - void commands.executeCommand('setContext', 'r.browser.active', false); - }); - panel.iconPath = new UriIcon('globe'); - panel.webview.html = getBrowserHtml(externalUri); + activeBrowserUri = uri; } console.info('[showBrowser] Done'); } -function getBrowserHtml(uri: Uri): string { - return ` - - - - - - - - -