From c1f9055622f39b81d1ad1ab4d755870f3bb7ca5f Mon Sep 17 00:00:00 2001
From: liccc
Date: Fri, 6 Sep 2024 11:55:15 +0800
Subject: [PATCH 1/6] chore: use pnpm instead of npm
+ use esbuild to bundle all dependencies
---
.npmrc | 3 +
.vscode/launch.json | 81 +-
.vscodeignore | 31 +-
client/package-lock.json | 489 ----
client/pnpm-lock.yaml | 422 +++
client/src/extension.ts | 92 +-
client/src/wikiView/wikiViewProvider.ts | 146 +-
common/package-lock.json | 347 ---
common/pnpm-lock.yaml | 298 +++
esbuild.js | 147 +-
package-lock.json | 3146 -----------------------
package.json | 291 +--
pnpm-lock.yaml | 2447 ++++++++++++++++++
server/package-lock.json | 357 ---
server/pnpm-lock.yaml | 309 +++
webview/package-lock.json | 220 --
webview/pnpm-lock.yaml | 206 ++
17 files changed, 4110 insertions(+), 4922 deletions(-)
create mode 100644 .npmrc
delete mode 100644 client/package-lock.json
create mode 100644 client/pnpm-lock.yaml
delete mode 100644 common/package-lock.json
create mode 100644 common/pnpm-lock.yaml
delete mode 100644 package-lock.json
create mode 100644 pnpm-lock.yaml
delete mode 100644 server/package-lock.json
create mode 100644 server/pnpm-lock.yaml
delete mode 100644 webview/package-lock.json
create mode 100644 webview/pnpm-lock.yaml
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000..bce8a6d
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1,3 @@
+shamefully-hoist=true
+auto-install-peers=true
+strict-peer-dependencies=false
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 595537d..e9fa0a0 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -3,45 +3,44 @@
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
{
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Python: 当前文件",
- "type": "python",
- "request": "launch",
- "program": "${file}",
- "console": "integratedTerminal",
- "justMyCode": true
- },
- {
- "name": "Run Extension",
- "type": "extensionHost",
- "request": "launch",
- "runtimeExecutable": "${execPath}",
- "args": [
- "--extensionDevelopmentPath=${workspaceFolder}",
- // Disable other extensions when debugging
- "--disable-extensions",
- // Specific workspace root directory
- "${workspaceRoot}/testRoot"
- ],
- "outFiles": ["${workspaceFolder}/client/out/**/*.js", "${workspaceFolder}/server/out/**/*.js"],
- // Automatically attach language server child process
- "autoAttachChildProcesses": true,
- "preLaunchTask": "all_watch"
- // "postDebugTask": "terminateTasks"
- },
- {
- "name": "Extension Tests",
- "type": "extensionHost",
- "request": "launch",
- "args": [
- "--extensionDevelopmentPath=${workspaceFolder}",
- "--extensionTestsPath=${workspaceFolder}/client/out/test/index",
- "${workspaceRoot}/testRoot"
- ],
- "outFiles": ["${workspaceFolder}/client/out/test/**/*.js"],
- "preLaunchTask": "all_watch"
- }
- ]
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Python: 当前文件",
+ "type": "debugpy",
+ "request": "launch",
+ "program": "${file}",
+ "console": "integratedTerminal"
+ },
+ {
+ "name": "Run Extension",
+ "type": "extensionHost",
+ "request": "launch",
+ "runtimeExecutable": "${execPath}",
+ "args": [
+ "--extensionDevelopmentPath=${workspaceFolder}",
+ // Disable other extensions when debugging
+ "--disable-extensions",
+ // Specific workspace root directory
+ "${workspaceRoot}/testRoot"
+ ],
+ "outFiles": ["${workspaceFolder}/out/**/*.js"],
+ // Automatically attach language server child process
+ "autoAttachChildProcesses": true,
+ "preLaunchTask": "all_watch"
+ // "postDebugTask": "terminateTasks"
+ },
+ {
+ "name": "Extension Tests",
+ "type": "extensionHost",
+ "request": "launch",
+ "args": [
+ "--extensionDevelopmentPath=${workspaceFolder}",
+ "--extensionTestsPath=${workspaceFolder}/client/out/test/index",
+ "${workspaceRoot}/testRoot"
+ ],
+ "outFiles": ["${workspaceFolder}/client/out/test/**/*.js"],
+ "preLaunchTask": "all_watch"
+ }
+ ]
}
diff --git a/.vscodeignore b/.vscodeignore
index 170b0b9..8a9a9aa 100644
--- a/.vscodeignore
+++ b/.vscodeignore
@@ -1,19 +1,30 @@
+.eslintrc.json
+.gitignore
+.markdownlint.json
+.npmrc
+.prettierignore
+.prettierrc
+README.md
+README.en.md
+DEV_NOTES.md
+CHANGELOG.md
+esbuild.js
+pnpm-lock.yaml
+
.vscode/**
.vscode-test/**
.gitignore
-.yarnrc
-vsc-extension-quickstart.md
**/tsconfig.json
**/tsconfig.base.json
**/.eslintrc.json
**/*.map
**/*.ts
.travis.yml
-CONTRIBUTING.md
-client/node_modules/**
-!client/node_modules/vscode-jsonrpc/**
-!client/node_modules/vscode-languageclient/**
-!client/node_modules/vscode-languageserver-protocol/**
-!client/node_modules/vscode-languageserver-types/**
-!client/node_modules/{minimatch,brace-expansion,concat-map,balanced-match}/**
-!client/node_modules/{semver,lru-cache,yallist}/**
\ No newline at end of file
+
+testRoot/**
+scripts/**
+
+client/**
+server/**
+webview/**
+common/**
diff --git a/client/package-lock.json b/client/package-lock.json
deleted file mode 100644
index 562d6f6..0000000
--- a/client/package-lock.json
+++ /dev/null
@@ -1,489 +0,0 @@
-{
- "name": "rvportingtool-client",
- "version": "0.0.1",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "rvportingtool-client",
- "version": "0.0.1",
- "license": "MulanPSL-2.0",
- "dependencies": {
- "@vscode/l10n": "^0.0.11",
- "@vscode/webview-ui-toolkit": "^1.2.2",
- "log4js": "^6.9.1",
- "vscode-languageclient": "^7.0.0"
- },
- "devDependencies": {
- "@types/vscode": "^1.75.0",
- "@vscode/test-electron": "^2.1.2"
- },
- "engines": {
- "vscode": "^1.75.0"
- }
- },
- "node_modules/@microsoft/fast-element": {
- "version": "1.11.0",
- "resolved": "https://registry.npmmirror.com/@microsoft/fast-element/-/fast-element-1.11.0.tgz",
- "integrity": "sha512-VKJYMkS5zgzHHb66sY7AFpYv6IfFhXrjQcAyNgi2ivD65My1XOhtjfKez5ELcLFRJfgZNAxvI8kE69apXERTkw=="
- },
- "node_modules/@microsoft/fast-foundation": {
- "version": "2.47.0",
- "resolved": "https://registry.npmmirror.com/@microsoft/fast-foundation/-/fast-foundation-2.47.0.tgz",
- "integrity": "sha512-EyFuioaZQ9ngjUNRQi8R3dIPPsaNQdUOS+tP0G7b1MJRhXmQWIitBM6IeveQA6ZvXG6H21dqgrfEWlsYrUZ2sw==",
- "dependencies": {
- "@microsoft/fast-element": "^1.11.0",
- "@microsoft/fast-web-utilities": "^5.4.1",
- "tabbable": "^5.2.0",
- "tslib": "^1.13.0"
- }
- },
- "node_modules/@microsoft/fast-react-wrapper": {
- "version": "0.1.48",
- "resolved": "https://registry.npmmirror.com/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.1.48.tgz",
- "integrity": "sha512-9NvEjru9Kn5ZKjomAMX6v+eF0DR+eDkxKDwDfi+Wb73kTbrNzcnmlwd4diN15ygH97kldgj2+lpvI4CKLQQWLg==",
- "dependencies": {
- "@microsoft/fast-element": "^1.9.0",
- "@microsoft/fast-foundation": "^2.41.1"
- },
- "peerDependencies": {
- "react": ">=16.9.0"
- }
- },
- "node_modules/@microsoft/fast-web-utilities": {
- "version": "5.4.1",
- "resolved": "https://registry.npmmirror.com/@microsoft/fast-web-utilities/-/fast-web-utilities-5.4.1.tgz",
- "integrity": "sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==",
- "dependencies": {
- "exenv-es6": "^1.1.1"
- }
- },
- "node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@types/vscode": {
- "version": "1.76.0",
- "resolved": "https://registry.npmmirror.com/@types/vscode/-/vscode-1.76.0.tgz",
- "integrity": "sha512-CQcY3+Fe5hNewHnOEAVYj4dd1do/QHliXaknAEYSXx2KEHUzFibDZSKptCon+HPgK55xx20pR+PBJjf0MomnBA==",
- "dev": true
- },
- "node_modules/@vscode/l10n": {
- "version": "0.0.11",
- "resolved": "https://registry.npmmirror.com/@vscode/l10n/-/l10n-0.0.11.tgz",
- "integrity": "sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA=="
- },
- "node_modules/@vscode/test-electron": {
- "version": "2.3.0",
- "resolved": "https://registry.npmmirror.com/@vscode/test-electron/-/test-electron-2.3.0.tgz",
- "integrity": "sha512-fwzA9RtazH1GT/sckYlbxu6t5e4VaMXwCVtyLv4UAG0hP6NTfnMaaG25XCfWqlVwFhBMcQXHBCy5dmz2eLUnkw==",
- "dev": true,
- "dependencies": {
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "jszip": "^3.10.1",
- "semver": "^7.3.8"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/@vscode/webview-ui-toolkit": {
- "version": "1.2.2",
- "resolved": "https://registry.npmmirror.com/@vscode/webview-ui-toolkit/-/webview-ui-toolkit-1.2.2.tgz",
- "integrity": "sha512-xIQoF4FC3Xh6d7KNKIoIezSiFWYFuf6gQMdDyKueKBFGeKwaHWEn+dY2g3makvvEsNMEDji/woEwvg9QSbuUsw==",
- "dependencies": {
- "@microsoft/fast-element": "^1.6.2",
- "@microsoft/fast-foundation": "^2.38.0",
- "@microsoft/fast-react-wrapper": "^0.1.18"
- },
- "peerDependencies": {
- "react": ">=16.9.0"
- }
- },
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dev": true,
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
- },
- "node_modules/date-format": {
- "version": "4.0.14",
- "resolved": "https://registry.npmmirror.com/date-format/-/date-format-4.0.14.tgz",
- "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/exenv-es6": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/exenv-es6/-/exenv-es6-1.1.1.tgz",
- "integrity": "sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ=="
- },
- "node_modules/flatted": {
- "version": "3.2.7",
- "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
- },
- "node_modules/fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
- },
- "node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dev": true,
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dev": true,
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/immediate": {
- "version": "3.0.6",
- "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz",
- "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
- "dev": true
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "peer": true
- },
- "node_modules/jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/jszip": {
- "version": "3.10.1",
- "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz",
- "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
- "dev": true,
- "dependencies": {
- "lie": "~3.3.0",
- "pako": "~1.0.2",
- "readable-stream": "~2.3.6",
- "setimmediate": "^1.0.5"
- }
- },
- "node_modules/lie": {
- "version": "3.3.0",
- "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz",
- "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
- "dev": true,
- "dependencies": {
- "immediate": "~3.0.5"
- }
- },
- "node_modules/log4js": {
- "version": "6.9.1",
- "resolved": "https://registry.npmmirror.com/log4js/-/log4js-6.9.1.tgz",
- "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==",
- "dependencies": {
- "date-format": "^4.0.14",
- "debug": "^4.3.4",
- "flatted": "^3.2.7",
- "rfdc": "^1.3.0",
- "streamroller": "^3.1.5"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "peer": true,
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/pako": {
- "version": "1.0.11",
- "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
- "dev": true
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "node_modules/react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmmirror.com/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
- "peer": true,
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "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/rfdc": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz",
- "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/setimmediate": {
- "version": "1.0.5",
- "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
- "dev": true
- },
- "node_modules/streamroller": {
- "version": "3.1.5",
- "resolved": "https://registry.npmmirror.com/streamroller/-/streamroller-3.1.5.tgz",
- "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==",
- "dependencies": {
- "date-format": "^4.0.14",
- "debug": "^4.3.4",
- "fs-extra": "^8.1.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/tabbable": {
- "version": "5.3.3",
- "resolved": "https://registry.npmmirror.com/tabbable/-/tabbable-5.3.3.tgz",
- "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA=="
- },
- "node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "node_modules/vscode-jsonrpc": {
- "version": "6.0.0",
- "resolved": "https://registry.npmmirror.com/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz",
- "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==",
- "engines": {
- "node": ">=8.0.0 || >=10.0.0"
- }
- },
- "node_modules/vscode-languageclient": {
- "version": "7.0.0",
- "resolved": "https://registry.npmmirror.com/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz",
- "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==",
- "dependencies": {
- "minimatch": "^3.0.4",
- "semver": "^7.3.4",
- "vscode-languageserver-protocol": "3.16.0"
- },
- "engines": {
- "vscode": "^1.52.0"
- }
- },
- "node_modules/vscode-languageserver-protocol": {
- "version": "3.16.0",
- "resolved": "https://registry.npmmirror.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz",
- "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==",
- "dependencies": {
- "vscode-jsonrpc": "6.0.0",
- "vscode-languageserver-types": "3.16.0"
- }
- },
- "node_modules/vscode-languageserver-types": {
- "version": "3.16.0",
- "resolved": "https://registry.npmmirror.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
- "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA=="
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
-}
diff --git a/client/pnpm-lock.yaml b/client/pnpm-lock.yaml
new file mode 100644
index 0000000..fbacc05
--- /dev/null
+++ b/client/pnpm-lock.yaml
@@ -0,0 +1,422 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@vscode/l10n':
+ specifier: ^0.0.11
+ version: 0.0.11
+ '@vscode/webview-ui-toolkit':
+ specifier: ^1.2.2
+ version: 1.2.2(react@18.2.0)
+ log4js:
+ specifier: ^6.9.1
+ version: 6.9.1
+ vscode-languageclient:
+ specifier: ^7.0.0
+ version: 7.0.0
+ devDependencies:
+ '@types/vscode':
+ specifier: ^1.75.0
+ version: 1.76.0
+ '@vscode/test-electron':
+ specifier: ^2.1.2
+ version: 2.3.0
+
+packages:
+
+ '@microsoft/fast-element@1.11.0':
+ resolution: {integrity: sha512-VKJYMkS5zgzHHb66sY7AFpYv6IfFhXrjQcAyNgi2ivD65My1XOhtjfKez5ELcLFRJfgZNAxvI8kE69apXERTkw==}
+
+ '@microsoft/fast-foundation@2.47.0':
+ resolution: {integrity: sha512-EyFuioaZQ9ngjUNRQi8R3dIPPsaNQdUOS+tP0G7b1MJRhXmQWIitBM6IeveQA6ZvXG6H21dqgrfEWlsYrUZ2sw==}
+
+ '@microsoft/fast-react-wrapper@0.1.48':
+ resolution: {integrity: sha512-9NvEjru9Kn5ZKjomAMX6v+eF0DR+eDkxKDwDfi+Wb73kTbrNzcnmlwd4diN15ygH97kldgj2+lpvI4CKLQQWLg==}
+ peerDependencies:
+ react: '>=16.9.0'
+
+ '@microsoft/fast-web-utilities@5.4.1':
+ resolution: {integrity: sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==}
+
+ '@tootallnate/once@1.1.2':
+ resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
+ engines: {node: '>= 6'}
+
+ '@types/vscode@1.76.0':
+ resolution: {integrity: sha512-CQcY3+Fe5hNewHnOEAVYj4dd1do/QHliXaknAEYSXx2KEHUzFibDZSKptCon+HPgK55xx20pR+PBJjf0MomnBA==}
+
+ '@vscode/l10n@0.0.11':
+ resolution: {integrity: sha512-ukOMWnCg1tCvT7WnDfsUKQOFDQGsyR5tNgRpwmqi+5/vzU3ghdDXzvIM4IOPdSb3OeSsBNvmSL8nxIVOqi2WXA==}
+
+ '@vscode/test-electron@2.3.0':
+ resolution: {integrity: sha512-fwzA9RtazH1GT/sckYlbxu6t5e4VaMXwCVtyLv4UAG0hP6NTfnMaaG25XCfWqlVwFhBMcQXHBCy5dmz2eLUnkw==}
+ engines: {node: '>=16'}
+
+ '@vscode/webview-ui-toolkit@1.2.2':
+ resolution: {integrity: sha512-xIQoF4FC3Xh6d7KNKIoIezSiFWYFuf6gQMdDyKueKBFGeKwaHWEn+dY2g3makvvEsNMEDji/woEwvg9QSbuUsw==}
+ peerDependencies:
+ react: '>=16.9.0'
+
+ agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ date-format@4.0.14:
+ resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==}
+ engines: {node: '>=4.0'}
+
+ debug@4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ exenv-es6@1.1.1:
+ resolution: {integrity: sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==}
+
+ flatted@3.2.7:
+ resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
+
+ fs-extra@8.1.0:
+ resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
+ engines: {node: '>=6 <7 || >=8'}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ http-proxy-agent@4.0.1:
+ resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
+ engines: {node: '>= 6'}
+
+ https-proxy-agent@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+
+ immediate@3.0.6:
+ resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ jsonfile@4.0.0:
+ resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
+
+ jszip@3.10.1:
+ resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
+
+ lie@3.3.0:
+ resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
+
+ log4js@6.9.1:
+ resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==}
+ engines: {node: '>=8.0'}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ pako@1.0.11:
+ resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ react@18.2.0:
+ resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
+ engines: {node: '>=0.10.0'}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ rfdc@1.3.0:
+ resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ semver@7.3.8:
+ resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ setimmediate@1.0.5:
+ resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
+
+ streamroller@3.1.5:
+ resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==}
+ engines: {node: '>=8.0'}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ tabbable@5.3.3:
+ resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==}
+
+ tslib@1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+
+ universalify@0.1.2:
+ resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
+ engines: {node: '>= 4.0.0'}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ vscode-jsonrpc@6.0.0:
+ resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==}
+ engines: {node: '>=8.0.0 || >=10.0.0'}
+
+ vscode-languageclient@7.0.0:
+ resolution: {integrity: sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==}
+ engines: {vscode: ^1.52.0}
+
+ vscode-languageserver-protocol@3.16.0:
+ resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==}
+
+ vscode-languageserver-types@3.16.0:
+ resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==}
+
+ yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+
+snapshots:
+
+ '@microsoft/fast-element@1.11.0': {}
+
+ '@microsoft/fast-foundation@2.47.0':
+ dependencies:
+ '@microsoft/fast-element': 1.11.0
+ '@microsoft/fast-web-utilities': 5.4.1
+ tabbable: 5.3.3
+ tslib: 1.14.1
+
+ '@microsoft/fast-react-wrapper@0.1.48(react@18.2.0)':
+ dependencies:
+ '@microsoft/fast-element': 1.11.0
+ '@microsoft/fast-foundation': 2.47.0
+ react: 18.2.0
+
+ '@microsoft/fast-web-utilities@5.4.1':
+ dependencies:
+ exenv-es6: 1.1.1
+
+ '@tootallnate/once@1.1.2': {}
+
+ '@types/vscode@1.76.0': {}
+
+ '@vscode/l10n@0.0.11': {}
+
+ '@vscode/test-electron@2.3.0':
+ dependencies:
+ http-proxy-agent: 4.0.1
+ https-proxy-agent: 5.0.1
+ jszip: 3.10.1
+ semver: 7.3.8
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vscode/webview-ui-toolkit@1.2.2(react@18.2.0)':
+ dependencies:
+ '@microsoft/fast-element': 1.11.0
+ '@microsoft/fast-foundation': 2.47.0
+ '@microsoft/fast-react-wrapper': 0.1.48(react@18.2.0)
+ react: 18.2.0
+
+ agent-base@6.0.2:
+ dependencies:
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ balanced-match@1.0.2: {}
+
+ brace-expansion@1.1.11:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ concat-map@0.0.1: {}
+
+ core-util-is@1.0.3: {}
+
+ date-format@4.0.14: {}
+
+ debug@4.3.4:
+ dependencies:
+ ms: 2.1.2
+
+ exenv-es6@1.1.1: {}
+
+ flatted@3.2.7: {}
+
+ fs-extra@8.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+
+ graceful-fs@4.2.11: {}
+
+ http-proxy-agent@4.0.1:
+ dependencies:
+ '@tootallnate/once': 1.1.2
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ https-proxy-agent@5.0.1:
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ immediate@3.0.6: {}
+
+ inherits@2.0.4: {}
+
+ isarray@1.0.0: {}
+
+ js-tokens@4.0.0: {}
+
+ jsonfile@4.0.0:
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ jszip@3.10.1:
+ dependencies:
+ lie: 3.3.0
+ pako: 1.0.11
+ readable-stream: 2.3.8
+ setimmediate: 1.0.5
+
+ lie@3.3.0:
+ dependencies:
+ immediate: 3.0.6
+
+ log4js@6.9.1:
+ dependencies:
+ date-format: 4.0.14
+ debug: 4.3.4
+ flatted: 3.2.7
+ rfdc: 1.3.0
+ streamroller: 3.1.5
+ transitivePeerDependencies:
+ - supports-color
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ lru-cache@6.0.0:
+ dependencies:
+ yallist: 4.0.0
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.11
+
+ ms@2.1.2: {}
+
+ pako@1.0.11: {}
+
+ process-nextick-args@2.0.1: {}
+
+ react@18.2.0:
+ dependencies:
+ loose-envify: 1.4.0
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ rfdc@1.3.0: {}
+
+ safe-buffer@5.1.2: {}
+
+ semver@7.3.8:
+ dependencies:
+ lru-cache: 6.0.0
+
+ setimmediate@1.0.5: {}
+
+ streamroller@3.1.5:
+ dependencies:
+ date-format: 4.0.14
+ debug: 4.3.4
+ fs-extra: 8.1.0
+ transitivePeerDependencies:
+ - supports-color
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ tabbable@5.3.3: {}
+
+ tslib@1.14.1: {}
+
+ universalify@0.1.2: {}
+
+ util-deprecate@1.0.2: {}
+
+ vscode-jsonrpc@6.0.0: {}
+
+ vscode-languageclient@7.0.0:
+ dependencies:
+ minimatch: 3.1.2
+ semver: 7.3.8
+ vscode-languageserver-protocol: 3.16.0
+
+ vscode-languageserver-protocol@3.16.0:
+ dependencies:
+ vscode-jsonrpc: 6.0.0
+ vscode-languageserver-types: 3.16.0
+
+ vscode-languageserver-types@3.16.0: {}
+
+ yallist@4.0.0: {}
diff --git a/client/src/extension.ts b/client/src/extension.ts
index 657d6ef..f8e33b9 100644
--- a/client/src/extension.ts
+++ b/client/src/extension.ts
@@ -26,62 +26,62 @@ import { WikiHelper } from "./wikiHelper";
let client: LanguageClient;
export function activate(context: vscode.ExtensionContext) {
- /** 初始化日志模块 */
- const logger = ClientLogger.init(context);
+ /** 初始化日志模块 */
+ const logger = ClientLogger.init(context);
- /** Language Server 入口路径 */
- const serverModule = context.asAbsolutePath(path.join("server", "out", "server", "src", "server.js"));
+ /** Language Server 入口路径 */
+ const serverModule = context.asAbsolutePath(path.join("out", "server", "server.js"));
- /** Language Server 配置 */
- const serverOptions: ServerOptions = {
- run: {
- module: serverModule,
- transport: TransportKind.ipc,
- },
- debug: {
- module: serverModule,
- transport: TransportKind.ipc,
- },
- };
+ /** Language Server 配置 */
+ const serverOptions: ServerOptions = {
+ run: {
+ module: serverModule,
+ transport: TransportKind.ipc,
+ },
+ debug: {
+ module: serverModule,
+ transport: TransportKind.ipc,
+ },
+ };
- /** Language Client 配置 */
- const clientOptions: LanguageClientOptions = {
- /** 注册为所有类型文件 */
- documentSelector: [
- {
- scheme: "file",
- },
- ],
- synchronize: {
- // Notify the server about file changes to '.clientrc files contained in the workspace
- fileEvents: vscode.workspace.createFileSystemWatcher("**/.clientrc"),
- },
- };
+ /** Language Client 配置 */
+ const clientOptions: LanguageClientOptions = {
+ /** 注册为所有类型文件 */
+ documentSelector: [
+ {
+ scheme: "file",
+ },
+ ],
+ synchronize: {
+ // Notify the server about file changes to '.clientrc files contained in the workspace
+ fileEvents: vscode.workspace.createFileSystemWatcher("**/.clientrc"),
+ },
+ };
- // 创建 Language Client
- client = new LanguageClient("rvportingtool", "RVPortingTool Language Server", serverOptions, clientOptions);
+ // 创建 Language Client
+ client = new LanguageClient("rvportingtool", "RVPortingTool Language Server", serverOptions, clientOptions);
- // Language Client 就绪后操作
- client.onReady().then(() => {
- logger.info("Language Client is ready");
- });
+ // Language Client 就绪后操作
+ client.onReady().then(() => {
+ logger.info("Language Client is ready");
+ });
- // 初始化 Language Server 日志功能
- ClientLogger.initLSP(client);
+ // 初始化 Language Server 日志功能
+ ClientLogger.initLSP(client);
- // 初始化 Report Manager Client
- ReportManagerClient.init(context, client);
+ // 初始化 Report Manager Client
+ ReportManagerClient.init(context, client);
- // 初始化 Wiki Helper
- WikiHelper.init(context, client);
+ // 初始化 Wiki Helper
+ WikiHelper.init(context, client);
- // 启动 Language Client,同时启动 Server
- client.start();
+ // 启动 Language Client,同时启动 Server
+ client.start();
}
export function deactivate(): Thenable | undefined {
- if (!client) {
- return undefined;
- }
- return client.stop();
+ if (!client) {
+ return undefined;
+ }
+ return client.stop();
}
diff --git a/client/src/wikiView/wikiViewProvider.ts b/client/src/wikiView/wikiViewProvider.ts
index a3c2bbe..281b3b8 100644
--- a/client/src/wikiView/wikiViewProvider.ts
+++ b/client/src/wikiView/wikiViewProvider.ts
@@ -21,84 +21,84 @@ import { checkerRules } from "../types/checkerRules";
import { WikiViewApplyMarkdownMsg, WikiViewLoadedMsg, WikiViewMsgUtil } from "../../../common/src/types/wikiView";
export class WikiViewProvider implements vscode.WebviewViewProvider {
- public static readonly viewType = "rvCodingAsst.view.wiki";
+ public static readonly viewType = "rvCodingAsst.view.wiki";
- private _view?: vscode.WebviewView;
+ private _view?: vscode.WebviewView;
- private _mdContent?: string;
+ private _mdContent?: string;
- constructor(private readonly _extensionUri: vscode.Uri) {}
+ constructor(private readonly _extensionUri: vscode.Uri) {}
- public resolveWebviewView(
- webviewView: vscode.WebviewView,
- context: vscode.WebviewViewResolveContext,
- token: vscode.CancellationToken
- ): void | Thenable {
- this._view = webviewView;
- webviewView.webview.options = {
- enableScripts: true,
- localResourceRoots: [this._extensionUri],
- enableCommandUris: true,
- };
- webviewView.webview.html = this._getHtmlForWebview(webviewView.webview);
- webviewView.webview.onDidReceiveMessage((message: any) => {
- this.onDidReceiveMessage(message);
+ public resolveWebviewView(
+ webviewView: vscode.WebviewView,
+ context: vscode.WebviewViewResolveContext,
+ token: vscode.CancellationToken
+ ): void | Thenable {
+ this._view = webviewView;
+ webviewView.webview.options = {
+ enableScripts: true,
+ localResourceRoots: [this._extensionUri],
+ enableCommandUris: true,
+ };
+ webviewView.webview.html = this._getHtmlForWebview(webviewView.webview);
+ webviewView.webview.onDidReceiveMessage((message: any) => {
+ this.onDidReceiveMessage(message);
+ });
+ }
+
+ public onDidReceiveMessage(message: any) {
+ if (WikiViewMsgUtil.isLoadedMsg(message)) {
+ vscode.window.showInformationMessage("WikiView is ready!");
+ if (this._mdContent) {
+ this._view!.webview.postMessage({
+ type: "WikiViewApplyMarkdownMsg",
+ content: this._mdContent,
});
+ }
}
+ }
- public onDidReceiveMessage(message: any) {
- if (WikiViewMsgUtil.isLoadedMsg(message)) {
- vscode.window.showInformationMessage("WikiView is ready!");
- if (this._mdContent) {
- this._view!.webview.postMessage({
- type: "WikiViewApplyMarkdownMsg",
- content: this._mdContent,
- });
- }
- }
+ public showRule(ruleId: string) {
+ const ruleMDPath = vscode.Uri.joinPath(
+ this._extensionUri,
+ "resources/wiki/checkerRules/",
+ ruleId.toUpperCase() + ".md"
+ );
+ try {
+ this._mdContent = fs.readFileSync(ruleMDPath.fsPath, {
+ encoding: "utf-8",
+ });
+ } catch (err) {
+ vscode.window.showErrorMessage(
+ vscode.l10n.t(
+ "Failed to load rule details of {0}{1}",
+ ruleId,
+ checkerRules.has(ruleId) ? ": ".concat(checkerRules.get(ruleId)!.desc) : ""
+ )
+ );
+ return;
}
-
- public showRule(ruleId: string) {
- const ruleMDPath = vscode.Uri.joinPath(
- this._extensionUri,
- "resources/wiki/checkerRules/",
- ruleId.toUpperCase() + ".md"
- );
- try {
- this._mdContent = fs.readFileSync(ruleMDPath.fsPath, {
- encoding: "utf-8",
- });
- } catch (err) {
- vscode.window.showErrorMessage(
- vscode.l10n.t(
- "Failed to load rule details of {0}{1}",
- ruleId,
- checkerRules.has(ruleId) ? ": ".concat(checkerRules.get(ruleId)!.desc) : ""
- )
- );
- return;
- }
- if (this._view) {
- this._view.show?.(true);
- this._view.webview.postMessage({
- type: "WikiViewApplyMarkdownMsg",
- content: this._mdContent,
- });
- } else {
- vscode.commands.executeCommand(WikiViewProvider.viewType.concat(".focus"));
- }
+ if (this._view) {
+ this._view.show?.(true);
+ this._view.webview.postMessage({
+ type: "WikiViewApplyMarkdownMsg",
+ content: this._mdContent,
+ });
+ } else {
+ vscode.commands.executeCommand(WikiViewProvider.viewType.concat(".focus"));
}
+ }
- private _getHtmlForWebview(webview: vscode.Webview): string {
- // Use a nonce to only allow a specific script to be run.
- const nonce = getNonce();
- const prismCSSUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, "resources/prism.css"));
- const prismJSUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, "resources/prism.js"));
- const scriptUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, "webview/out/wikiView/main.js"));
+ private _getHtmlForWebview(webview: vscode.Webview): string {
+ // Use a nonce to only allow a specific script to be run.
+ const nonce = getNonce();
+ const prismCSSUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, "resources/prism.css"));
+ const prismJSUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, "resources/prism.js"));
+ const scriptUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, "out/wikiView/main.js"));
- let bodyHtml = "" + vscode.l10n.t("No Wiki pages have been opened yet.") + "
";
+ let bodyHtml = "" + vscode.l10n.t("No Wiki pages have been opened yet.") + "
";
- return `
+ return `
@@ -128,14 +128,14 @@ export class WikiViewProvider implements vscode.WebviewViewProvider {
`;
- }
+ }
}
function getNonce() {
- let text = "";
- const possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- for (let i = 0; i < 32; i++) {
- text += possible.charAt(Math.floor(Math.random() * possible.length));
- }
- return text;
+ let text = "";
+ const possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+ for (let i = 0; i < 32; i++) {
+ text += possible.charAt(Math.floor(Math.random() * possible.length));
+ }
+ return text;
}
diff --git a/common/package-lock.json b/common/package-lock.json
deleted file mode 100644
index a4b26ec..0000000
--- a/common/package-lock.json
+++ /dev/null
@@ -1,347 +0,0 @@
-{
- "name": "rvportingtool-common",
- "version": "0.0.1",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "rvportingtool-common",
- "version": "0.0.1",
- "license": "MulanPSL-2.0",
- "dependencies": {
- "vscode-languageclient": "^7.0.0",
- "vscode-languageserver": "^8.1.0",
- "vscode-languageserver-textdocument": "^1.0.8"
- },
- "devDependencies": {
- "@types/vscode": "^1.75.0",
- "@vscode/test-electron": "^2.1.2",
- "vscode-languageserver-types": "^3.17.3"
- }
- },
- "node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@types/vscode": {
- "version": "1.76.0",
- "resolved": "https://registry.npmmirror.com/@types/vscode/-/vscode-1.76.0.tgz",
- "integrity": "sha512-CQcY3+Fe5hNewHnOEAVYj4dd1do/QHliXaknAEYSXx2KEHUzFibDZSKptCon+HPgK55xx20pR+PBJjf0MomnBA==",
- "dev": true
- },
- "node_modules/@vscode/test-electron": {
- "version": "2.3.0",
- "resolved": "https://registry.npmmirror.com/@vscode/test-electron/-/test-electron-2.3.0.tgz",
- "integrity": "sha512-fwzA9RtazH1GT/sckYlbxu6t5e4VaMXwCVtyLv4UAG0hP6NTfnMaaG25XCfWqlVwFhBMcQXHBCy5dmz2eLUnkw==",
- "dev": true,
- "dependencies": {
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "jszip": "^3.10.1",
- "semver": "^7.3.8"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dev": true,
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dev": true,
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dev": true,
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/immediate": {
- "version": "3.0.6",
- "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz",
- "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
- "dev": true
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/jszip": {
- "version": "3.10.1",
- "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz",
- "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
- "dev": true,
- "dependencies": {
- "lie": "~3.3.0",
- "pako": "~1.0.2",
- "readable-stream": "~2.3.6",
- "setimmediate": "^1.0.5"
- }
- },
- "node_modules/lie": {
- "version": "3.3.0",
- "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz",
- "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
- "dev": true,
- "dependencies": {
- "immediate": "~3.0.5"
- }
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/pako": {
- "version": "1.0.11",
- "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
- "dev": true
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "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/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/setimmediate": {
- "version": "1.0.5",
- "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
- "dev": true
- },
- "node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "node_modules/vscode-jsonrpc": {
- "version": "6.0.0",
- "resolved": "https://registry.npmmirror.com/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz",
- "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==",
- "engines": {
- "node": ">=8.0.0 || >=10.0.0"
- }
- },
- "node_modules/vscode-languageclient": {
- "version": "7.0.0",
- "resolved": "https://registry.npmmirror.com/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz",
- "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==",
- "dependencies": {
- "minimatch": "^3.0.4",
- "semver": "^7.3.4",
- "vscode-languageserver-protocol": "3.16.0"
- },
- "engines": {
- "vscode": "^1.52.0"
- }
- },
- "node_modules/vscode-languageserver": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/vscode-languageserver/-/vscode-languageserver-8.1.0.tgz",
- "integrity": "sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==",
- "dependencies": {
- "vscode-languageserver-protocol": "3.17.3"
- },
- "bin": {
- "installServerIntoExtension": "bin/installServerIntoExtension"
- }
- },
- "node_modules/vscode-languageserver-protocol": {
- "version": "3.16.0",
- "resolved": "https://registry.npmmirror.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz",
- "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==",
- "dependencies": {
- "vscode-jsonrpc": "6.0.0",
- "vscode-languageserver-types": "3.16.0"
- }
- },
- "node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": {
- "version": "3.16.0",
- "resolved": "https://registry.npmmirror.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
- "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA=="
- },
- "node_modules/vscode-languageserver-textdocument": {
- "version": "1.0.8",
- "resolved": "https://registry.npmmirror.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz",
- "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q=="
- },
- "node_modules/vscode-languageserver-types": {
- "version": "3.17.3",
- "resolved": "https://registry.npmmirror.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz",
- "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA=="
- },
- "node_modules/vscode-languageserver/node_modules/vscode-jsonrpc": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz",
- "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==",
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/vscode-languageserver/node_modules/vscode-languageserver-protocol": {
- "version": "3.17.3",
- "resolved": "https://registry.npmmirror.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz",
- "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==",
- "dependencies": {
- "vscode-jsonrpc": "8.1.0",
- "vscode-languageserver-types": "3.17.3"
- }
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- }
- }
-}
diff --git a/common/pnpm-lock.yaml b/common/pnpm-lock.yaml
new file mode 100644
index 0000000..b9433e0
--- /dev/null
+++ b/common/pnpm-lock.yaml
@@ -0,0 +1,298 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ vscode-languageclient:
+ specifier: ^7.0.0
+ version: 7.0.0
+ vscode-languageserver:
+ specifier: ^8.1.0
+ version: 8.1.0
+ vscode-languageserver-textdocument:
+ specifier: ^1.0.8
+ version: 1.0.8
+ devDependencies:
+ '@types/vscode':
+ specifier: ^1.75.0
+ version: 1.76.0
+ '@vscode/test-electron':
+ specifier: ^2.1.2
+ version: 2.3.0
+ vscode-languageserver-types:
+ specifier: ^3.17.3
+ version: 3.17.3
+
+packages:
+
+ '@tootallnate/once@1.1.2':
+ resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
+ engines: {node: '>= 6'}
+
+ '@types/vscode@1.76.0':
+ resolution: {integrity: sha512-CQcY3+Fe5hNewHnOEAVYj4dd1do/QHliXaknAEYSXx2KEHUzFibDZSKptCon+HPgK55xx20pR+PBJjf0MomnBA==}
+
+ '@vscode/test-electron@2.3.0':
+ resolution: {integrity: sha512-fwzA9RtazH1GT/sckYlbxu6t5e4VaMXwCVtyLv4UAG0hP6NTfnMaaG25XCfWqlVwFhBMcQXHBCy5dmz2eLUnkw==}
+ engines: {node: '>=16'}
+
+ agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ debug@4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ http-proxy-agent@4.0.1:
+ resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
+ engines: {node: '>= 6'}
+
+ https-proxy-agent@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+
+ immediate@3.0.6:
+ resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ jszip@3.10.1:
+ resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
+
+ lie@3.3.0:
+ resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
+
+ lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ pako@1.0.11:
+ resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ semver@7.3.8:
+ resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ setimmediate@1.0.5:
+ resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ vscode-jsonrpc@6.0.0:
+ resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==}
+ engines: {node: '>=8.0.0 || >=10.0.0'}
+
+ vscode-jsonrpc@8.1.0:
+ resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==}
+ engines: {node: '>=14.0.0'}
+
+ vscode-languageclient@7.0.0:
+ resolution: {integrity: sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==}
+ engines: {vscode: ^1.52.0}
+
+ vscode-languageserver-protocol@3.16.0:
+ resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==}
+
+ vscode-languageserver-protocol@3.17.3:
+ resolution: {integrity: sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==}
+
+ vscode-languageserver-textdocument@1.0.8:
+ resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==}
+
+ vscode-languageserver-types@3.16.0:
+ resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==}
+
+ vscode-languageserver-types@3.17.3:
+ resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==}
+
+ vscode-languageserver@8.1.0:
+ resolution: {integrity: sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==}
+ hasBin: true
+
+ yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+
+snapshots:
+
+ '@tootallnate/once@1.1.2': {}
+
+ '@types/vscode@1.76.0': {}
+
+ '@vscode/test-electron@2.3.0':
+ dependencies:
+ http-proxy-agent: 4.0.1
+ https-proxy-agent: 5.0.1
+ jszip: 3.10.1
+ semver: 7.3.8
+ transitivePeerDependencies:
+ - supports-color
+
+ agent-base@6.0.2:
+ dependencies:
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ balanced-match@1.0.2: {}
+
+ brace-expansion@1.1.11:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ concat-map@0.0.1: {}
+
+ core-util-is@1.0.3: {}
+
+ debug@4.3.4:
+ dependencies:
+ ms: 2.1.2
+
+ http-proxy-agent@4.0.1:
+ dependencies:
+ '@tootallnate/once': 1.1.2
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ https-proxy-agent@5.0.1:
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ immediate@3.0.6: {}
+
+ inherits@2.0.4: {}
+
+ isarray@1.0.0: {}
+
+ jszip@3.10.1:
+ dependencies:
+ lie: 3.3.0
+ pako: 1.0.11
+ readable-stream: 2.3.8
+ setimmediate: 1.0.5
+
+ lie@3.3.0:
+ dependencies:
+ immediate: 3.0.6
+
+ lru-cache@6.0.0:
+ dependencies:
+ yallist: 4.0.0
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.11
+
+ ms@2.1.2: {}
+
+ pako@1.0.11: {}
+
+ process-nextick-args@2.0.1: {}
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ safe-buffer@5.1.2: {}
+
+ semver@7.3.8:
+ dependencies:
+ lru-cache: 6.0.0
+
+ setimmediate@1.0.5: {}
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ util-deprecate@1.0.2: {}
+
+ vscode-jsonrpc@6.0.0: {}
+
+ vscode-jsonrpc@8.1.0: {}
+
+ vscode-languageclient@7.0.0:
+ dependencies:
+ minimatch: 3.1.2
+ semver: 7.3.8
+ vscode-languageserver-protocol: 3.16.0
+
+ vscode-languageserver-protocol@3.16.0:
+ dependencies:
+ vscode-jsonrpc: 6.0.0
+ vscode-languageserver-types: 3.16.0
+
+ vscode-languageserver-protocol@3.17.3:
+ dependencies:
+ vscode-jsonrpc: 8.1.0
+ vscode-languageserver-types: 3.17.3
+
+ vscode-languageserver-textdocument@1.0.8: {}
+
+ vscode-languageserver-types@3.16.0: {}
+
+ vscode-languageserver-types@3.17.3: {}
+
+ vscode-languageserver@8.1.0:
+ dependencies:
+ vscode-languageserver-protocol: 3.17.3
+
+ yallist@4.0.0: {}
diff --git a/esbuild.js b/esbuild.js
index c906c16..38e87d1 100644
--- a/esbuild.js
+++ b/esbuild.js
@@ -17,75 +17,124 @@
const { build } = require("esbuild");
const { copy } = require("esbuild-plugin-copy");
+const { glob } = require("glob");
//@ts-check
/** @typedef {import('esbuild').BuildOptions} BuildOptions **/
/** @type BuildOptions */
const baseConfig = {
- bundle: true,
- minify: process.env.NODE_ENV === "production",
- sourcemap: process.env.NODE_ENV !== "production",
+ bundle: true,
+ minify: process.env.NODE_ENV === "production",
+ sourcemap: process.env.NODE_ENV !== "production",
};
/** @type BuildOptions */
const wikiViewConfig = {
- ...baseConfig,
- target: "es2020",
- format: "esm",
- entryPoints: ["./webview/src/wikiView/main.ts"],
- outfile: "./webview/out/wikiView/main.js",
- plugins: [
- // Copy webview css and ttf files to `out` directory unaltered
- copy({
- resolveFrom: "cwd",
- assets: {
- from: ["./webview/src/wikiView/*.css", "./webview/src/wikiView/*.ttf"],
- to: ["./webview/out/wikiView"],
- },
- }),
- ],
+ ...baseConfig,
+ target: "es2020",
+ format: "esm",
+ entryPoints: ["./webview/src/wikiView/main.ts"],
+ outdir: "./out/wikiView",
+ plugins: [
+ // Copy webview css and ttf files to `out` directory unaltered
+ copy({
+ resolveFrom: "cwd",
+ assets: {
+ from: ["./webview/src/wikiView/*.css", "./webview/src/wikiView/*.ttf"],
+ to: ["./out/wikiView"],
+ },
+ }),
+ ],
+};
+
+/** @type BuildOptions */
+const clientConfig = {
+ ...baseConfig,
+ target: "es2020",
+ platform: "node",
+ format: "cjs",
+ external: ["vscode"],
+ entryPoints: ["./client/src/extension.ts"],
+ outdir: "./out",
+};
+
+/** @type BuildOptions */
+const serverConfig = {
+ ...baseConfig,
+ target: "es2020",
+ platform: "node",
+ format: "cjs",
+ external: ["vscode"],
+ entryPoints: ["./server/src/server.ts"],
+ outdir: "./out/server",
+};
+
+/** @type BuildOptions */
+const commonConfig = {
+ ...baseConfig,
+ target: "es2020",
+ platform: "node",
+ format: "cjs",
+ external: ["vscode"],
+ entryPoints: glob.globSync("./common/src/**/*.ts"),
+ outdir: "./out/common",
};
// This watch config adheres to the conventions of the esbuild-problem-matchers
// extension (https://github.com/connor4312/esbuild-problem-matchers#esbuild-via-js)
/** @type BuildOptions */
const watchConfig = {
- watch: {
- onRebuild(error, result) {
- console.log("[watch] build started");
- if (error) {
- error.errors.forEach((error) =>
- console.error(
- `> ${error.location.file}:${error.location.line}:${error.location.column}: error: ${error.text}`
- )
- );
- } else {
- console.log("[watch] build finished");
- }
- },
+ watch: {
+ onRebuild(error, result) {
+ console.log("[watch] build started");
+ if (error) {
+ error.errors.forEach((error) =>
+ console.error(
+ `> ${error.location.file}:${error.location.line}:${error.location.column}: error: ${error.text}`
+ )
+ );
+ } else {
+ console.log("[watch] build finished");
+ }
},
+ },
};
// Build script
(async () => {
- const args = process.argv.slice(2);
- try {
- if (args.includes("--watch")) {
- // Build and watch webview code
- console.log("[watch] build started");
- await build({
- ...wikiViewConfig,
- ...watchConfig,
- });
- console.log("[watch] build finished");
- } else {
- // Build webview code
- await build(wikiViewConfig);
- console.log("build complete");
- }
- } catch (err) {
- process.stderr.write(err.toString());
- process.exit(1);
+ const args = process.argv.slice(2);
+ try {
+ if (args.includes("--watch")) {
+ // Build and watch webview code
+ console.log("[watch] build started");
+ await build({
+ ...wikiViewConfig,
+ ...watchConfig,
+ });
+ await build({
+ ...clientConfig,
+ ...watchConfig,
+ });
+ await build({
+ ...serverConfig,
+ ...watchConfig,
+ });
+ await build({
+ ...commonConfig,
+ ...watchConfig,
+ });
+ console.log("[watch] build finished");
+ } else {
+ // Build webview code
+ await build(wikiViewConfig);
+ await build(clientConfig);
+ await build(serverConfig);
+ await build(commonConfig);
+ console.log("build complete");
}
+ } catch (err) {
+ process.stderr.write(err.toString());
+ process.exit(1);
+ }
})();
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 9d8d172..0000000
--- a/package-lock.json
+++ /dev/null
@@ -1,3146 +0,0 @@
-{
- "name": "rvportingtool",
- "version": "0.0.1",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "rvportingtool",
- "version": "0.0.1",
- "hasInstallScript": true,
- "license": "MulanPSL-2.0",
- "devDependencies": {
- "@types/glob": "^8.1.0",
- "@types/mocha": "^10.0.1",
- "@types/node": "16.x",
- "@types/string-format": "^2.0.0",
- "@types/vscode": "^1.75.0",
- "@typescript-eslint/eslint-plugin": "^5.53.0",
- "@typescript-eslint/parser": "^5.53.0",
- "@vscode/l10n-dev": "^0.0.23",
- "@vscode/test-electron": "^2.2.3",
- "esbuild": "^0.16.17",
- "esbuild-plugin-copy": "^2.1.1",
- "eslint": "^8.34.0",
- "glob": "^8.1.0",
- "mocha": "^10.2.0",
- "prettier": "2.8.4",
- "typescript": "^4.9.5",
- "typescript-json-schema": "^0.55.0",
- "vscode-prettier-config": "^1.0.0"
- },
- "engines": {
- "vscode": "^1.75.0"
- }
- },
- "node_modules/@cspotcode/source-map-support": {
- "version": "0.8.1",
- "resolved": "https://registry.npmmirror.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
- "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
- "dev": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "0.3.9"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
- "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
- "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
- "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
- "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
- "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
- "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
- "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
- "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
- "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
- "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
- "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
- "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
- "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
- "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
- "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
- "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
- "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
- "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
- "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
- "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
- "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
- "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
- "dev": true,
- "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/regexpp": {
- "version": "4.10.0",
- "resolved": "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
- "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
- "dev": true,
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/@eslint/js": {
- "version": "8.57.0",
- "resolved": "https://registry.npmmirror.com/@eslint/js/-/js-8.57.0.tgz",
- "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.14",
- "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
- "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
- "dev": true,
- "dependencies": {
- "@humanwhocodes/object-schema": "^2.0.2",
- "debug": "^4.3.1",
- "minimatch": "^3.0.5"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true,
- "engines": {
- "node": ">=12.22"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.3",
- "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
- "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
- "dev": true
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.2",
- "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
- "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.9",
- "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
- "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
- "dev": true,
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@tsconfig/node10": {
- "version": "1.0.11",
- "resolved": "https://registry.npmmirror.com/@tsconfig/node10/-/node10-1.0.11.tgz",
- "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
- "dev": true
- },
- "node_modules/@tsconfig/node12": {
- "version": "1.0.11",
- "resolved": "https://registry.npmmirror.com/@tsconfig/node12/-/node12-1.0.11.tgz",
- "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
- "dev": true
- },
- "node_modules/@tsconfig/node14": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/@tsconfig/node14/-/node14-1.0.3.tgz",
- "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
- "dev": true
- },
- "node_modules/@tsconfig/node16": {
- "version": "1.0.4",
- "resolved": "https://registry.npmmirror.com/@tsconfig/node16/-/node16-1.0.4.tgz",
- "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
- "dev": true
- },
- "node_modules/@types/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==",
- "dev": true,
- "dependencies": {
- "@types/minimatch": "^5.1.2",
- "@types/node": "*"
- }
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true
- },
- "node_modules/@types/minimatch": {
- "version": "5.1.2",
- "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz",
- "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
- "dev": true
- },
- "node_modules/@types/mocha": {
- "version": "10.0.6",
- "resolved": "https://registry.npmmirror.com/@types/mocha/-/mocha-10.0.6.tgz",
- "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==",
- "dev": true
- },
- "node_modules/@types/node": {
- "version": "16.18.96",
- "resolved": "https://registry.npmmirror.com/@types/node/-/node-16.18.96.tgz",
- "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==",
- "dev": true
- },
- "node_modules/@types/semver": {
- "version": "7.5.8",
- "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.5.8.tgz",
- "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==",
- "dev": true
- },
- "node_modules/@types/string-format": {
- "version": "2.0.3",
- "resolved": "https://registry.npmmirror.com/@types/string-format/-/string-format-2.0.3.tgz",
- "integrity": "sha512-2BuDXYaQvSZR5XHlLJQ3KQ455NW+C1Mok0uOO6q8bnp97V/gtZbDEYy44kmu5Ng1U8wRtCSF/leREYVmH2vYmQ==",
- "dev": true
- },
- "node_modules/@types/vscode": {
- "version": "1.88.0",
- "resolved": "https://registry.npmmirror.com/@types/vscode/-/vscode-1.88.0.tgz",
- "integrity": "sha512-rWY+Bs6j/f1lvr8jqZTyp5arRMfovdxolcqGi+//+cPDOh8SBvzXH90e7BiSXct5HJ9HGW6jATchbRTpTJpEkw==",
- "dev": true
- },
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.62.0",
- "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
- "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
- "dev": true,
- "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/parser": {
- "version": "5.62.0",
- "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.62.0.tgz",
- "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
- "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
- "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.62.0.tgz",
- "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
- "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.62.0.tgz",
- "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
- "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
- "dev": true,
- "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/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true
- },
- "node_modules/@vscode/l10n-dev": {
- "version": "0.0.23",
- "resolved": "https://registry.npmmirror.com/@vscode/l10n-dev/-/l10n-dev-0.0.23.tgz",
- "integrity": "sha512-J8YhQey9b0d7oJv5xusTxgTNHXDGhQJf8NqIKyIlx4R7TXQ5Dgm9RVOR5w0EddUp54OZWstGVEJKGKIvKt2/Eg==",
- "dev": true,
- "dependencies": {
- "deepmerge-json": "^1.5.0",
- "glob": "^8.0.3",
- "pseudo-localization": "^2.4.0",
- "web-tree-sitter": "^0.20.7",
- "xml2js": "^0.4.23",
- "yargs": "^17.5.1"
- },
- "bin": {
- "vscode-l10n-dev": "dist/cli.js"
- }
- },
- "node_modules/@vscode/test-electron": {
- "version": "2.3.9",
- "resolved": "https://registry.npmmirror.com/@vscode/test-electron/-/test-electron-2.3.9.tgz",
- "integrity": "sha512-z3eiChaCQXMqBnk2aHHSEkobmC2VRalFQN0ApOAtydL172zXGxTwGrRtviT5HnUB+Q+G3vtEYFtuQkYqBzYgMA==",
- "dev": true,
- "dependencies": {
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "jszip": "^3.10.1",
- "semver": "^7.5.2"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/acorn": {
- "version": "8.11.3",
- "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.11.3.tgz",
- "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/acorn-walk": {
- "version": "8.3.2",
- "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.2.tgz",
- "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dev": true,
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "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/ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/arg": {
- "version": "4.1.3",
- "resolved": "https://registry.npmmirror.com/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "node_modules/binary-extensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz",
- "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browser-stdout": {
- "version": "1.3.1",
- "resolved": "https://registry.npmmirror.com/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "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/chokidar": {
- "version": "3.6.0",
- "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
- "dev": true,
- "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"
- },
- "funding": {
- "url": "https://paulmillr.com/funding/"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmmirror.com/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
- },
- "node_modules/create-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/create-require/-/create-require-1.1.1.tgz",
- "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "dev": true
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decamelize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-4.0.0.tgz",
- "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "node_modules/deepmerge-json": {
- "version": "1.5.0",
- "resolved": "https://registry.npmmirror.com/deepmerge-json/-/deepmerge-json-1.5.0.tgz",
- "integrity": "sha512-jZRrDmBKjmGcqMFEUJ14FjMJwm05Qaked+1vxaALRtF0UAl7lPU8OLWXFxvoeg3jbQM249VPFVn8g2znaQkEtA==",
- "dev": true,
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/diff": {
- "version": "5.0.0",
- "resolved": "https://registry.npmmirror.com/diff/-/diff-5.0.0.tgz",
- "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
- "dev": true,
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/esbuild": {
- "version": "0.16.17",
- "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz",
- "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
- "dev": true,
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/android-arm": "0.16.17",
- "@esbuild/android-arm64": "0.16.17",
- "@esbuild/android-x64": "0.16.17",
- "@esbuild/darwin-arm64": "0.16.17",
- "@esbuild/darwin-x64": "0.16.17",
- "@esbuild/freebsd-arm64": "0.16.17",
- "@esbuild/freebsd-x64": "0.16.17",
- "@esbuild/linux-arm": "0.16.17",
- "@esbuild/linux-arm64": "0.16.17",
- "@esbuild/linux-ia32": "0.16.17",
- "@esbuild/linux-loong64": "0.16.17",
- "@esbuild/linux-mips64el": "0.16.17",
- "@esbuild/linux-ppc64": "0.16.17",
- "@esbuild/linux-riscv64": "0.16.17",
- "@esbuild/linux-s390x": "0.16.17",
- "@esbuild/linux-x64": "0.16.17",
- "@esbuild/netbsd-x64": "0.16.17",
- "@esbuild/openbsd-x64": "0.16.17",
- "@esbuild/sunos-x64": "0.16.17",
- "@esbuild/win32-arm64": "0.16.17",
- "@esbuild/win32-ia32": "0.16.17",
- "@esbuild/win32-x64": "0.16.17"
- }
- },
- "node_modules/esbuild-plugin-copy": {
- "version": "2.1.1",
- "resolved": "https://registry.npmmirror.com/esbuild-plugin-copy/-/esbuild-plugin-copy-2.1.1.tgz",
- "integrity": "sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.1.2",
- "chokidar": "^3.5.3",
- "fs-extra": "^10.0.1",
- "globby": "^11.0.3"
- },
- "peerDependencies": {
- "esbuild": ">= 0.14.0"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.2",
- "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz",
- "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint": {
- "version": "8.57.0",
- "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.57.0.tgz",
- "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
- "dev": true,
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.57.0",
- "@humanwhocodes/config-array": "^0.11.14",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true,
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/eslint/node_modules/glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.3"
- },
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
- "dev": true,
- "dependencies": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "node_modules/fast-glob": {
- "version": "3.3.2",
- "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz",
- "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/fastq": {
- "version": "1.17.1",
- "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz",
- "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
- "dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
- "dev": true,
- "bin": {
- "flat": "cli.js"
- }
- },
- "node_modules/flat-cache": {
- "version": "3.2.0",
- "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.2.0.tgz",
- "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.1.tgz",
- "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==",
- "dev": true
- },
- "node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/get-stdin": {
- "version": "7.0.0",
- "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-7.0.0.tgz",
- "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/glob": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz",
- "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^5.0.1",
- "once": "^1.3.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/glob/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/glob/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmmirror.com/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "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/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "dev": true
- },
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmmirror.com/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true,
- "bin": {
- "he": "bin/he"
- }
- },
- "node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dev": true,
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dev": true,
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/ignore": {
- "version": "5.3.1",
- "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.1.tgz",
- "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/immediate": {
- "version": "3.0.6",
- "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz",
- "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
- "dev": true
- },
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz",
- "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
- "dev": true
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/jszip": {
- "version": "3.10.1",
- "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz",
- "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
- "dev": true,
- "dependencies": {
- "lie": "~3.3.0",
- "pako": "~1.0.2",
- "readable-stream": "~2.3.6",
- "setimmediate": "^1.0.5"
- }
- },
- "node_modules/keyv": {
- "version": "4.5.4",
- "resolved": "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz",
- "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
- "dev": true,
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/lie": {
- "version": "3.3.0",
- "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz",
- "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
- "dev": true,
- "dependencies": {
- "immediate": "~3.0.5"
- }
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "node_modules/log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmmirror.com/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/mocha": {
- "version": "10.4.0",
- "resolved": "https://registry.npmmirror.com/mocha/-/mocha-10.4.0.tgz",
- "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.5.3",
- "debug": "4.3.4",
- "diff": "5.0.0",
- "escape-string-regexp": "4.0.0",
- "find-up": "5.0.0",
- "glob": "8.1.0",
- "he": "1.2.0",
- "js-yaml": "4.1.0",
- "log-symbols": "4.1.0",
- "minimatch": "5.0.1",
- "ms": "2.1.3",
- "serialize-javascript": "6.0.0",
- "strip-json-comments": "3.1.1",
- "supports-color": "8.1.1",
- "workerpool": "6.2.1",
- "yargs": "16.2.0",
- "yargs-parser": "20.2.4",
- "yargs-unparser": "2.0.0"
- },
- "bin": {
- "_mocha": "bin/_mocha",
- "mocha": "bin/mocha.js"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/mocha/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/mocha/node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ],
- "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/mocha/node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "node_modules/mocha/node_modules/minimatch": {
- "version": "5.0.1",
- "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.0.1.tgz",
- "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/mocha/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "node_modules/mocha/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/mocha/node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "dev": true,
- "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/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "resolved": "https://registry.npmmirror.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
- "dev": true
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/optionator": {
- "version": "0.9.4",
- "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.4.tgz",
- "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
- "dev": true,
- "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/p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pako": {
- "version": "1.0.11",
- "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
- "dev": true
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/path-equal": {
- "version": "1.2.5",
- "resolved": "https://registry.npmmirror.com/path-equal/-/path-equal-1.2.5.tgz",
- "integrity": "sha512-i73IctDr3F2W+bsOWDyyVm/lqsXO47aY9nsFZUjTT/aljSbkxHxxCoyZ9UUrM8jK0JVod+An+rl48RCsvWM+9g==",
- "dev": true
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/prettier": {
- "version": "2.8.4",
- "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.4.tgz",
- "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==",
- "dev": true,
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "node_modules/pseudo-localization": {
- "version": "2.4.0",
- "resolved": "https://registry.npmmirror.com/pseudo-localization/-/pseudo-localization-2.4.0.tgz",
- "integrity": "sha512-ISYMOKY8+f+PmiXMFw2y6KLY74LBrv/8ml/VjjoVEV2k+MS+OJZz7ydciK5ntJwxPrKQPTU1+oXq9Mx2b0zEzg==",
- "dev": true,
- "dependencies": {
- "flat": "^5.0.2",
- "get-stdin": "^7.0.0",
- "typescript": "^4.7.4",
- "yargs": "^17.2.1"
- },
- "bin": {
- "pseudo-localization": "bin/pseudo-localize"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "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"
- }
- ]
- },
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "^5.1.0"
- }
- },
- "node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
- "engines": {
- "node": ">=8.10.0"
- }
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "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"
- }
- ],
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/safe-stable-stringify": {
- "version": "2.4.3",
- "resolved": "https://registry.npmmirror.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz",
- "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/sax": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz",
- "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==",
- "dev": true
- },
- "node_modules/semver": {
- "version": "7.6.0",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz",
- "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/serialize-javascript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
- "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
- "dev": true,
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
- "node_modules/setimmediate": {
- "version": "1.0.5",
- "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
- "dev": true
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/ts-node": {
- "version": "10.9.2",
- "resolved": "https://registry.npmmirror.com/ts-node/-/ts-node-10.9.2.tgz",
- "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
- "dev": true,
- "dependencies": {
- "@cspotcode/source-map-support": "^0.8.0",
- "@tsconfig/node10": "^1.0.7",
- "@tsconfig/node12": "^1.0.7",
- "@tsconfig/node14": "^1.0.0",
- "@tsconfig/node16": "^1.0.2",
- "acorn": "^8.4.1",
- "acorn-walk": "^8.1.1",
- "arg": "^4.1.0",
- "create-require": "^1.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "v8-compile-cache-lib": "^3.0.1",
- "yn": "3.1.1"
- },
- "bin": {
- "ts-node": "dist/bin.js",
- "ts-node-cwd": "dist/bin-cwd.js",
- "ts-node-esm": "dist/bin-esm.js",
- "ts-node-script": "dist/bin-script.js",
- "ts-node-transpile-only": "dist/bin-transpile.js",
- "ts-script": "dist/bin-script-deprecated.js"
- },
- "peerDependencies": {
- "@swc/core": ">=1.2.50",
- "@swc/wasm": ">=1.2.50",
- "@types/node": "*",
- "typescript": ">=2.7"
- },
- "peerDependenciesMeta": {
- "@swc/core": {
- "optional": true
- },
- "@swc/wasm": {
- "optional": true
- }
- }
- },
- "node_modules/ts-node/node_modules/diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmmirror.com/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true,
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "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/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/typescript-json-schema": {
- "version": "0.55.0",
- "resolved": "https://registry.npmmirror.com/typescript-json-schema/-/typescript-json-schema-0.55.0.tgz",
- "integrity": "sha512-BXaivYecUdiXWWNiUqXgY6A9cMWerwmhtO+lQE7tDZGs7Mf38sORDeQZugfYOZOHPZ9ulsD+w0LWjFDOQoXcwg==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.9",
- "@types/node": "^16.9.2",
- "glob": "^7.1.7",
- "path-equal": "^1.1.2",
- "safe-stable-stringify": "^2.2.0",
- "ts-node": "^10.9.1",
- "typescript": "~4.8.2",
- "yargs": "^17.1.1"
- },
- "bin": {
- "typescript-json-schema": "bin/typescript-json-schema"
- }
- },
- "node_modules/typescript-json-schema/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "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/typescript-json-schema/node_modules/typescript": {
- "version": "4.8.4",
- "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.8.4.tgz",
- "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/universalify": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz",
- "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "node_modules/v8-compile-cache-lib": {
- "version": "3.0.1",
- "resolved": "https://registry.npmmirror.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
- "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
- "dev": true
- },
- "node_modules/vscode-prettier-config": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/vscode-prettier-config/-/vscode-prettier-config-1.0.0.tgz",
- "integrity": "sha512-oS8jnKNCHW8D5hbxj3rk5jpbL1KQyqDB5WBb93E5P2jrwJKRXWYC5lxE5fEj5r9FRSuhOuElhzNB3+P9WuVCAw==",
- "dev": true
- },
- "node_modules/web-tree-sitter": {
- "version": "0.20.8",
- "resolved": "https://registry.npmmirror.com/web-tree-sitter/-/web-tree-sitter-0.20.8.tgz",
- "integrity": "sha512-weOVgZ3aAARgdnb220GqYuh7+rZU0Ka9k9yfKtGAzEYMa6GgiCzW9JjQRJyCJakvibQW+dfjJdihjInKuuCAUQ==",
- "dev": true
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/word-wrap": {
- "version": "1.2.5",
- "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",
- "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/workerpool": {
- "version": "6.2.1",
- "resolved": "https://registry.npmmirror.com/workerpool/-/workerpool-6.2.1.tgz",
- "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
- "dev": true
- },
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "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",
- "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "node_modules/xml2js": {
- "version": "0.4.23",
- "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.4.23.tgz",
- "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
- "dev": true,
- "dependencies": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/xmlbuilder": {
- "version": "11.0.1",
- "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
- "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/yargs": {
- "version": "17.7.2",
- "resolved": "https://registry.npmmirror.com/yargs/-/yargs-17.7.2.tgz",
- "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
- "dev": true,
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs-parser": {
- "version": "20.2.4",
- "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz",
- "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yargs-unparser": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
- "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
- "dev": true,
- "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": "21.1.1",
- "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
- "dev": true,
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yn": {
- "version": "3.1.1",
- "resolved": "https://registry.npmmirror.com/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- }
- }
-}
diff --git a/package.json b/package.json
index 2d7f815..200123c 100644
--- a/package.json
+++ b/package.json
@@ -1,152 +1,155 @@
{
- "name": "rvportingtool",
- "description": "%rvCodingAsst.package.description%",
- "keywords": [
- "rvportingtool"
- ],
- "author": "tcse-iscas",
- "license": "MulanPSL-2.0",
- "version": "0.0.1",
- "repository": {
- "type": "git",
- "url": "https://git.ldby.site:8443/iscas/rv-vsc-plugin"
- },
- "main": "./client/out/client/src/extension",
- "l10n": "./l10n",
- "displayName": "RVPortingTool",
- "publisher": "tcse-iscas",
- "engines": {
- "vscode": "^1.75.0"
- },
- "categories": [
- "Other"
- ],
- "activationEvents": [
- "onStartupFinished",
- "onLanguage:plaintext"
- ],
- "contributes": {
- "configuration": {
- "type": "object",
- "title": "RVPortingTool",
- "properties": {
- "rvportingtool.maxNumberOfProblems": {
- "scope": "resource",
- "type": "number",
- "default": 100,
- "description": "%rvCodingAsst.config.maxNumberOfProblems%"
- },
- "rvportingtool.logLevel": {
- "scope": "window",
- "type": "string",
- "enum": [
- "off",
- "info",
- "verbose"
- ],
- "default": "info",
- "description": "%rvCodingAsst.config.logLevel%"
- },
- "rvportingtool.trace.server": {
- "scope": "window",
- "type": "string",
- "enum": [
- "off",
- "messages",
- "verbose"
- ],
- "default": "messages",
- "description": "%rvCodingAsst.config.trace.server%"
- }
- }
+ "name": "rvportingtool",
+ "description": "%rvCodingAsst.package.description%",
+ "keywords": [
+ "rvportingtool"
+ ],
+ "author": "tcse-iscas",
+ "license": "MulanPSL-2.0",
+ "version": "0.0.1",
+ "repository": {
+ "type": "git",
+ "url": "https://git.ldby.site:8443/iscas/rv-vsc-plugin"
+ },
+ "main": "./out/extension",
+ "l10n": "./l10n",
+ "displayName": "RVPortingTool",
+ "publisher": "tcse-iscas",
+ "engines": {
+ "vscode": "^1.75.0"
+ },
+ "categories": [
+ "Other"
+ ],
+ "activationEvents": [
+ "onStartupFinished",
+ "onLanguage:plaintext"
+ ],
+ "contributes": {
+ "configuration": {
+ "type": "object",
+ "title": "RVPortingTool",
+ "properties": {
+ "rvportingtool.maxNumberOfProblems": {
+ "scope": "resource",
+ "type": "number",
+ "default": 100,
+ "description": "%rvCodingAsst.config.maxNumberOfProblems%"
},
- "commands": [
- {
- "command": "rvCodingAsst.reportManager.loadFromFile",
- "title": "%rvCodingAsst.command.reportManager.loadFromFile%"
- },
- {
- "command": "rvCodingAsst.reportManager.exportReport",
- "title": "%rvCodingAsst.command.reportManager.exportReport%"
- },
- {
- "command": "rvCodingAsst.reportManager.saveAllReportsCache",
- "title": "%rvCodingAsst.command.reportManager.saveAllReportsCache%"
- },
- {
- "command": "rvCodingAsst.wikiHelper.openRule",
- "title": "%rvCodingAsst.command.wikiHelper.openRule%"
- }
- ],
- "viewsContainers": {
- "panel": [
- {
- "id": "rvCodingAsst-panel-container",
- "title": "%rvCodingAsst.viewContainers.panel.title%",
- "icon": "resources/dep.svg"
- }
- ],
- "activitybar": [
- {
- "id": "rvCodingAsst-suggestion-container",
- "title": "%rvCodingAsst.viewContainers.activitybar.title%",
- "icon": "resources/dep.svg"
- }
- ]
+ "rvportingtool.logLevel": {
+ "scope": "window",
+ "type": "string",
+ "enum": [
+ "off",
+ "info",
+ "verbose"
+ ],
+ "default": "info",
+ "description": "%rvCodingAsst.config.logLevel%"
},
- "views": {
- "rvCodingAsst-panel-container": [
- {
- "id": "rvCodingAsst.view.wiki",
- "name": "%rvCodingAsst.view.wiki.name%",
- "type": "webview",
- "icon": "resources/dep.svg",
- "contextualTitle": "%rvCodingAsst.view.wiki.contextualTitle%"
- }
- ],
- "rvCodingAsst-suggestion-container": [
- {
- "id": "rvCodingAsst.view.suggestion",
- "name": "%rvCodingAsst.view.suggestion.name%",
- "type": "webview",
- "icon": "resources/dep.svg",
- "contextualTitle": "%rvCodingAsst.view.suggestion.contextualTitle%"
- }
- ]
+ "rvportingtool.trace.server": {
+ "scope": "window",
+ "type": "string",
+ "enum": [
+ "off",
+ "messages",
+ "verbose"
+ ],
+ "default": "messages",
+ "description": "%rvCodingAsst.config.trace.server%"
}
+ }
},
- "scripts": {
- "vscode:prepublish": "npm run compile",
- "precompile": "typescript-json-schema common/src/types/report.ts IReport --required -o resources/report_schema.json",
- "compile": "tsc -b && node esbuild.js",
- "prewatch": "typescript-json-schema common/src/types/report.ts IReport --required -o resources/report_schema.json",
- "watch": "tsc -b -w",
- "watch_esbuild": "node esbuild.js --watch",
- "clean": "tsc -b --clean",
- "pretest": "npm run compile && npm run lint",
- "lint": "eslint ./client/src ./server/src ./common/src ./webview/src --ext ts,tsx",
- "postinstall": "cd client && npm install && cd ../server && npm install && cd ../common && npm install && cd ../webview && npm install && cd ..",
- "test": "node ./client/out/src/test/runTest",
- "extract_l10n": "npx @vscode/l10n-dev export -o ./l10n ./client/src ./common/src && python ./scripts/merge_l10n.py"
+ "commands": [
+ {
+ "command": "rvCodingAsst.reportManager.loadFromFile",
+ "title": "%rvCodingAsst.command.reportManager.loadFromFile%"
+ },
+ {
+ "command": "rvCodingAsst.reportManager.exportReport",
+ "title": "%rvCodingAsst.command.reportManager.exportReport%"
+ },
+ {
+ "command": "rvCodingAsst.reportManager.saveAllReportsCache",
+ "title": "%rvCodingAsst.command.reportManager.saveAllReportsCache%"
+ },
+ {
+ "command": "rvCodingAsst.wikiHelper.openRule",
+ "title": "%rvCodingAsst.command.wikiHelper.openRule%"
+ }
+ ],
+ "viewsContainers": {
+ "panel": [
+ {
+ "id": "rvCodingAsst-panel-container",
+ "title": "%rvCodingAsst.viewContainers.panel.title%",
+ "icon": "resources/dep.svg"
+ }
+ ],
+ "activitybar": [
+ {
+ "id": "rvCodingAsst-suggestion-container",
+ "title": "%rvCodingAsst.viewContainers.activitybar.title%",
+ "icon": "resources/dep.svg"
+ }
+ ]
},
- "devDependencies": {
- "@types/glob": "^8.1.0",
- "@types/mocha": "^10.0.1",
- "@types/node": "16.x",
- "@types/string-format": "^2.0.0",
- "@types/vscode": "^1.75.0",
- "@typescript-eslint/eslint-plugin": "^5.53.0",
- "@typescript-eslint/parser": "^5.53.0",
- "@vscode/l10n-dev": "^0.0.23",
- "@vscode/test-electron": "^2.2.3",
- "esbuild": "^0.16.17",
- "esbuild-plugin-copy": "^2.1.1",
- "eslint": "^8.34.0",
- "glob": "^8.1.0",
- "mocha": "^10.2.0",
- "prettier": "2.8.4",
- "typescript": "^4.9.5",
- "typescript-json-schema": "^0.55.0",
- "vscode-prettier-config": "^1.0.0"
+ "views": {
+ "rvCodingAsst-panel-container": [
+ {
+ "id": "rvCodingAsst.view.wiki",
+ "name": "%rvCodingAsst.view.wiki.name%",
+ "type": "webview",
+ "icon": "resources/dep.svg",
+ "contextualTitle": "%rvCodingAsst.view.wiki.contextualTitle%"
+ }
+ ],
+ "rvCodingAsst-suggestion-container": [
+ {
+ "id": "rvCodingAsst.view.suggestion",
+ "name": "%rvCodingAsst.view.suggestion.name%",
+ "type": "webview",
+ "icon": "resources/dep.svg",
+ "contextualTitle": "%rvCodingAsst.view.suggestion.contextualTitle%"
+ }
+ ]
}
+ },
+ "scripts": {
+ "postinstall": "cd client && pnpm install && cd ../server && pnpm install && cd ../common && pnpm install && cd ../webview && pnpm install && cd ..",
+ "vscode:prepublish": "pnpm run compile",
+ "precompile": "typescript-json-schema common/src/types/report.ts IReport --required -o resources/report_schema.json",
+ "compile": "tsc -b && node esbuild.js",
+ "prewatch": "typescript-json-schema common/src/types/report.ts IReport --required -o resources/report_schema.json",
+ "watch": "tsc -b -w",
+ "watch_esbuild": "node esbuild.js --watch",
+ "clean": "tsc -b --clean",
+ "pretest": "pnpm run compile && pnpm run lint",
+ "lint": "eslint ./client/src ./server/src ./common/src ./webview/src --ext ts,tsx",
+ "test": "node ./client/out/src/test/runTest",
+ "extract_l10n": "npx @vscode/l10n-dev export -o ./l10n ./client/src ./common/src && python ./scripts/merge_l10n.py"
+ },
+ "devDependencies": {
+ "@types/glob": "^8.1.0",
+ "@types/mocha": "^10.0.7",
+ "@types/node": "~16.18.108",
+ "@types/string-format": "^2.0.3",
+ "@types/vscode": "^1.75.0",
+ "@typescript-eslint/eslint-plugin": "^5.62.0",
+ "@typescript-eslint/parser": "^5.62.0",
+ "@vscode/l10n-dev": "^0.0.23",
+ "@vscode/test-electron": "^2.4.1",
+ "esbuild": "^0.16.17",
+ "esbuild-plugin-copy": "^2.1.1",
+ "eslint": "^8.57.0",
+ "glob": "^11.0.0",
+ "mocha": "^10.7.3",
+ "prettier": "2.8.4",
+ "typescript": "^4.9.5",
+ "typescript-json-schema": "^0.55.0",
+ "vscode-prettier-config": "^1.0.0"
+ },
+ "dependencies": {
+ "@eslint/config-array": "^0.18.0"
+ }
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..553163e
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,2447 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@eslint/config-array':
+ specifier: ^0.18.0
+ version: 0.18.0
+ devDependencies:
+ '@types/glob':
+ specifier: ^8.1.0
+ version: 8.1.0
+ '@types/mocha':
+ specifier: ^10.0.7
+ version: 10.0.7
+ '@types/node':
+ specifier: ~16.18.108
+ version: 16.18.108
+ '@types/string-format':
+ specifier: ^2.0.3
+ version: 2.0.3
+ '@types/vscode':
+ specifier: ^1.75.0
+ version: 1.75.0
+ '@typescript-eslint/eslint-plugin':
+ specifier: ^5.62.0
+ version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5)
+ '@typescript-eslint/parser':
+ specifier: ^5.62.0
+ version: 5.62.0(eslint@8.57.0)(typescript@4.9.5)
+ '@vscode/l10n-dev':
+ specifier: ^0.0.23
+ version: 0.0.23
+ '@vscode/test-electron':
+ specifier: ^2.4.1
+ version: 2.4.1
+ esbuild:
+ specifier: ^0.16.17
+ version: 0.16.17
+ esbuild-plugin-copy:
+ specifier: ^2.1.1
+ version: 2.1.1(esbuild@0.16.17)
+ eslint:
+ specifier: ^8.57.0
+ version: 8.57.0
+ glob:
+ specifier: ^11.0.0
+ version: 11.0.0
+ mocha:
+ specifier: ^10.7.3
+ version: 10.7.3
+ prettier:
+ specifier: 2.8.4
+ version: 2.8.4
+ typescript:
+ specifier: ^4.9.5
+ version: 4.9.5
+ typescript-json-schema:
+ specifier: ^0.55.0
+ version: 0.55.0
+ vscode-prettier-config:
+ specifier: ^1.0.0
+ version: 1.0.0
+
+packages:
+
+ '@cspotcode/source-map-support@0.8.1':
+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
+ engines: {node: '>=12'}
+
+ '@esbuild/android-arm64@0.16.17':
+ resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.16.17':
+ resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.16.17':
+ resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.16.17':
+ resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.16.17':
+ resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.16.17':
+ resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.16.17':
+ resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.16.17':
+ resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.16.17':
+ resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.16.17':
+ resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.16.17':
+ resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.16.17':
+ resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.16.17':
+ resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.16.17':
+ resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.16.17':
+ resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.16.17':
+ resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-x64@0.16.17':
+ resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-x64@0.16.17':
+ resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/sunos-x64@0.16.17':
+ resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.16.17':
+ resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.16.17':
+ resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.16.17':
+ resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@eslint-community/eslint-utils@4.4.0':
+ resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+
+ '@eslint-community/regexpp@4.11.0':
+ resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+
+ '@eslint/config-array@0.18.0':
+ resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@eslint/eslintrc@2.1.4':
+ resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@eslint/js@8.57.0':
+ resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@eslint/object-schema@2.1.4':
+ resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@humanwhocodes/config-array@0.11.14':
+ resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
+ engines: {node: '>=10.10.0'}
+ deprecated: Use @eslint/config-array instead
+
+ '@humanwhocodes/module-importer@1.0.1':
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+
+ '@humanwhocodes/object-schema@2.0.3':
+ resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
+ deprecated: Use @eslint/object-schema instead
+
+ '@isaacs/cliui@8.0.2':
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
+ '@jridgewell/trace-mapping@0.3.9':
+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@pkgjs/parseargs@0.11.0':
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+
+ '@tsconfig/node10@1.0.11':
+ resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
+
+ '@tsconfig/node12@1.0.11':
+ resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
+
+ '@tsconfig/node14@1.0.3':
+ resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
+
+ '@tsconfig/node16@1.0.4':
+ resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
+
+ '@types/glob@8.1.0':
+ resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==}
+
+ '@types/json-schema@7.0.15':
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+
+ '@types/minimatch@5.1.2':
+ resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
+
+ '@types/mocha@10.0.7':
+ resolution: {integrity: sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==}
+
+ '@types/node@16.18.108':
+ resolution: {integrity: sha512-fj42LD82fSv6yN9C6Q4dzS+hujHj+pTv0IpRR3kI20fnYeS0ytBpjFO9OjmDowSPPt4lNKN46JLaKbCyP+BW2A==}
+
+ '@types/semver@7.5.8':
+ resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
+
+ '@types/string-format@2.0.3':
+ resolution: {integrity: sha512-2BuDXYaQvSZR5XHlLJQ3KQ455NW+C1Mok0uOO6q8bnp97V/gtZbDEYy44kmu5Ng1U8wRtCSF/leREYVmH2vYmQ==}
+
+ '@types/vscode@1.75.0':
+ resolution: {integrity: sha512-SAr0PoOhJS6FUq5LjNr8C/StBKALZwDVm3+U4pjF/3iYkt3GioJOPV/oB1Sf1l7lROe4TgrMyL5N1yaEgTWycw==}
+
+ '@typescript-eslint/eslint-plugin@5.62.0':
+ resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^5.0.0
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/parser@5.62.0':
+ resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/scope-manager@5.62.0':
+ resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@typescript-eslint/type-utils@5.62.0':
+ resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/types@5.62.0':
+ resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@typescript-eslint/typescript-estree@5.62.0':
+ resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@typescript-eslint/utils@5.62.0':
+ resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ '@typescript-eslint/visitor-keys@5.62.0':
+ resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ '@ungap/structured-clone@1.2.0':
+ resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
+
+ '@vscode/l10n-dev@0.0.23':
+ resolution: {integrity: sha512-J8YhQey9b0d7oJv5xusTxgTNHXDGhQJf8NqIKyIlx4R7TXQ5Dgm9RVOR5w0EddUp54OZWstGVEJKGKIvKt2/Eg==}
+ hasBin: true
+
+ '@vscode/test-electron@2.4.1':
+ resolution: {integrity: sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ==}
+ engines: {node: '>=16'}
+
+ acorn-jsx@5.3.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ acorn-walk@8.3.3:
+ resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==}
+ engines: {node: '>=0.4.0'}
+
+ acorn@8.12.1:
+ resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ agent-base@7.1.1:
+ resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
+ engines: {node: '>= 14'}
+
+ ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+
+ ansi-colors@4.1.3:
+ resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
+ engines: {node: '>=6'}
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@6.0.1:
+ resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+ engines: {node: '>=12'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ ansi-styles@6.2.1:
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ engines: {node: '>=12'}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ arg@4.1.3:
+ resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ array-union@2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ base64-js@1.5.1:
+ resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ bl@5.1.0:
+ resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==}
+
+ brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+
+ brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browser-stdout@1.3.1:
+ resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==}
+
+ buffer@6.0.3:
+ resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
+
+ callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+
+ camelcase@6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+
+ chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+
+ chalk@5.3.0:
+ resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+
+ cli-cursor@4.0.0:
+ resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ cli-spinners@2.9.2:
+ resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
+ engines: {node: '>=6'}
+
+ cliui@7.0.4:
+ resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
+
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ create-require@1.1.1:
+ resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
+
+ cross-spawn@7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
+
+ debug@4.3.6:
+ resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decamelize@4.0.0:
+ resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==}
+ engines: {node: '>=10'}
+
+ deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+
+ deepmerge-json@1.5.0:
+ resolution: {integrity: sha512-jZRrDmBKjmGcqMFEUJ14FjMJwm05Qaked+1vxaALRtF0UAl7lPU8OLWXFxvoeg3jbQM249VPFVn8g2znaQkEtA==}
+ engines: {node: '>=4.0.0'}
+
+ diff@4.0.2:
+ resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
+ engines: {node: '>=0.3.1'}
+
+ diff@5.2.0:
+ resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
+ engines: {node: '>=0.3.1'}
+
+ dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+
+ doctrine@3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ emoji-regex@10.4.0:
+ resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ esbuild-plugin-copy@2.1.1:
+ resolution: {integrity: sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==}
+ peerDependencies:
+ esbuild: '>= 0.14.0'
+
+ esbuild@0.16.17:
+ resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+
+ eslint-scope@5.1.1:
+ resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
+ engines: {node: '>=8.0.0'}
+
+ eslint-scope@7.2.2:
+ resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ eslint@8.57.0:
+ resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ hasBin: true
+
+ espree@9.6.1:
+ resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
+ esquery@1.6.0:
+ resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
+ engines: {node: '>=0.10'}
+
+ esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+
+ estraverse@4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+
+ estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+
+ esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
+ engines: {node: '>=8.6.0'}
+
+ fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+
+ fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+
+ fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+
+ file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+
+ flat-cache@3.2.0:
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+
+ flat@5.0.2:
+ resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==}
+ hasBin: true
+
+ flatted@3.3.1:
+ resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==}
+
+ foreground-child@3.3.0:
+ resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
+ engines: {node: '>=14'}
+
+ fs-extra@10.1.0:
+ resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
+ engines: {node: '>=12'}
+
+ fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ get-stdin@7.0.0:
+ resolution: {integrity: sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==}
+ engines: {node: '>=8'}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ glob@11.0.0:
+ resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==}
+ engines: {node: 20 || >=22}
+ hasBin: true
+
+ glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ glob@8.1.0:
+ resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
+ engines: {node: '>=12'}
+ deprecated: Glob versions prior to v9 are no longer supported
+
+ globals@13.24.0:
+ resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
+ engines: {node: '>=8'}
+
+ globby@11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ graphemer@1.4.0:
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+
+ http-proxy-agent@7.0.2:
+ resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
+ engines: {node: '>= 14'}
+
+ https-proxy-agent@7.0.5:
+ resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==}
+ engines: {node: '>= 14'}
+
+ ieee754@1.2.1:
+ resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+
+ ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+
+ immediate@3.0.6:
+ resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
+
+ import-fresh@3.3.0:
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+ engines: {node: '>=6'}
+
+ imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+
+ inflight@1.0.6:
+ resolution: {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.
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-interactive@2.0.0:
+ resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==}
+ engines: {node: '>=12'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-path-inside@3.0.3:
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
+
+ is-plain-obj@2.1.0:
+ resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
+ engines: {node: '>=8'}
+
+ is-unicode-supported@0.1.0:
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
+
+ is-unicode-supported@1.3.0:
+ resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
+ engines: {node: '>=12'}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ jackspeak@4.0.1:
+ resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==}
+ engines: {node: 20 || >=22}
+
+ js-yaml@4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+
+ json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+
+ json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+
+ json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+
+ jsonfile@6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+
+ jszip@3.10.1:
+ resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
+
+ keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+
+ levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+
+ lie@3.3.0:
+ resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
+
+ locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+
+ lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+
+ log-symbols@4.1.0:
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
+
+ log-symbols@5.1.0:
+ resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==}
+ engines: {node: '>=12'}
+
+ lru-cache@11.0.0:
+ resolution: {integrity: sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==}
+ engines: {node: 20 || >=22}
+
+ make-error@1.3.6:
+ resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+
+ minimatch@10.0.1:
+ resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==}
+ engines: {node: 20 || >=22}
+
+ minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+
+ minimatch@5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
+
+ minipass@7.1.2:
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ mocha@10.7.3:
+ resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==}
+ engines: {node: '>= 14.0.0'}
+ hasBin: true
+
+ ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ natural-compare-lite@1.4.0:
+ resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
+
+ natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+
+ onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+
+ optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
+
+ ora@7.0.1:
+ resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==}
+ engines: {node: '>=16'}
+
+ p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+
+ p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+
+ package-json-from-dist@1.0.0:
+ resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==}
+
+ pako@1.0.11:
+ resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
+
+ parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+
+ path-equal@1.2.5:
+ resolution: {integrity: sha512-i73IctDr3F2W+bsOWDyyVm/lqsXO47aY9nsFZUjTT/aljSbkxHxxCoyZ9UUrM8jK0JVod+An+rl48RCsvWM+9g==}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-scurry@2.0.0:
+ resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==}
+ engines: {node: 20 || >=22}
+
+ path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+
+ prettier@2.8.4:
+ resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ pseudo-localization@2.4.0:
+ resolution: {integrity: sha512-ISYMOKY8+f+PmiXMFw2y6KLY74LBrv/8ml/VjjoVEV2k+MS+OJZz7ydciK5ntJwxPrKQPTU1+oXq9Mx2b0zEzg==}
+ hasBin: true
+
+ punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ randombytes@2.1.0:
+ resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+
+ restore-cursor@4.0.0:
+ resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+
+ safe-stable-stringify@2.5.0:
+ resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
+ engines: {node: '>=10'}
+
+ sax@1.4.1:
+ resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
+
+ semver@7.6.3:
+ resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ serialize-javascript@6.0.2:
+ resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
+
+ setimmediate@1.0.5:
+ resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
+ slash@3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+
+ stdin-discarder@0.1.0:
+ resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+
+ string-width@6.1.0:
+ resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==}
+ engines: {node: '>=16'}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+
+ strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+
+ supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+
+ text-table@0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ ts-node@10.9.2:
+ resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
+ hasBin: true
+ peerDependencies:
+ '@swc/core': '>=1.2.50'
+ '@swc/wasm': '>=1.2.50'
+ '@types/node': '*'
+ typescript: '>=2.7'
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ '@swc/wasm':
+ optional: true
+
+ tslib@1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+
+ tsutils@3.21.0:
+ resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
+ engines: {node: '>= 6'}
+ peerDependencies:
+ typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
+
+ type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+
+ type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+
+ typescript-json-schema@0.55.0:
+ resolution: {integrity: sha512-BXaivYecUdiXWWNiUqXgY6A9cMWerwmhtO+lQE7tDZGs7Mf38sORDeQZugfYOZOHPZ9ulsD+w0LWjFDOQoXcwg==}
+ hasBin: true
+
+ typescript@4.8.4:
+ resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+
+ typescript@4.9.5:
+ resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+
+ universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ v8-compile-cache-lib@3.0.1:
+ resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
+
+ vscode-prettier-config@1.0.0:
+ resolution: {integrity: sha512-oS8jnKNCHW8D5hbxj3rk5jpbL1KQyqDB5WBb93E5P2jrwJKRXWYC5lxE5fEj5r9FRSuhOuElhzNB3+P9WuVCAw==}
+
+ web-tree-sitter@0.20.8:
+ resolution: {integrity: sha512-weOVgZ3aAARgdnb220GqYuh7+rZU0Ka9k9yfKtGAzEYMa6GgiCzW9JjQRJyCJakvibQW+dfjJdihjInKuuCAUQ==}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+
+ workerpool@6.5.1:
+ resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==}
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+
+ wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ xml2js@0.4.23:
+ resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==}
+ engines: {node: '>=4.0.0'}
+
+ xmlbuilder@11.0.1:
+ resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
+ engines: {node: '>=4.0'}
+
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yargs-parser@20.2.9:
+ resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
+ engines: {node: '>=10'}
+
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
+ yargs-unparser@2.0.0:
+ resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==}
+ engines: {node: '>=10'}
+
+ yargs@16.2.0:
+ resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
+ engines: {node: '>=10'}
+
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+
+ yn@3.1.1:
+ resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
+ engines: {node: '>=6'}
+
+ yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+
+snapshots:
+
+ '@cspotcode/source-map-support@0.8.1':
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.9
+
+ '@esbuild/android-arm64@0.16.17':
+ optional: true
+
+ '@esbuild/android-arm@0.16.17':
+ optional: true
+
+ '@esbuild/android-x64@0.16.17':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.16.17':
+ optional: true
+
+ '@esbuild/darwin-x64@0.16.17':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.16.17':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.16.17':
+ optional: true
+
+ '@esbuild/linux-arm64@0.16.17':
+ optional: true
+
+ '@esbuild/linux-arm@0.16.17':
+ optional: true
+
+ '@esbuild/linux-ia32@0.16.17':
+ optional: true
+
+ '@esbuild/linux-loong64@0.16.17':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.16.17':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.16.17':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.16.17':
+ optional: true
+
+ '@esbuild/linux-s390x@0.16.17':
+ optional: true
+
+ '@esbuild/linux-x64@0.16.17':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.16.17':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.16.17':
+ optional: true
+
+ '@esbuild/sunos-x64@0.16.17':
+ optional: true
+
+ '@esbuild/win32-arm64@0.16.17':
+ optional: true
+
+ '@esbuild/win32-ia32@0.16.17':
+ optional: true
+
+ '@esbuild/win32-x64@0.16.17':
+ optional: true
+
+ '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)':
+ dependencies:
+ eslint: 8.57.0
+ eslint-visitor-keys: 3.4.3
+
+ '@eslint-community/regexpp@4.11.0': {}
+
+ '@eslint/config-array@0.18.0':
+ dependencies:
+ '@eslint/object-schema': 2.1.4
+ debug: 4.3.6(supports-color@8.1.1)
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/eslintrc@2.1.4':
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.3.6(supports-color@8.1.1)
+ espree: 9.6.1
+ globals: 13.24.0
+ ignore: 5.3.2
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@eslint/js@8.57.0': {}
+
+ '@eslint/object-schema@2.1.4': {}
+
+ '@humanwhocodes/config-array@0.11.14':
+ dependencies:
+ '@humanwhocodes/object-schema': 2.0.3
+ debug: 4.3.6(supports-color@8.1.1)
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ '@humanwhocodes/module-importer@1.0.1': {}
+
+ '@humanwhocodes/object-schema@2.0.3': {}
+
+ '@isaacs/cliui@8.0.2':
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@jridgewell/trace-mapping@0.3.9':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.17.1
+
+ '@pkgjs/parseargs@0.11.0':
+ optional: true
+
+ '@tsconfig/node10@1.0.11': {}
+
+ '@tsconfig/node12@1.0.11': {}
+
+ '@tsconfig/node14@1.0.3': {}
+
+ '@tsconfig/node16@1.0.4': {}
+
+ '@types/glob@8.1.0':
+ dependencies:
+ '@types/minimatch': 5.1.2
+ '@types/node': 16.18.108
+
+ '@types/json-schema@7.0.15': {}
+
+ '@types/minimatch@5.1.2': {}
+
+ '@types/mocha@10.0.7': {}
+
+ '@types/node@16.18.108': {}
+
+ '@types/semver@7.5.8': {}
+
+ '@types/string-format@2.0.3': {}
+
+ '@types/vscode@1.75.0': {}
+
+ '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5))(eslint@8.57.0)(typescript@4.9.5)':
+ dependencies:
+ '@eslint-community/regexpp': 4.11.0
+ '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
+ '@typescript-eslint/scope-manager': 5.62.0
+ '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
+ debug: 4.3.6(supports-color@8.1.1)
+ eslint: 8.57.0
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ natural-compare-lite: 1.4.0
+ semver: 7.6.3
+ tsutils: 3.21.0(typescript@4.9.5)
+ optionalDependencies:
+ typescript: 4.9.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@4.9.5)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 5.62.0
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
+ debug: 4.3.6(supports-color@8.1.1)
+ eslint: 8.57.0
+ optionalDependencies:
+ typescript: 4.9.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/scope-manager@5.62.0':
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/visitor-keys': 5.62.0
+
+ '@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@4.9.5)':
+ dependencies:
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
+ '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@4.9.5)
+ debug: 4.3.6(supports-color@8.1.1)
+ eslint: 8.57.0
+ tsutils: 3.21.0(typescript@4.9.5)
+ optionalDependencies:
+ typescript: 4.9.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/types@5.62.0': {}
+
+ '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)':
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/visitor-keys': 5.62.0
+ debug: 4.3.6(supports-color@8.1.1)
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.6.3
+ tsutils: 3.21.0(typescript@4.9.5)
+ optionalDependencies:
+ typescript: 4.9.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@4.9.5)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+ '@types/json-schema': 7.0.15
+ '@types/semver': 7.5.8
+ '@typescript-eslint/scope-manager': 5.62.0
+ '@typescript-eslint/types': 5.62.0
+ '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
+ eslint: 8.57.0
+ eslint-scope: 5.1.1
+ semver: 7.6.3
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ '@typescript-eslint/visitor-keys@5.62.0':
+ dependencies:
+ '@typescript-eslint/types': 5.62.0
+ eslint-visitor-keys: 3.4.3
+
+ '@ungap/structured-clone@1.2.0': {}
+
+ '@vscode/l10n-dev@0.0.23':
+ dependencies:
+ deepmerge-json: 1.5.0
+ glob: 8.1.0
+ pseudo-localization: 2.4.0
+ web-tree-sitter: 0.20.8
+ xml2js: 0.4.23
+ yargs: 17.7.2
+
+ '@vscode/test-electron@2.4.1':
+ dependencies:
+ http-proxy-agent: 7.0.2
+ https-proxy-agent: 7.0.5
+ jszip: 3.10.1
+ ora: 7.0.1
+ semver: 7.6.3
+ transitivePeerDependencies:
+ - supports-color
+
+ acorn-jsx@5.3.2(acorn@8.12.1):
+ dependencies:
+ acorn: 8.12.1
+
+ acorn-walk@8.3.3:
+ dependencies:
+ acorn: 8.12.1
+
+ acorn@8.12.1: {}
+
+ agent-base@7.1.1:
+ dependencies:
+ debug: 4.3.6(supports-color@8.1.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ ajv@6.12.6:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+
+ ansi-colors@4.1.3: {}
+
+ ansi-regex@5.0.1: {}
+
+ ansi-regex@6.0.1: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@6.2.1: {}
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ arg@4.1.3: {}
+
+ argparse@2.0.1: {}
+
+ array-union@2.1.0: {}
+
+ balanced-match@1.0.2: {}
+
+ base64-js@1.5.1: {}
+
+ binary-extensions@2.3.0: {}
+
+ bl@5.1.0:
+ dependencies:
+ buffer: 6.0.3
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
+ brace-expansion@1.1.11:
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ brace-expansion@2.0.1:
+ dependencies:
+ balanced-match: 1.0.2
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browser-stdout@1.3.1: {}
+
+ buffer@6.0.3:
+ dependencies:
+ base64-js: 1.5.1
+ ieee754: 1.2.1
+
+ callsites@3.1.0: {}
+
+ camelcase@6.3.0: {}
+
+ chalk@4.1.2:
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+
+ chalk@5.3.0: {}
+
+ chokidar@3.6.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ cli-cursor@4.0.0:
+ dependencies:
+ restore-cursor: 4.0.0
+
+ cli-spinners@2.9.2: {}
+
+ cliui@7.0.4:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ concat-map@0.0.1: {}
+
+ core-util-is@1.0.3: {}
+
+ create-require@1.1.1: {}
+
+ cross-spawn@7.0.3:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ debug@4.3.6(supports-color@8.1.1):
+ dependencies:
+ ms: 2.1.2
+ optionalDependencies:
+ supports-color: 8.1.1
+
+ decamelize@4.0.0: {}
+
+ deep-is@0.1.4: {}
+
+ deepmerge-json@1.5.0: {}
+
+ diff@4.0.2: {}
+
+ diff@5.2.0: {}
+
+ dir-glob@3.0.1:
+ dependencies:
+ path-type: 4.0.0
+
+ doctrine@3.0.0:
+ dependencies:
+ esutils: 2.0.3
+
+ eastasianwidth@0.2.0: {}
+
+ emoji-regex@10.4.0: {}
+
+ emoji-regex@8.0.0: {}
+
+ emoji-regex@9.2.2: {}
+
+ esbuild-plugin-copy@2.1.1(esbuild@0.16.17):
+ dependencies:
+ chalk: 4.1.2
+ chokidar: 3.6.0
+ esbuild: 0.16.17
+ fs-extra: 10.1.0
+ globby: 11.1.0
+
+ esbuild@0.16.17:
+ optionalDependencies:
+ '@esbuild/android-arm': 0.16.17
+ '@esbuild/android-arm64': 0.16.17
+ '@esbuild/android-x64': 0.16.17
+ '@esbuild/darwin-arm64': 0.16.17
+ '@esbuild/darwin-x64': 0.16.17
+ '@esbuild/freebsd-arm64': 0.16.17
+ '@esbuild/freebsd-x64': 0.16.17
+ '@esbuild/linux-arm': 0.16.17
+ '@esbuild/linux-arm64': 0.16.17
+ '@esbuild/linux-ia32': 0.16.17
+ '@esbuild/linux-loong64': 0.16.17
+ '@esbuild/linux-mips64el': 0.16.17
+ '@esbuild/linux-ppc64': 0.16.17
+ '@esbuild/linux-riscv64': 0.16.17
+ '@esbuild/linux-s390x': 0.16.17
+ '@esbuild/linux-x64': 0.16.17
+ '@esbuild/netbsd-x64': 0.16.17
+ '@esbuild/openbsd-x64': 0.16.17
+ '@esbuild/sunos-x64': 0.16.17
+ '@esbuild/win32-arm64': 0.16.17
+ '@esbuild/win32-ia32': 0.16.17
+ '@esbuild/win32-x64': 0.16.17
+
+ escalade@3.2.0: {}
+
+ escape-string-regexp@4.0.0: {}
+
+ eslint-scope@5.1.1:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+
+ eslint-scope@7.2.2:
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+
+ eslint-visitor-keys@3.4.3: {}
+
+ eslint@8.57.0:
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
+ '@eslint-community/regexpp': 4.11.0
+ '@eslint/eslintrc': 2.1.4
+ '@eslint/js': 8.57.0
+ '@humanwhocodes/config-array': 0.11.14
+ '@humanwhocodes/module-importer': 1.0.1
+ '@nodelib/fs.walk': 1.2.8
+ '@ungap/structured-clone': 1.2.0
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.3
+ debug: 4.3.6(supports-color@8.1.1)
+ doctrine: 3.0.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 7.2.2
+ eslint-visitor-keys: 3.4.3
+ espree: 9.6.1
+ esquery: 1.6.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ globals: 13.24.0
+ graphemer: 1.4.0
+ ignore: 5.3.2
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ is-path-inside: 3.0.3
+ js-yaml: 4.1.0
+ json-stable-stringify-without-jsonify: 1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ strip-ansi: 6.0.1
+ text-table: 0.2.0
+ transitivePeerDependencies:
+ - supports-color
+
+ espree@9.6.1:
+ dependencies:
+ acorn: 8.12.1
+ acorn-jsx: 5.3.2(acorn@8.12.1)
+ eslint-visitor-keys: 3.4.3
+
+ esquery@1.6.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ esrecurse@4.3.0:
+ dependencies:
+ estraverse: 5.3.0
+
+ estraverse@4.3.0: {}
+
+ estraverse@5.3.0: {}
+
+ esutils@2.0.3: {}
+
+ fast-deep-equal@3.1.3: {}
+
+ fast-glob@3.3.2:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fast-json-stable-stringify@2.1.0: {}
+
+ fast-levenshtein@2.0.6: {}
+
+ fastq@1.17.1:
+ dependencies:
+ reusify: 1.0.4
+
+ file-entry-cache@6.0.1:
+ dependencies:
+ flat-cache: 3.2.0
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ find-up@5.0.0:
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+
+ flat-cache@3.2.0:
+ dependencies:
+ flatted: 3.3.1
+ keyv: 4.5.4
+ rimraf: 3.0.2
+
+ flat@5.0.2: {}
+
+ flatted@3.3.1: {}
+
+ foreground-child@3.3.0:
+ dependencies:
+ cross-spawn: 7.0.3
+ signal-exit: 4.1.0
+
+ fs-extra@10.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+
+ fs.realpath@1.0.0: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ get-caller-file@2.0.5: {}
+
+ get-stdin@7.0.0: {}
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob@11.0.0:
+ dependencies:
+ foreground-child: 3.3.0
+ jackspeak: 4.0.1
+ minimatch: 10.0.1
+ minipass: 7.1.2
+ package-json-from-dist: 1.0.0
+ path-scurry: 2.0.0
+
+ glob@7.2.3:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ glob@8.1.0:
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 5.1.6
+ once: 1.4.0
+
+ globals@13.24.0:
+ dependencies:
+ type-fest: 0.20.2
+
+ globby@11.1.0:
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.3.2
+ ignore: 5.3.2
+ merge2: 1.4.1
+ slash: 3.0.0
+
+ graceful-fs@4.2.11: {}
+
+ graphemer@1.4.0: {}
+
+ has-flag@4.0.0: {}
+
+ he@1.2.0: {}
+
+ http-proxy-agent@7.0.2:
+ dependencies:
+ agent-base: 7.1.1
+ debug: 4.3.6(supports-color@8.1.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ https-proxy-agent@7.0.5:
+ dependencies:
+ agent-base: 7.1.1
+ debug: 4.3.6(supports-color@8.1.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ ieee754@1.2.1: {}
+
+ ignore@5.3.2: {}
+
+ immediate@3.0.6: {}
+
+ import-fresh@3.3.0:
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+
+ imurmurhash@0.1.4: {}
+
+ inflight@1.0.6:
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ inherits@2.0.4: {}
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
+ is-extglob@2.1.1: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-interactive@2.0.0: {}
+
+ is-number@7.0.0: {}
+
+ is-path-inside@3.0.3: {}
+
+ is-plain-obj@2.1.0: {}
+
+ is-unicode-supported@0.1.0: {}
+
+ is-unicode-supported@1.3.0: {}
+
+ isarray@1.0.0: {}
+
+ isexe@2.0.0: {}
+
+ jackspeak@4.0.1:
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+
+ js-yaml@4.1.0:
+ dependencies:
+ argparse: 2.0.1
+
+ json-buffer@3.0.1: {}
+
+ json-schema-traverse@0.4.1: {}
+
+ json-stable-stringify-without-jsonify@1.0.1: {}
+
+ jsonfile@6.1.0:
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ jszip@3.10.1:
+ dependencies:
+ lie: 3.3.0
+ pako: 1.0.11
+ readable-stream: 2.3.8
+ setimmediate: 1.0.5
+
+ keyv@4.5.4:
+ dependencies:
+ json-buffer: 3.0.1
+
+ levn@0.4.1:
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+
+ lie@3.3.0:
+ dependencies:
+ immediate: 3.0.6
+
+ locate-path@6.0.0:
+ dependencies:
+ p-locate: 5.0.0
+
+ lodash.merge@4.6.2: {}
+
+ log-symbols@4.1.0:
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+
+ log-symbols@5.1.0:
+ dependencies:
+ chalk: 5.3.0
+ is-unicode-supported: 1.3.0
+
+ lru-cache@11.0.0: {}
+
+ make-error@1.3.6: {}
+
+ merge2@1.4.1: {}
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ mimic-fn@2.1.0: {}
+
+ minimatch@10.0.1:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minimatch@3.1.2:
+ dependencies:
+ brace-expansion: 1.1.11
+
+ minimatch@5.1.6:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minipass@7.1.2: {}
+
+ mocha@10.7.3:
+ dependencies:
+ ansi-colors: 4.1.3
+ browser-stdout: 1.3.1
+ chokidar: 3.6.0
+ debug: 4.3.6(supports-color@8.1.1)
+ diff: 5.2.0
+ escape-string-regexp: 4.0.0
+ find-up: 5.0.0
+ glob: 8.1.0
+ 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: 16.2.0
+ yargs-parser: 20.2.9
+ yargs-unparser: 2.0.0
+
+ ms@2.1.2: {}
+
+ ms@2.1.3: {}
+
+ natural-compare-lite@1.4.0: {}
+
+ natural-compare@1.4.0: {}
+
+ normalize-path@3.0.0: {}
+
+ once@1.4.0:
+ dependencies:
+ wrappy: 1.0.2
+
+ onetime@5.1.2:
+ dependencies:
+ mimic-fn: 2.1.0
+
+ optionator@0.9.4:
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.5
+
+ ora@7.0.1:
+ dependencies:
+ chalk: 5.3.0
+ cli-cursor: 4.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
+ strip-ansi: 7.1.0
+
+ p-limit@3.1.0:
+ dependencies:
+ yocto-queue: 0.1.0
+
+ p-locate@5.0.0:
+ dependencies:
+ p-limit: 3.1.0
+
+ package-json-from-dist@1.0.0: {}
+
+ pako@1.0.11: {}
+
+ parent-module@1.0.1:
+ dependencies:
+ callsites: 3.1.0
+
+ path-equal@1.2.5: {}
+
+ path-exists@4.0.0: {}
+
+ path-is-absolute@1.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-scurry@2.0.0:
+ dependencies:
+ lru-cache: 11.0.0
+ minipass: 7.1.2
+
+ path-type@4.0.0: {}
+
+ picomatch@2.3.1: {}
+
+ prelude-ls@1.2.1: {}
+
+ prettier@2.8.4: {}
+
+ process-nextick-args@2.0.1: {}
+
+ pseudo-localization@2.4.0:
+ dependencies:
+ flat: 5.0.2
+ get-stdin: 7.0.0
+ typescript: 4.9.5
+ yargs: 17.7.2
+
+ punycode@2.3.1: {}
+
+ queue-microtask@1.2.3: {}
+
+ randombytes@2.1.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.1
+
+ require-directory@2.1.1: {}
+
+ resolve-from@4.0.0: {}
+
+ restore-cursor@4.0.0:
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+
+ reusify@1.0.4: {}
+
+ rimraf@3.0.2:
+ dependencies:
+ glob: 7.2.3
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ safe-buffer@5.1.2: {}
+
+ safe-buffer@5.2.1: {}
+
+ safe-stable-stringify@2.5.0: {}
+
+ sax@1.4.1: {}
+
+ semver@7.6.3: {}
+
+ serialize-javascript@6.0.2:
+ dependencies:
+ randombytes: 2.1.0
+
+ setimmediate@1.0.5: {}
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ signal-exit@3.0.7: {}
+
+ signal-exit@4.1.0: {}
+
+ slash@3.0.0: {}
+
+ stdin-discarder@0.1.0:
+ dependencies:
+ bl: 5.1.0
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string-width@5.1.2:
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.0
+
+ string-width@6.1.0:
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 10.4.0
+ strip-ansi: 7.1.0
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-ansi@7.1.0:
+ dependencies:
+ ansi-regex: 6.0.1
+
+ strip-json-comments@3.1.1: {}
+
+ supports-color@7.2.0:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ text-table@0.2.0: {}
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ ts-node@10.9.2(@types/node@16.18.108)(typescript@4.8.4):
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.11
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 16.18.108
+ acorn: 8.12.1
+ acorn-walk: 8.3.3
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 4.8.4
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+
+ tslib@1.14.1: {}
+
+ tsutils@3.21.0(typescript@4.9.5):
+ dependencies:
+ tslib: 1.14.1
+ typescript: 4.9.5
+
+ type-check@0.4.0:
+ dependencies:
+ prelude-ls: 1.2.1
+
+ type-fest@0.20.2: {}
+
+ typescript-json-schema@0.55.0:
+ dependencies:
+ '@types/json-schema': 7.0.15
+ '@types/node': 16.18.108
+ glob: 7.2.3
+ path-equal: 1.2.5
+ safe-stable-stringify: 2.5.0
+ ts-node: 10.9.2(@types/node@16.18.108)(typescript@4.8.4)
+ typescript: 4.8.4
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@swc/core'
+ - '@swc/wasm'
+
+ typescript@4.8.4: {}
+
+ typescript@4.9.5: {}
+
+ universalify@2.0.1: {}
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.1
+
+ util-deprecate@1.0.2: {}
+
+ v8-compile-cache-lib@3.0.1: {}
+
+ vscode-prettier-config@1.0.0: {}
+
+ web-tree-sitter@0.20.8: {}
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ word-wrap@1.2.5: {}
+
+ workerpool@6.5.1: {}
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@8.1.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+
+ wrappy@1.0.2: {}
+
+ xml2js@0.4.23:
+ dependencies:
+ sax: 1.4.1
+ xmlbuilder: 11.0.1
+
+ xmlbuilder@11.0.1: {}
+
+ y18n@5.0.8: {}
+
+ yargs-parser@20.2.9: {}
+
+ yargs-parser@21.1.1: {}
+
+ yargs-unparser@2.0.0:
+ dependencies:
+ camelcase: 6.3.0
+ decamelize: 4.0.0
+ flat: 5.0.2
+ is-plain-obj: 2.1.0
+
+ yargs@16.2.0:
+ dependencies:
+ cliui: 7.0.4
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 20.2.9
+
+ yargs@17.7.2:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.2.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+
+ yn@3.1.1: {}
+
+ yocto-queue@0.1.0: {}
diff --git a/server/package-lock.json b/server/package-lock.json
deleted file mode 100644
index 8b37f1f..0000000
--- a/server/package-lock.json
+++ /dev/null
@@ -1,357 +0,0 @@
-{
- "name": "rvportingtool-server",
- "version": "0.0.1",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "rvportingtool-server",
- "version": "0.0.1",
- "license": "MulanPSL-2.0",
- "dependencies": {
- "ajv": "^8.12.0",
- "mkdirp": "^2.1.5",
- "string-format": "^2.0.0",
- "vscode-languageserver": "^8.1.0",
- "vscode-languageserver-textdocument": "^1.0.8",
- "vscode-uri": "^3.0.7"
- },
- "devDependencies": {
- "@types/vscode": "^1.75.0",
- "@vscode/test-electron": "^2.1.2",
- "vscode-languageserver-types": "^3.17.3"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@types/vscode": {
- "version": "1.76.0",
- "resolved": "https://registry.npmmirror.com/@types/vscode/-/vscode-1.76.0.tgz",
- "integrity": "sha512-CQcY3+Fe5hNewHnOEAVYj4dd1do/QHliXaknAEYSXx2KEHUzFibDZSKptCon+HPgK55xx20pR+PBJjf0MomnBA==",
- "dev": true
- },
- "node_modules/@vscode/test-electron": {
- "version": "2.3.0",
- "resolved": "https://registry.npmmirror.com/@vscode/test-electron/-/test-electron-2.3.0.tgz",
- "integrity": "sha512-fwzA9RtazH1GT/sckYlbxu6t5e4VaMXwCVtyLv4UAG0hP6NTfnMaaG25XCfWqlVwFhBMcQXHBCy5dmz2eLUnkw==",
- "dev": true,
- "dependencies": {
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "jszip": "^3.10.1",
- "semver": "^7.3.8"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/agent-base": {
- "version": "6.0.2",
- "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
- "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
- "dev": true,
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
- "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
- "dev": true
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "dev": true,
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
- "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
- "dev": true,
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/immediate": {
- "version": "3.0.6",
- "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz",
- "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==",
- "dev": true
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
- },
- "node_modules/jszip": {
- "version": "3.10.1",
- "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz",
- "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
- "dev": true,
- "dependencies": {
- "lie": "~3.3.0",
- "pako": "~1.0.2",
- "readable-stream": "~2.3.6",
- "setimmediate": "^1.0.5"
- }
- },
- "node_modules/lie": {
- "version": "3.3.0",
- "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz",
- "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
- "dev": true,
- "dependencies": {
- "immediate": "~3.0.5"
- }
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/mkdirp": {
- "version": "2.1.5",
- "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-2.1.5.tgz",
- "integrity": "sha512-jbjfql+shJtAPrFoKxHOXip4xS+kul9W3OzfzzrqueWK2QMGon2bFH2opl6W9EagBThjEz+iysyi/swOoVfB/w==",
- "bin": {
- "mkdirp": "dist/cjs/src/bin.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/pako": {
- "version": "1.0.11",
- "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
- "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
- "dev": true
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "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/require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/setimmediate": {
- "version": "1.0.5",
- "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz",
- "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==",
- "dev": true
- },
- "node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/string-format": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/string-format/-/string-format-2.0.0.tgz",
- "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA=="
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "node_modules/vscode-jsonrpc": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz",
- "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==",
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/vscode-languageserver": {
- "version": "8.1.0",
- "resolved": "https://registry.npmmirror.com/vscode-languageserver/-/vscode-languageserver-8.1.0.tgz",
- "integrity": "sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==",
- "dependencies": {
- "vscode-languageserver-protocol": "3.17.3"
- },
- "bin": {
- "installServerIntoExtension": "bin/installServerIntoExtension"
- }
- },
- "node_modules/vscode-languageserver-protocol": {
- "version": "3.17.3",
- "resolved": "https://registry.npmmirror.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz",
- "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==",
- "dependencies": {
- "vscode-jsonrpc": "8.1.0",
- "vscode-languageserver-types": "3.17.3"
- }
- },
- "node_modules/vscode-languageserver-textdocument": {
- "version": "1.0.8",
- "resolved": "https://registry.npmmirror.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz",
- "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q=="
- },
- "node_modules/vscode-languageserver-types": {
- "version": "3.17.3",
- "resolved": "https://registry.npmmirror.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz",
- "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA=="
- },
- "node_modules/vscode-uri": {
- "version": "3.0.7",
- "resolved": "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.0.7.tgz",
- "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA=="
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- }
- }
-}
diff --git a/server/pnpm-lock.yaml b/server/pnpm-lock.yaml
new file mode 100644
index 0000000..abee870
--- /dev/null
+++ b/server/pnpm-lock.yaml
@@ -0,0 +1,309 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ ajv:
+ specifier: ^8.12.0
+ version: 8.12.0
+ mkdirp:
+ specifier: ^2.1.5
+ version: 2.1.5
+ string-format:
+ specifier: ^2.0.0
+ version: 2.0.0
+ vscode-languageserver:
+ specifier: ^8.1.0
+ version: 8.1.0
+ vscode-languageserver-textdocument:
+ specifier: ^1.0.8
+ version: 1.0.8
+ vscode-uri:
+ specifier: ^3.0.7
+ version: 3.0.7
+ devDependencies:
+ '@types/vscode':
+ specifier: ^1.75.0
+ version: 1.76.0
+ '@vscode/test-electron':
+ specifier: ^2.1.2
+ version: 2.3.0
+ vscode-languageserver-types:
+ specifier: ^3.17.3
+ version: 3.17.3
+
+packages:
+
+ '@tootallnate/once@1.1.2':
+ resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==}
+ engines: {node: '>= 6'}
+
+ '@types/vscode@1.76.0':
+ resolution: {integrity: sha512-CQcY3+Fe5hNewHnOEAVYj4dd1do/QHliXaknAEYSXx2KEHUzFibDZSKptCon+HPgK55xx20pR+PBJjf0MomnBA==}
+
+ '@vscode/test-electron@2.3.0':
+ resolution: {integrity: sha512-fwzA9RtazH1GT/sckYlbxu6t5e4VaMXwCVtyLv4UAG0hP6NTfnMaaG25XCfWqlVwFhBMcQXHBCy5dmz2eLUnkw==}
+ engines: {node: '>=16'}
+
+ agent-base@6.0.2:
+ resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
+ engines: {node: '>= 6.0.0'}
+
+ ajv@8.12.0:
+ resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
+
+ core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+
+ debug@4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+
+ http-proxy-agent@4.0.1:
+ resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==}
+ engines: {node: '>= 6'}
+
+ https-proxy-agent@5.0.1:
+ resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
+ engines: {node: '>= 6'}
+
+ immediate@3.0.6:
+ resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
+
+ inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+
+ json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+
+ jszip@3.10.1:
+ resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==}
+
+ lie@3.3.0:
+ resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
+
+ lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+
+ mkdirp@2.1.5:
+ resolution: {integrity: sha512-jbjfql+shJtAPrFoKxHOXip4xS+kul9W3OzfzzrqueWK2QMGon2bFH2opl6W9EagBThjEz+iysyi/swOoVfB/w==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+
+ pako@1.0.11:
+ resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
+
+ process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+
+ punycode@2.3.0:
+ resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
+ engines: {node: '>=6'}
+
+ readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+
+ require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
+ semver@7.3.8:
+ resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ setimmediate@1.0.5:
+ resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
+
+ string-format@2.0.0:
+ resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==}
+
+ string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+
+ uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ vscode-jsonrpc@8.1.0:
+ resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==}
+ engines: {node: '>=14.0.0'}
+
+ vscode-languageserver-protocol@3.17.3:
+ resolution: {integrity: sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==}
+
+ vscode-languageserver-textdocument@1.0.8:
+ resolution: {integrity: sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==}
+
+ vscode-languageserver-types@3.17.3:
+ resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==}
+
+ vscode-languageserver@8.1.0:
+ resolution: {integrity: sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==}
+ hasBin: true
+
+ vscode-uri@3.0.7:
+ resolution: {integrity: sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==}
+
+ yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+
+snapshots:
+
+ '@tootallnate/once@1.1.2': {}
+
+ '@types/vscode@1.76.0': {}
+
+ '@vscode/test-electron@2.3.0':
+ dependencies:
+ http-proxy-agent: 4.0.1
+ https-proxy-agent: 5.0.1
+ jszip: 3.10.1
+ semver: 7.3.8
+ transitivePeerDependencies:
+ - supports-color
+
+ agent-base@6.0.2:
+ dependencies:
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ ajv@8.12.0:
+ dependencies:
+ fast-deep-equal: 3.1.3
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+ uri-js: 4.4.1
+
+ core-util-is@1.0.3: {}
+
+ debug@4.3.4:
+ dependencies:
+ ms: 2.1.2
+
+ fast-deep-equal@3.1.3: {}
+
+ http-proxy-agent@4.0.1:
+ dependencies:
+ '@tootallnate/once': 1.1.2
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ https-proxy-agent@5.0.1:
+ dependencies:
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+
+ immediate@3.0.6: {}
+
+ inherits@2.0.4: {}
+
+ isarray@1.0.0: {}
+
+ json-schema-traverse@1.0.0: {}
+
+ jszip@3.10.1:
+ dependencies:
+ lie: 3.3.0
+ pako: 1.0.11
+ readable-stream: 2.3.8
+ setimmediate: 1.0.5
+
+ lie@3.3.0:
+ dependencies:
+ immediate: 3.0.6
+
+ lru-cache@6.0.0:
+ dependencies:
+ yallist: 4.0.0
+
+ mkdirp@2.1.5: {}
+
+ ms@2.1.2: {}
+
+ pako@1.0.11: {}
+
+ process-nextick-args@2.0.1: {}
+
+ punycode@2.3.0: {}
+
+ readable-stream@2.3.8:
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+
+ require-from-string@2.0.2: {}
+
+ safe-buffer@5.1.2: {}
+
+ semver@7.3.8:
+ dependencies:
+ lru-cache: 6.0.0
+
+ setimmediate@1.0.5: {}
+
+ string-format@2.0.0: {}
+
+ string_decoder@1.1.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
+ uri-js@4.4.1:
+ dependencies:
+ punycode: 2.3.0
+
+ util-deprecate@1.0.2: {}
+
+ vscode-jsonrpc@8.1.0: {}
+
+ vscode-languageserver-protocol@3.17.3:
+ dependencies:
+ vscode-jsonrpc: 8.1.0
+ vscode-languageserver-types: 3.17.3
+
+ vscode-languageserver-textdocument@1.0.8: {}
+
+ vscode-languageserver-types@3.17.3: {}
+
+ vscode-languageserver@8.1.0:
+ dependencies:
+ vscode-languageserver-protocol: 3.17.3
+
+ vscode-uri@3.0.7: {}
+
+ yallist@4.0.0: {}
diff --git a/webview/package-lock.json b/webview/package-lock.json
deleted file mode 100644
index 68a1671..0000000
--- a/webview/package-lock.json
+++ /dev/null
@@ -1,220 +0,0 @@
-{
- "name": "rvportingtool-webview",
- "version": "0.0.1",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "rvportingtool-webview",
- "version": "0.0.1",
- "license": "MulanPSL-2.0",
- "dependencies": {
- "@types/markdown-it": "^12.2.3",
- "@types/markdown-it-container": "^2.0.5",
- "@vscode/webview-ui-toolkit": "^1.2.2",
- "markdown-it": "^13.0.1",
- "markdown-it-container": "^3.0.0",
- "prismjs": "^1.29.0"
- },
- "devDependencies": {
- "@types/prismjs": "^1.26.0",
- "@types/vscode-webview": "^1.57.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/@microsoft/fast-element": {
- "version": "1.11.0",
- "resolved": "https://registry.npmmirror.com/@microsoft/fast-element/-/fast-element-1.11.0.tgz",
- "integrity": "sha512-VKJYMkS5zgzHHb66sY7AFpYv6IfFhXrjQcAyNgi2ivD65My1XOhtjfKez5ELcLFRJfgZNAxvI8kE69apXERTkw=="
- },
- "node_modules/@microsoft/fast-foundation": {
- "version": "2.47.0",
- "resolved": "https://registry.npmmirror.com/@microsoft/fast-foundation/-/fast-foundation-2.47.0.tgz",
- "integrity": "sha512-EyFuioaZQ9ngjUNRQi8R3dIPPsaNQdUOS+tP0G7b1MJRhXmQWIitBM6IeveQA6ZvXG6H21dqgrfEWlsYrUZ2sw==",
- "dependencies": {
- "@microsoft/fast-element": "^1.11.0",
- "@microsoft/fast-web-utilities": "^5.4.1",
- "tabbable": "^5.2.0",
- "tslib": "^1.13.0"
- }
- },
- "node_modules/@microsoft/fast-react-wrapper": {
- "version": "0.1.48",
- "resolved": "https://registry.npmmirror.com/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.1.48.tgz",
- "integrity": "sha512-9NvEjru9Kn5ZKjomAMX6v+eF0DR+eDkxKDwDfi+Wb73kTbrNzcnmlwd4diN15ygH97kldgj2+lpvI4CKLQQWLg==",
- "dependencies": {
- "@microsoft/fast-element": "^1.9.0",
- "@microsoft/fast-foundation": "^2.41.1"
- },
- "peerDependencies": {
- "react": ">=16.9.0"
- }
- },
- "node_modules/@microsoft/fast-web-utilities": {
- "version": "5.4.1",
- "resolved": "https://registry.npmmirror.com/@microsoft/fast-web-utilities/-/fast-web-utilities-5.4.1.tgz",
- "integrity": "sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==",
- "dependencies": {
- "exenv-es6": "^1.1.1"
- }
- },
- "node_modules/@types/linkify-it": {
- "version": "3.0.2",
- "resolved": "https://registry.npmmirror.com/@types/linkify-it/-/linkify-it-3.0.2.tgz",
- "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA=="
- },
- "node_modules/@types/markdown-it": {
- "version": "12.2.3",
- "resolved": "https://registry.npmmirror.com/@types/markdown-it/-/markdown-it-12.2.3.tgz",
- "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==",
- "dependencies": {
- "@types/linkify-it": "*",
- "@types/mdurl": "*"
- }
- },
- "node_modules/@types/markdown-it-container": {
- "version": "2.0.5",
- "resolved": "https://registry.npmmirror.com/@types/markdown-it-container/-/markdown-it-container-2.0.5.tgz",
- "integrity": "sha512-8v5jIC5gcCUv+JcD0DExwNBkoKC0kLB4acensF0NoNlTIcXmQxF3RDjzAdIW82sXSoR+n772ePguxIWlq2ELvA==",
- "dependencies": {
- "@types/markdown-it": "*"
- }
- },
- "node_modules/@types/mdurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/@types/mdurl/-/mdurl-1.0.2.tgz",
- "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA=="
- },
- "node_modules/@types/prismjs": {
- "version": "1.26.0",
- "resolved": "https://registry.npmmirror.com/@types/prismjs/-/prismjs-1.26.0.tgz",
- "integrity": "sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==",
- "dev": true
- },
- "node_modules/@types/vscode-webview": {
- "version": "1.57.1",
- "resolved": "https://registry.npmmirror.com/@types/vscode-webview/-/vscode-webview-1.57.1.tgz",
- "integrity": "sha512-ghW5SfuDmsGDS2A4xkvGsLwDRNc3Vj5rS6rPOyPm/IryZuf3wceZKxgYaUoW+k9f0f/CB7y2c1rRsdOWZWn0PQ==",
- "dev": true
- },
- "node_modules/@vscode/webview-ui-toolkit": {
- "version": "1.2.2",
- "resolved": "https://registry.npmmirror.com/@vscode/webview-ui-toolkit/-/webview-ui-toolkit-1.2.2.tgz",
- "integrity": "sha512-xIQoF4FC3Xh6d7KNKIoIezSiFWYFuf6gQMdDyKueKBFGeKwaHWEn+dY2g3makvvEsNMEDji/woEwvg9QSbuUsw==",
- "dependencies": {
- "@microsoft/fast-element": "^1.6.2",
- "@microsoft/fast-foundation": "^2.38.0",
- "@microsoft/fast-react-wrapper": "^0.1.18"
- },
- "peerDependencies": {
- "react": ">=16.9.0"
- }
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
- },
- "node_modules/entities": {
- "version": "3.0.1",
- "resolved": "https://registry.npmmirror.com/entities/-/entities-3.0.1.tgz",
- "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==",
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/exenv-es6": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/exenv-es6/-/exenv-es6-1.1.1.tgz",
- "integrity": "sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ=="
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "peer": true
- },
- "node_modules/linkify-it": {
- "version": "4.0.1",
- "resolved": "https://registry.npmmirror.com/linkify-it/-/linkify-it-4.0.1.tgz",
- "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==",
- "dependencies": {
- "uc.micro": "^1.0.1"
- }
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "peer": true,
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/markdown-it": {
- "version": "13.0.1",
- "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-13.0.1.tgz",
- "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==",
- "dependencies": {
- "argparse": "^2.0.1",
- "entities": "~3.0.1",
- "linkify-it": "^4.0.1",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
- },
- "bin": {
- "markdown-it": "bin/markdown-it.js"
- }
- },
- "node_modules/markdown-it-container": {
- "version": "3.0.0",
- "resolved": "https://registry.npmmirror.com/markdown-it-container/-/markdown-it-container-3.0.0.tgz",
- "integrity": "sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw=="
- },
- "node_modules/mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g=="
- },
- "node_modules/prismjs": {
- "version": "1.29.0",
- "resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz",
- "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmmirror.com/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
- "peer": true,
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/tabbable": {
- "version": "5.3.3",
- "resolved": "https://registry.npmmirror.com/tabbable/-/tabbable-5.3.3.tgz",
- "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA=="
- },
- "node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
- },
- "node_modules/uc.micro": {
- "version": "1.0.6",
- "resolved": "https://registry.npmmirror.com/uc.micro/-/uc.micro-1.0.6.tgz",
- "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
- }
- }
-}
diff --git a/webview/pnpm-lock.yaml b/webview/pnpm-lock.yaml
new file mode 100644
index 0000000..1cf49d9
--- /dev/null
+++ b/webview/pnpm-lock.yaml
@@ -0,0 +1,206 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@types/markdown-it':
+ specifier: ^12.2.3
+ version: 12.2.3
+ '@types/markdown-it-container':
+ specifier: ^2.0.5
+ version: 2.0.5
+ '@vscode/webview-ui-toolkit':
+ specifier: ^1.2.2
+ version: 1.2.2(react@18.2.0)
+ markdown-it:
+ specifier: ^13.0.1
+ version: 13.0.1
+ markdown-it-container:
+ specifier: ^3.0.0
+ version: 3.0.0
+ prismjs:
+ specifier: ^1.29.0
+ version: 1.29.0
+ devDependencies:
+ '@types/prismjs':
+ specifier: ^1.26.0
+ version: 1.26.0
+ '@types/vscode-webview':
+ specifier: ^1.57.1
+ version: 1.57.1
+
+packages:
+
+ '@microsoft/fast-element@1.11.0':
+ resolution: {integrity: sha512-VKJYMkS5zgzHHb66sY7AFpYv6IfFhXrjQcAyNgi2ivD65My1XOhtjfKez5ELcLFRJfgZNAxvI8kE69apXERTkw==}
+
+ '@microsoft/fast-foundation@2.47.0':
+ resolution: {integrity: sha512-EyFuioaZQ9ngjUNRQi8R3dIPPsaNQdUOS+tP0G7b1MJRhXmQWIitBM6IeveQA6ZvXG6H21dqgrfEWlsYrUZ2sw==}
+
+ '@microsoft/fast-react-wrapper@0.1.48':
+ resolution: {integrity: sha512-9NvEjru9Kn5ZKjomAMX6v+eF0DR+eDkxKDwDfi+Wb73kTbrNzcnmlwd4diN15ygH97kldgj2+lpvI4CKLQQWLg==}
+ peerDependencies:
+ react: '>=16.9.0'
+
+ '@microsoft/fast-web-utilities@5.4.1':
+ resolution: {integrity: sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==}
+
+ '@types/linkify-it@3.0.2':
+ resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==}
+
+ '@types/markdown-it-container@2.0.5':
+ resolution: {integrity: sha512-8v5jIC5gcCUv+JcD0DExwNBkoKC0kLB4acensF0NoNlTIcXmQxF3RDjzAdIW82sXSoR+n772ePguxIWlq2ELvA==}
+
+ '@types/markdown-it@12.2.3':
+ resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==}
+
+ '@types/mdurl@1.0.2':
+ resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==}
+
+ '@types/prismjs@1.26.0':
+ resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==}
+
+ '@types/vscode-webview@1.57.1':
+ resolution: {integrity: sha512-ghW5SfuDmsGDS2A4xkvGsLwDRNc3Vj5rS6rPOyPm/IryZuf3wceZKxgYaUoW+k9f0f/CB7y2c1rRsdOWZWn0PQ==}
+
+ '@vscode/webview-ui-toolkit@1.2.2':
+ resolution: {integrity: sha512-xIQoF4FC3Xh6d7KNKIoIezSiFWYFuf6gQMdDyKueKBFGeKwaHWEn+dY2g3makvvEsNMEDji/woEwvg9QSbuUsw==}
+ peerDependencies:
+ react: '>=16.9.0'
+
+ argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ entities@3.0.1:
+ resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==}
+ engines: {node: '>=0.12'}
+
+ exenv-es6@1.1.1:
+ resolution: {integrity: sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==}
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ linkify-it@4.0.1:
+ resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==}
+
+ loose-envify@1.4.0:
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
+ hasBin: true
+
+ markdown-it-container@3.0.0:
+ resolution: {integrity: sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==}
+
+ markdown-it@13.0.1:
+ resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==}
+ hasBin: true
+
+ mdurl@1.0.1:
+ resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
+
+ prismjs@1.29.0:
+ resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==}
+ engines: {node: '>=6'}
+
+ react@18.2.0:
+ resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
+ engines: {node: '>=0.10.0'}
+
+ tabbable@5.3.3:
+ resolution: {integrity: sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==}
+
+ tslib@1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+
+ uc.micro@1.0.6:
+ resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
+
+snapshots:
+
+ '@microsoft/fast-element@1.11.0': {}
+
+ '@microsoft/fast-foundation@2.47.0':
+ dependencies:
+ '@microsoft/fast-element': 1.11.0
+ '@microsoft/fast-web-utilities': 5.4.1
+ tabbable: 5.3.3
+ tslib: 1.14.1
+
+ '@microsoft/fast-react-wrapper@0.1.48(react@18.2.0)':
+ dependencies:
+ '@microsoft/fast-element': 1.11.0
+ '@microsoft/fast-foundation': 2.47.0
+ react: 18.2.0
+
+ '@microsoft/fast-web-utilities@5.4.1':
+ dependencies:
+ exenv-es6: 1.1.1
+
+ '@types/linkify-it@3.0.2': {}
+
+ '@types/markdown-it-container@2.0.5':
+ dependencies:
+ '@types/markdown-it': 12.2.3
+
+ '@types/markdown-it@12.2.3':
+ dependencies:
+ '@types/linkify-it': 3.0.2
+ '@types/mdurl': 1.0.2
+
+ '@types/mdurl@1.0.2': {}
+
+ '@types/prismjs@1.26.0': {}
+
+ '@types/vscode-webview@1.57.1': {}
+
+ '@vscode/webview-ui-toolkit@1.2.2(react@18.2.0)':
+ dependencies:
+ '@microsoft/fast-element': 1.11.0
+ '@microsoft/fast-foundation': 2.47.0
+ '@microsoft/fast-react-wrapper': 0.1.48(react@18.2.0)
+ react: 18.2.0
+
+ argparse@2.0.1: {}
+
+ entities@3.0.1: {}
+
+ exenv-es6@1.1.1: {}
+
+ js-tokens@4.0.0: {}
+
+ linkify-it@4.0.1:
+ dependencies:
+ uc.micro: 1.0.6
+
+ loose-envify@1.4.0:
+ dependencies:
+ js-tokens: 4.0.0
+
+ markdown-it-container@3.0.0: {}
+
+ markdown-it@13.0.1:
+ dependencies:
+ argparse: 2.0.1
+ entities: 3.0.1
+ linkify-it: 4.0.1
+ mdurl: 1.0.1
+ uc.micro: 1.0.6
+
+ mdurl@1.0.1: {}
+
+ prismjs@1.29.0: {}
+
+ react@18.2.0:
+ dependencies:
+ loose-envify: 1.4.0
+
+ tabbable@5.3.3: {}
+
+ tslib@1.14.1: {}
+
+ uc.micro@1.0.6: {}
--
Gitee
From 6b74b2b508ed3f2165a1ae58a7396159059a65d2 Mon Sep 17 00:00:00 2001
From: liccc
Date: Fri, 6 Sep 2024 11:58:37 +0800
Subject: [PATCH 2/6] fix: broken dependencies
+ fix bad usage of `glob` in test runner
+ fix import statement of `strFormat`
---
client/src/test/index.ts | 45 ---
client/src/test/runTest.ts | 49 ++-
client/src/test/suite/index.ts | 55 +++
server/src/reportManager.ts | 641 +++++++++++++++---------------
server/src/reportManagerServer.ts | 505 +++++++++++------------
5 files changed, 659 insertions(+), 636 deletions(-)
delete mode 100644 client/src/test/index.ts
create mode 100644 client/src/test/suite/index.ts
diff --git a/client/src/test/index.ts b/client/src/test/index.ts
deleted file mode 100644
index 77d7f7b..0000000
--- a/client/src/test/index.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-/* --------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- * ------------------------------------------------------------------------------------------ */
-
-import * as glob from "glob";
-import * as Mocha from "mocha";
-
-export function run(): Promise {
- // Create the mocha test
- const mocha = new Mocha({
- ui: "tdd",
- color: true,
- });
- mocha.timeout(100000);
-
- const testsRoot = __dirname;
-
- return new Promise((resolve, reject) => {
- glob("**.test.js", { cwd: testsRoot }, (err, files) => {
- if (err) {
- return reject(err);
- }
-
- // 暂时禁用所有测试用例,仅保留写法
- // Add files to the test suite
- // files.forEach((f) => mocha.addFile(path.resolve(testsRoot, f)));
- console.info(`${files.length} tests disabled.`);
-
- try {
- // Run the mocha test
- mocha.run((failures) => {
- if (failures > 0) {
- reject(new Error(`${failures} tests failed.`));
- } else {
- resolve();
- }
- });
- } catch (err) {
- console.error(err);
- reject(err);
- }
- });
- });
-}
diff --git a/client/src/test/runTest.ts b/client/src/test/runTest.ts
index 9fb1d59..8b667da 100644
--- a/client/src/test/runTest.ts
+++ b/client/src/test/runTest.ts
@@ -1,27 +1,42 @@
-/*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
+/***************************************************************************************
+ * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * RVPortingTool is licensed under Mulan PSL v2.
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
+ * You may obtain a copy of Mulan PSL v2 at:
+ * http://license.coscl.org.cn/MulanPSL2
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+ * See the Mulan PSL v2 for more details.
+ *
+ * Language Client Report Manager for RVPortingTool VSCode Extension
+ *
+ * Author: Lightning Rainstorm
+ * liccc
+ * Last Change: Sep 6, 2024
+ **************************************************************************************/
import * as path from "path";
+
import { runTests } from "@vscode/test-electron";
async function main() {
- try {
- // The folder containing the Extension Manifest package.json
- // Passed to `--extensionDevelopmentPath`
- const extensionDevelopmentPath = path.resolve(__dirname, "../../../");
+ try {
+ // The folder containing the Extension Manifest package.json
+ // Passed to `--extensionDevelopmentPath`
+ const extensionDevelopmentPath = path.resolve(__dirname, "../../");
- // The path to test runner
- // Passed to --extensionTestsPath
- const extensionTestsPath = path.resolve(__dirname, "./index");
+ // The path to the extension test runner script
+ // Passed to --extensionTestsPath
+ const extensionTestsPath = path.resolve(__dirname, "./suite/index");
- // Download VS Code, unzip it and run the integration test
- await runTests({ extensionDevelopmentPath, extensionTestsPath });
- } catch (err) {
- console.error("Failed to run tests");
- process.exit(1);
- }
+ // Download VS Code, unzip it and run the integration test
+ await runTests({ extensionDevelopmentPath, extensionTestsPath });
+ } catch (err) {
+ console.error(err);
+ console.error("Failed to run tests");
+ process.exit(1);
+ }
}
main();
diff --git a/client/src/test/suite/index.ts b/client/src/test/suite/index.ts
new file mode 100644
index 0000000..03f1025
--- /dev/null
+++ b/client/src/test/suite/index.ts
@@ -0,0 +1,55 @@
+/***************************************************************************************
+ * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * RVPortingTool is licensed under Mulan PSL v2.
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
+ * You may obtain a copy of Mulan PSL v2 at:
+ * http://license.coscl.org.cn/MulanPSL2
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+ * See the Mulan PSL v2 for more details.
+ *
+ * Language Client Report Manager for RVPortingTool VSCode Extension
+ *
+ * Author: Lightning Rainstorm
+ * liccc
+ * Last Change: Sep 6, 2024
+ **************************************************************************************/
+
+import * as path from "path";
+import * as Mocha from "mocha";
+import { glob } from "glob";
+
+export function run(): Promise {
+ // Create the mocha test
+ const mocha = new Mocha({
+ ui: "tdd",
+ color: true,
+ });
+
+ const testsRoot = path.resolve(__dirname, "..");
+
+ return new Promise((c, e) => {
+ glob("**/**.test.js", { cwd: testsRoot })
+ .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);
+ }
+ })
+ .catch((err) => {
+ return e(err);
+ });
+ });
+}
diff --git a/server/src/reportManager.ts b/server/src/reportManager.ts
index 5e55451..e3e6df7 100644
--- a/server/src/reportManager.ts
+++ b/server/src/reportManager.ts
@@ -12,11 +12,11 @@
* Language Server Report Manager for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 16, 2023
+ * liccc
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as fs from "fs";
-import * as strFormat from "string-format";
import mkdirp from "mkdirp";
import { IReport } from "../../common/src/types/report";
import { ReportMeta } from "./types/reportMeta";
@@ -27,362 +27,359 @@ import { TextDocChangeParams, updateReportByTextDocumentChange } from "./reportT
import { URI } from "vscode-uri";
import Ajv, * as ajv from "ajv";
import path = require("path");
+import strFormat = require("string-format");
const logger = ServerLogger.getLogger("reportMgr");
export class ReportManager {
- /** 代码扫描报告 */
- private _reportSchema?: ajv.JSONSchemaType;
+ /** 代码扫描报告 */
+ private _reportSchema?: ajv.JSONSchemaType;
- /** 代码扫描报告 JSON Schema Validator */
- private _reportValidator?: ajv.ValidateFunction;
+ /** 代码扫描报告 JSON Schema Validator */
+ private _reportValidator?: ajv.ValidateFunction;
- /**
- * 所有 workspace 对应的报告元数据
- *
- * key 为工作区的 Uri 文本
- */
- private _reportMetaMap: Map;
+ /**
+ * 所有 workspace 对应的报告元数据
+ *
+ * key 为工作区的 Uri 文本
+ */
+ private _reportMetaMap: Map;
- constructor() {
- this._reportMetaMap = new Map();
- }
+ constructor() {
+ this._reportMetaMap = new Map();
+ }
- /**
- * 加载报告 JSON Schema 配置文件
- *
- * @param filePath 报告 JSON Schema 路径
- */
- public loadSchema(filePath: string): boolean {
- if (!fs.existsSync(filePath)) {
- logger.error(strFormat("Report schema not exists: {0}", filePath));
- return false;
- }
- this._reportSchema = >JSON.parse(
- fs.readFileSync(filePath, {
- encoding: "utf-8",
- })
- );
- this._reportValidator = new Ajv().compile(this._reportSchema);
- logger.debug("loadSchema: finished creating report JSON schema validator");
- return true;
+ /**
+ * 加载报告 JSON Schema 配置文件
+ *
+ * @param filePath 报告 JSON Schema 路径
+ */
+ public loadSchema(filePath: string): boolean {
+ if (!fs.existsSync(filePath)) {
+ logger.error(strFormat("Report schema not exists: {0}", filePath));
+ return false;
}
+ this._reportSchema = >JSON.parse(
+ fs.readFileSync(filePath, {
+ encoding: "utf-8",
+ })
+ );
+ this._reportValidator = new Ajv().compile(this._reportSchema);
+ logger.debug("loadSchema: finished creating report JSON schema validator");
+ return true;
+ }
- /**
- * 加载报告
- *
- * @param params 报告加载参数
- */
- public loadReport(params: ReportMgrLoadParams): IReport | ReportMgrLoadError {
- const reportUri = URI.parse(params.reportUri);
- const workspaceUri = URI.parse(params.workspaceUri);
-
- // 目前仅支持读取本地文件
- if (reportUri.scheme !== "file") {
- logger.error("loadReport: unsupported scheme: ".concat(reportUri.scheme));
- return {
- loadParams: params,
- retry: true,
- };
- }
+ /**
+ * 加载报告
+ *
+ * @param params 报告加载参数
+ */
+ public loadReport(params: ReportMgrLoadParams): IReport | ReportMgrLoadError {
+ const reportUri = URI.parse(params.reportUri);
+ const workspaceUri = URI.parse(params.workspaceUri);
- // 尝试读取报告对象
- const reportObj = this.loadFromFile(reportUri.fsPath);
- if (typeof reportObj === "string") {
- // 返回值为字符串,表示读取失败
- logger.error(strFormat("loadReport: {0}: {1}", reportObj, reportUri.toString()));
- return {
- loadParams: params,
- reason: reportObj,
- retry: true,
- };
- }
+ // 目前仅支持读取本地文件
+ if (reportUri.scheme !== "file") {
+ logger.error("loadReport: unsupported scheme: ".concat(reportUri.scheme));
+ return {
+ loadParams: params,
+ retry: true,
+ };
+ }
- // 检查是否已有读入的报告,如有则打印日志提示
- const checkRes = this.checkAndSaveNewerReport(workspaceUri.toString(), reportObj);
- if (typeof checkRes === "boolean") {
- if (checkRes === false && !params.reloadConfirm) {
- // 覆盖检查在 reportManagerServer 实现,这里理论上不可能出现
- logger.error("loadReport: found current report, but reloadConfirm is false");
- return {
- loadParams: params,
- retry: false,
- };
- }
- logger.info(strFormat("loadReport: discarded current report in [{0}]", workspaceUri.toString()));
- } else {
- logger.warn(strFormat("loadReport: Loaded report for [{0}], but saveCacheError", workspaceUri));
- return {
- loadParams: params,
- reason: "saveCacheError",
- retry: false,
- };
- }
- logger.info(
- strFormat("Loaded report for [{0}], lastUpdTimestamp = {1}", workspaceUri, reportObj.timestamp.toString())
- );
- return reportObj;
+ // 尝试读取报告对象
+ const reportObj = this.loadFromFile(reportUri.fsPath);
+ if (typeof reportObj === "string") {
+ // 返回值为字符串,表示读取失败
+ logger.error(strFormat("loadReport: {0}: {1}", reportObj, reportUri.toString()));
+ return {
+ loadParams: params,
+ reason: reportObj,
+ retry: true,
+ };
}
- /**
- * 加载工作区中缓存的报告文件
- *
- * 如果缓存的文件内容没有已读入的报告新,则返回 undefined
- *
- * @param workspaceUri 工作区路径
- */
- public loadCachedReport(workspaceUri: string): IReport | ReportMgrLoadError | undefined {
- const cachePath = this.getReportCachePath(workspaceUri);
- const loadParams = {
- workspaceUri: workspaceUri,
- reportUri: URI.file(cachePath).toString(),
- reloadConfirm: false,
+ // 检查是否已有读入的报告,如有则打印日志提示
+ const checkRes = this.checkAndSaveNewerReport(workspaceUri.toString(), reportObj);
+ if (typeof checkRes === "boolean") {
+ if (checkRes === false && !params.reloadConfirm) {
+ // 覆盖检查在 reportManagerServer 实现,这里理论上不可能出现
+ logger.error("loadReport: found current report, but reloadConfirm is false");
+ return {
+ loadParams: params,
+ retry: false,
};
+ }
+ logger.info(strFormat("loadReport: discarded current report in [{0}]", workspaceUri.toString()));
+ } else {
+ logger.warn(strFormat("loadReport: Loaded report for [{0}], but saveCacheError", workspaceUri));
+ return {
+ loadParams: params,
+ reason: "saveCacheError",
+ retry: false,
+ };
+ }
+ logger.info(
+ strFormat("Loaded report for [{0}], lastUpdTimestamp = {1}", workspaceUri, reportObj.timestamp.toString())
+ );
+ return reportObj;
+ }
- // 尝试读取报告对象
- const reportObj = this.loadFromFile(cachePath);
- if (typeof reportObj === "string") {
- // 返回值为字符串,表示读取失败
- if (reportObj !== "fileNotExists") {
- // 除文件不存在的错误外,记录报错日志
- logger.error(strFormat("loadCachedReport: {0}: {1}", reportObj, cachePath));
- }
- return {
- loadParams: loadParams,
- reason: reportObj,
- retry: false, // 读取缓存的报告时,出错不重试
- };
- }
-
- // 检查报告与已有数据的版本
- const checkRes = this.checkAndSaveNewerReport(workspaceUri, reportObj);
- if (typeof checkRes !== "boolean") {
- // 缓存到工作区失败,给予警告提示
- return {
- loadParams: loadParams,
- reason: "saveCacheError",
- retry: false,
- };
- } else if (checkRes === false) {
- return undefined;
- }
+ /**
+ * 加载工作区中缓存的报告文件
+ *
+ * 如果缓存的文件内容没有已读入的报告新,则返回 undefined
+ *
+ * @param workspaceUri 工作区路径
+ */
+ public loadCachedReport(workspaceUri: string): IReport | ReportMgrLoadError | undefined {
+ const cachePath = this.getReportCachePath(workspaceUri);
+ const loadParams = {
+ workspaceUri: workspaceUri,
+ reportUri: URI.file(cachePath).toString(),
+ reloadConfirm: false,
+ };
- // 标记工作区可缓存报告
- this.getReportMeta(workspaceUri)!.cacheSavable = true;
- logger.info("loadCachedReport: finished loading cached report from: ".concat(cachePath));
- return reportObj;
+ // 尝试读取报告对象
+ const reportObj = this.loadFromFile(cachePath);
+ if (typeof reportObj === "string") {
+ // 返回值为字符串,表示读取失败
+ if (reportObj !== "fileNotExists") {
+ // 除文件不存在的错误外,记录报错日志
+ logger.error(strFormat("loadCachedReport: {0}: {1}", reportObj, cachePath));
+ }
+ return {
+ loadParams: loadParams,
+ reason: reportObj,
+ retry: false, // 读取缓存的报告时,出错不重试
+ };
}
- /**
- * 检查某个对象是否为 Report 类型
- *
- * @param res 待检查对象
- * @returns 是否为 Report 类型对象
- */
- public static isReport(res: any): res is IReport {
- const report = res as IReport;
- return (
- Array.isArray(report.problems) && typeof report.version === "number" && typeof report.timestamp === "number"
- );
+ // 检查报告与已有数据的版本
+ const checkRes = this.checkAndSaveNewerReport(workspaceUri, reportObj);
+ if (typeof checkRes !== "boolean") {
+ // 缓存到工作区失败,给予警告提示
+ return {
+ loadParams: loadParams,
+ reason: "saveCacheError",
+ retry: false,
+ };
+ } else if (checkRes === false) {
+ return undefined;
}
- /**
- * 保存报告
- *
- * @param params 报告保存参数
- */
- public saveReport(params: ReportMgrSaveParams, reportMeta?: ReportMeta): ReportMgrSaveError | undefined {
- const reportPath = URI.parse(params.reportUri).fsPath;
- const dirPath = path.dirname(reportPath);
- if (!reportMeta) {
- reportMeta = this.getReportMeta(params.workspaceUri);
- if (!reportMeta) {
- logger.error("saveReport: invalid workspaceUri: ".concat(params.workspaceUri));
- return {
- saveParams: params,
- reason: "invalidWorkspaceUri",
- retry: false,
- };
- }
- }
- if (fs.existsSync(reportPath) && !params.replaceConfirm) {
- logger.warn("saveReport: target file exists, waiting for replace confirm: ".concat(reportPath));
- return {
- saveParams: params,
- reason: "needReplaceConfirm",
- retry: false,
- };
- }
- try {
- if (!fs.existsSync(dirPath)) {
- logger.debug("saveReport: creating directory: ".concat(dirPath));
- mkdirp.sync(dirPath);
- }
- reportMeta.reportData.timestamp = reportMeta.lastUpdTimestamp;
- fs.writeFileSync(reportPath, JSON.stringify(reportMeta.reportData, null, " "));
- reportMeta.lastSaveTimestamp = new Date().getTime();
- } catch (err: any) {
- logger.error("saveReport: error: ".concat(err.toString()));
- return {
- saveParams: params,
- reason: "ioError",
- retry: true,
- };
- }
- logger.info("saveReport: finished saving report to: ".concat(reportPath));
- return;
- }
+ // 标记工作区可缓存报告
+ this.getReportMeta(workspaceUri)!.cacheSavable = true;
+ logger.info("loadCachedReport: finished loading cached report from: ".concat(cachePath));
+ return reportObj;
+ }
- /**
- * 获取报告数据
- *
- * @param workspaceUri 工作区路径或文档路径
- */
- public getReport(uri: string): IReport | undefined {
- const targetMeta = this.getReportMeta(uri);
- return targetMeta ? targetMeta.reportData : undefined;
- }
+ /**
+ * 检查某个对象是否为 Report 类型
+ *
+ * @param res 待检查对象
+ * @returns 是否为 Report 类型对象
+ */
+ public static isReport(res: any): res is IReport {
+ const report = res as IReport;
+ return Array.isArray(report.problems) && typeof report.version === "number" && typeof report.timestamp === "number";
+ }
- /**
- * 获取报告元数据
- *
- * @param uri 工作区路径或文档路径
- */
- public getReportMeta(uri: string): ReportMeta | undefined {
- if (this._reportMetaMap.has(uri)) {
- return this._reportMetaMap.get(uri);
- }
- for (let [workspaceUri, reportMeta] of this._reportMetaMap.entries()) {
- if (uri.startsWith(workspaceUri)) {
- return reportMeta;
- }
- }
- return;
+ /**
+ * 保存报告
+ *
+ * @param params 报告保存参数
+ */
+ public saveReport(params: ReportMgrSaveParams, reportMeta?: ReportMeta): ReportMgrSaveError | undefined {
+ const reportPath = URI.parse(params.reportUri).fsPath;
+ const dirPath = path.dirname(reportPath);
+ if (!reportMeta) {
+ reportMeta = this.getReportMeta(params.workspaceUri);
+ if (!reportMeta) {
+ logger.error("saveReport: invalid workspaceUri: ".concat(params.workspaceUri));
+ return {
+ saveParams: params,
+ reason: "invalidWorkspaceUri",
+ retry: false,
+ };
+ }
}
-
- /**
- * 卸载报告数据
- *
- * @param workspaceUri 工作区路径
- */
- public unloadReport(workspaceUri: string): ReportMgrSaveError | undefined {
- const currentMeta = this._reportMetaMap.get(workspaceUri);
- if (currentMeta) {
- const res = this.saveReportCache(currentMeta);
- if (res) {
- logger.info(strFormat("unloadReport: ReportMgrSaveError ({0}): {1}", res.reason, workspaceUri));
- return res;
- }
- this._reportMetaMap.delete(workspaceUri);
- logger.info("unloadReport: ".concat(workspaceUri));
- }
- return;
+ if (fs.existsSync(reportPath) && !params.replaceConfirm) {
+ logger.warn("saveReport: target file exists, waiting for replace confirm: ".concat(reportPath));
+ return {
+ saveParams: params,
+ reason: "needReplaceConfirm",
+ retry: false,
+ };
}
-
- /**
- * 通知报告更新,并自动保存
- *
- * @param reportMeta
- */
- public notifyReportUpdate(reportMeta: ReportMeta): ReportMgrSaveError | undefined {
- logger.debug("notifyReportUpdate: triggered");
- reportMeta.lastUpdTimestamp = new Date().getTime();
- return this.saveReportCache(reportMeta);
+ try {
+ if (!fs.existsSync(dirPath)) {
+ logger.debug("saveReport: creating directory: ".concat(dirPath));
+ mkdirp.sync(dirPath);
+ }
+ reportMeta.reportData.timestamp = reportMeta.lastUpdTimestamp;
+ fs.writeFileSync(reportPath, JSON.stringify(reportMeta.reportData, null, " "));
+ reportMeta.lastSaveTimestamp = new Date().getTime();
+ } catch (err: any) {
+ logger.error("saveReport: error: ".concat(err.toString()));
+ return {
+ saveParams: params,
+ reason: "ioError",
+ retry: true,
+ };
}
+ logger.info("saveReport: finished saving report to: ".concat(reportPath));
+ return;
+ }
- /**
- * 保存报告(缓存到工作区)
- *
- * @param reportMeta 报告元数据
- * @returns 保存错误或 undefined
- */
- public saveReportCache(reportMeta: ReportMeta): ReportMgrSaveError | undefined {
- logger.debug("saveReportCache: begin");
- const cacheUri = URI.file(this.getReportCachePath(reportMeta.workspaceUri.toString()));
+ /**
+ * 获取报告数据
+ *
+ * @param workspaceUri 工作区路径或文档路径
+ */
+ public getReport(uri: string): IReport | undefined {
+ const targetMeta = this.getReportMeta(uri);
+ return targetMeta ? targetMeta.reportData : undefined;
+ }
- // cacheSavable 为 undefined 或 true 时,尝试保存报告
- // 若为 false 表示工作区不可缓存报告,不再尝试保存
- if (reportMeta.cacheSavable !== false) {
- return this.saveReport(
- {
- workspaceUri: reportMeta.workspaceUri.toString(),
- reportUri: cacheUri.toString(),
- replaceConfirm: true,
- },
- reportMeta
- );
- }
- return;
+ /**
+ * 获取报告元数据
+ *
+ * @param uri 工作区路径或文档路径
+ */
+ public getReportMeta(uri: string): ReportMeta | undefined {
+ if (this._reportMetaMap.has(uri)) {
+ return this._reportMetaMap.get(uri);
+ }
+ for (let [workspaceUri, reportMeta] of this._reportMetaMap.entries()) {
+ if (uri.startsWith(workspaceUri)) {
+ return reportMeta;
+ }
}
+ return;
+ }
- /**
- * 检查报告是否比已有的报告新(或未有报告)并缓存
- *
- * @param workspaceUri 工作区路径
- * @param reportData 报告数据
- */
- private checkAndSaveNewerReport(workspaceUri: string, reportData: IReport): ReportMgrSaveError | boolean {
- let currReportMeta = this.getReportMeta(workspaceUri);
- if (currReportMeta && currReportMeta.lastUpdTimestamp > reportData.timestamp) {
- // 报告比当前已有的报告旧
- return false;
- }
- // 缓存新报告
- currReportMeta = new ReportMeta(URI.parse(workspaceUri), reportData);
- this._reportMetaMap.set(workspaceUri, currReportMeta);
+ /**
+ * 卸载报告数据
+ *
+ * @param workspaceUri 工作区路径
+ */
+ public unloadReport(workspaceUri: string): ReportMgrSaveError | undefined {
+ const currentMeta = this._reportMetaMap.get(workspaceUri);
+ if (currentMeta) {
+ const res = this.saveReportCache(currentMeta);
+ if (res) {
+ logger.info(strFormat("unloadReport: ReportMgrSaveError ({0}): {1}", res.reason, workspaceUri));
+ return res;
+ }
+ this._reportMetaMap.delete(workspaceUri);
+ logger.info("unloadReport: ".concat(workspaceUri));
+ }
+ return;
+ }
+
+ /**
+ * 通知报告更新,并自动保存
+ *
+ * @param reportMeta
+ */
+ public notifyReportUpdate(reportMeta: ReportMeta): ReportMgrSaveError | undefined {
+ logger.debug("notifyReportUpdate: triggered");
+ reportMeta.lastUpdTimestamp = new Date().getTime();
+ return this.saveReportCache(reportMeta);
+ }
+
+ /**
+ * 保存报告(缓存到工作区)
+ *
+ * @param reportMeta 报告元数据
+ * @returns 保存错误或 undefined
+ */
+ public saveReportCache(reportMeta: ReportMeta): ReportMgrSaveError | undefined {
+ logger.debug("saveReportCache: begin");
+ const cacheUri = URI.file(this.getReportCachePath(reportMeta.workspaceUri.toString()));
- // 缓存到工作区
- const res = this.saveReportCache(currReportMeta);
- return res ? res : true;
+ // cacheSavable 为 undefined 或 true 时,尝试保存报告
+ // 若为 false 表示工作区不可缓存报告,不再尝试保存
+ if (reportMeta.cacheSavable !== false) {
+ return this.saveReport(
+ {
+ workspaceUri: reportMeta.workspaceUri.toString(),
+ reportUri: cacheUri.toString(),
+ replaceConfirm: true,
+ },
+ reportMeta
+ );
}
+ return;
+ }
- /**
- * 获取工作区缓存报告路径
- *
- * @param workspaceUri 工作区路径
- */
- private getReportCachePath(workspaceUri: string): string {
- return path.resolve(URI.parse(workspaceUri).fsPath, ".vscode/rvCodingAsst_report.json");
+ /**
+ * 检查报告是否比已有的报告新(或未有报告)并缓存
+ *
+ * @param workspaceUri 工作区路径
+ * @param reportData 报告数据
+ */
+ private checkAndSaveNewerReport(workspaceUri: string, reportData: IReport): ReportMgrSaveError | boolean {
+ let currReportMeta = this.getReportMeta(workspaceUri);
+ if (currReportMeta && currReportMeta.lastUpdTimestamp > reportData.timestamp) {
+ // 报告比当前已有的报告旧
+ return false;
}
+ // 缓存新报告
+ currReportMeta = new ReportMeta(URI.parse(workspaceUri), reportData);
+ this._reportMetaMap.set(workspaceUri, currReportMeta);
- /**
- * 从本地文件读取报告
- *
- * @param filePath 本地文件路径
- * @returns
- */
- private loadFromFile(filePath: string): IReport | ReportMgrLoadErrorType {
- if (fs.existsSync(filePath)) {
- const reportObj = JSON.parse(
- fs.readFileSync(filePath, {
- encoding: "utf-8",
- })
- );
- if (!this._reportValidator) {
- logger.warn("Report schema validator undefined, skip checking report data");
- } else {
- if (!this._reportValidator(reportObj)) {
- logger.error(
- "Report schema validation failed! ajv.errors = ".concat(
- JSON.stringify(this._reportValidator.errors)
- )
- );
- return "formatError";
- }
- }
- return reportObj;
+ // 缓存到工作区
+ const res = this.saveReportCache(currReportMeta);
+ return res ? res : true;
+ }
+
+ /**
+ * 获取工作区缓存报告路径
+ *
+ * @param workspaceUri 工作区路径
+ */
+ private getReportCachePath(workspaceUri: string): string {
+ return path.resolve(URI.parse(workspaceUri).fsPath, ".vscode/rvCodingAsst_report.json");
+ }
+
+ /**
+ * 从本地文件读取报告
+ *
+ * @param filePath 本地文件路径
+ * @returns
+ */
+ private loadFromFile(filePath: string): IReport | ReportMgrLoadErrorType {
+ if (fs.existsSync(filePath)) {
+ const reportObj = JSON.parse(
+ fs.readFileSync(filePath, {
+ encoding: "utf-8",
+ })
+ );
+ if (!this._reportValidator) {
+ logger.warn("Report schema validator undefined, skip checking report data");
+ } else {
+ if (!this._reportValidator(reportObj)) {
+ logger.error(
+ "Report schema validation failed! ajv.errors = ".concat(JSON.stringify(this._reportValidator.errors))
+ );
+ return "formatError";
}
- return "fileNotExists";
+ }
+ return reportObj;
}
+ return "fileNotExists";
+ }
- /**
- * 根据 TextDocument 的修改内容调整报告
- *
- * @param reportMeta 报告元数据
- * @param change TextDocument 增量修改信息
- */
- public applyChanges(reportMeta: ReportMeta, change: TextDocChangeParams) {
- // TODO: Report transform
- updateReportByTextDocumentChange(reportMeta, change);
- }
+ /**
+ * 根据 TextDocument 的修改内容调整报告
+ *
+ * @param reportMeta 报告元数据
+ * @param change TextDocument 增量修改信息
+ */
+ public applyChanges(reportMeta: ReportMeta, change: TextDocChangeParams) {
+ // TODO: Report transform
+ updateReportByTextDocumentChange(reportMeta, change);
+ }
}
diff --git a/server/src/reportManagerServer.ts b/server/src/reportManagerServer.ts
index 31af3ae..3c86b3c 100644
--- a/server/src/reportManagerServer.ts
+++ b/server/src/reportManagerServer.ts
@@ -12,11 +12,11 @@
* Language Server Report Manager for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 16, 2023
+ * liccc
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as lsp from "vscode-languageserver/node";
-import * as strFormat from "string-format";
import { ClientCapabilities } from "./types/clientCapabilities";
import { DocumentsSettingManager } from "./docSettingManager";
import { LSPNotificationID } from "../../common/src/types/notification";
@@ -28,292 +28,293 @@ import { ServerLogger } from "./utils/log";
import { TextDocChangeParams } from "./reportTransformer";
import { TextDocument } from "vscode-languageserver-textdocument";
import { URI } from "vscode-uri";
+import strFormat = require("string-format");
const logger = ServerLogger.getLogger("reportMgrServer");
/** 代码问题报告管理器(服务端) */
export class ReportManagerServer {
- /** 报告管理器 */
- private _reportManager: ReportManager;
+ /** 报告管理器 */
+ private _reportManager: ReportManager;
- /** Language Server 连接 */
- private _connection: lsp.Connection;
+ /** Language Server 连接 */
+ private _connection: lsp.Connection;
- /** Language Server TextDocument 管理器 */
- private _documents: lsp.TextDocuments;
+ /** Language Server TextDocument 管理器 */
+ private _documents: lsp.TextDocuments;
- /** Language Client 能力 */
- private _clientCapabilities: ClientCapabilities;
+ /** Language Client 能力 */
+ private _clientCapabilities: ClientCapabilities;
- /** 当前已打开的文档 */
- private _currDocument?: TextDocument;
+ /** 当前已打开的文档 */
+ private _currDocument?: TextDocument;
- private constructor(
- connection: lsp.Connection,
- documents: lsp.TextDocuments,
- clientCapabilities: ClientCapabilities
- ) {
- this._connection = connection;
- this._documents = documents;
- this._clientCapabilities = clientCapabilities;
+ private constructor(
+ connection: lsp.Connection,
+ documents: lsp.TextDocuments,
+ clientCapabilities: ClientCapabilities
+ ) {
+ this._connection = connection;
+ this._documents = documents;
+ this._clientCapabilities = clientCapabilities;
- this._reportManager = new ReportManager();
- }
+ this._reportManager = new ReportManager();
+ }
- public static init(
- connection: lsp.Connection,
- documents: lsp.TextDocuments,
- clientCapabilities: ClientCapabilities
- ): ReportManagerServer {
- const manager = new ReportManagerServer(connection, documents, clientCapabilities);
+ public static init(
+ connection: lsp.Connection,
+ documents: lsp.TextDocuments,
+ clientCapabilities: ClientCapabilities
+ ): ReportManagerServer {
+ const manager = new ReportManagerServer(connection, documents, clientCapabilities);
- // 监听事件:TextDocument 内容变化
- connection.onDidChangeTextDocument((params) => {
- manager.onDidChangeTextDocument(params);
- });
+ // 监听事件:TextDocument 内容变化
+ connection.onDidChangeTextDocument((params) => {
+ manager.onDidChangeTextDocument(params);
+ });
- // 监听事件:工作区文件夹变化
- if (clientCapabilities.hasWorkspaceFolderCapability) {
- connection.workspace.onDidChangeWorkspaceFolders((e) => {
- manager.onDidChangeWorkspaceFolders(e);
- });
- }
+ // 监听事件:工作区文件夹变化
+ if (clientCapabilities.hasWorkspaceFolderCapability) {
+ connection.workspace.onDidChangeWorkspaceFolders((e) => {
+ manager.onDidChangeWorkspaceFolders(e);
+ });
+ }
- // 监听通知:读取报告数据
- connection.onNotification(LSPNotificationID.reportMgrLoad, (data) => {
- manager.onLoadNotification(data);
- });
+ // 监听通知:读取报告数据
+ connection.onNotification(LSPNotificationID.reportMgrLoad, (data) => {
+ manager.onLoadNotification(data);
+ });
- // 监听通知:读取报告 JSON Schema
- connection.onNotification(LSPNotificationID.reportMgrLoadSchema, (data) => {
- manager.onLoadSchema(data);
- });
+ // 监听通知:读取报告 JSON Schema
+ connection.onNotification(LSPNotificationID.reportMgrLoadSchema, (data) => {
+ manager.onLoadSchema(data);
+ });
- // 监听通知:保存报告
- connection.onNotification(LSPNotificationID.reportMgrSave, (data) => {
- manager.onSaveReport(data);
- });
+ // 监听通知:保存报告
+ connection.onNotification(LSPNotificationID.reportMgrSave, (data) => {
+ manager.onSaveReport(data);
+ });
- // 监听通知:保存所有报告(缓存到工作区)
- connection.onNotification(LSPNotificationID.reportMgrSaveCacheAll, () => {
- manager.onSaveCacheAll();
- });
+ // 监听通知:保存所有报告(缓存到工作区)
+ connection.onNotification(LSPNotificationID.reportMgrSaveCacheAll, () => {
+ manager.onSaveCacheAll();
+ });
- // 监听文档:内容修改变化
- documents.onDidChangeContent((e) => {
- if (manager._currDocument !== e.document) {
- manager._currDocument = e.document;
- logger.debug("documents.onDidChangeContent: ".concat(e.document.uri));
- }
- manager.refreshDiagnostics(e.document);
- });
+ // 监听文档:内容修改变化
+ documents.onDidChangeContent((e) => {
+ if (manager._currDocument !== e.document) {
+ manager._currDocument = e.document;
+ logger.debug("documents.onDidChangeContent: ".concat(e.document.uri));
+ }
+ manager.refreshDiagnostics(e.document);
+ });
- // 加载已有 Workspace 下缓存的报告
- connection.workspace.getWorkspaceFolders().then((workspaces) => {
- workspaces?.forEach((workspace) => {
- manager.loadWorkspaceCachedReport(workspace);
- });
- manager.refreshDiagnostics();
- });
- return manager;
- }
+ // 加载已有 Workspace 下缓存的报告
+ connection.workspace.getWorkspaceFolders().then((workspaces) => {
+ workspaces?.forEach((workspace) => {
+ manager.loadWorkspaceCachedReport(workspace);
+ });
+ manager.refreshDiagnostics();
+ });
+ return manager;
+ }
- /**
- * TextDocument 内容变化事件处理
- *
- * @param params
- */
- public onDidChangeTextDocument(params: lsp.DidChangeTextDocumentParams) {
- const docUri = URI.parse(params.textDocument.uri.toString());
- if (docUri.scheme !== "file") {
- // 非本地文件,不处理
- return;
- }
- const reportMeta = this._reportManager.getReportMeta(docUri.toString());
- if (reportMeta === undefined) {
- // 当前文档找不到对应的报告,不处理
- return;
- }
- const document = this._documents.get(params.textDocument.uri)!;
- // 应用变更
- this._reportManager.applyChanges(reportMeta, {
- document: document,
- changes: params.contentChanges,
- });
- // 刷新当前文档的诊断信息
- this.refreshDiagnostics(this._documents.get(params.textDocument.uri));
+ /**
+ * TextDocument 内容变化事件处理
+ *
+ * @param params
+ */
+ public onDidChangeTextDocument(params: lsp.DidChangeTextDocumentParams) {
+ const docUri = URI.parse(params.textDocument.uri.toString());
+ if (docUri.scheme !== "file") {
+ // 非本地文件,不处理
+ return;
}
-
- /**
- * 读取代码扫描报告 JSON Schema 定义文件
- *
- * @param data JSON Schema 资源路径
- */
- public onLoadSchema(data: string) {
- this._reportManager.loadSchema(data);
+ const reportMeta = this._reportManager.getReportMeta(docUri.toString());
+ if (reportMeta === undefined) {
+ // 当前文档找不到对应的报告,不处理
+ return;
}
+ const document = this._documents.get(params.textDocument.uri)!;
+ // 应用变更
+ this._reportManager.applyChanges(reportMeta, {
+ document: document,
+ changes: params.contentChanges,
+ });
+ // 刷新当前文档的诊断信息
+ this.refreshDiagnostics(this._documents.get(params.textDocument.uri));
+ }
- /**
- * 读取报告文件到指定工作区
- *
- * @param data 工作区文件夹和报告文件路径
- */
- public onLoadNotification(data: ReportMgrLoadParams) {
- logger.info(strFormat("Loading into workspace folder [{0}]: {1}", data.workspaceUri, data.reportUri));
+ /**
+ * 读取代码扫描报告 JSON Schema 定义文件
+ *
+ * @param data JSON Schema 资源路径
+ */
+ public onLoadSchema(data: string) {
+ this._reportManager.loadSchema(data);
+ }
- // 检查当前是否已有报告
- if (!data.reloadConfirm && this._reportManager.getReport(data.workspaceUri)) {
- // 工作区已有报告,通知客户端确认重新载入报告
- logger.info("onLoadNotification: already has report data, asking for reload confirm");
- this._connection.sendNotification(LSPNotificationID.reportMgrReloadConfirm, data);
- return;
- }
- // 读取报告
- const res = this._reportManager.loadReport(data);
- if (ReportManager.isReport(res)) {
- // 通知客户端读取完成
- this._connection.sendNotification(LSPNotificationID.reportMgrLoadFinished, res.timestamp);
- // 刷新诊断信息
- this.refreshDiagnostics();
- } else if (res.reason === "saveCacheError") {
- // 通知客户端读取完成,但缓存出错
- this._connection.sendNotification(LSPNotificationID.reportMgrLoadFinishedWithSaveError);
- // 刷新诊断信息
- this.refreshDiagnostics();
- } else {
- logger.error(strFormat("onLoadNotification: Load failed ({0}): {1}", res.reason, data.reportUri));
- this._connection.sendNotification(LSPNotificationID.reportMgrLoadError, res);
- }
- }
+ /**
+ * 读取报告文件到指定工作区
+ *
+ * @param data 工作区文件夹和报告文件路径
+ */
+ public onLoadNotification(data: ReportMgrLoadParams) {
+ logger.info(strFormat("Loading into workspace folder [{0}]: {1}", data.workspaceUri, data.reportUri));
- /**
- * 工作区目录发生变化时,加载新工作区的报告,移除不再需要的报告
- *
- * @param e 工作区文件夹变化事件
- * @returns
- */
- public onDidChangeWorkspaceFolders(e: lsp.WorkspaceFoldersChangeEvent) {
- let addCnt = 0;
- for (let folder of e.added) {
- this.loadWorkspaceCachedReport(folder);
- addCnt++;
- }
- const remCnt = this.unloadWorkspacesReport(e.removed);
- logger.info(
- strFormat(
- "onDidChangeWorkspaceFolders: added {0}, removed {0} workspace folders",
- addCnt.toString(),
- remCnt.toString()
- )
- );
+ // 检查当前是否已有报告
+ if (!data.reloadConfirm && this._reportManager.getReport(data.workspaceUri)) {
+ // 工作区已有报告,通知客户端确认重新载入报告
+ logger.info("onLoadNotification: already has report data, asking for reload confirm");
+ this._connection.sendNotification(LSPNotificationID.reportMgrReloadConfirm, data);
+ return;
+ }
+ // 读取报告
+ const res = this._reportManager.loadReport(data);
+ if (ReportManager.isReport(res)) {
+ // 通知客户端读取完成
+ this._connection.sendNotification(LSPNotificationID.reportMgrLoadFinished, res.timestamp);
+ // 刷新诊断信息
+ this.refreshDiagnostics();
+ } else if (res.reason === "saveCacheError") {
+ // 通知客户端读取完成,但缓存出错
+ this._connection.sendNotification(LSPNotificationID.reportMgrLoadFinishedWithSaveError);
+ // 刷新诊断信息
+ this.refreshDiagnostics();
+ } else {
+ logger.error(strFormat("onLoadNotification: Load failed ({0}): {1}", res.reason, data.reportUri));
+ this._connection.sendNotification(LSPNotificationID.reportMgrLoadError, res);
}
+ }
- /**
- * 加载指定工作区下已缓存的报告
- *
- * @param workspace 工作区路径
- */
- public loadWorkspaceCachedReport(workspace: lsp.WorkspaceFolder) {
- const res = this._reportManager.loadCachedReport(workspace.uri.toString());
- if (res && !ReportManager.isReport(res)) {
- if (res.reason === "saveCacheError") {
- // 加载缓存的报告时无法写回,弹警告窗
- this._connection.sendNotification(LSPNotificationID.reportMgrLoadFinishedWithSaveError);
- } else if (res.reason !== "fileNotExists") {
- // 加载缓存的报告时出现文件不存在以外的错误,弹窗报错
- this._connection.sendNotification(LSPNotificationID.reportMgrLoadError, res);
- }
- }
+ /**
+ * 工作区目录发生变化时,加载新工作区的报告,移除不再需要的报告
+ *
+ * @param e 工作区文件夹变化事件
+ * @returns
+ */
+ public onDidChangeWorkspaceFolders(e: lsp.WorkspaceFoldersChangeEvent) {
+ let addCnt = 0;
+ for (let folder of e.added) {
+ this.loadWorkspaceCachedReport(folder);
+ addCnt++;
}
+ const remCnt = this.unloadWorkspacesReport(e.removed);
+ logger.info(
+ strFormat(
+ "onDidChangeWorkspaceFolders: added {0}, removed {0} workspace folders",
+ addCnt.toString(),
+ remCnt.toString()
+ )
+ );
+ }
- /**
- * 保存报告文件
- *
- * @param data 保存参数
- */
- public onSaveReport(data: ReportMgrSaveParams) {
- const res = this._reportManager.saveReport(data);
- if (res) {
- this._connection.sendNotification(LSPNotificationID.reportMgrSaveError, res);
- } else {
- this._connection.sendNotification(LSPNotificationID.reportMgrSaveFinished, data);
- }
+ /**
+ * 加载指定工作区下已缓存的报告
+ *
+ * @param workspace 工作区路径
+ */
+ public loadWorkspaceCachedReport(workspace: lsp.WorkspaceFolder) {
+ const res = this._reportManager.loadCachedReport(workspace.uri.toString());
+ if (res && !ReportManager.isReport(res)) {
+ if (res.reason === "saveCacheError") {
+ // 加载缓存的报告时无法写回,弹警告窗
+ this._connection.sendNotification(LSPNotificationID.reportMgrLoadFinishedWithSaveError);
+ } else if (res.reason !== "fileNotExists") {
+ // 加载缓存的报告时出现文件不存在以外的错误,弹窗报错
+ this._connection.sendNotification(LSPNotificationID.reportMgrLoadError, res);
+ }
}
+ }
- /**
- * 保存所有报告(缓存到工作区)
- */
- public onSaveCacheAll() {
- this._connection.workspace.getWorkspaceFolders().then((workspaces) => {
- const failedArr: ReportMgrSaveError[] = [];
- workspaces?.forEach((workspace) => {
- const reportMeta = this._reportManager.getReportMeta(workspace.uri.toString());
- if (reportMeta) {
- const res = this._reportManager.saveReportCache(reportMeta);
- if (res) {
- failedArr.push(res);
- }
- }
- });
- if (failedArr.length > 0) {
- this._connection.sendNotification(LSPNotificationID.reportMgrSaveError, failedArr);
- } else if (workspaces && workspaces.length > 0) {
- this._connection.sendNotification(LSPNotificationID.reportMgrSaveCacheAllFinished, workspaces.length);
- }
- });
+ /**
+ * 保存报告文件
+ *
+ * @param data 保存参数
+ */
+ public onSaveReport(data: ReportMgrSaveParams) {
+ const res = this._reportManager.saveReport(data);
+ if (res) {
+ this._connection.sendNotification(LSPNotificationID.reportMgrSaveError, res);
+ } else {
+ this._connection.sendNotification(LSPNotificationID.reportMgrSaveFinished, data);
}
+ }
- /**
- * 卸载指定工作区的报告数据
- *
- * @param workspace 工作区路径
- */
- public unloadWorkspacesReport(workspace: lsp.WorkspaceFolder | lsp.WorkspaceFolder[]) {
- let workspaces: lsp.WorkspaceFolder[] = [];
- const failedArr: lsp.WorkspaceFolder[] = [];
- if (Array.isArray(workspace)) {
- workspaces.concat(workspace);
- } else {
- workspaces.push(workspace);
- }
- for (let folder of workspaces) {
- const res = this._reportManager.unloadReport(folder.uri.toString());
- if (res) {
- failedArr.push(folder);
- }
+ /**
+ * 保存所有报告(缓存到工作区)
+ */
+ public onSaveCacheAll() {
+ this._connection.workspace.getWorkspaceFolders().then((workspaces) => {
+ const failedArr: ReportMgrSaveError[] = [];
+ workspaces?.forEach((workspace) => {
+ const reportMeta = this._reportManager.getReportMeta(workspace.uri.toString());
+ if (reportMeta) {
+ const res = this._reportManager.saveReportCache(reportMeta);
+ if (res) {
+ failedArr.push(res);
+ }
}
- if (failedArr.length > 0) {
- this._connection.sendNotification(LSPNotificationID.reportMgrSaveError, failedArr);
- }
- return failedArr.length;
+ });
+ if (failedArr.length > 0) {
+ this._connection.sendNotification(LSPNotificationID.reportMgrSaveError, failedArr);
+ } else if (workspaces && workspaces.length > 0) {
+ this._connection.sendNotification(LSPNotificationID.reportMgrSaveCacheAllFinished, workspaces.length);
+ }
+ });
+ }
+
+ /**
+ * 卸载指定工作区的报告数据
+ *
+ * @param workspace 工作区路径
+ */
+ public unloadWorkspacesReport(workspace: lsp.WorkspaceFolder | lsp.WorkspaceFolder[]) {
+ let workspaces: lsp.WorkspaceFolder[] = [];
+ const failedArr: lsp.WorkspaceFolder[] = [];
+ if (Array.isArray(workspace)) {
+ workspaces.concat(workspace);
+ } else {
+ workspaces.push(workspace);
+ }
+ for (let folder of workspaces) {
+ const res = this._reportManager.unloadReport(folder.uri.toString());
+ if (res) {
+ failedArr.push(folder);
+ }
}
+ if (failedArr.length > 0) {
+ this._connection.sendNotification(LSPNotificationID.reportMgrSaveError, failedArr);
+ }
+ return failedArr.length;
+ }
- public async refreshDiagnostics(textDocument?: TextDocument) {
- if (!this._clientCapabilities.hasDiagnosticCapability) {
- return;
- }
- if (textDocument === undefined) {
- const docUris = this._documents.all();
- if (docUris.length > 0) {
- logger.info(strFormat("refreshDiagnostics: refreshing on all {0} files", docUris.length.toString()));
- docUris.forEach((doc) => this.refreshDiagnostics(doc));
- }
- return;
- }
- const docUri = textDocument.uri;
- const reportMeta = this._reportManager.getReportMeta(docUri);
- if (!reportMeta) {
- return;
- }
- const settings = await DocumentsSettingManager.getInstance().getDocumentSettings(docUri);
- logger.debug(strFormat("refreshDiagnostics: refreshing on: ".concat(docUri)));
- // 将报告转换为诊断信息并输出
- await refreshDocumentDiagnostics(
- this._connection,
- this._clientCapabilities.hasDiagnosticRelatedInformationCapability,
- settings,
- textDocument,
- reportMeta
- );
+ public async refreshDiagnostics(textDocument?: TextDocument) {
+ if (!this._clientCapabilities.hasDiagnosticCapability) {
+ return;
+ }
+ if (textDocument === undefined) {
+ const docUris = this._documents.all();
+ if (docUris.length > 0) {
+ logger.info(strFormat("refreshDiagnostics: refreshing on all {0} files", docUris.length.toString()));
+ docUris.forEach((doc) => this.refreshDiagnostics(doc));
+ }
+ return;
+ }
+ const docUri = textDocument.uri;
+ const reportMeta = this._reportManager.getReportMeta(docUri);
+ if (!reportMeta) {
+ return;
}
+ const settings = await DocumentsSettingManager.getInstance().getDocumentSettings(docUri);
+ logger.debug(strFormat("refreshDiagnostics: refreshing on: ".concat(docUri)));
+ // 将报告转换为诊断信息并输出
+ await refreshDocumentDiagnostics(
+ this._connection,
+ this._clientCapabilities.hasDiagnosticRelatedInformationCapability,
+ settings,
+ textDocument,
+ reportMeta
+ );
+ }
}
--
Gitee
From 8cda9397f09b60e61deb3c8b252eaa9f8e2e67a4 Mon Sep 17 00:00:00 2001
From: LightningRS
Date: Fri, 6 Sep 2024 12:05:07 +0800
Subject: [PATCH 3/6] format: change prettierrc
+ change spaces from 4 to 2
+ change printWidth from 120 to 100
---
.eslintrc.json | 32 +-
.markdownlint.json | 62 +-
.prettierrc | 6 +-
.vscode/extensions.json | 26 +-
.vscode/settings.json | 80 +--
.vscode/tasks.json | 102 ++--
client/package.json | 40 +-
client/src/extension.ts | 14 +-
client/src/reportManagerClient.ts | 747 +++++++++++------------
client/src/test/completion.test.ts | 48 +-
client/src/test/diagnostics.test.ts | 72 +--
client/src/test/helper.ts | 30 +-
client/src/types/checkerRules.ts | 298 ++++-----
client/src/utils/log.ts | 310 +++++-----
client/src/wikiHelper.ts | 62 +-
client/src/wikiView/wikiViewProvider.ts | 18 +-
client/tsconfig.json | 28 +-
common/package.json | 34 +-
common/src/types/command.ts | 20 +-
common/src/types/extConfig.ts | 18 +-
common/src/types/notification.ts | 53 +-
common/src/types/report.ts | 164 ++---
common/src/types/reportManager.ts | 58 +-
common/src/types/request.ts | 4 +-
common/src/types/wikiView.ts | 28 +-
common/src/utils/sourceRangeUtils.ts | 178 +++---
common/tsconfig.json | 28 +-
l10n/bundle.l10n.json | 126 ++--
l10n/bundle.l10n.zh-cn.json | 126 ++--
package.nls.json | 28 +-
package.nls.zh-cn.json | 28 +-
server/package.json | 46 +-
server/src/docCacheManager.ts | 199 +++---
server/src/docSettingManager.ts | 218 +++----
server/src/reportManager.ts | 48 +-
server/src/reportManagerServer.ts | 26 +-
server/src/reportToDiagnostic.ts | 188 +++---
server/src/reportTransformer.ts | 235 ++++----
server/src/server.ts | 102 ++--
server/src/types/clientCapabilities.ts | 8 +-
server/src/types/reportMeta.ts | 30 +-
server/src/utils/log.ts | 158 ++---
server/tsconfig.json | 28 +-
testRoot/.vscode/settings.json | 4 +-
testRoot/DemoData.json | 258 ++++----
testRoot/example.json | 766 ++++++++++++------------
testRoot/report_demo1.json | 176 +++---
tsconfig.json | 34 +-
webview/package.json | 42 +-
webview/src/wikiView/initUI.ts | 86 +--
webview/src/wikiView/main.ts | 20 +-
webview/src/wikiView/mdTransformer.ts | 44 +-
webview/src/wikiView/state.ts | 4 +-
webview/tsconfig.json | 30 +-
54 files changed, 2859 insertions(+), 2759 deletions(-)
diff --git a/.eslintrc.json b/.eslintrc.json
index c91cad6..5dfecab 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,18 +1,18 @@
{
- "root": true,
- "parser": "@typescript-eslint/parser",
- "parserOptions": {
- "ecmaVersion": 6,
- "sourceType": "module"
- },
- "plugins": ["@typescript-eslint"],
- "rules": {
- "@typescript-eslint/naming-convention": "warn",
- "@typescript-eslint/semi": "warn",
- "curly": "warn",
- "eqeqeq": "warn",
- "no-throw-literal": "warn",
- "semi": "off"
- },
- "ignorePatterns": ["out", "dist", "**/*.d.ts"]
+ "root": true,
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "ecmaVersion": 6,
+ "sourceType": "module"
+ },
+ "plugins": ["@typescript-eslint"],
+ "rules": {
+ "@typescript-eslint/naming-convention": "warn",
+ "@typescript-eslint/semi": "warn",
+ "curly": "warn",
+ "eqeqeq": "warn",
+ "no-throw-literal": "warn",
+ "semi": "off"
+ },
+ "ignorePatterns": ["out", "dist", "**/*.d.ts"]
}
diff --git a/.markdownlint.json b/.markdownlint.json
index 6801c75..c3dcb92 100644
--- a/.markdownlint.json
+++ b/.markdownlint.json
@@ -1,33 +1,33 @@
{
- "MD001": false,
- "MD013": {
- "line_length": 120,
- "tables": false
- },
- "MD024": false,
- "MD025": {
- "front_matter_title": ""
- },
- "MD033": {
- "allowed_elements": [
- "a",
- "img",
- "sup",
- "br",
- "p",
- "span",
- "code",
- "ul",
- "li",
- "table",
- "thead",
- "th",
- "tbody",
- "tr",
- "td",
- "CodeGroupItem",
- "CodeGroup",
- "tag"
- ]
- }
+ "MD001": false,
+ "MD013": {
+ "line_length": 120,
+ "tables": false
+ },
+ "MD024": false,
+ "MD025": {
+ "front_matter_title": ""
+ },
+ "MD033": {
+ "allowed_elements": [
+ "a",
+ "img",
+ "sup",
+ "br",
+ "p",
+ "span",
+ "code",
+ "ul",
+ "li",
+ "table",
+ "thead",
+ "th",
+ "tbody",
+ "tr",
+ "td",
+ "CodeGroupItem",
+ "CodeGroup",
+ "tag"
+ ]
+ }
}
diff --git a/.prettierrc b/.prettierrc
index 1b64a01..f36e365 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -1,5 +1,5 @@
{
- "tabWidth": 4,
- "useTabs": false,
- "printWidth": 120
+ "tabWidth": 2,
+ "useTabs": false,
+ "printWidth": 100
}
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 2b3ee5d..9db6943 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -1,15 +1,15 @@
{
- // See http://go.microsoft.com/fwlink/?LinkId=827846
- // for the documentation about the extensions.json format
- "recommendations": [
- "dbaeumer.vscode-eslint",
- "alexr00.formatallfilesinworkspace",
- "esbenp.prettier-vscode",
- "DavidAnson.vscode-markdownlint",
- "streetsidesoftware.code-spell-checker",
- "ms-python.python",
- "rioj7.commandOnAllFiles",
- "nsoult.typescript-imports-sort",
- "connor4312.esbuild-problem-matchers"
- ]
+ // See http://go.microsoft.com/fwlink/?LinkId=827846
+ // for the documentation about the extensions.json format
+ "recommendations": [
+ "dbaeumer.vscode-eslint",
+ "alexr00.formatallfilesinworkspace",
+ "esbenp.prettier-vscode",
+ "DavidAnson.vscode-markdownlint",
+ "streetsidesoftware.code-spell-checker",
+ "ms-python.python",
+ "rioj7.commandOnAllFiles",
+ "nsoult.typescript-imports-sort",
+ "connor4312.esbuild-problem-matchers"
+ ]
}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 51368a3..8912006 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,44 +1,44 @@
// Place your settings in this file to overwrite default and user settings.
{
- "files.exclude": {
- "**/out": true,
- "**/.vscode-test": true
- },
- "search.exclude": {
- "**/out": true,
- "**/.vscode-test": true
- },
- // 禁止 tsc 自动检测
- "typescript.tsc.autoDetect": "off",
- // typescript 快速修复优先使用单引号
- "typescript.preferences.quoteStyle": "single",
- // 保存时自动格式化文件
- "editor.formatOnSave": true,
- // 使用 prettier 作为首选格式化工具
- "editor.defaultFormatter": "esbenp.prettier-vscode",
- "[markdown]": {
- "editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
- },
- // IDE 标尺
- "editor.rulers": [80, 120],
- // Format All Files 插件排除文件夹
- "formatAll.excludeFolders": ["node_modules", "out", ".vscode-test", "assets", "resources"],
- "cSpell.words": [
- "appenders",
- "iscas",
- "Mulan",
- "prewatch",
- "prismjs",
- "rvportingtool",
- "RVCodingAsst",
- "shiki",
- "tcse",
- "Upto"
- ],
- "commandOnAllFiles.commands": {
- "Typescript Import Sort": {
- "command": "extension.typescriptImportsSort",
- "includeFileExtensions": [".ts"]
- }
+ "files.exclude": {
+ "**/out": true,
+ "**/.vscode-test": true
+ },
+ "search.exclude": {
+ "**/out": true,
+ "**/.vscode-test": true
+ },
+ // 禁止 tsc 自动检测
+ "typescript.tsc.autoDetect": "off",
+ // typescript 快速修复优先使用单引号
+ "typescript.preferences.quoteStyle": "single",
+ // 保存时自动格式化文件
+ "editor.formatOnSave": true,
+ // 使用 prettier 作为首选格式化工具
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "[markdown]": {
+ "editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
+ },
+ // IDE 标尺
+ "editor.rulers": [80, 120],
+ // Format All Files 插件排除文件夹
+ "formatAll.excludeFolders": ["node_modules", "out", ".vscode-test", "assets", "resources"],
+ "cSpell.words": [
+ "appenders",
+ "iscas",
+ "Mulan",
+ "prewatch",
+ "prismjs",
+ "rvportingtool",
+ "RVCodingAsst",
+ "shiki",
+ "tcse",
+ "Upto"
+ ],
+ "commandOnAllFiles.commands": {
+ "Typescript Import Sort": {
+ "command": "extension.typescriptImportsSort",
+ "includeFileExtensions": [".ts"]
}
+ }
}
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 5c8e63f..86a7075 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -1,55 +1,55 @@
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
{
- "version": "2.0.0",
- "tasks": [
- {
- "label": "all_watch",
- "dependsOn": ["tsc_watch", "esbuild_watch"],
- "group": {
- "kind": "build",
- "isDefault": true
- }
- },
- {
- "type": "npm",
- "script": "watch_esbuild",
- "label": "esbuild_watch",
- "problemMatcher": "$esbuild-watch",
- "isBackground": true,
- "presentation": {
- "reveal": "always"
- },
- "group": {
- "kind": "build"
- }
- },
- {
- "type": "npm",
- "script": "watch",
- "label": "tsc_watch",
- "problemMatcher": "$tsc-watch",
- "isBackground": true,
- "presentation": {
- "reveal": "always"
- },
- "group": {
- "kind": "build"
- }
- },
- {
- "type": "shell",
- "label": "terminateTasks",
- "command": "echo ${input:terminateTasks}",
- "problemMatcher": []
- }
- ],
- "inputs": [
- {
- "id": "terminateTasks",
- "type": "command",
- "command": "workbench.action.tasks.terminate",
- "args": "terminateAll"
- }
- ]
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "all_watch",
+ "dependsOn": ["tsc_watch", "esbuild_watch"],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ }
+ },
+ {
+ "type": "npm",
+ "script": "watch_esbuild",
+ "label": "esbuild_watch",
+ "problemMatcher": "$esbuild-watch",
+ "isBackground": true,
+ "presentation": {
+ "reveal": "always"
+ },
+ "group": {
+ "kind": "build"
+ }
+ },
+ {
+ "type": "npm",
+ "script": "watch",
+ "label": "tsc_watch",
+ "problemMatcher": "$tsc-watch",
+ "isBackground": true,
+ "presentation": {
+ "reveal": "always"
+ },
+ "group": {
+ "kind": "build"
+ }
+ },
+ {
+ "type": "shell",
+ "label": "terminateTasks",
+ "command": "echo ${input:terminateTasks}",
+ "problemMatcher": []
+ }
+ ],
+ "inputs": [
+ {
+ "id": "terminateTasks",
+ "type": "command",
+ "command": "workbench.action.tasks.terminate",
+ "args": "terminateAll"
+ }
+ ]
}
diff --git a/client/package.json b/client/package.json
index d8e6b3e..8191b0a 100644
--- a/client/package.json
+++ b/client/package.json
@@ -1,22 +1,22 @@
{
- "name": "rvportingtool-client",
- "description": "VSCode Client Part of Software Porting Tool for RISC-V",
- "author": "tcse-iscas",
- "license": "MulanPSL-2.0",
- "version": "0.0.1",
- "publisher": "tcse-iscas",
- "l10n": "../l10n",
- "engines": {
- "vscode": "^1.75.0"
- },
- "dependencies": {
- "@vscode/l10n": "^0.0.11",
- "@vscode/webview-ui-toolkit": "^1.2.2",
- "log4js": "^6.9.1",
- "vscode-languageclient": "^7.0.0"
- },
- "devDependencies": {
- "@types/vscode": "^1.75.0",
- "@vscode/test-electron": "^2.1.2"
- }
+ "name": "rvportingtool-client",
+ "description": "VSCode Client Part of Software Porting Tool for RISC-V",
+ "author": "tcse-iscas",
+ "license": "MulanPSL-2.0",
+ "version": "0.0.1",
+ "publisher": "tcse-iscas",
+ "l10n": "../l10n",
+ "engines": {
+ "vscode": "^1.75.0"
+ },
+ "dependencies": {
+ "@vscode/l10n": "^0.0.11",
+ "@vscode/webview-ui-toolkit": "^1.2.2",
+ "log4js": "^6.9.1",
+ "vscode-languageclient": "^7.0.0"
+ },
+ "devDependencies": {
+ "@types/vscode": "^1.75.0",
+ "@vscode/test-electron": "^2.1.2"
+ }
}
diff --git a/client/src/extension.ts b/client/src/extension.ts
index f8e33b9..2e3fd45 100644
--- a/client/src/extension.ts
+++ b/client/src/extension.ts
@@ -18,7 +18,12 @@
import * as path from "path";
import * as vscode from "vscode";
import { ClientLogger } from "./utils/log";
-import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind } from "vscode-languageclient/node";
+import {
+ LanguageClient,
+ LanguageClientOptions,
+ ServerOptions,
+ TransportKind,
+} from "vscode-languageclient/node";
import { ReportManagerClient } from "./reportManagerClient";
import { WikiHelper } from "./wikiHelper";
@@ -59,7 +64,12 @@ export function activate(context: vscode.ExtensionContext) {
};
// 创建 Language Client
- client = new LanguageClient("rvportingtool", "RVPortingTool Language Server", serverOptions, clientOptions);
+ client = new LanguageClient(
+ "rvportingtool",
+ "RVPortingTool Language Server",
+ serverOptions,
+ clientOptions
+ );
// Language Client 就绪后操作
client.onReady().then(() => {
diff --git a/client/src/reportManagerClient.ts b/client/src/reportManagerClient.ts
index c254920..7d803bc 100644
--- a/client/src/reportManagerClient.ts
+++ b/client/src/reportManagerClient.ts
@@ -23,10 +23,10 @@ import { CommandID } from "../../common/src/types/command";
import { LSPNotificationID } from "../../common/src/types/notification";
import { LSPRequestID } from "../../common/src/types/request";
import {
- ReportMgrLoadError,
- ReportMgrLoadParams,
- ReportMgrSaveError,
- ReportMgrSaveParams,
+ ReportMgrLoadError,
+ ReportMgrLoadParams,
+ ReportMgrSaveError,
+ ReportMgrSaveParams,
} from "../../common/src/types/reportManager";
import path = require("path");
@@ -35,383 +35,394 @@ const logger = ClientLogger.getLogger("reportMgrClient");
/** 代码问题报告管理器(客户端) */
export class ReportManagerClient {
- /** LSP 客户端 */
- private _client: lsp.BaseLanguageClient;
-
- private constructor(client: lsp.BaseLanguageClient) {
- this._client = client;
- }
-
- public static init(context: vscode.ExtensionContext, client: lsp.BaseLanguageClient): ReportManagerClient {
- const manager = new ReportManagerClient(client);
-
- // 注册模块所定义命令
- context.subscriptions.push(
- // 选择工作区,并从本地文件读入报告
- vscode.commands.registerCommand(CommandID.reportMgrLoadFromFile, () => {
- manager.chooseReportWorkspace((workspace) => {
- if (workspace !== undefined) {
- manager.loadReportToWorkspace(LSPNotificationID.reportMgrLoadFromFile, workspace);
- }
- });
- }),
-
- // 导出报告(用户选择工作区)
- vscode.commands.registerCommand(CommandID.reportMgrExport, () => {
- const diagCollection = vscode.languages.createDiagnosticCollection("test");
- const docUri = vscode.Uri.parse("file:///m%3A/Projects/RISC-V/rv-vsc-plugin/testRoot/TestPoisonArea.c");
- diagCollection.set(docUri, [
- {
- code: { target: vscode.Uri.parse("https://www.baidu.com"), value: "testCode" },
- message: "This is a test",
- range: new vscode.Range(new vscode.Position(81, 10), new vscode.Position(81, 40)),
- severity: vscode.DiagnosticSeverity.Warning,
- source: "test1234",
- },
- ]);
- manager.exportReport();
- }),
-
- // 保存所有报告(缓存到工作区)
- vscode.commands.registerCommand(CommandID.reportMgrSaveAllReportsCache, () => {
- manager.saveAllReportsCache();
- })
- );
-
- // 注册模块所属回调方法
- client.onReady().then(() => {
- // 注册请求:获取报告信息
- client.onRequest(LSPRequestID.reportMgrGetRuleInfo, async (ruleId: string) => {
- return checkerRules.get(ruleId);
- });
-
- // 注册通知:报告读取错误
- client.onNotification(LSPNotificationID.reportMgrLoadError, (data) => {
- manager.onLoadError(data);
- });
-
- // 注册通知:报告替换确认
- client.onNotification(LSPNotificationID.reportMgrReloadConfirm, (data) => {
- manager.onReloadConfirm(data);
- });
-
- // 注册通知:报告加载完成
- client.onNotification(LSPNotificationID.reportMgrLoadFinished, (data) => {
- manager.onLoadFinished(data);
- });
-
- // 注册通知:报告加载完成,但缓存到工作区失败
- client.onNotification(LSPNotificationID.reportMgrLoadFinishedWithSaveError, () => {
- manager.onLoadFinishedWithSaveError();
- });
-
- // 注册通知:报告保存成功
- client.onNotification(LSPNotificationID.reportMgrSaveFinished, (data) => {
- manager.onSaveFinished(data);
- });
-
- // 注册通知:保存全部报告(缓存到工作区)成功
- client.onNotification(LSPNotificationID.reportMgrSaveCacheAllFinished, (data) => {
- manager.onSaveAllCacheFinished(data);
- });
-
- // 注册通知:报告保存失败
- client.onNotification(LSPNotificationID.reportMgrSaveError, (data) => {
- manager.onSaveError(data);
- });
-
- // 发送通知:加载报告 JSON Schema
- const schemaPath = context.asAbsolutePath("resources/report_schema.json");
- client.sendNotification(LSPNotificationID.reportMgrLoadSchema, schemaPath);
+ /** LSP 客户端 */
+ private _client: lsp.BaseLanguageClient;
+
+ private constructor(client: lsp.BaseLanguageClient) {
+ this._client = client;
+ }
+
+ public static init(
+ context: vscode.ExtensionContext,
+ client: lsp.BaseLanguageClient
+ ): ReportManagerClient {
+ const manager = new ReportManagerClient(client);
+
+ // 注册模块所定义命令
+ context.subscriptions.push(
+ // 选择工作区,并从本地文件读入报告
+ vscode.commands.registerCommand(CommandID.reportMgrLoadFromFile, () => {
+ manager.chooseReportWorkspace((workspace) => {
+ if (workspace !== undefined) {
+ manager.loadReportToWorkspace(LSPNotificationID.reportMgrLoadFromFile, workspace);
+ }
});
+ }),
- return manager;
- }
-
- /**
- * 报告保存完毕
- *
- * @param params 报告保存参数
- */
- public onSaveFinished(params: ReportMgrSaveParams) {
- vscode.window.showInformationMessage(
- vscode.l10n.t("Finished saving report to: {0}", params.reportUri),
- vscode.l10n.t("Confirm")
+ // 导出报告(用户选择工作区)
+ vscode.commands.registerCommand(CommandID.reportMgrExport, () => {
+ const diagCollection = vscode.languages.createDiagnosticCollection("test");
+ const docUri = vscode.Uri.parse(
+ "file:///m%3A/Projects/RISC-V/rv-vsc-plugin/testRoot/TestPoisonArea.c"
);
- }
-
- /**
- * 所有工作区报告保存完毕
- *
- * @param data 工作区总数
- */
- public onSaveAllCacheFinished(data: number) {
- vscode.window.showInformationMessage(
- vscode.l10n.t("Finished saving all {0} workspaces' report cache", data.toString()),
- vscode.l10n.t("Confirm")
- );
- }
-
- /**
- * 报告加载完毕
- *
- * @param data 报告时间戳
- */
- public onLoadFinished(data: number) {
- vscode.window.showInformationMessage(
- vscode.l10n.t(
- "Finished loading code check report! The report was updated at: {0}",
- new Date(data).toISOString()
- ),
- vscode.l10n.t("Confirm")
- );
- }
-
- /**
- * 报告加载完毕,但保存到工作区出错
- */
- public onLoadFinishedWithSaveError() {
- vscode.window.showWarningMessage(
- vscode.l10n.t(
- "Finished loading code check report, but failed to save to workspace. \
+ diagCollection.set(docUri, [
+ {
+ code: { target: vscode.Uri.parse("https://www.baidu.com"), value: "testCode" },
+ message: "This is a test",
+ range: new vscode.Range(new vscode.Position(81, 10), new vscode.Position(81, 40)),
+ severity: vscode.DiagnosticSeverity.Warning,
+ source: "test1234",
+ },
+ ]);
+ manager.exportReport();
+ }),
+
+ // 保存所有报告(缓存到工作区)
+ vscode.commands.registerCommand(CommandID.reportMgrSaveAllReportsCache, () => {
+ manager.saveAllReportsCache();
+ })
+ );
+
+ // 注册模块所属回调方法
+ client.onReady().then(() => {
+ // 注册请求:获取报告信息
+ client.onRequest(LSPRequestID.reportMgrGetRuleInfo, async (ruleId: string) => {
+ return checkerRules.get(ruleId);
+ });
+
+ // 注册通知:报告读取错误
+ client.onNotification(LSPNotificationID.reportMgrLoadError, (data) => {
+ manager.onLoadError(data);
+ });
+
+ // 注册通知:报告替换确认
+ client.onNotification(LSPNotificationID.reportMgrReloadConfirm, (data) => {
+ manager.onReloadConfirm(data);
+ });
+
+ // 注册通知:报告加载完成
+ client.onNotification(LSPNotificationID.reportMgrLoadFinished, (data) => {
+ manager.onLoadFinished(data);
+ });
+
+ // 注册通知:报告加载完成,但缓存到工作区失败
+ client.onNotification(LSPNotificationID.reportMgrLoadFinishedWithSaveError, () => {
+ manager.onLoadFinishedWithSaveError();
+ });
+
+ // 注册通知:报告保存成功
+ client.onNotification(LSPNotificationID.reportMgrSaveFinished, (data) => {
+ manager.onSaveFinished(data);
+ });
+
+ // 注册通知:保存全部报告(缓存到工作区)成功
+ client.onNotification(LSPNotificationID.reportMgrSaveCacheAllFinished, (data) => {
+ manager.onSaveAllCacheFinished(data);
+ });
+
+ // 注册通知:报告保存失败
+ client.onNotification(LSPNotificationID.reportMgrSaveError, (data) => {
+ manager.onSaveError(data);
+ });
+
+ // 发送通知:加载报告 JSON Schema
+ const schemaPath = context.asAbsolutePath("resources/report_schema.json");
+ client.sendNotification(LSPNotificationID.reportMgrLoadSchema, schemaPath);
+ });
+
+ return manager;
+ }
+
+ /**
+ * 报告保存完毕
+ *
+ * @param params 报告保存参数
+ */
+ public onSaveFinished(params: ReportMgrSaveParams) {
+ vscode.window.showInformationMessage(
+ vscode.l10n.t("Finished saving report to: {0}", params.reportUri),
+ vscode.l10n.t("Confirm")
+ );
+ }
+
+ /**
+ * 所有工作区报告保存完毕
+ *
+ * @param data 工作区总数
+ */
+ public onSaveAllCacheFinished(data: number) {
+ vscode.window.showInformationMessage(
+ vscode.l10n.t("Finished saving all {0} workspaces' report cache", data.toString()),
+ vscode.l10n.t("Confirm")
+ );
+ }
+
+ /**
+ * 报告加载完毕
+ *
+ * @param data 报告时间戳
+ */
+ public onLoadFinished(data: number) {
+ vscode.window.showInformationMessage(
+ vscode.l10n.t(
+ "Finished loading code check report! The report was updated at: {0}",
+ new Date(data).toISOString()
+ ),
+ vscode.l10n.t("Confirm")
+ );
+ }
+
+ /**
+ * 报告加载完毕,但保存到工作区出错
+ */
+ public onLoadFinishedWithSaveError() {
+ vscode.window.showWarningMessage(
+ vscode.l10n.t(
+ "Finished loading code check report, but failed to save to workspace. \
Your operations will be lost if you don't export the report manually after working."
- ),
- vscode.l10n.t("Confirm")
- );
+ ),
+ vscode.l10n.t("Confirm")
+ );
+ }
+
+ public onReloadConfirm(data: ReportMgrLoadParams) {
+ const message = vscode.l10n.t("Report reloading confirm");
+ const messageOptions: vscode.MessageOptions = {
+ detail: vscode.l10n.t(
+ "The workspace already contains report data! Would you like to override it?"
+ ),
+ modal: true,
+ };
+ const nextOptions: string[] = [];
+ const optionConfirm = vscode.l10n.t("Confirm");
+ nextOptions.push(optionConfirm);
+ vscode.window.showWarningMessage(message, messageOptions, ...nextOptions).then((value) => {
+ if (value === optionConfirm) {
+ data.reloadConfirm = true;
+ this._client.sendNotification(LSPNotificationID.reportMgrLoad, data);
+ }
+ });
+ }
+
+ /**
+ * 报告加载失败回调
+ *
+ * @param data 加载失败信息
+ */
+ public onLoadError(data: ReportMgrLoadError) {
+ const loadParams: ReportMgrLoadParams = data.loadParams;
+ let reason: string;
+ switch (data.reason) {
+ case "fileNotExists":
+ reason = vscode.l10n.t("File does not exists");
+ break;
+ case "networkError":
+ reason = vscode.l10n.t("Network error");
+ break;
+ case "formatError":
+ reason = vscode.l10n.t("Format Error");
+ break;
+ default:
+ reason = vscode.l10n.t("Unknown reason");
+ break;
}
- public onReloadConfirm(data: ReportMgrLoadParams) {
- const message = vscode.l10n.t("Report reloading confirm");
- const messageOptions: vscode.MessageOptions = {
- detail: vscode.l10n.t("The workspace already contains report data! Would you like to override it?"),
- modal: true,
- };
- const nextOptions: string[] = [];
- const optionConfirm = vscode.l10n.t("Confirm");
- nextOptions.push(optionConfirm);
- vscode.window.showWarningMessage(message, messageOptions, ...nextOptions).then((value) => {
- if (value === optionConfirm) {
- data.reloadConfirm = true;
- this._client.sendNotification(LSPNotificationID.reportMgrLoad, data);
- }
- });
+ // 构造错误提示,并通过模态框弹窗提示(普通消息不够显眼)
+ const message = vscode.l10n.t("Failed to load report");
+ const messageOptions: vscode.MessageOptions = {
+ detail: vscode.l10n.t("Failed to load report: {0}: {1}", reason, loadParams.reportUri),
+ modal: true,
+ };
+ const nextOptions: string[] = [];
+ const optionRetry = vscode.l10n.t("Retry");
+ if (data.retry) {
+ nextOptions.push(optionRetry);
}
-
- /**
- * 报告加载失败回调
- *
- * @param data 加载失败信息
- */
- public onLoadError(data: ReportMgrLoadError) {
- const loadParams: ReportMgrLoadParams = data.loadParams;
- let reason: string;
- switch (data.reason) {
- case "fileNotExists":
- reason = vscode.l10n.t("File does not exists");
- break;
- case "networkError":
- reason = vscode.l10n.t("Network error");
- break;
- case "formatError":
- reason = vscode.l10n.t("Format Error");
- break;
- default:
- reason = vscode.l10n.t("Unknown reason");
- break;
- }
-
- // 构造错误提示,并通过模态框弹窗提示(普通消息不够显眼)
- const message = vscode.l10n.t("Failed to load report");
- const messageOptions: vscode.MessageOptions = {
- detail: vscode.l10n.t("Failed to load report: {0}: {1}", reason, loadParams.reportUri),
- modal: true,
- };
- const nextOptions: string[] = [];
- const optionRetry = vscode.l10n.t("Retry");
- if (data.retry) {
- nextOptions.push(optionRetry);
- }
- vscode.window.showErrorMessage(message, messageOptions, ...nextOptions).then((value) => {
- if (value === optionRetry) {
- this._client.sendNotification(LSPNotificationID.reportMgrLoad, loadParams);
- }
- });
- }
-
- /**
- * 导入报告前选择工作区
- *
- * @param data
- */
- public chooseReportWorkspace(callback: (workspace: vscode.WorkspaceFolder | undefined) => void) {
- logger.debug("chooseReportWorkspace begin");
-
- // 检查当前工作区数量
- const folders = vscode.workspace.workspaceFolders;
- if (!folders || folders.length < 1) {
- // 当前没有任何工作区,显示警告信息
- vscode.window.showWarningMessage(
- vscode.l10n.t("Please open a folder as workspace before loading report"),
- vscode.l10n.t("Confirm")
- );
- return;
- } else if (folders.length < 2) {
- // 仅包含一个工作区,直接加载到该工作区
- callback(folders[0]);
- return;
- }
-
- // 工作区多于一个,要求用户选择
- vscode.window
- .showWorkspaceFolderPick({
- placeHolder: vscode.l10n.t("Please choose a workspace for displaying report"),
- })
- .then(callback);
- }
-
- /**
- * 导出报告(用户选择工作区)
- */
- public exportReport() {
- this.chooseReportWorkspace((workspace) => {
- if (workspace !== undefined) {
- this.exportWorkspaceReport(workspace.uri);
- }
- });
- }
-
- /**
- * 导出指定工作区的报告文件
- *
- * @param workspaceUri 工作区路径
- */
- public exportWorkspaceReport(workspaceUri: vscode.Uri) {
- const defaultPath = path.resolve(workspaceUri.fsPath, ".vscode/rvCodingAsst_report.json");
- const fileFilters: { [name: string]: string[] } = {};
- fileFilters[vscode.l10n.t("Code Scan Report")] = ["json"];
- vscode.window
- .showSaveDialog({
- defaultUri: vscode.Uri.file(defaultPath),
- saveLabel: vscode.l10n.t("Save"),
- filters: fileFilters,
- title: vscode.l10n.t("Save Code Scan Report As..."),
- })
- .then((uri) => {
- if (uri) {
- this._client.sendNotification(LSPNotificationID.reportMgrSave, {
- workspaceUri: workspaceUri.toString(),
- reportUri: uri.toString(),
- replaceConfirm: true, // 保存框选择时会提示是否替换
- });
- } else {
- logger.debug("exportWorkspaceReport: user cancelled: ".concat(workspaceUri.toString()));
- }
- });
+ vscode.window.showErrorMessage(message, messageOptions, ...nextOptions).then((value) => {
+ if (value === optionRetry) {
+ this._client.sendNotification(LSPNotificationID.reportMgrLoad, loadParams);
+ }
+ });
+ }
+
+ /**
+ * 导入报告前选择工作区
+ *
+ * @param data
+ */
+ public chooseReportWorkspace(callback: (workspace: vscode.WorkspaceFolder | undefined) => void) {
+ logger.debug("chooseReportWorkspace begin");
+
+ // 检查当前工作区数量
+ const folders = vscode.workspace.workspaceFolders;
+ if (!folders || folders.length < 1) {
+ // 当前没有任何工作区,显示警告信息
+ vscode.window.showWarningMessage(
+ vscode.l10n.t("Please open a folder as workspace before loading report"),
+ vscode.l10n.t("Confirm")
+ );
+ return;
+ } else if (folders.length < 2) {
+ // 仅包含一个工作区,直接加载到该工作区
+ callback(folders[0]);
+ return;
}
- /**
- * 保存所有报告(缓存到工作区)
- */
- public saveAllReportsCache() {
- this._client.sendNotification(LSPNotificationID.reportMgrSaveCacheAll);
- }
-
- /**
- * 报告保存失败回调(支持多个文件)
- *
- * @param data 报告保存失败数据
- */
- public onSaveError(data: ReportMgrSaveError | ReportMgrSaveError[]) {
- let errors: ReportMgrSaveError[] = [];
- if (Array.isArray(data)) {
- errors = errors.concat(data);
+ // 工作区多于一个,要求用户选择
+ vscode.window
+ .showWorkspaceFolderPick({
+ placeHolder: vscode.l10n.t("Please choose a workspace for displaying report"),
+ })
+ .then(callback);
+ }
+
+ /**
+ * 导出报告(用户选择工作区)
+ */
+ public exportReport() {
+ this.chooseReportWorkspace((workspace) => {
+ if (workspace !== undefined) {
+ this.exportWorkspaceReport(workspace.uri);
+ }
+ });
+ }
+
+ /**
+ * 导出指定工作区的报告文件
+ *
+ * @param workspaceUri 工作区路径
+ */
+ public exportWorkspaceReport(workspaceUri: vscode.Uri) {
+ const defaultPath = path.resolve(workspaceUri.fsPath, ".vscode/rvCodingAsst_report.json");
+ const fileFilters: { [name: string]: string[] } = {};
+ fileFilters[vscode.l10n.t("Code Scan Report")] = ["json"];
+ vscode.window
+ .showSaveDialog({
+ defaultUri: vscode.Uri.file(defaultPath),
+ saveLabel: vscode.l10n.t("Save"),
+ filters: fileFilters,
+ title: vscode.l10n.t("Save Code Scan Report As..."),
+ })
+ .then((uri) => {
+ if (uri) {
+ this._client.sendNotification(LSPNotificationID.reportMgrSave, {
+ workspaceUri: workspaceUri.toString(),
+ reportUri: uri.toString(),
+ replaceConfirm: true, // 保存框选择时会提示是否替换
+ });
} else {
- errors.push(data);
+ logger.debug("exportWorkspaceReport: user cancelled: ".concat(workspaceUri.toString()));
}
- const message = vscode.l10n.t("Failed to save report");
- let details = vscode.l10n.t("The report for following workspace(s) are failed to save\n");
- errors.forEach((error) => {
- details = details.concat("\n", vscode.Uri.parse(error.saveParams.workspaceUri).fsPath);
- });
- const optionSaveAs = vscode.l10n.t("Save as...");
- const nextOptions = [optionSaveAs];
- vscode.window
- .showErrorMessage(
- message,
- {
- modal: true,
- detail: details,
- },
- ...nextOptions
- )
- .then((value) => {
- if (value === optionSaveAs) {
- errors.forEach((error) => {
- this.exportWorkspaceReport(vscode.Uri.parse(error.saveParams.workspaceUri));
- });
- } else {
- logger.warn("onSaveError: user discard all");
- }
- });
+ });
+ }
+
+ /**
+ * 保存所有报告(缓存到工作区)
+ */
+ public saveAllReportsCache() {
+ this._client.sendNotification(LSPNotificationID.reportMgrSaveCacheAll);
+ }
+
+ /**
+ * 报告保存失败回调(支持多个文件)
+ *
+ * @param data 报告保存失败数据
+ */
+ public onSaveError(data: ReportMgrSaveError | ReportMgrSaveError[]) {
+ let errors: ReportMgrSaveError[] = [];
+ if (Array.isArray(data)) {
+ errors = errors.concat(data);
+ } else {
+ errors.push(data);
}
-
- /**
- * 读取报告到指定工作区
- *
- * 根据 notificationId 区分读取方式,并调用相应的读取方法
- *
- * @param notificationId 报告读取通知 ID(来自服务端)
- * @param workspace 工作区文件夹
- * @param data 报告读取额外参数
- */
- private loadReportToWorkspace(notificationId: string, workspace: vscode.WorkspaceFolder, data?: any) {
- // 根据 notificationId 判断导入方式(本地或在线)
- if (notificationId === LSPNotificationID.reportMgrLoadFromFile) {
- this.loadFromFileToWorkspace(workspace);
- } else if (notificationId === LSPNotificationID.reportMgrLoadFromServer) {
- this.loadFromServerToWorkspace(workspace, data);
+ const message = vscode.l10n.t("Failed to save report");
+ let details = vscode.l10n.t("The report for following workspace(s) are failed to save\n");
+ errors.forEach((error) => {
+ details = details.concat("\n", vscode.Uri.parse(error.saveParams.workspaceUri).fsPath);
+ });
+ const optionSaveAs = vscode.l10n.t("Save as...");
+ const nextOptions = [optionSaveAs];
+ vscode.window
+ .showErrorMessage(
+ message,
+ {
+ modal: true,
+ detail: details,
+ },
+ ...nextOptions
+ )
+ .then((value) => {
+ if (value === optionSaveAs) {
+ errors.forEach((error) => {
+ this.exportWorkspaceReport(vscode.Uri.parse(error.saveParams.workspaceUri));
+ });
} else {
- logger.error("loadReportToWorkspace: invalid notificationID: ".concat(notificationId));
- vscode.window.showErrorMessage(vscode.l10n.t("Feature is not supported yet"));
+ logger.warn("onSaveError: user discard all");
}
+ });
+ }
+
+ /**
+ * 读取报告到指定工作区
+ *
+ * 根据 notificationId 区分读取方式,并调用相应的读取方法
+ *
+ * @param notificationId 报告读取通知 ID(来自服务端)
+ * @param workspace 工作区文件夹
+ * @param data 报告读取额外参数
+ */
+ private loadReportToWorkspace(
+ notificationId: string,
+ workspace: vscode.WorkspaceFolder,
+ data?: any
+ ) {
+ // 根据 notificationId 判断导入方式(本地或在线)
+ if (notificationId === LSPNotificationID.reportMgrLoadFromFile) {
+ this.loadFromFileToWorkspace(workspace);
+ } else if (notificationId === LSPNotificationID.reportMgrLoadFromServer) {
+ this.loadFromServerToWorkspace(workspace, data);
+ } else {
+ logger.error("loadReportToWorkspace: invalid notificationID: ".concat(notificationId));
+ vscode.window.showErrorMessage(vscode.l10n.t("Feature is not supported yet"));
}
-
- /**
- * 导入报告文件到指定工作区
- *
- * @param workspace 工作区文件夹
- * @param data 额外导入参数
- */
- private loadFromFileToWorkspace(workspace: vscode.WorkspaceFolder) {
- const fileFilters: { [name: string]: string[] } = {};
- fileFilters[vscode.l10n.t("Code Scan Report")] = ["json"];
- vscode.window
- .showOpenDialog({
- defaultUri: workspace.uri,
- filters: fileFilters,
- title: vscode.l10n.t("Please choose code scanning report file"),
- })
- .then((uri) => {
- if (uri === undefined || uri.length < 1) {
- logger.debug("loadFromFileToWorkspace: no uri");
- return;
- }
- // 通知 Language Server 读取报告
- this._client.sendNotification(LSPNotificationID.reportMgrLoad, {
- workspaceUri: workspace.uri.toString(),
- reportUri: uri[0].toString(),
- reloadConfirm: false,
- });
- });
- }
-
- /**
- * 从服务器下载报告并导入到指定工作区
- *
- * @param workspace 工作区文件夹
- * @param data 额外导入参数
- */
- private loadFromServerToWorkspace(workspace: vscode.WorkspaceFolder, data?: any) {
- vscode.window.showErrorMessage(vscode.l10n.t("Feature is not supported yet"));
- }
+ }
+
+ /**
+ * 导入报告文件到指定工作区
+ *
+ * @param workspace 工作区文件夹
+ * @param data 额外导入参数
+ */
+ private loadFromFileToWorkspace(workspace: vscode.WorkspaceFolder) {
+ const fileFilters: { [name: string]: string[] } = {};
+ fileFilters[vscode.l10n.t("Code Scan Report")] = ["json"];
+ vscode.window
+ .showOpenDialog({
+ defaultUri: workspace.uri,
+ filters: fileFilters,
+ title: vscode.l10n.t("Please choose code scanning report file"),
+ })
+ .then((uri) => {
+ if (uri === undefined || uri.length < 1) {
+ logger.debug("loadFromFileToWorkspace: no uri");
+ return;
+ }
+ // 通知 Language Server 读取报告
+ this._client.sendNotification(LSPNotificationID.reportMgrLoad, {
+ workspaceUri: workspace.uri.toString(),
+ reportUri: uri[0].toString(),
+ reloadConfirm: false,
+ });
+ });
+ }
+
+ /**
+ * 从服务器下载报告并导入到指定工作区
+ *
+ * @param workspace 工作区文件夹
+ * @param data 额外导入参数
+ */
+ private loadFromServerToWorkspace(workspace: vscode.WorkspaceFolder, data?: any) {
+ vscode.window.showErrorMessage(vscode.l10n.t("Feature is not supported yet"));
+ }
}
diff --git a/client/src/test/completion.test.ts b/client/src/test/completion.test.ts
index 9f4301d..3963c4f 100644
--- a/client/src/test/completion.test.ts
+++ b/client/src/test/completion.test.ts
@@ -8,36 +8,36 @@ import * as vscode from "vscode";
import { activate, getDocUri } from "./helper";
suite("Should do completion", () => {
- const docUri = getDocUri("completion.txt");
+ const docUri = getDocUri("completion.txt");
- test("Completes JS/TS in txt file", async () => {
- await testCompletion(docUri, new vscode.Position(0, 0), {
- items: [
- { label: "JavaScript", kind: vscode.CompletionItemKind.Text },
- { label: "TypeScript", kind: vscode.CompletionItemKind.Text },
- ],
- });
+ test("Completes JS/TS in txt file", async () => {
+ await testCompletion(docUri, new vscode.Position(0, 0), {
+ items: [
+ { label: "JavaScript", kind: vscode.CompletionItemKind.Text },
+ { label: "TypeScript", kind: vscode.CompletionItemKind.Text },
+ ],
});
+ });
});
async function testCompletion(
- docUri: vscode.Uri,
- position: vscode.Position,
- expectedCompletionList: vscode.CompletionList
+ docUri: vscode.Uri,
+ position: vscode.Position,
+ expectedCompletionList: vscode.CompletionList
) {
- await activate(docUri);
+ await activate(docUri);
- // Executing the command `vscode.executeCompletionItemProvider` to simulate triggering completion
- const actualCompletionList = (await vscode.commands.executeCommand(
- "vscode.executeCompletionItemProvider",
- docUri,
- position
- )) as vscode.CompletionList;
+ // Executing the command `vscode.executeCompletionItemProvider` to simulate triggering completion
+ const actualCompletionList = (await vscode.commands.executeCommand(
+ "vscode.executeCompletionItemProvider",
+ docUri,
+ position
+ )) as vscode.CompletionList;
- assert.ok(actualCompletionList.items.length >= 2);
- expectedCompletionList.items.forEach((expectedItem, i) => {
- const actualItem = actualCompletionList.items[i];
- assert.equal(actualItem.label, expectedItem.label);
- assert.equal(actualItem.kind, expectedItem.kind);
- });
+ assert.ok(actualCompletionList.items.length >= 2);
+ expectedCompletionList.items.forEach((expectedItem, i) => {
+ const actualItem = actualCompletionList.items[i];
+ assert.equal(actualItem.label, expectedItem.label);
+ assert.equal(actualItem.kind, expectedItem.kind);
+ });
}
diff --git a/client/src/test/diagnostics.test.ts b/client/src/test/diagnostics.test.ts
index c82a2d4..c505ad8 100644
--- a/client/src/test/diagnostics.test.ts
+++ b/client/src/test/diagnostics.test.ts
@@ -8,49 +8,49 @@ import * as vscode from "vscode";
import { activate, getDocUri } from "./helper";
suite("Should get diagnostics", () => {
- const docUri = getDocUri("diagnostics.txt");
-
- test("Diagnoses uppercase texts", async () => {
- await testDiagnostics(docUri, [
- {
- message: "ANY is all uppercase.",
- range: toRange(0, 0, 0, 3),
- severity: vscode.DiagnosticSeverity.Warning,
- source: "ex",
- },
- {
- message: "ANY is all uppercase.",
- range: toRange(0, 14, 0, 17),
- severity: vscode.DiagnosticSeverity.Warning,
- source: "ex",
- },
- {
- message: "OS is all uppercase.",
- range: toRange(0, 18, 0, 20),
- severity: vscode.DiagnosticSeverity.Warning,
- source: "ex",
- },
- ]);
- });
+ const docUri = getDocUri("diagnostics.txt");
+
+ test("Diagnoses uppercase texts", async () => {
+ await testDiagnostics(docUri, [
+ {
+ message: "ANY is all uppercase.",
+ range: toRange(0, 0, 0, 3),
+ severity: vscode.DiagnosticSeverity.Warning,
+ source: "ex",
+ },
+ {
+ message: "ANY is all uppercase.",
+ range: toRange(0, 14, 0, 17),
+ severity: vscode.DiagnosticSeverity.Warning,
+ source: "ex",
+ },
+ {
+ message: "OS is all uppercase.",
+ range: toRange(0, 18, 0, 20),
+ severity: vscode.DiagnosticSeverity.Warning,
+ source: "ex",
+ },
+ ]);
+ });
});
function toRange(sLine: number, sChar: number, eLine: number, eChar: number) {
- const start = new vscode.Position(sLine, sChar);
- const end = new vscode.Position(eLine, eChar);
- return new vscode.Range(start, end);
+ const start = new vscode.Position(sLine, sChar);
+ const end = new vscode.Position(eLine, eChar);
+ return new vscode.Range(start, end);
}
async function testDiagnostics(docUri: vscode.Uri, expectedDiagnostics: vscode.Diagnostic[]) {
- await activate(docUri);
+ await activate(docUri);
- const actualDiagnostics = vscode.languages.getDiagnostics(docUri);
+ const actualDiagnostics = vscode.languages.getDiagnostics(docUri);
- assert.equal(actualDiagnostics.length, expectedDiagnostics.length);
+ assert.equal(actualDiagnostics.length, expectedDiagnostics.length);
- expectedDiagnostics.forEach((expectedDiagnostic, i) => {
- const actualDiagnostic = actualDiagnostics[i];
- assert.equal(actualDiagnostic.message, expectedDiagnostic.message);
- assert.deepEqual(actualDiagnostic.range, expectedDiagnostic.range);
- assert.equal(actualDiagnostic.severity, expectedDiagnostic.severity);
- });
+ expectedDiagnostics.forEach((expectedDiagnostic, i) => {
+ const actualDiagnostic = actualDiagnostics[i];
+ assert.equal(actualDiagnostic.message, expectedDiagnostic.message);
+ assert.deepEqual(actualDiagnostic.range, expectedDiagnostic.range);
+ assert.equal(actualDiagnostic.severity, expectedDiagnostic.severity);
+ });
}
diff --git a/client/src/test/helper.ts b/client/src/test/helper.ts
index e48ffa6..4b644ac 100644
--- a/client/src/test/helper.ts
+++ b/client/src/test/helper.ts
@@ -15,30 +15,30 @@ export let platformEol: string;
* Activates the vscode.lsp-sample extension
*/
export async function activate(docUri: vscode.Uri) {
- // The extensionId is `publisher.name` from package.json
- const ext = vscode.extensions.getExtension("tcse-iscas.rvportingtool")!;
- await ext.activate();
- try {
- doc = await vscode.workspace.openTextDocument(docUri);
- editor = await vscode.window.showTextDocument(doc);
- await sleep(2000); // Wait for server activation
- } catch (e) {
- console.error(e);
- }
+ // The extensionId is `publisher.name` from package.json
+ const ext = vscode.extensions.getExtension("tcse-iscas.rvportingtool")!;
+ await ext.activate();
+ try {
+ doc = await vscode.workspace.openTextDocument(docUri);
+ editor = await vscode.window.showTextDocument(doc);
+ await sleep(2000); // Wait for server activation
+ } catch (e) {
+ console.error(e);
+ }
}
async function sleep(ms: number) {
- return new Promise((resolve) => setTimeout(resolve, ms));
+ return new Promise((resolve) => setTimeout(resolve, ms));
}
export const getDocPath = (p: string) => {
- return path.resolve(__dirname, "../../testRoot", p);
+ return path.resolve(__dirname, "../../testRoot", p);
};
export const getDocUri = (p: string) => {
- return vscode.Uri.file(getDocPath(p));
+ return vscode.Uri.file(getDocPath(p));
};
export async function setTestContent(content: string): Promise {
- const all = new vscode.Range(doc.positionAt(0), doc.positionAt(doc.getText().length));
- return editor.edit((eb) => eb.replace(all, content));
+ const all = new vscode.Range(doc.positionAt(0), doc.positionAt(doc.getText().length));
+ return editor.edit((eb) => eb.replace(all, content));
}
diff --git a/client/src/types/checkerRules.ts b/client/src/types/checkerRules.ts
index d00e4fd..b83a249 100644
--- a/client/src/types/checkerRules.ts
+++ b/client/src/types/checkerRules.ts
@@ -18,156 +18,156 @@
import * as vscode from "vscode";
export interface RuleInfo {
- desc: string;
- languages: string[];
- tags: string[];
+ desc: string;
+ languages: string[];
+ tags: string[];
}
export const checkerRules: Map = new Map([
- [
- "CC-0001",
- {
- desc: vscode.l10n.t("ARM architecture-related macro"),
- languages: [vscode.l10n.t("C/C++")],
- tags: [vscode.l10n.t("ARM"), vscode.l10n.t("macro")],
- },
- ],
- [
- "CC-0002",
- {
- desc: vscode.l10n.t("Suspected ARM architecture-related macro"),
- languages: [vscode.l10n.t("C/C++")],
- tags: [vscode.l10n.t("ARM"), vscode.l10n.t("macro")],
- },
- ],
- [
- "CC-0003",
- {
- desc: vscode.l10n.t("X86 architecture-specified macro"),
- languages: [vscode.l10n.t("C/C++")],
- tags: [vscode.l10n.t("X86"), vscode.l10n.t("macro")],
- },
- ],
- [
- "CC-0004",
- {
- desc: vscode.l10n.t("Architecture-related built-in function"),
- languages: [vscode.l10n.t("C/C++")],
- tags: [vscode.l10n.t("built-in"), vscode.l10n.t("function")],
- },
- ],
- [
- "CC-0005",
- {
- desc: vscode.l10n.t("Inline assembly"),
- languages: [vscode.l10n.t("C/C++")],
- tags: [vscode.l10n.t("assembly")],
- },
- ],
- [
- "CC-0006",
- {
- desc: vscode.l10n.t("Right-shift operation on signed integer"),
- languages: [vscode.l10n.t("C/C++")],
- tags: [
- vscode.l10n.t("shifting"),
- vscode.l10n.t("bit operation"),
- vscode.l10n.t("signed integer"),
- vscode.l10n.t("implement-defined behavior"),
- ],
- },
- ],
- [
- "CC-0007",
- {
- desc: vscode.l10n.t("Architecture-related pre-defined macro from compiler"),
- languages: [vscode.l10n.t("C/C++")],
- tags: [vscode.l10n.t("macro"), vscode.l10n.t("compiler")],
- },
- ],
- [
- "CC-0008",
- {
- desc: vscode.l10n.t("Suspected architecture-related macro"),
- languages: [vscode.l10n.t("C/C++")],
- tags: [vscode.l10n.t("macro"), vscode.l10n.t("keyword")],
- },
- ],
- [
- "CC-0009",
- {
- desc: vscode.l10n.t("Suspected architecture-related enum type"),
- languages: [vscode.l10n.t("C/C++")],
- tags: [vscode.l10n.t("enum"), vscode.l10n.t("keyword")],
- },
- ],
- [
- "CC-0010",
- {
- desc: vscode.l10n.t("Function multi-versioning"),
- languages: [vscode.l10n.t("C/C++")],
- tags: [vscode.l10n.t("function"), vscode.l10n.t("multi-versioning")],
- },
- ],
- [
- "CC-0011",
- {
- desc: vscode.l10n.t("X86 architecture-specified system call"),
- languages: [vscode.l10n.t("C/C++")],
- tags: [vscode.l10n.t("system call")],
- },
- ],
- [
- "RB-0001",
- {
- desc: vscode.l10n.t("Architecture judgement macro statement block"),
- languages: [vscode.l10n.t("rpmspec")],
- tags: [
- vscode.l10n.t("rpmbuild"),
- vscode.l10n.t("rpmspec"),
- vscode.l10n.t("architecture judgment macro"),
- vscode.l10n.t("ifarch"),
- vscode.l10n.t("ifnarch"),
- ],
- },
- ],
- [
- "RB-0002",
- {
- desc: vscode.l10n.t("Architecture-related built-in macro statement block"),
- languages: [vscode.l10n.t("rpmspec")],
- tags: [
- vscode.l10n.t("rpmbuild"),
- vscode.l10n.t("rpmspec"),
- vscode.l10n.t("built-in"),
- vscode.l10n.t("macro"),
- ],
- },
- ],
- [
- "RB-0003",
- {
- desc: vscode.l10n.t("Inline architecture-related shell script"),
- languages: [vscode.l10n.t("rpmspec")],
- tags: [
- vscode.l10n.t("rpmbuild"),
- vscode.l10n.t("rpmspec"),
- vscode.l10n.t("built-in"),
- vscode.l10n.t("macro"),
- ],
- },
- ],
- [
- "RB-0004",
- {
- desc: vscode.l10n.t("Architecture-related macro in requirements"),
- languages: [vscode.l10n.t("rpmspec")],
- tags: [
- vscode.l10n.t("rpmbuild"),
- vscode.l10n.t("rpmspec"),
- vscode.l10n.t("requirement"),
- vscode.l10n.t("macro"),
- ],
- },
- ],
+ [
+ "CC-0001",
+ {
+ desc: vscode.l10n.t("ARM architecture-related macro"),
+ languages: [vscode.l10n.t("C/C++")],
+ tags: [vscode.l10n.t("ARM"), vscode.l10n.t("macro")],
+ },
+ ],
+ [
+ "CC-0002",
+ {
+ desc: vscode.l10n.t("Suspected ARM architecture-related macro"),
+ languages: [vscode.l10n.t("C/C++")],
+ tags: [vscode.l10n.t("ARM"), vscode.l10n.t("macro")],
+ },
+ ],
+ [
+ "CC-0003",
+ {
+ desc: vscode.l10n.t("X86 architecture-specified macro"),
+ languages: [vscode.l10n.t("C/C++")],
+ tags: [vscode.l10n.t("X86"), vscode.l10n.t("macro")],
+ },
+ ],
+ [
+ "CC-0004",
+ {
+ desc: vscode.l10n.t("Architecture-related built-in function"),
+ languages: [vscode.l10n.t("C/C++")],
+ tags: [vscode.l10n.t("built-in"), vscode.l10n.t("function")],
+ },
+ ],
+ [
+ "CC-0005",
+ {
+ desc: vscode.l10n.t("Inline assembly"),
+ languages: [vscode.l10n.t("C/C++")],
+ tags: [vscode.l10n.t("assembly")],
+ },
+ ],
+ [
+ "CC-0006",
+ {
+ desc: vscode.l10n.t("Right-shift operation on signed integer"),
+ languages: [vscode.l10n.t("C/C++")],
+ tags: [
+ vscode.l10n.t("shifting"),
+ vscode.l10n.t("bit operation"),
+ vscode.l10n.t("signed integer"),
+ vscode.l10n.t("implement-defined behavior"),
+ ],
+ },
+ ],
+ [
+ "CC-0007",
+ {
+ desc: vscode.l10n.t("Architecture-related pre-defined macro from compiler"),
+ languages: [vscode.l10n.t("C/C++")],
+ tags: [vscode.l10n.t("macro"), vscode.l10n.t("compiler")],
+ },
+ ],
+ [
+ "CC-0008",
+ {
+ desc: vscode.l10n.t("Suspected architecture-related macro"),
+ languages: [vscode.l10n.t("C/C++")],
+ tags: [vscode.l10n.t("macro"), vscode.l10n.t("keyword")],
+ },
+ ],
+ [
+ "CC-0009",
+ {
+ desc: vscode.l10n.t("Suspected architecture-related enum type"),
+ languages: [vscode.l10n.t("C/C++")],
+ tags: [vscode.l10n.t("enum"), vscode.l10n.t("keyword")],
+ },
+ ],
+ [
+ "CC-0010",
+ {
+ desc: vscode.l10n.t("Function multi-versioning"),
+ languages: [vscode.l10n.t("C/C++")],
+ tags: [vscode.l10n.t("function"), vscode.l10n.t("multi-versioning")],
+ },
+ ],
+ [
+ "CC-0011",
+ {
+ desc: vscode.l10n.t("X86 architecture-specified system call"),
+ languages: [vscode.l10n.t("C/C++")],
+ tags: [vscode.l10n.t("system call")],
+ },
+ ],
+ [
+ "RB-0001",
+ {
+ desc: vscode.l10n.t("Architecture judgement macro statement block"),
+ languages: [vscode.l10n.t("rpmspec")],
+ tags: [
+ vscode.l10n.t("rpmbuild"),
+ vscode.l10n.t("rpmspec"),
+ vscode.l10n.t("architecture judgment macro"),
+ vscode.l10n.t("ifarch"),
+ vscode.l10n.t("ifnarch"),
+ ],
+ },
+ ],
+ [
+ "RB-0002",
+ {
+ desc: vscode.l10n.t("Architecture-related built-in macro statement block"),
+ languages: [vscode.l10n.t("rpmspec")],
+ tags: [
+ vscode.l10n.t("rpmbuild"),
+ vscode.l10n.t("rpmspec"),
+ vscode.l10n.t("built-in"),
+ vscode.l10n.t("macro"),
+ ],
+ },
+ ],
+ [
+ "RB-0003",
+ {
+ desc: vscode.l10n.t("Inline architecture-related shell script"),
+ languages: [vscode.l10n.t("rpmspec")],
+ tags: [
+ vscode.l10n.t("rpmbuild"),
+ vscode.l10n.t("rpmspec"),
+ vscode.l10n.t("built-in"),
+ vscode.l10n.t("macro"),
+ ],
+ },
+ ],
+ [
+ "RB-0004",
+ {
+ desc: vscode.l10n.t("Architecture-related macro in requirements"),
+ languages: [vscode.l10n.t("rpmspec")],
+ tags: [
+ vscode.l10n.t("rpmbuild"),
+ vscode.l10n.t("rpmspec"),
+ vscode.l10n.t("requirement"),
+ vscode.l10n.t("macro"),
+ ],
+ },
+ ],
]);
diff --git a/client/src/utils/log.ts b/client/src/utils/log.ts
index aa6a683..f929edb 100644
--- a/client/src/utils/log.ts
+++ b/client/src/utils/log.ts
@@ -23,169 +23,173 @@ import * as vscode from "vscode";
export type LogLevel = "trace" | "debug" | "info" | "warn" | "error" | "fatal";
export interface LogData {
- category: string;
- level: LogLevel;
- message: any;
+ category: string;
+ level: LogLevel;
+ message: any;
}
export class ClientLogger {
- private static cachedLoggers: Map;
- private static defaultLevel: LogLevel;
- private static outputChannelName: string;
- private static outputChannel: vscode.OutputChannel;
-
- private log4jsLogger: log4js.Logger;
- private category: string;
- private logLevel: LogLevel;
-
- /**
- * Constructor of Logger
- *
- * @param context VSCode Extension Context
- * @param category Category name
- */
- private constructor(category: string, level?: LogLevel) {
- // Set default level if not initialized
- if (ClientLogger.defaultLevel === undefined) {
- ClientLogger.defaultLevel = "info";
- }
-
- // Create output channel if not initialized
- if (ClientLogger.outputChannel === undefined) {
- const channelName = ClientLogger.outputChannelName ? ClientLogger.outputChannelName : "Logs: Extension";
- ClientLogger.outputChannel = vscode.window.createOutputChannel(channelName);
- }
-
- this.category = category;
- this.logLevel = level ? level : ClientLogger.defaultLevel;
- this.log4jsLogger = log4js.getLogger(this.category);
- this.log4jsLogger.level = this.logLevel;
+ private static cachedLoggers: Map;
+ private static defaultLevel: LogLevel;
+ private static outputChannelName: string;
+ private static outputChannel: vscode.OutputChannel;
+
+ private log4jsLogger: log4js.Logger;
+ private category: string;
+ private logLevel: LogLevel;
+
+ /**
+ * Constructor of Logger
+ *
+ * @param context VSCode Extension Context
+ * @param category Category name
+ */
+ private constructor(category: string, level?: LogLevel) {
+ // Set default level if not initialized
+ if (ClientLogger.defaultLevel === undefined) {
+ ClientLogger.defaultLevel = "info";
}
- /**
- * Initialize Client Logger
- *
- * This method should be called in activate() method of the extension.
- *
- * @param context VSCode Extension Context
- */
- public static init(context: vscode.ExtensionContext): ClientLogger {
- // Get and convert extension logLevel configuration
- let extIdentifier = context.extension.id;
- extIdentifier = extIdentifier.substring(extIdentifier.lastIndexOf(".") + 1);
- const logLevel: string | undefined = vscode.workspace.getConfiguration(extIdentifier).get("logLevel");
- this.defaultLevel = "info";
- if (logLevel === "verbose") {
- this.defaultLevel = "trace";
- }
-
- // Initialize log4js configuration
- if (context !== undefined) {
- const logFileUri = context.logUri;
- log4js.configure({
- appenders: {
- file: {
- type: "fileSync",
- maxLogSize: 16 * 1024 * 1024,
- layout: {
- type: "basic",
- },
- filename: logFileUri.fsPath,
- },
- console: {
- type: "console",
- },
- },
- categories: {
- default: {
- appenders: ["file", "console"],
- level: this.defaultLevel,
- },
- },
- });
- }
-
- // Initialize output channel
- ClientLogger.outputChannelName = `Logs: ${context.extension.id}`;
- ClientLogger.outputChannel = vscode.window.createOutputChannel(ClientLogger.outputChannelName);
-
- // Initialize and return root logger
- return ClientLogger.getLogger("main");
+ // Create output channel if not initialized
+ if (ClientLogger.outputChannel === undefined) {
+ const channelName = ClientLogger.outputChannelName
+ ? ClientLogger.outputChannelName
+ : "Logs: Extension";
+ ClientLogger.outputChannel = vscode.window.createOutputChannel(channelName);
}
- /**
- * Register Language Server Log Notification Handler
- *
- * @param client Language Client
- */
- public static initLSP(client: lsp.BaseLanguageClient) {
- client.onReady().then(() => {
- client.onNotification("writeLog", (logData: LogData) => {
- ClientLogger.getLogger(logData.category).log(logData.level, logData.message);
- });
- ClientLogger.getLogger().debug("Registered language server writeLog handler");
- });
+ this.category = category;
+ this.logLevel = level ? level : ClientLogger.defaultLevel;
+ this.log4jsLogger = log4js.getLogger(this.category);
+ this.log4jsLogger.level = this.logLevel;
+ }
+
+ /**
+ * Initialize Client Logger
+ *
+ * This method should be called in activate() method of the extension.
+ *
+ * @param context VSCode Extension Context
+ */
+ public static init(context: vscode.ExtensionContext): ClientLogger {
+ // Get and convert extension logLevel configuration
+ let extIdentifier = context.extension.id;
+ extIdentifier = extIdentifier.substring(extIdentifier.lastIndexOf(".") + 1);
+ const logLevel: string | undefined = vscode.workspace
+ .getConfiguration(extIdentifier)
+ .get("logLevel");
+ this.defaultLevel = "info";
+ if (logLevel === "verbose") {
+ this.defaultLevel = "trace";
}
- /**
- * Get logger with category name
- *
- * @param category Category name, undefined means main
- */
- public static getLogger(category?: string): ClientLogger {
- category = category ? category : "main";
- if (ClientLogger.cachedLoggers) {
- if (ClientLogger.cachedLoggers.has(category)) {
- return ClientLogger.cachedLoggers.get(category)!;
- }
- } else {
- ClientLogger.cachedLoggers = new Map();
- }
- const logger = new ClientLogger(category);
- ClientLogger.cachedLoggers.set(category, logger);
- return logger;
+ // Initialize log4js configuration
+ if (context !== undefined) {
+ const logFileUri = context.logUri;
+ log4js.configure({
+ appenders: {
+ file: {
+ type: "fileSync",
+ maxLogSize: 16 * 1024 * 1024,
+ layout: {
+ type: "basic",
+ },
+ filename: logFileUri.fsPath,
+ },
+ console: {
+ type: "console",
+ },
+ },
+ categories: {
+ default: {
+ appenders: ["file", "console"],
+ level: this.defaultLevel,
+ },
+ },
+ });
}
- /**
- * Write a single line log.
- *
- * @param level Log level
- * @param message Log message
- */
- public log(level: LogLevel, message: any) {
- const outStr = "["
- .concat(new Date().toLocaleString())
- .concat("] [")
- .concat(this.category)
- .concat("] [")
- .concat(level)
- .concat("] ")
- .concat(message);
- this.log4jsLogger.log(level, message);
- ClientLogger.outputChannel.appendLine(outStr);
- }
-
- public trace(message: any) {
- this.log("trace", message);
- }
-
- public debug(message: any) {
- this.log("debug", message);
- }
-
- public info(message: any) {
- this.log("info", message);
- }
-
- public warn(message: any) {
- this.log("warn", message);
- }
-
- public error(message: any) {
- this.log("error", message);
- }
-
- public fatal(message: any) {
- this.log("fatal", message);
+ // Initialize output channel
+ ClientLogger.outputChannelName = `Logs: ${context.extension.id}`;
+ ClientLogger.outputChannel = vscode.window.createOutputChannel(ClientLogger.outputChannelName);
+
+ // Initialize and return root logger
+ return ClientLogger.getLogger("main");
+ }
+
+ /**
+ * Register Language Server Log Notification Handler
+ *
+ * @param client Language Client
+ */
+ public static initLSP(client: lsp.BaseLanguageClient) {
+ client.onReady().then(() => {
+ client.onNotification("writeLog", (logData: LogData) => {
+ ClientLogger.getLogger(logData.category).log(logData.level, logData.message);
+ });
+ ClientLogger.getLogger().debug("Registered language server writeLog handler");
+ });
+ }
+
+ /**
+ * Get logger with category name
+ *
+ * @param category Category name, undefined means main
+ */
+ public static getLogger(category?: string): ClientLogger {
+ category = category ? category : "main";
+ if (ClientLogger.cachedLoggers) {
+ if (ClientLogger.cachedLoggers.has(category)) {
+ return ClientLogger.cachedLoggers.get(category)!;
+ }
+ } else {
+ ClientLogger.cachedLoggers = new Map();
}
+ const logger = new ClientLogger(category);
+ ClientLogger.cachedLoggers.set(category, logger);
+ return logger;
+ }
+
+ /**
+ * Write a single line log.
+ *
+ * @param level Log level
+ * @param message Log message
+ */
+ public log(level: LogLevel, message: any) {
+ const outStr = "["
+ .concat(new Date().toLocaleString())
+ .concat("] [")
+ .concat(this.category)
+ .concat("] [")
+ .concat(level)
+ .concat("] ")
+ .concat(message);
+ this.log4jsLogger.log(level, message);
+ ClientLogger.outputChannel.appendLine(outStr);
+ }
+
+ public trace(message: any) {
+ this.log("trace", message);
+ }
+
+ public debug(message: any) {
+ this.log("debug", message);
+ }
+
+ public info(message: any) {
+ this.log("info", message);
+ }
+
+ public warn(message: any) {
+ this.log("warn", message);
+ }
+
+ public error(message: any) {
+ this.log("error", message);
+ }
+
+ public fatal(message: any) {
+ this.log("fatal", message);
+ }
}
diff --git a/client/src/wikiHelper.ts b/client/src/wikiHelper.ts
index 491ab32..c907d6b 100644
--- a/client/src/wikiHelper.ts
+++ b/client/src/wikiHelper.ts
@@ -24,35 +24,35 @@ import { WikiViewProvider } from "./wikiView/wikiViewProvider";
const logger = ClientLogger.getLogger("WikiHelper");
export class WikiHelper {
- /** LSP 客户端 */
- private _client: lsp.BaseLanguageClient;
-
- private constructor(client: lsp.BaseLanguageClient) {
- this._client = client;
- }
-
- public static init(context: vscode.ExtensionContext, client: lsp.BaseLanguageClient): WikiHelper {
- const manager = new WikiHelper(client);
- const wikiViewProvider = new WikiViewProvider(context.extensionUri);
-
- context.subscriptions.push(
- // 注册规则 Wiki 展示命令
- vscode.commands.registerCommand(CommandID.wikiHelperOpenRule, async (ruleId: string) => {
- wikiViewProvider.showRule("cc-0001");
- }),
-
- // 注册 WikiViewProvider
- vscode.window.registerWebviewViewProvider(WikiViewProvider.viewType, wikiViewProvider),
-
- // 注册 Uri
- vscode.window.registerUriHandler({
- handleUri: (uri) => {
- if (uri.path === "/".concat(CommandID.wikiHelperOpenRule)) {
- wikiViewProvider.showRule(uri.query);
- }
- },
- })
- );
- return manager;
- }
+ /** LSP 客户端 */
+ private _client: lsp.BaseLanguageClient;
+
+ private constructor(client: lsp.BaseLanguageClient) {
+ this._client = client;
+ }
+
+ public static init(context: vscode.ExtensionContext, client: lsp.BaseLanguageClient): WikiHelper {
+ const manager = new WikiHelper(client);
+ const wikiViewProvider = new WikiViewProvider(context.extensionUri);
+
+ context.subscriptions.push(
+ // 注册规则 Wiki 展示命令
+ vscode.commands.registerCommand(CommandID.wikiHelperOpenRule, async (ruleId: string) => {
+ wikiViewProvider.showRule("cc-0001");
+ }),
+
+ // 注册 WikiViewProvider
+ vscode.window.registerWebviewViewProvider(WikiViewProvider.viewType, wikiViewProvider),
+
+ // 注册 Uri
+ vscode.window.registerUriHandler({
+ handleUri: (uri) => {
+ if (uri.path === "/".concat(CommandID.wikiHelperOpenRule)) {
+ wikiViewProvider.showRule(uri.query);
+ }
+ },
+ })
+ );
+ return manager;
+ }
}
diff --git a/client/src/wikiView/wikiViewProvider.ts b/client/src/wikiView/wikiViewProvider.ts
index 281b3b8..638a7bc 100644
--- a/client/src/wikiView/wikiViewProvider.ts
+++ b/client/src/wikiView/wikiViewProvider.ts
@@ -18,7 +18,11 @@
import * as fs from "fs";
import * as vscode from "vscode";
import { checkerRules } from "../types/checkerRules";
-import { WikiViewApplyMarkdownMsg, WikiViewLoadedMsg, WikiViewMsgUtil } from "../../../common/src/types/wikiView";
+import {
+ WikiViewApplyMarkdownMsg,
+ WikiViewLoadedMsg,
+ WikiViewMsgUtil,
+} from "../../../common/src/types/wikiView";
export class WikiViewProvider implements vscode.WebviewViewProvider {
public static readonly viewType = "rvCodingAsst.view.wiki";
@@ -92,9 +96,15 @@ export class WikiViewProvider implements vscode.WebviewViewProvider {
private _getHtmlForWebview(webview: vscode.Webview): string {
// Use a nonce to only allow a specific script to be run.
const nonce = getNonce();
- const prismCSSUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, "resources/prism.css"));
- const prismJSUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, "resources/prism.js"));
- const scriptUri = webview.asWebviewUri(vscode.Uri.joinPath(this._extensionUri, "out/wikiView/main.js"));
+ const prismCSSUri = webview.asWebviewUri(
+ vscode.Uri.joinPath(this._extensionUri, "resources/prism.css")
+ );
+ const prismJSUri = webview.asWebviewUri(
+ vscode.Uri.joinPath(this._extensionUri, "resources/prism.js")
+ );
+ const scriptUri = webview.asWebviewUri(
+ vscode.Uri.joinPath(this._extensionUri, "out/wikiView/main.js")
+ );
let bodyHtml = "" + vscode.l10n.t("No Wiki pages have been opened yet.") + "
";
diff --git a/client/tsconfig.json b/client/tsconfig.json
index b711098..92bb767 100644
--- a/client/tsconfig.json
+++ b/client/tsconfig.json
@@ -1,16 +1,16 @@
{
- "compilerOptions": {
- "composite": true,
- "module": "commonjs",
- "target": "es2020",
- "lib": ["es2020"],
- "outDir": "out",
- "rootDir": "..",
- "sourceMap": true,
- "strict": true,
- "noImplicitReturns": true,
- "noFallthroughCasesInSwitch": true
- },
- "include": ["src", "../common/src"],
- "exclude": ["node_modules", ".vscode-test"]
+ "compilerOptions": {
+ "composite": true,
+ "module": "commonjs",
+ "target": "es2020",
+ "lib": ["es2020"],
+ "outDir": "out",
+ "rootDir": "..",
+ "sourceMap": true,
+ "strict": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["src", "../common/src"],
+ "exclude": ["node_modules", ".vscode-test"]
}
diff --git a/common/package.json b/common/package.json
index 5d2798b..8267b2a 100644
--- a/common/package.json
+++ b/common/package.json
@@ -1,19 +1,19 @@
{
- "name": "rvportingtool-common",
- "description": "VSCode Common Part of Software Porting Tool for RISC-V",
- "author": "tcse-iscas",
- "license": "MulanPSL-2.0",
- "version": "0.0.1",
- "publisher": "tcse-iscas",
- "l10n": "../l10n",
- "dependencies": {
- "vscode-languageclient": "^7.0.0",
- "vscode-languageserver": "^8.1.0",
- "vscode-languageserver-textdocument": "^1.0.8"
- },
- "devDependencies": {
- "@types/vscode": "^1.75.0",
- "vscode-languageserver-types": "^3.17.3",
- "@vscode/test-electron": "^2.1.2"
- }
+ "name": "rvportingtool-common",
+ "description": "VSCode Common Part of Software Porting Tool for RISC-V",
+ "author": "tcse-iscas",
+ "license": "MulanPSL-2.0",
+ "version": "0.0.1",
+ "publisher": "tcse-iscas",
+ "l10n": "../l10n",
+ "dependencies": {
+ "vscode-languageclient": "^7.0.0",
+ "vscode-languageserver": "^8.1.0",
+ "vscode-languageserver-textdocument": "^1.0.8"
+ },
+ "devDependencies": {
+ "@types/vscode": "^1.75.0",
+ "vscode-languageserver-types": "^3.17.3",
+ "@vscode/test-electron": "^2.1.2"
+ }
}
diff --git a/common/src/types/command.ts b/common/src/types/command.ts
index 336525a..a305109 100644
--- a/common/src/types/command.ts
+++ b/common/src/types/command.ts
@@ -17,18 +17,18 @@
/** Command ID 定义 */
export class CommandID {
- /** 报告管理:测试命令 */
- public static reportMgrTest = "rvCodingAsst.reportManager.testCommand";
+ /** 报告管理:测试命令 */
+ public static reportMgrTest = "rvCodingAsst.reportManager.testCommand";
- /** 报告管理:加载代码扫描报告文件 */
- public static reportMgrLoadFromFile = "rvCodingAsst.reportManager.loadFromFile";
+ /** 报告管理:加载代码扫描报告文件 */
+ public static reportMgrLoadFromFile = "rvCodingAsst.reportManager.loadFromFile";
- /** 报告管理:保存所有报告(缓存到工作区) */
- public static reportMgrSaveAllReportsCache = "rvCodingAsst.reportManager.saveAllReportsCache";
+ /** 报告管理:保存所有报告(缓存到工作区) */
+ public static reportMgrSaveAllReportsCache = "rvCodingAsst.reportManager.saveAllReportsCache";
- /** 报告管理:导出报告(用户选择工作区) */
- public static reportMgrExport = "rvCodingAsst.reportManager.exportReport";
+ /** 报告管理:导出报告(用户选择工作区) */
+ public static reportMgrExport = "rvCodingAsst.reportManager.exportReport";
- /** Wiki 助手:打开 Wiki 页面 */
- public static wikiHelperOpenRule = "rvCodingAsst.wikiHelper.openRule";
+ /** Wiki 助手:打开 Wiki 页面 */
+ public static wikiHelperOpenRule = "rvCodingAsst.wikiHelper.openRule";
}
diff --git a/common/src/types/extConfig.ts b/common/src/types/extConfig.ts
index dfa1d6a..e632299 100644
--- a/common/src/types/extConfig.ts
+++ b/common/src/types/extConfig.ts
@@ -23,15 +23,15 @@ export type LSPTraceLevel = "off" | "messages" | "verbose";
/** RVPortingTool 插件配置项 */
export interface RVCodingAsstConfig {
- /** 最大显示问题数量 */
- maxNumberOfProblems: number;
+ /** 最大显示问题数量 */
+ maxNumberOfProblems: number;
- /** 插件日志级别 */
- logLevel: ExtLogLevel;
+ /** 插件日志级别 */
+ logLevel: ExtLogLevel;
- /** Language Server 日志配置 */
- trace: {
- /** Language Server 日志级别 */
- server: LSPTraceLevel;
- };
+ /** Language Server 日志配置 */
+ trace: {
+ /** Language Server 日志级别 */
+ server: LSPTraceLevel;
+ };
}
diff --git a/common/src/types/notification.ts b/common/src/types/notification.ts
index 5046720..5d20295 100644
--- a/common/src/types/notification.ts
+++ b/common/src/types/notification.ts
@@ -17,42 +17,43 @@
/** LSP 通知 ID 定义 */
export class LSPNotificationID {
- /** 报告管理:加载报告 JSON Schema */
- public static reportMgrLoadSchema = "rvCodingAsst.reportManager.loadSchema";
+ /** 报告管理:加载报告 JSON Schema */
+ public static reportMgrLoadSchema = "rvCodingAsst.reportManager.loadSchema";
- /** 报告管理:加载报告 */
- public static reportMgrLoad = "rvCodingAsst.reportManager.load";
+ /** 报告管理:加载报告 */
+ public static reportMgrLoad = "rvCodingAsst.reportManager.load";
- /** 报告管理:加载本地文件报告 */
- public static reportMgrLoadFromFile = "rvCodingAsst.reportManager.loadFromFile";
+ /** 报告管理:加载本地文件报告 */
+ public static reportMgrLoadFromFile = "rvCodingAsst.reportManager.loadFromFile";
- /** 报告管理:加载服务器上的报告 */
- public static reportMgrLoadFromServer = "rvCodingAsst.reportManager.loadFromServer";
+ /** 报告管理:加载服务器上的报告 */
+ public static reportMgrLoadFromServer = "rvCodingAsst.reportManager.loadFromServer";
- /** 报告管理:加载报告完成 */
- public static reportMgrLoadFinished = "rvCodingAsst.reportManager.loadFinished";
+ /** 报告管理:加载报告完成 */
+ public static reportMgrLoadFinished = "rvCodingAsst.reportManager.loadFinished";
- /** 报告管理:加载报告完成,但缓存到工作区失败 */
- public static reportMgrLoadFinishedWithSaveError = "rvCodingAsst.reportManager.loadFinishedWithSaveError";
+ /** 报告管理:加载报告完成,但缓存到工作区失败 */
+ public static reportMgrLoadFinishedWithSaveError =
+ "rvCodingAsst.reportManager.loadFinishedWithSaveError";
- /** 报告管理:加载报告失败 */
- public static reportMgrLoadError = "rvCodingAsst.reportManager.loadError";
+ /** 报告管理:加载报告失败 */
+ public static reportMgrLoadError = "rvCodingAsst.reportManager.loadError";
- /** 报告管理:保存报告 */
- public static reportMgrSave = "rvCodingAsst.reportManager.save";
+ /** 报告管理:保存报告 */
+ public static reportMgrSave = "rvCodingAsst.reportManager.save";
- /** 报告管理:保存所有报告(缓存到工作区) */
- public static reportMgrSaveCacheAll = "rvCodingAsst.reportManager.saveCacheAll";
+ /** 报告管理:保存所有报告(缓存到工作区) */
+ public static reportMgrSaveCacheAll = "rvCodingAsst.reportManager.saveCacheAll";
- /** 报告管理:保存所有报告(缓存到工作区) */
- public static reportMgrSaveCacheAllFinished = "rvCodingAsst.reportManager.saveCacheAllFinished";
+ /** 报告管理:保存所有报告(缓存到工作区) */
+ public static reportMgrSaveCacheAllFinished = "rvCodingAsst.reportManager.saveCacheAllFinished";
- /** 报告管理:保存报告成功 */
- public static reportMgrSaveFinished = "rvCodingAsst.reportManager.saveFinished";
+ /** 报告管理:保存报告成功 */
+ public static reportMgrSaveFinished = "rvCodingAsst.reportManager.saveFinished";
- /** 报告管理:保存报告失败 */
- public static reportMgrSaveError = "rvCodingAsst.reportManager.saveError";
+ /** 报告管理:保存报告失败 */
+ public static reportMgrSaveError = "rvCodingAsst.reportManager.saveError";
- /** 报告管理:重新加载报告到指定工作区 */
- public static reportMgrReloadConfirm = "rvCodingAsst.reportManager.reloadConfirm";
+ /** 报告管理:重新加载报告到指定工作区 */
+ public static reportMgrReloadConfirm = "rvCodingAsst.reportManager.reloadConfirm";
}
diff --git a/common/src/types/report.ts b/common/src/types/report.ts
index ccf36ca..896ab0e 100644
--- a/common/src/types/report.ts
+++ b/common/src/types/report.ts
@@ -17,133 +17,133 @@
/** 代码问题状态 */
export enum IProblemState {
- /** 问题状态:无关 */
- unrelated = 0,
+ /** 问题状态:无关 */
+ unrelated = 0,
- /** 问题状态:正常 */
- default = 1,
+ /** 问题状态:正常 */
+ default = 1,
- /** 问题状态:待验证 */
- verify = 2,
+ /** 问题状态:待验证 */
+ verify = 2,
- /** 问题状态:已解决 */
- solved = 3,
+ /** 问题状态:已解决 */
+ solved = 3,
}
/** 代码问题类型 */
export enum IProblemType {
- /** 问题类型:文件级 */
- file = "file",
+ /** 问题类型:文件级 */
+ file = "file",
- /** 问题类型:目录级 */
- dir = "dir",
+ /** 问题类型:目录级 */
+ dir = "dir",
- /** 问题类型:源码级 */
- source = "source",
+ /** 问题类型:源码级 */
+ source = "source",
}
/** 代码问题级别 */
export enum IProblemSeverity {
- /**
- * Something not allowed by the rules of a language or other means.
- */
- error = 1,
-
- /**
- * Something suspicious but allowed.
- */
- warning = 2,
-
- /**
- * Something to inform about but not a problem.
- */
- info = 3,
-
- /**
- * Something to hint to a better way of doing it, like proposing
- * a refactoring.
- */
- hint = 4,
+ /**
+ * Something not allowed by the rules of a language or other means.
+ */
+ error = 1,
+
+ /**
+ * Something suspicious but allowed.
+ */
+ warning = 2,
+
+ /**
+ * Something to inform about but not a problem.
+ */
+ info = 3,
+
+ /**
+ * Something to hint to a better way of doing it, like proposing
+ * a refactoring.
+ */
+ hint = 4,
}
/** 代码区域 */
export interface SourceRange {
- /** 代码文件相对路径 */
- filePath: string;
+ /** 代码文件相对路径 */
+ filePath: string;
- /** 代码起始行号 */
- lineFrom: number;
+ /** 代码起始行号 */
+ lineFrom: number;
- /** 代码起始列号 */
- colFrom?: number;
+ /** 代码起始列号 */
+ colFrom?: number;
- /** 代码终止行号 */
- lineUpto?: number;
+ /** 代码终止行号 */
+ lineUpto?: number;
- /** 代码终止列号 */
- colUpto?: number;
+ /** 代码终止列号 */
+ colUpto?: number;
- /** 代码区域额外信息 */
- comment?: string;
+ /** 代码区域额外信息 */
+ comment?: string;
- /** 代码区域额外级别 */
- level?: IProblemSeverity;
+ /** 代码区域额外级别 */
+ level?: IProblemSeverity;
- /** 是否隐藏显示 */
- hidden?: boolean;
+ /** 是否隐藏显示 */
+ hidden?: boolean;
- /**
- * 是否已规范化
- *
- * @TJS-ignore
- */
- _unified?: boolean;
+ /**
+ * 是否已规范化
+ *
+ * @TJS-ignore
+ */
+ _unified?: boolean;
}
/** 代码问题数据 */
export interface IProblemData {
- /** 文件或目录相对路径 */
- path: string;
+ /** 文件或目录相对路径 */
+ path: string;
- /** 描述 */
- desc: string;
+ /** 描述 */
+ desc: string;
- /** 源码区域 */
- srcRange?: SourceRange;
+ /** 源码区域 */
+ srcRange?: SourceRange;
}
/** RVPortingTool 代码扫描问题 */
export interface IProblem {
- /** 问题 ID */
- id: string;
+ /** 问题 ID */
+ id: string;
- /** 问题状态标志 */
- state: IProblemState;
+ /** 问题状态标志 */
+ state: IProblemState;
- /** Checker ID */
- checkerId: string;
+ /** Checker ID */
+ checkerId: string;
- /** 问题类型 */
- type: IProblemType;
+ /** 问题类型 */
+ type: IProblemType;
- /** 规则 ID */
- ruleId: string;
+ /** 规则 ID */
+ ruleId: string;
- /** 问题级别 */
- level: IProblemSeverity;
+ /** 问题级别 */
+ level: IProblemSeverity;
- /** 问题信息 */
- data: IProblemData[];
+ /** 问题信息 */
+ data: IProblemData[];
}
/** RVPortingTool 代码扫描报告 */
export interface IReport {
- /** 报告版本号 */
- version: number;
+ /** 报告版本号 */
+ version: number;
- /** 报告最后更新毫秒时间戳 */
- timestamp: number;
+ /** 报告最后更新毫秒时间戳 */
+ timestamp: number;
- /** 报告问题列表 */
- problems: IProblem[];
+ /** 报告问题列表 */
+ problems: IProblem[];
}
diff --git a/common/src/types/reportManager.ts b/common/src/types/reportManager.ts
index dd5f846..bb3a57e 100644
--- a/common/src/types/reportManager.ts
+++ b/common/src/types/reportManager.ts
@@ -17,46 +17,46 @@
/** 报告读取参数 */
export interface ReportMgrLoadParams {
- /** 工作区路径 */
- workspaceUri: string;
+ /** 工作区路径 */
+ workspaceUri: string;
- /** 报告数据 URL(本地或在线) */
- reportUri: string;
+ /** 报告数据 URL(本地或在线) */
+ reportUri: string;
- /** 是否确认重新读入 */
- reloadConfirm: boolean;
+ /** 是否确认重新读入 */
+ reloadConfirm: boolean;
}
/** 报告读取错误类型 */
export type ReportMgrLoadErrorType =
- | "fileNotExists"
- | "networkError"
- | "formatError"
- | "needReloadConfirm"
- | "saveCacheError";
+ | "fileNotExists"
+ | "networkError"
+ | "formatError"
+ | "needReloadConfirm"
+ | "saveCacheError";
/** 报告读取错误信息 */
export interface ReportMgrLoadError {
- /** 报告导入参数,ReportMgrLoadParams */
- loadParams: ReportMgrLoadParams;
+ /** 报告导入参数,ReportMgrLoadParams */
+ loadParams: ReportMgrLoadParams;
- /** 错误原因 */
- reason: ReportMgrLoadErrorType;
+ /** 错误原因 */
+ reason: ReportMgrLoadErrorType;
- /** 是否可重试 */
- retry: boolean;
+ /** 是否可重试 */
+ retry: boolean;
}
/** 报告保存参数 */
export interface ReportMgrSaveParams {
- /** 工作区路径 */
- workspaceUri: string;
+ /** 工作区路径 */
+ workspaceUri: string;
- /** 保存 URL(本地或在线) */
- reportUri: string;
+ /** 保存 URL(本地或在线) */
+ reportUri: string;
- /** 是否确认覆盖 */
- replaceConfirm: boolean;
+ /** 是否确认覆盖 */
+ replaceConfirm: boolean;
}
/** 报告保存错误类型 */
@@ -64,12 +64,12 @@ export type ReportMgrSaveErrorType = "ioError" | "invalidWorkspaceUri" | "needRe
/** 报告保存错误信息 */
export interface ReportMgrSaveError {
- /** 报告保存参数,ReportMgrSaveParams */
- saveParams: ReportMgrSaveParams;
+ /** 报告保存参数,ReportMgrSaveParams */
+ saveParams: ReportMgrSaveParams;
- /** 错误原因 */
- reason: ReportMgrSaveErrorType;
+ /** 错误原因 */
+ reason: ReportMgrSaveErrorType;
- /** 是否可重试 */
- retry: boolean;
+ /** 是否可重试 */
+ retry: boolean;
}
diff --git a/common/src/types/request.ts b/common/src/types/request.ts
index 4ead659..4678e14 100644
--- a/common/src/types/request.ts
+++ b/common/src/types/request.ts
@@ -17,6 +17,6 @@
/** LSP 请求/响应 ID 定义 */
export class LSPRequestID {
- /** 报告管理:获取报告规则信息 */
- public static reportMgrGetRuleInfo = "rvCodingAsst.reportManager.getRuleInfo";
+ /** 报告管理:获取报告规则信息 */
+ public static reportMgrGetRuleInfo = "rvCodingAsst.reportManager.getRuleInfo";
}
diff --git a/common/src/types/wikiView.ts b/common/src/types/wikiView.ts
index 7a4e8e4..56c1095 100644
--- a/common/src/types/wikiView.ts
+++ b/common/src/types/wikiView.ts
@@ -17,28 +17,28 @@
/** WikiView 加载完毕消息 */
export interface WikiViewLoadedMsg {
- /** type */
- type: "WikiViewLoadedMsg";
+ /** type */
+ type: "WikiViewLoadedMsg";
}
/** WikiView 加载 Markdown 内容消息 */
export interface WikiViewApplyMarkdownMsg {
- /** type */
- type: "WikiViewApplyMarkdownMsg";
+ /** type */
+ type: "WikiViewApplyMarkdownMsg";
- /** Markdown content */
- content: string;
+ /** Markdown content */
+ content: string;
}
/** WikiView 消息类型检查辅助类 */
export class WikiViewMsgUtil {
- /** 判断是否为 WikiView 加载完毕消息 */
- public static isLoadedMsg(msg: any): msg is WikiViewLoadedMsg {
- return msg.type === "WikiViewLoadedMsg";
- }
+ /** 判断是否为 WikiView 加载完毕消息 */
+ public static isLoadedMsg(msg: any): msg is WikiViewLoadedMsg {
+ return msg.type === "WikiViewLoadedMsg";
+ }
- /** 判断是否为 WikiView 加载 Markdown 内容消息 */
- public static isApplyMarkdownMsg(msg: any): msg is WikiViewApplyMarkdownMsg {
- return msg.type === "WikiViewApplyMarkdownMsg";
- }
+ /** 判断是否为 WikiView 加载 Markdown 内容消息 */
+ public static isApplyMarkdownMsg(msg: any): msg is WikiViewApplyMarkdownMsg {
+ return msg.type === "WikiViewApplyMarkdownMsg";
+ }
}
diff --git a/common/src/utils/sourceRangeUtils.ts b/common/src/utils/sourceRangeUtils.ts
index 75d9236..ec6c752 100644
--- a/common/src/utils/sourceRangeUtils.ts
+++ b/common/src/utils/sourceRangeUtils.ts
@@ -19,109 +19,109 @@ import * as LSPTypes from "vscode-languageserver-types";
import { SourceRange } from "../types/report";
export class SourceRangeUtils {
- public static unify(range: SourceRange) {
- if (range._unified) {
- return range;
- }
- return {
- lineFrom: range.lineFrom,
- colFrom: range.colFrom !== undefined ? range.colFrom : 0,
- lineUpto: range.lineUpto !== undefined ? range.lineUpto : range.lineFrom,
- colUpto: range.colUpto !== undefined ? range.colUpto : Infinity,
- _unified: true,
- };
+ public static unify(range: SourceRange) {
+ if (range._unified) {
+ return range;
}
+ return {
+ lineFrom: range.lineFrom,
+ colFrom: range.colFrom !== undefined ? range.colFrom : 0,
+ lineUpto: range.lineUpto !== undefined ? range.lineUpto : range.lineFrom,
+ colUpto: range.colUpto !== undefined ? range.colUpto : Infinity,
+ _unified: true,
+ };
+ }
- public static isPrev(baseRange: SourceRange, range: SourceRange) {
- baseRange = this.unify(baseRange);
- range = this.unify(range);
+ public static isPrev(baseRange: SourceRange, range: SourceRange) {
+ baseRange = this.unify(baseRange);
+ range = this.unify(range);
- if (range.lineUpto! < baseRange.lineFrom) {
- return true;
- } else if (range.lineUpto === baseRange.lineFrom) {
- if (range.colUpto! <= baseRange.colFrom!) {
- return true;
- }
- }
- return false;
+ if (range.lineUpto! < baseRange.lineFrom) {
+ return true;
+ } else if (range.lineUpto === baseRange.lineFrom) {
+ if (range.colUpto! <= baseRange.colFrom!) {
+ return true;
+ }
}
+ return false;
+ }
- public static isAfter(baseRange: SourceRange, range: SourceRange) {
- baseRange = this.unify(baseRange);
- range = this.unify(range);
+ public static isAfter(baseRange: SourceRange, range: SourceRange) {
+ baseRange = this.unify(baseRange);
+ range = this.unify(range);
- if (range.lineFrom > baseRange.lineUpto!) {
- return true;
- } else if (range.lineFrom === baseRange.lineUpto) {
- if (range.colFrom! >= baseRange.colUpto!) {
- return true;
- }
- }
- return false;
+ if (range.lineFrom > baseRange.lineUpto!) {
+ return true;
+ } else if (range.lineFrom === baseRange.lineUpto) {
+ if (range.colFrom! >= baseRange.colUpto!) {
+ return true;
+ }
}
+ return false;
+ }
- public static getIntersect(
- baseRange: SourceRange,
- range: SourceRange,
- ignoreFilePath?: boolean
- ): SourceRange | undefined {
- if (!ignoreFilePath && baseRange.filePath !== range.filePath) {
- return undefined;
- }
-
- const maxLineFrom = Math.max(baseRange.lineFrom, range.lineFrom);
- const minLineUpto = Math.min(baseRange.lineUpto || maxLineFrom, range.lineUpto || maxLineFrom);
+ public static getIntersect(
+ baseRange: SourceRange,
+ range: SourceRange,
+ ignoreFilePath?: boolean
+ ): SourceRange | undefined {
+ if (!ignoreFilePath && baseRange.filePath !== range.filePath) {
+ return undefined;
+ }
- if (maxLineFrom > minLineUpto) {
- return undefined;
- }
+ const maxLineFrom = Math.max(baseRange.lineFrom, range.lineFrom);
+ const minLineUpto = Math.min(baseRange.lineUpto || maxLineFrom, range.lineUpto || maxLineFrom);
- let maxColFrom: number | undefined;
- let minColUpto: number | undefined;
+ if (maxLineFrom > minLineUpto) {
+ return undefined;
+ }
- if (maxLineFrom === minLineUpto) {
- maxColFrom = Math.max(baseRange.colFrom || 0, range.colFrom || 0);
- minColUpto = Math.min(baseRange.colUpto || Infinity, range.colUpto || Infinity);
+ let maxColFrom: number | undefined;
+ let minColUpto: number | undefined;
- //if (maxColFrom >= minColUpto) {
- // if (maxColFrom! > minColUpto!) {
- // return undefined;
- // }
- } else {
- maxColFrom = maxLineFrom === baseRange.lineFrom ? baseRange.colFrom : range.colFrom;
- minColUpto = minLineUpto === baseRange.lineUpto ? baseRange.colUpto : range.colUpto;
- }
- // 如果range 在 baseRange 内部, 则列号修改为与 range 列号一致
- if (baseRange.lineUpto! > range.lineUpto!) {
- minColUpto = range.colUpto;
- }
- if (baseRange.lineFrom! < range.lineFrom) {
- maxColFrom = range.colFrom;
- }
+ if (maxLineFrom === minLineUpto) {
+ maxColFrom = Math.max(baseRange.colFrom || 0, range.colFrom || 0);
+ minColUpto = Math.min(baseRange.colUpto || Infinity, range.colUpto || Infinity);
- return {
- filePath: baseRange.filePath,
- lineFrom: maxLineFrom,
- colFrom: maxColFrom,
- lineUpto: minLineUpto,
- colUpto: minColUpto,
- };
+ //if (maxColFrom >= minColUpto) {
+ // if (maxColFrom! > minColUpto!) {
+ // return undefined;
+ // }
+ } else {
+ maxColFrom = maxLineFrom === baseRange.lineFrom ? baseRange.colFrom : range.colFrom;
+ minColUpto = minLineUpto === baseRange.lineUpto ? baseRange.colUpto : range.colUpto;
}
-
- public static fromLSPRange(range: LSPTypes.Range) {
- return {
- lineFrom: range.start.line + 1,
- colFrom: range.start.character,
- lineUpto: range.end.line + 1,
- colUpto: range.end.character,
- };
+ // 如果range 在 baseRange 内部, 则列号修改为与 range 列号一致
+ if (baseRange.lineUpto! > range.lineUpto!) {
+ minColUpto = range.colUpto;
}
-
- public static toLSPRange(range: SourceRange) {
- range = this.unify(range);
- return {
- start: { line: range.lineFrom - 1, character: range.colFrom! },
- end: { line: range.lineUpto! - 1, character: range.colUpto! },
- };
+ if (baseRange.lineFrom! < range.lineFrom) {
+ maxColFrom = range.colFrom;
}
+
+ return {
+ filePath: baseRange.filePath,
+ lineFrom: maxLineFrom,
+ colFrom: maxColFrom,
+ lineUpto: minLineUpto,
+ colUpto: minColUpto,
+ };
+ }
+
+ public static fromLSPRange(range: LSPTypes.Range) {
+ return {
+ lineFrom: range.start.line + 1,
+ colFrom: range.start.character,
+ lineUpto: range.end.line + 1,
+ colUpto: range.end.character,
+ };
+ }
+
+ public static toLSPRange(range: SourceRange) {
+ range = this.unify(range);
+ return {
+ start: { line: range.lineFrom - 1, character: range.colFrom! },
+ end: { line: range.lineUpto! - 1, character: range.colUpto! },
+ };
+ }
}
diff --git a/common/tsconfig.json b/common/tsconfig.json
index 51899cd..b0a84f9 100644
--- a/common/tsconfig.json
+++ b/common/tsconfig.json
@@ -1,16 +1,16 @@
{
- "compilerOptions": {
- "composite": true,
- "module": "commonjs",
- "target": "es2020",
- "lib": ["es2020"],
- "outDir": "out",
- "rootDir": "..",
- "sourceMap": true,
- "strict": true,
- "noImplicitReturns": true,
- "noFallthroughCasesInSwitch": true
- },
- "include": ["src"],
- "exclude": ["node_modules", ".vscode-test"]
+ "compilerOptions": {
+ "composite": true,
+ "module": "commonjs",
+ "target": "es2020",
+ "lib": ["es2020"],
+ "outDir": "out",
+ "rootDir": "..",
+ "sourceMap": true,
+ "strict": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["src"],
+ "exclude": ["node_modules", ".vscode-test"]
}
diff --git a/l10n/bundle.l10n.json b/l10n/bundle.l10n.json
index d4bdc05..6580b8b 100644
--- a/l10n/bundle.l10n.json
+++ b/l10n/bundle.l10n.json
@@ -1,65 +1,65 @@
{
- "ARM": "ARM",
- "ARM architecture-related macro": "ARM architecture-related macro",
- "Architecture judgement macro statement block": "Architecture judgement macro statement block",
- "Architecture-related built-in function": "Architecture-related built-in function",
- "Architecture-related built-in macro statement block": "Architecture-related built-in macro statement block",
- "Architecture-related macro in requirements": "Architecture-related macro in requirements",
- "Architecture-related pre-defined macro from compiler": "Architecture-related pre-defined macro from compiler",
- "C/C++": "C/C++",
- "Code Scan Report": "Code Scan Report",
- "Confirm": "Confirm",
- "Failed to load report": "Failed to load report",
- "Failed to load report: {0}: {1}": "Failed to load report: {0}: {1}",
- "Failed to load rule details of {0}{1}": "Failed to load rule details of {0}{1}",
- "Failed to save report": "Failed to save report",
- "Feature is not supported yet": "Feature is not supported yet",
- "File does not exists": "File does not exists",
- "Finished loading code check report! The report was updated at: {0}": "Finished loading code check report! The report was updated at: {0}",
- "Finished loading code check report, but failed to save to workspace. Your operations will be lost if you don't export the report manually after working.": "Finished loading code check report, but failed to save to workspace. Your operations will be lost if you don't export the report manually after working.",
- "Finished saving all {0} workspaces' report cache": "Finished saving all {0} workspaces' report cache",
- "Finished saving report to: {0}": "Finished saving report to: {0}",
- "Format Error": "Format Error",
- "Function multi-versioning": "Function multi-versioning",
- "Inline architecture-related shell script": "Inline architecture-related shell script",
- "Inline assembly": "Inline assembly",
- "Network error": "Network error",
- "No Wiki pages have been opened yet.": "No Wiki pages have been opened yet.",
- "Please choose a workspace for displaying report": "Please choose a workspace for displaying report",
- "Please choose code scanning report file": "Please choose code scanning report file",
- "Please open a folder as workspace before loading report": "Please open a folder as workspace before loading report",
- "Report reloading confirm": "Report reloading confirm",
- "Retry": "Retry",
- "Right-shift operation on signed integer": "Right-shift operation on signed integer",
- "Save": "Save",
- "Save Code Scan Report As...": "Save Code Scan Report As...",
- "Save as...": "Save as...",
- "Suspected ARM architecture-related macro": "Suspected ARM architecture-related macro",
- "Suspected architecture-related enum type": "Suspected architecture-related enum type",
- "Suspected architecture-related macro": "Suspected architecture-related macro",
- "The report for following workspace(s) are failed to save\n": "The report for following workspace(s) are failed to save\n",
- "The workspace already contains report data! Would you like to override it?": "The workspace already contains report data! Would you like to override it?",
- "Unknown reason": "Unknown reason",
- "X86": "X86",
- "X86 architecture-specified macro": "X86 architecture-specified macro",
- "X86 architecture-specified system call": "X86 architecture-specified system call",
- "architecture judgment macro": "architecture judgment macro",
- "assembly": "assembly",
- "bit operation": "bit operation",
- "built-in": "built-in",
- "compiler": "compiler",
- "enum": "enum",
- "function": "function",
- "ifarch": "ifarch",
- "ifnarch": "ifnarch",
- "implement-defined behavior": "implement-defined behavior",
- "keyword": "keyword",
- "macro": "macro",
- "multi-versioning": "multi-versioning",
- "requirement": "requirement",
- "rpmbuild": "rpmbuild",
- "rpmspec": "rpmspec",
- "shifting": "shifting",
- "signed integer": "signed integer",
- "system call": "system call"
+ "ARM": "ARM",
+ "ARM architecture-related macro": "ARM architecture-related macro",
+ "Architecture judgement macro statement block": "Architecture judgement macro statement block",
+ "Architecture-related built-in function": "Architecture-related built-in function",
+ "Architecture-related built-in macro statement block": "Architecture-related built-in macro statement block",
+ "Architecture-related macro in requirements": "Architecture-related macro in requirements",
+ "Architecture-related pre-defined macro from compiler": "Architecture-related pre-defined macro from compiler",
+ "C/C++": "C/C++",
+ "Code Scan Report": "Code Scan Report",
+ "Confirm": "Confirm",
+ "Failed to load report": "Failed to load report",
+ "Failed to load report: {0}: {1}": "Failed to load report: {0}: {1}",
+ "Failed to load rule details of {0}{1}": "Failed to load rule details of {0}{1}",
+ "Failed to save report": "Failed to save report",
+ "Feature is not supported yet": "Feature is not supported yet",
+ "File does not exists": "File does not exists",
+ "Finished loading code check report! The report was updated at: {0}": "Finished loading code check report! The report was updated at: {0}",
+ "Finished loading code check report, but failed to save to workspace. Your operations will be lost if you don't export the report manually after working.": "Finished loading code check report, but failed to save to workspace. Your operations will be lost if you don't export the report manually after working.",
+ "Finished saving all {0} workspaces' report cache": "Finished saving all {0} workspaces' report cache",
+ "Finished saving report to: {0}": "Finished saving report to: {0}",
+ "Format Error": "Format Error",
+ "Function multi-versioning": "Function multi-versioning",
+ "Inline architecture-related shell script": "Inline architecture-related shell script",
+ "Inline assembly": "Inline assembly",
+ "Network error": "Network error",
+ "No Wiki pages have been opened yet.": "No Wiki pages have been opened yet.",
+ "Please choose a workspace for displaying report": "Please choose a workspace for displaying report",
+ "Please choose code scanning report file": "Please choose code scanning report file",
+ "Please open a folder as workspace before loading report": "Please open a folder as workspace before loading report",
+ "Report reloading confirm": "Report reloading confirm",
+ "Retry": "Retry",
+ "Right-shift operation on signed integer": "Right-shift operation on signed integer",
+ "Save": "Save",
+ "Save Code Scan Report As...": "Save Code Scan Report As...",
+ "Save as...": "Save as...",
+ "Suspected ARM architecture-related macro": "Suspected ARM architecture-related macro",
+ "Suspected architecture-related enum type": "Suspected architecture-related enum type",
+ "Suspected architecture-related macro": "Suspected architecture-related macro",
+ "The report for following workspace(s) are failed to save\n": "The report for following workspace(s) are failed to save\n",
+ "The workspace already contains report data! Would you like to override it?": "The workspace already contains report data! Would you like to override it?",
+ "Unknown reason": "Unknown reason",
+ "X86": "X86",
+ "X86 architecture-specified macro": "X86 architecture-specified macro",
+ "X86 architecture-specified system call": "X86 architecture-specified system call",
+ "architecture judgment macro": "architecture judgment macro",
+ "assembly": "assembly",
+ "bit operation": "bit operation",
+ "built-in": "built-in",
+ "compiler": "compiler",
+ "enum": "enum",
+ "function": "function",
+ "ifarch": "ifarch",
+ "ifnarch": "ifnarch",
+ "implement-defined behavior": "implement-defined behavior",
+ "keyword": "keyword",
+ "macro": "macro",
+ "multi-versioning": "multi-versioning",
+ "requirement": "requirement",
+ "rpmbuild": "rpmbuild",
+ "rpmspec": "rpmspec",
+ "shifting": "shifting",
+ "signed integer": "signed integer",
+ "system call": "system call"
}
diff --git a/l10n/bundle.l10n.zh-cn.json b/l10n/bundle.l10n.zh-cn.json
index 1d9d4ea..765a5d4 100644
--- a/l10n/bundle.l10n.zh-cn.json
+++ b/l10n/bundle.l10n.zh-cn.json
@@ -1,65 +1,65 @@
{
- "ARM": "ARM",
- "ARM architecture-related macro": "ARM 架构特有宏",
- "Architecture judgement macro statement block": "架构判断宏语句块",
- "Architecture-related built-in function": "架构相关 builtin 函数",
- "Architecture-related built-in macro statement block": "架构相关内置宏语句块",
- "Architecture-related macro in requirements": "依赖项名称出现架构相关内置宏",
- "Architecture-related pre-defined macro from compiler": "编译器架构相关预定义宏",
- "C/C++": "C/C++",
- "Code Scan Report": "代码扫描报告",
- "Confirm": "确认",
- "Failed to load report": "加载报告失败",
- "Failed to load report: {0}: {1}": "加载报告失败: {0}: {1}",
- "Failed to load rule details of {0}{1}": "加载检查规则【{0}{1}】详细信息失败",
- "Failed to save report": "保存报告失败",
- "Feature is not supported yet": "该功能尚未支持",
- "File does not exists": "文件不存在",
- "Finished loading code check report! The report was updated at: {0}": "代码检查报告加载成功!该报告最后修改于:{0}",
- "Finished loading code check report, but failed to save to workspace. Your operations will be lost if you don't export the report manually after working.": "代码扫描报告加载成功,但无法自动保存到工作区。如果您在工作结束时不手动导出报告,您的相关操作可能会丢失。",
- "Finished saving all {0} workspaces' report cache": "已成功缓存 {0} 个工作区上的报告数据",
- "Finished saving report to: {0}": "报告已成功保存到:{0}",
- "Format Error": "文件格式错误",
- "Function multi-versioning": "多版本函数",
- "Inline architecture-related shell script": "内嵌架构相关 Shell 脚本",
- "Inline assembly": "内联汇编",
- "Network error": "网络错误",
- "No Wiki pages have been opened yet.": "目前未打开任何 Wiki 页面。",
- "Please choose a workspace for displaying report": "请选择报告对应的工作区",
- "Please choose code scanning report file": "请选择代码扫描报告文件",
- "Please open a folder as workspace before loading report": "加载报告前请先打开一个工作区",
- "Report reloading confirm": "请确认是否重新加载报告数据",
- "Retry": "重试",
- "Right-shift operation on signed integer": "有符号数的右移运算",
- "Save": "保存",
- "Save Code Scan Report As...": "将代码扫描报告另存为...",
- "Save as...": "将报告另存为...",
- "Suspected ARM architecture-related macro": "疑似 ARM 架构特有宏",
- "Suspected architecture-related enum type": "疑似架构相关枚举类型",
- "Suspected architecture-related macro": "疑似架构相关宏",
- "The report for following workspace(s) are failed to save\n": "以下工作区的报告保存失败:\n",
- "The workspace already contains report data! Would you like to override it?": "工作区已存在报告数据!请确认是否替换?",
- "Unknown reason": "未知原因",
- "X86": "X86",
- "X86 architecture-specified macro": "X86 架构特有宏",
- "X86 architecture-specified system call": "架构特有系统调用",
- "architecture judgment macro": "架构判断宏",
- "assembly": "汇编",
- "bit operation": "位操作",
- "built-in": "built-in",
- "compiler": "编译器",
- "enum": "枚举",
- "function": "函数",
- "ifarch": "ifarch",
- "ifnarch": "ifnarch",
- "implement-defined behavior": "实现定义行为",
- "keyword": "关键词",
- "macro": "宏",
- "multi-versioning": "多版本函数",
- "requirement": "依赖",
- "rpmbuild": "rpmbuild",
- "rpmspec": "rpmspec",
- "shifting": "移位",
- "signed integer": "有符号整数",
- "system call": "系统调用"
+ "ARM": "ARM",
+ "ARM architecture-related macro": "ARM 架构特有宏",
+ "Architecture judgement macro statement block": "架构判断宏语句块",
+ "Architecture-related built-in function": "架构相关 builtin 函数",
+ "Architecture-related built-in macro statement block": "架构相关内置宏语句块",
+ "Architecture-related macro in requirements": "依赖项名称出现架构相关内置宏",
+ "Architecture-related pre-defined macro from compiler": "编译器架构相关预定义宏",
+ "C/C++": "C/C++",
+ "Code Scan Report": "代码扫描报告",
+ "Confirm": "确认",
+ "Failed to load report": "加载报告失败",
+ "Failed to load report: {0}: {1}": "加载报告失败: {0}: {1}",
+ "Failed to load rule details of {0}{1}": "加载检查规则【{0}{1}】详细信息失败",
+ "Failed to save report": "保存报告失败",
+ "Feature is not supported yet": "该功能尚未支持",
+ "File does not exists": "文件不存在",
+ "Finished loading code check report! The report was updated at: {0}": "代码检查报告加载成功!该报告最后修改于:{0}",
+ "Finished loading code check report, but failed to save to workspace. Your operations will be lost if you don't export the report manually after working.": "代码扫描报告加载成功,但无法自动保存到工作区。如果您在工作结束时不手动导出报告,您的相关操作可能会丢失。",
+ "Finished saving all {0} workspaces' report cache": "已成功缓存 {0} 个工作区上的报告数据",
+ "Finished saving report to: {0}": "报告已成功保存到:{0}",
+ "Format Error": "文件格式错误",
+ "Function multi-versioning": "多版本函数",
+ "Inline architecture-related shell script": "内嵌架构相关 Shell 脚本",
+ "Inline assembly": "内联汇编",
+ "Network error": "网络错误",
+ "No Wiki pages have been opened yet.": "目前未打开任何 Wiki 页面。",
+ "Please choose a workspace for displaying report": "请选择报告对应的工作区",
+ "Please choose code scanning report file": "请选择代码扫描报告文件",
+ "Please open a folder as workspace before loading report": "加载报告前请先打开一个工作区",
+ "Report reloading confirm": "请确认是否重新加载报告数据",
+ "Retry": "重试",
+ "Right-shift operation on signed integer": "有符号数的右移运算",
+ "Save": "保存",
+ "Save Code Scan Report As...": "将代码扫描报告另存为...",
+ "Save as...": "将报告另存为...",
+ "Suspected ARM architecture-related macro": "疑似 ARM 架构特有宏",
+ "Suspected architecture-related enum type": "疑似架构相关枚举类型",
+ "Suspected architecture-related macro": "疑似架构相关宏",
+ "The report for following workspace(s) are failed to save\n": "以下工作区的报告保存失败:\n",
+ "The workspace already contains report data! Would you like to override it?": "工作区已存在报告数据!请确认是否替换?",
+ "Unknown reason": "未知原因",
+ "X86": "X86",
+ "X86 architecture-specified macro": "X86 架构特有宏",
+ "X86 architecture-specified system call": "架构特有系统调用",
+ "architecture judgment macro": "架构判断宏",
+ "assembly": "汇编",
+ "bit operation": "位操作",
+ "built-in": "built-in",
+ "compiler": "编译器",
+ "enum": "枚举",
+ "function": "函数",
+ "ifarch": "ifarch",
+ "ifnarch": "ifnarch",
+ "implement-defined behavior": "实现定义行为",
+ "keyword": "关键词",
+ "macro": "宏",
+ "multi-versioning": "多版本函数",
+ "requirement": "依赖",
+ "rpmbuild": "rpmbuild",
+ "rpmspec": "rpmspec",
+ "shifting": "移位",
+ "signed integer": "有符号整数",
+ "system call": "系统调用"
}
diff --git a/package.nls.json b/package.nls.json
index 92de91a..dcff2a9 100644
--- a/package.nls.json
+++ b/package.nls.json
@@ -1,16 +1,16 @@
{
- "rvCodingAsst.package.description": "Software Porting Tool for RISC-V",
- "rvCodingAsst.config.maxNumberOfProblems": "Controls the maximum number of problems produced by the server.",
- "rvCodingAsst.config.logLevel": "Controls the log level of RVPortingTool.",
- "rvCodingAsst.config.trace.server": "Set to trace to log the communication between VS Code and the language server.",
- "rvCodingAsst.command.reportManager.loadFromFile": "RVPortingTool: Load Code Check Report",
- "rvCodingAsst.command.reportManager.saveAllReportsCache": "RVPortingTool: Save All Reports Cache to Workspace",
- "rvCodingAsst.command.reportManager.exportReport": "RVPortingTool: Export report to file",
- "rvCodingAsst.command.wikiHelper.openRule": "RVPortingTool: Open Rule Definition in Wiki",
- "rvCodingAsst.viewContainers.panel.title": "RVPortingTool",
- "rvCodingAsst.viewContainers.activitybar.title": "RVPortingTool",
- "rvCodingAsst.view.wiki.name": "RV Porting Wiki",
- "rvCodingAsst.view.wiki.contextualTitle": "RVPortingTool",
- "rvCodingAsst.view.suggestion.name": "Suggestion",
- "rvCodingAsst.view.suggestion.contextualTitle": "RVPortingTool"
+ "rvCodingAsst.package.description": "Software Porting Tool for RISC-V",
+ "rvCodingAsst.config.maxNumberOfProblems": "Controls the maximum number of problems produced by the server.",
+ "rvCodingAsst.config.logLevel": "Controls the log level of RVPortingTool.",
+ "rvCodingAsst.config.trace.server": "Set to trace to log the communication between VS Code and the language server.",
+ "rvCodingAsst.command.reportManager.loadFromFile": "RVPortingTool: Load Code Check Report",
+ "rvCodingAsst.command.reportManager.saveAllReportsCache": "RVPortingTool: Save All Reports Cache to Workspace",
+ "rvCodingAsst.command.reportManager.exportReport": "RVPortingTool: Export report to file",
+ "rvCodingAsst.command.wikiHelper.openRule": "RVPortingTool: Open Rule Definition in Wiki",
+ "rvCodingAsst.viewContainers.panel.title": "RVPortingTool",
+ "rvCodingAsst.viewContainers.activitybar.title": "RVPortingTool",
+ "rvCodingAsst.view.wiki.name": "RV Porting Wiki",
+ "rvCodingAsst.view.wiki.contextualTitle": "RVPortingTool",
+ "rvCodingAsst.view.suggestion.name": "Suggestion",
+ "rvCodingAsst.view.suggestion.contextualTitle": "RVPortingTool"
}
diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json
index 8bd4035..385ab17 100644
--- a/package.nls.zh-cn.json
+++ b/package.nls.zh-cn.json
@@ -1,16 +1,16 @@
{
- "rvCodingAsst.package.description": "RISC-V 架构迁移工具",
- "rvCodingAsst.config.maxNumberOfProblems": "问题显示最大数量",
- "rvCodingAsst.config.logLevel": "插件日志级别",
- "rvCodingAsst.config.trace.server": "插件语言服务器日志级别",
- "rvCodingAsst.command.reportManager.loadFromFile": "RVPortingTool: 加载代码扫描报告",
- "rvCodingAsst.command.reportManager.saveAllReportsCache": "RVPortingTool: 保存所有报告 (缓存到工作区)",
- "rvCodingAsst.command.reportManager.exportReport": "RVPortingTool: 导出报告文件",
- "rvCodingAsst.command.wikiHelper.openRule": "RVPortingTool: 在 Wiki 中打开规则定义",
- "rvCodingAsst.viewContainers.panel.title": "RVPortingTool",
- "rvCodingAsst.viewContainers.activitybar.title": "RVPortingTool",
- "rvCodingAsst.view.wiki.name": "迁移知识库",
- "rvCodingAsst.view.wiki.contextualTitle": "RVPortingTool",
- "rvCodingAsst.view.suggestion.name": "修改建议",
- "rvCodingAsst.view.suggestion.contextualTitle": "RVPortingTool"
+ "rvCodingAsst.package.description": "RISC-V 架构迁移工具",
+ "rvCodingAsst.config.maxNumberOfProblems": "问题显示最大数量",
+ "rvCodingAsst.config.logLevel": "插件日志级别",
+ "rvCodingAsst.config.trace.server": "插件语言服务器日志级别",
+ "rvCodingAsst.command.reportManager.loadFromFile": "RVPortingTool: 加载代码扫描报告",
+ "rvCodingAsst.command.reportManager.saveAllReportsCache": "RVPortingTool: 保存所有报告 (缓存到工作区)",
+ "rvCodingAsst.command.reportManager.exportReport": "RVPortingTool: 导出报告文件",
+ "rvCodingAsst.command.wikiHelper.openRule": "RVPortingTool: 在 Wiki 中打开规则定义",
+ "rvCodingAsst.viewContainers.panel.title": "RVPortingTool",
+ "rvCodingAsst.viewContainers.activitybar.title": "RVPortingTool",
+ "rvCodingAsst.view.wiki.name": "迁移知识库",
+ "rvCodingAsst.view.wiki.contextualTitle": "RVPortingTool",
+ "rvCodingAsst.view.suggestion.name": "修改建议",
+ "rvCodingAsst.view.suggestion.contextualTitle": "RVPortingTool"
}
diff --git a/server/package.json b/server/package.json
index 922bb52..5f7f5cc 100644
--- a/server/package.json
+++ b/server/package.json
@@ -1,25 +1,25 @@
{
- "name": "rvportingtool-server",
- "description": "VSCode Language Server Part of Software Porting Tool for RISC-V",
- "author": "tcse-iscas",
- "license": "MulanPSL-2.0",
- "version": "0.0.1",
- "publisher": "tcse-iscas",
- "l10n": "../l10n",
- "engines": {
- "node": "*"
- },
- "dependencies": {
- "ajv": "^8.12.0",
- "mkdirp": "^2.1.5",
- "string-format": "^2.0.0",
- "vscode-languageserver": "^8.1.0",
- "vscode-languageserver-textdocument": "^1.0.8",
- "vscode-uri": "^3.0.7"
- },
- "devDependencies": {
- "@types/vscode": "^1.75.0",
- "@vscode/test-electron": "^2.1.2",
- "vscode-languageserver-types": "^3.17.3"
- }
+ "name": "rvportingtool-server",
+ "description": "VSCode Language Server Part of Software Porting Tool for RISC-V",
+ "author": "tcse-iscas",
+ "license": "MulanPSL-2.0",
+ "version": "0.0.1",
+ "publisher": "tcse-iscas",
+ "l10n": "../l10n",
+ "engines": {
+ "node": "*"
+ },
+ "dependencies": {
+ "ajv": "^8.12.0",
+ "mkdirp": "^2.1.5",
+ "string-format": "^2.0.0",
+ "vscode-languageserver": "^8.1.0",
+ "vscode-languageserver-textdocument": "^1.0.8",
+ "vscode-uri": "^3.0.7"
+ },
+ "devDependencies": {
+ "@types/vscode": "^1.75.0",
+ "@vscode/test-electron": "^2.1.2",
+ "vscode-languageserver-types": "^3.17.3"
+ }
}
diff --git a/server/src/docCacheManager.ts b/server/src/docCacheManager.ts
index 09c5829..d4d4695 100644
--- a/server/src/docCacheManager.ts
+++ b/server/src/docCacheManager.ts
@@ -23,113 +23,124 @@ import { TextDocumentChangeEvent } from "vscode";
const logger = ServerLogger.getLogger("DocumentsCacheManager");
export class DocumentsCacheManager {
- /** Singleton instance */
- private static _instance: DocumentsCacheManager;
+ /** Singleton instance */
+ private static _instance: DocumentsCacheManager;
- /** Documents Manager */
- private _documents: lsp.TextDocuments;
+ /** Documents Manager */
+ private _documents: lsp.TextDocuments;
- /** Documents Cache Map */
- private _cacheMap: Map;
+ /** Documents Cache Map */
+ private _cacheMap: Map;
- /**
- * Whether use lazy mode or not.
- *
- * In lazy mode, the cache won't update automatically when
- * documents.onDidChangeContent().
- */
- private _isLazy: boolean;
+ /**
+ * Whether use lazy mode or not.
+ *
+ * In lazy mode, the cache won't update automatically when
+ * documents.onDidChangeContent().
+ */
+ private _isLazy: boolean;
- private constructor(documents: lsp.TextDocuments, isLazy?: boolean) {
- this._documents = documents;
- this._cacheMap = new Map();
- this._isLazy = isLazy ? isLazy : false;
- }
+ private constructor(documents: lsp.TextDocuments, isLazy?: boolean) {
+ this._documents = documents;
+ this._cacheMap = new Map();
+ this._isLazy = isLazy ? isLazy : false;
+ }
- public static getInstance() {
- if (!this._instance) {
- const msg = "DocumentsCacheManager has not been initialized yet";
- logger.error(msg);
- throw new Error(msg);
- }
- return this._instance;
+ public static getInstance() {
+ if (!this._instance) {
+ const msg = "DocumentsCacheManager has not been initialized yet";
+ logger.error(msg);
+ throw new Error(msg);
}
+ return this._instance;
+ }
- public static init(documents: lsp.TextDocuments, isLazy?: boolean) {
- this._instance = new DocumentsCacheManager(documents, isLazy);
- documents.onDidOpen((e) => {
- this._instance.update(e.document.uri);
- });
- documents.onDidClose((e) => {
- this._instance.remove(e.document.uri);
- });
- documents.onDidSave((e) => {
- this._instance.update(e.document.uri);
- });
- if (!isLazy) {
- documents.onDidChangeContent((e) => {
- this._instance.update(e.document.uri);
- });
- }
- logger.debug("init: finished, isLazy = ".concat(this._instance._isLazy.toString()));
- return this._instance;
+ public static init(documents: lsp.TextDocuments, isLazy?: boolean) {
+ this._instance = new DocumentsCacheManager(documents, isLazy);
+ documents.onDidOpen((e) => {
+ this._instance.update(e.document.uri);
+ });
+ documents.onDidClose((e) => {
+ this._instance.remove(e.document.uri);
+ });
+ documents.onDidSave((e) => {
+ this._instance.update(e.document.uri);
+ });
+ if (!isLazy) {
+ documents.onDidChangeContent((e) => {
+ this._instance.update(e.document.uri);
+ });
}
+ logger.debug("init: finished, isLazy = ".concat(this._instance._isLazy.toString()));
+ return this._instance;
+ }
- public get(docUri: string) {
- docUri = docUri.toString();
- return this._cacheMap.get(docUri.toString());
- }
+ public get(docUri: string) {
+ docUri = docUri.toString();
+ return this._cacheMap.get(docUri.toString());
+ }
- public clone(docOrDocUri: string | TextDocument) {
- let document: TextDocument | undefined;
- if (typeof docOrDocUri === "string" || docOrDocUri.uri === undefined) {
- const docUri = docOrDocUri.toString();
- document = this._documents.get(docUri);
- if (!document) {
- return;
- }
- } else {
- document = docOrDocUri;
- }
- return TextDocument.create(document.uri, document.languageId, document.version, document.getText());
+ public clone(docOrDocUri: string | TextDocument) {
+ let document: TextDocument | undefined;
+ if (typeof docOrDocUri === "string" || docOrDocUri.uri === undefined) {
+ const docUri = docOrDocUri.toString();
+ document = this._documents.get(docUri);
+ if (!document) {
+ return;
+ }
+ } else {
+ document = docOrDocUri;
}
+ return TextDocument.create(
+ document.uri,
+ document.languageId,
+ document.version,
+ document.getText()
+ );
+ }
- public update(docUri: string, updEvent?: TextDocumentContentChangeEvent | TextDocumentContentChangeEvent[]) {
- docUri = docUri.toString();
- let doc = this._cacheMap.get(docUri);
- if (!doc) {
- doc = this.clone(docUri);
- if (!doc) {
- return;
- }
- this._cacheMap.set(docUri, doc);
- logger.debug("update: created: ".concat(docUri));
- } else {
- const document = this._documents.get(docUri);
- if (!document) {
- return;
- }
- let updEvents: TextDocumentContentChangeEvent[];
- if (updEvent) {
- updEvents = Array.isArray(updEvent) ? updEvent : [updEvent];
- } else {
- updEvents = [
- {
- range: { start: { line: 0, character: 0 }, end: { line: doc.lineCount + 1, character: 0 } },
- text: document.getText(),
- },
- ];
- }
- TextDocument.update(doc, updEvents, document.version);
- logger.debug("update: updated: ".concat(docUri));
- }
+ public update(
+ docUri: string,
+ updEvent?: TextDocumentContentChangeEvent | TextDocumentContentChangeEvent[]
+ ) {
+ docUri = docUri.toString();
+ let doc = this._cacheMap.get(docUri);
+ if (!doc) {
+ doc = this.clone(docUri);
+ if (!doc) {
+ return;
+ }
+ this._cacheMap.set(docUri, doc);
+ logger.debug("update: created: ".concat(docUri));
+ } else {
+ const document = this._documents.get(docUri);
+ if (!document) {
+ return;
+ }
+ let updEvents: TextDocumentContentChangeEvent[];
+ if (updEvent) {
+ updEvents = Array.isArray(updEvent) ? updEvent : [updEvent];
+ } else {
+ updEvents = [
+ {
+ range: {
+ start: { line: 0, character: 0 },
+ end: { line: doc.lineCount + 1, character: 0 },
+ },
+ text: document.getText(),
+ },
+ ];
+ }
+ TextDocument.update(doc, updEvents, document.version);
+ logger.debug("update: updated: ".concat(docUri));
}
+ }
- public remove(docUri: string) {
- docUri = docUri.toString();
- // Remove text cache
- if (this._cacheMap.has(docUri)) {
- this._cacheMap.delete(docUri);
- }
+ public remove(docUri: string) {
+ docUri = docUri.toString();
+ // Remove text cache
+ if (this._cacheMap.has(docUri)) {
+ this._cacheMap.delete(docUri);
}
+ }
}
diff --git a/server/src/docSettingManager.ts b/server/src/docSettingManager.ts
index 2d56b72..01369ad 100644
--- a/server/src/docSettingManager.ts
+++ b/server/src/docSettingManager.ts
@@ -29,127 +29,127 @@ const logger = ServerLogger.getLogger("documentsSettingManager");
* @template T Configuration class
*/
export class DocumentsSettingManager {
- /** Single instance of DocumentsSettingManager */
- private static _instance: DocumentsSettingManager;
+ /** Single instance of DocumentsSettingManager */
+ private static _instance: DocumentsSettingManager;
- /** Setting section name */
- private _sectionName: string;
+ /** Setting section name */
+ private _sectionName: string;
- /** Global settings (with default values) */
- private _globalSettings: T;
+ /** Global settings (with default values) */
+ private _globalSettings: T;
- /** Language Server Connection */
- private _connection: lsp.Connection;
+ /** Language Server Connection */
+ private _connection: lsp.Connection;
- /** Language Server Documents Manager */
- private _documents: lsp.TextDocuments;
+ /** Language Server Documents Manager */
+ private _documents: lsp.TextDocuments;
- /** Language Client Capabilities */
- private _clientCapabilities: ClientCapabilities;
+ /** Language Client Capabilities */
+ private _clientCapabilities: ClientCapabilities;
- /** Documents Setting Map */
- private _documentsSetting: Map>;
+ /** Documents Setting Map */
+ private _documentsSetting: Map>;
- /**
- * Constructor
- *
- * @param connection Language Server Connection
- * @param documents Language Server Documents Manager
- * @param clientCapabilities Client Capabilities
- */
- private constructor(
- connection: lsp.Connection,
- documents: lsp.TextDocuments,
- clientCapabilities: ClientCapabilities,
- sectionName: string,
- defaultSettings: T
- ) {
- this._connection = connection;
- this._documents = documents;
- this._clientCapabilities = clientCapabilities;
- this._sectionName = sectionName;
- this._globalSettings = defaultSettings;
- this._documentsSetting = new Map();
+ /**
+ * Constructor
+ *
+ * @param connection Language Server Connection
+ * @param documents Language Server Documents Manager
+ * @param clientCapabilities Client Capabilities
+ */
+ private constructor(
+ connection: lsp.Connection,
+ documents: lsp.TextDocuments,
+ clientCapabilities: ClientCapabilities,
+ sectionName: string,
+ defaultSettings: T
+ ) {
+ this._connection = connection;
+ this._documents = documents;
+ this._clientCapabilities = clientCapabilities;
+ this._sectionName = sectionName;
+ this._globalSettings = defaultSettings;
+ this._documentsSetting = new Map();
- // Register onDidClose handler
- this._documents.onDidClose((e) => {
- this.removeDocumentSettings(e.document.uri);
- });
- }
+ // Register onDidClose handler
+ this._documents.onDidClose((e) => {
+ this.removeDocumentSettings(e.document.uri);
+ });
+ }
- /**
- * Initialize Documents Setting Manager Single Instance
- *
- * @param connection Language Server Connection
- * @param documents Language Server Text Documents Manager
- * @param clientCapabilities Language Client Capabilities
- * @param sectionName Documents Setting Section Name
- * @param defaultSettings Default Settings
- * @return Documents Setting Manager
- */
- public static init(
- connection: lsp.Connection,
- documents: lsp.TextDocuments,
- clientCapabilities: ClientCapabilities,
- sectionName: string,
- defaultSettings: T
- ): DocumentsSettingManager {
- this._instance = new DocumentsSettingManager(
- connection,
- documents,
- clientCapabilities,
- sectionName,
- defaultSettings
- );
- logger.debug("init: finished");
- return this._instance;
- }
+ /**
+ * Initialize Documents Setting Manager Single Instance
+ *
+ * @param connection Language Server Connection
+ * @param documents Language Server Text Documents Manager
+ * @param clientCapabilities Language Client Capabilities
+ * @param sectionName Documents Setting Section Name
+ * @param defaultSettings Default Settings
+ * @return Documents Setting Manager
+ */
+ public static init(
+ connection: lsp.Connection,
+ documents: lsp.TextDocuments,
+ clientCapabilities: ClientCapabilities,
+ sectionName: string,
+ defaultSettings: T
+ ): DocumentsSettingManager {
+ this._instance = new DocumentsSettingManager(
+ connection,
+ documents,
+ clientCapabilities,
+ sectionName,
+ defaultSettings
+ );
+ logger.debug("init: finished");
+ return this._instance;
+ }
- /**
- * Get Documents Setting Manager Single Instance
- *
- * @param connection Language Server Connection
- * @param documents Language Server Text Documents Manager
- * @return Documents Setting Manager
- */
- public static getInstance(): DocumentsSettingManager {
- if (!this._instance) {
- const msg = "DocumentsSettingManager has not been initialized yet";
- logger.error(msg);
- throw new Error(msg);
- }
- return >this._instance;
+ /**
+ * Get Documents Setting Manager Single Instance
+ *
+ * @param connection Language Server Connection
+ * @param documents Language Server Text Documents Manager
+ * @return Documents Setting Manager
+ */
+ public static getInstance(): DocumentsSettingManager {
+ if (!this._instance) {
+ const msg = "DocumentsSettingManager has not been initialized yet";
+ logger.error(msg);
+ throw new Error(msg);
}
+ return >this._instance;
+ }
- /**
- * Get Plugin Settings by Document URI
- *
- * @param docUri
- * @returns
- */
- public getDocumentSettings(docUri: string): Thenable {
- if (!this._clientCapabilities.hasConfigurationCapability) {
- return Promise.resolve(this._globalSettings);
- }
- let result = this._documentsSetting.get(docUri);
- if (!result) {
- result = this._connection.workspace.getConfiguration({
- scopeUri: docUri,
- section: this._sectionName,
- });
- this._documentsSetting.set(docUri, result);
- logger.debug("getDocumentSettings: ".concat(docUri));
- }
- return result;
+ /**
+ * Get Plugin Settings by Document URI
+ *
+ * @param docUri
+ * @returns
+ */
+ public getDocumentSettings(docUri: string): Thenable {
+ if (!this._clientCapabilities.hasConfigurationCapability) {
+ return Promise.resolve(this._globalSettings);
}
-
- /**
- * Remove document settings
- *
- * @param docUri
- */
- public removeDocumentSettings(docUri: string) {
- this._documentsSetting.delete(docUri);
- logger.debug("removeDocumentSettings: removed: ".concat(docUri));
+ let result = this._documentsSetting.get(docUri);
+ if (!result) {
+ result = this._connection.workspace.getConfiguration({
+ scopeUri: docUri,
+ section: this._sectionName,
+ });
+ this._documentsSetting.set(docUri, result);
+ logger.debug("getDocumentSettings: ".concat(docUri));
}
+ return result;
+ }
+
+ /**
+ * Remove document settings
+ *
+ * @param docUri
+ */
+ public removeDocumentSettings(docUri: string) {
+ this._documentsSetting.delete(docUri);
+ logger.debug("removeDocumentSettings: removed: ".concat(docUri));
+ }
}
diff --git a/server/src/reportManager.ts b/server/src/reportManager.ts
index e3e6df7..44f63d5 100644
--- a/server/src/reportManager.ts
+++ b/server/src/reportManager.ts
@@ -20,7 +20,11 @@ import * as fs from "fs";
import mkdirp from "mkdirp";
import { IReport } from "../../common/src/types/report";
import { ReportMeta } from "./types/reportMeta";
-import { ReportMgrLoadError, ReportMgrLoadErrorType, ReportMgrSaveError } from "../../common/src/types/reportManager";
+import {
+ ReportMgrLoadError,
+ ReportMgrLoadErrorType,
+ ReportMgrSaveError,
+} from "../../common/src/types/reportManager";
import { ReportMgrLoadParams, ReportMgrSaveParams } from "../../common/src/types/reportManager";
import { ServerLogger } from "./utils/log";
import { TextDocChangeParams, updateReportByTextDocumentChange } from "./reportTransformer";
@@ -110,9 +114,13 @@ export class ReportManager {
retry: false,
};
}
- logger.info(strFormat("loadReport: discarded current report in [{0}]", workspaceUri.toString()));
+ logger.info(
+ strFormat("loadReport: discarded current report in [{0}]", workspaceUri.toString())
+ );
} else {
- logger.warn(strFormat("loadReport: Loaded report for [{0}], but saveCacheError", workspaceUri));
+ logger.warn(
+ strFormat("loadReport: Loaded report for [{0}], but saveCacheError", workspaceUri)
+ );
return {
loadParams: params,
reason: "saveCacheError",
@@ -120,7 +128,11 @@ export class ReportManager {
};
}
logger.info(
- strFormat("Loaded report for [{0}], lastUpdTimestamp = {1}", workspaceUri, reportObj.timestamp.toString())
+ strFormat(
+ "Loaded report for [{0}], lastUpdTimestamp = {1}",
+ workspaceUri,
+ reportObj.timestamp.toString()
+ )
);
return reportObj;
}
@@ -182,7 +194,11 @@ export class ReportManager {
*/
public static isReport(res: any): res is IReport {
const report = res as IReport;
- return Array.isArray(report.problems) && typeof report.version === "number" && typeof report.timestamp === "number";
+ return (
+ Array.isArray(report.problems) &&
+ typeof report.version === "number" &&
+ typeof report.timestamp === "number"
+ );
}
/**
@@ -190,7 +206,10 @@ export class ReportManager {
*
* @param params 报告保存参数
*/
- public saveReport(params: ReportMgrSaveParams, reportMeta?: ReportMeta): ReportMgrSaveError | undefined {
+ public saveReport(
+ params: ReportMgrSaveParams,
+ reportMeta?: ReportMeta
+ ): ReportMgrSaveError | undefined {
const reportPath = URI.parse(params.reportUri).fsPath;
const dirPath = path.dirname(reportPath);
if (!reportMeta) {
@@ -205,7 +224,9 @@ export class ReportManager {
}
}
if (fs.existsSync(reportPath) && !params.replaceConfirm) {
- logger.warn("saveReport: target file exists, waiting for replace confirm: ".concat(reportPath));
+ logger.warn(
+ "saveReport: target file exists, waiting for replace confirm: ".concat(reportPath)
+ );
return {
saveParams: params,
reason: "needReplaceConfirm",
@@ -269,7 +290,9 @@ export class ReportManager {
if (currentMeta) {
const res = this.saveReportCache(currentMeta);
if (res) {
- logger.info(strFormat("unloadReport: ReportMgrSaveError ({0}): {1}", res.reason, workspaceUri));
+ logger.info(
+ strFormat("unloadReport: ReportMgrSaveError ({0}): {1}", res.reason, workspaceUri)
+ );
return res;
}
this._reportMetaMap.delete(workspaceUri);
@@ -320,7 +343,10 @@ export class ReportManager {
* @param workspaceUri 工作区路径
* @param reportData 报告数据
*/
- private checkAndSaveNewerReport(workspaceUri: string, reportData: IReport): ReportMgrSaveError | boolean {
+ private checkAndSaveNewerReport(
+ workspaceUri: string,
+ reportData: IReport
+ ): ReportMgrSaveError | boolean {
let currReportMeta = this.getReportMeta(workspaceUri);
if (currReportMeta && currReportMeta.lastUpdTimestamp > reportData.timestamp) {
// 报告比当前已有的报告旧
@@ -362,7 +388,9 @@ export class ReportManager {
} else {
if (!this._reportValidator(reportObj)) {
logger.error(
- "Report schema validation failed! ajv.errors = ".concat(JSON.stringify(this._reportValidator.errors))
+ "Report schema validation failed! ajv.errors = ".concat(
+ JSON.stringify(this._reportValidator.errors)
+ )
);
return "formatError";
}
diff --git a/server/src/reportManagerServer.ts b/server/src/reportManagerServer.ts
index 3c86b3c..d27e1f4 100644
--- a/server/src/reportManagerServer.ts
+++ b/server/src/reportManagerServer.ts
@@ -22,7 +22,11 @@ import { DocumentsSettingManager } from "./docSettingManager";
import { LSPNotificationID } from "../../common/src/types/notification";
import { refreshDocumentDiagnostics as refreshDocumentDiagnostics } from "./reportToDiagnostic";
import { ReportManager } from "./reportManager";
-import { ReportMgrLoadParams, ReportMgrSaveError, ReportMgrSaveParams } from "../../common/src/types/reportManager";
+import {
+ ReportMgrLoadParams,
+ ReportMgrSaveError,
+ ReportMgrSaveParams,
+} from "../../common/src/types/reportManager";
import { RVCodingAsstConfig } from "../../common/src/types/extConfig";
import { ServerLogger } from "./utils/log";
import { TextDocChangeParams } from "./reportTransformer";
@@ -160,7 +164,9 @@ export class ReportManagerServer {
* @param data 工作区文件夹和报告文件路径
*/
public onLoadNotification(data: ReportMgrLoadParams) {
- logger.info(strFormat("Loading into workspace folder [{0}]: {1}", data.workspaceUri, data.reportUri));
+ logger.info(
+ strFormat("Loading into workspace folder [{0}]: {1}", data.workspaceUri, data.reportUri)
+ );
// 检查当前是否已有报告
if (!data.reloadConfirm && this._reportManager.getReport(data.workspaceUri)) {
@@ -182,7 +188,9 @@ export class ReportManagerServer {
// 刷新诊断信息
this.refreshDiagnostics();
} else {
- logger.error(strFormat("onLoadNotification: Load failed ({0}): {1}", res.reason, data.reportUri));
+ logger.error(
+ strFormat("onLoadNotification: Load failed ({0}): {1}", res.reason, data.reportUri)
+ );
this._connection.sendNotification(LSPNotificationID.reportMgrLoadError, res);
}
}
@@ -259,7 +267,10 @@ export class ReportManagerServer {
if (failedArr.length > 0) {
this._connection.sendNotification(LSPNotificationID.reportMgrSaveError, failedArr);
} else if (workspaces && workspaces.length > 0) {
- this._connection.sendNotification(LSPNotificationID.reportMgrSaveCacheAllFinished, workspaces.length);
+ this._connection.sendNotification(
+ LSPNotificationID.reportMgrSaveCacheAllFinished,
+ workspaces.length
+ );
}
});
}
@@ -296,7 +307,9 @@ export class ReportManagerServer {
if (textDocument === undefined) {
const docUris = this._documents.all();
if (docUris.length > 0) {
- logger.info(strFormat("refreshDiagnostics: refreshing on all {0} files", docUris.length.toString()));
+ logger.info(
+ strFormat("refreshDiagnostics: refreshing on all {0} files", docUris.length.toString())
+ );
docUris.forEach((doc) => this.refreshDiagnostics(doc));
}
return;
@@ -306,7 +319,8 @@ export class ReportManagerServer {
if (!reportMeta) {
return;
}
- const settings = await DocumentsSettingManager.getInstance().getDocumentSettings(docUri);
+ const settings =
+ await DocumentsSettingManager.getInstance().getDocumentSettings(docUri);
logger.debug(strFormat("refreshDiagnostics: refreshing on: ".concat(docUri)));
// 将报告转换为诊断信息并输出
await refreshDocumentDiagnostics(
diff --git a/server/src/reportToDiagnostic.ts b/server/src/reportToDiagnostic.ts
index e497c17..8e6ae80 100644
--- a/server/src/reportToDiagnostic.ts
+++ b/server/src/reportToDiagnostic.ts
@@ -25,115 +25,117 @@ import { URI } from "vscode-uri";
import path = require("path");
interface RuleInfo {
- desc: string;
- languages: string[];
- tags: string[];
+ desc: string;
+ languages: string[];
+ tags: string[];
}
export interface DiagnosticCodeExternal {
- target: string;
- value: string;
+ target: string;
+ value: string;
}
export type DiagnosticCode = string | number | DiagnosticCodeExternal | undefined;
export async function refreshDocumentDiagnostics(
- connection: lsp.Connection,
- hasDiagRelInfoCapability: boolean,
- extConfig: RVCodingAsstConfig,
- document: TextDoc.TextDocument,
- reportMeta: ReportMeta
+ connection: lsp.Connection,
+ hasDiagRelInfoCapability: boolean,
+ extConfig: RVCodingAsstConfig,
+ document: TextDoc.TextDocument,
+ reportMeta: ReportMeta
) {
- const workspaceUri = reportMeta.workspaceUri;
- const docUri: URI = URI.parse(document.uri);
- const docRelPath = docUri.path.replace(workspaceUri.path, "");
- const workspaceRootPath = workspaceUri.fsPath;
+ const workspaceUri = reportMeta.workspaceUri;
+ const docUri: URI = URI.parse(document.uri);
+ const docRelPath = docUri.path.replace(workspaceUri.path, "");
+ const workspaceRootPath = workspaceUri.fsPath;
- const problems = reportMeta.reportData.problems;
+ const problems = reportMeta.reportData.problems;
- // 所有诊断数据
- const diags: lsp.Diagnostic[] = [];
+ // 所有诊断数据
+ const diags: lsp.Diagnostic[] = [];
- for (let problem of problems) {
- if (problem.type !== "source") {
- // 暂时忽略非源码类问题
- continue;
- }
+ for (let problem of problems) {
+ if (problem.type !== "source") {
+ // 暂时忽略非源码类问题
+ continue;
+ }
- const ruleInfo = await connection.sendRequest(LSPRequestID.reportMgrGetRuleInfo, problem.ruleId);
+ const ruleInfo = (
+ await connection.sendRequest(LSPRequestID.reportMgrGetRuleInfo, problem.ruleId)
+ );
- // 当一个问题包含多个源码区域时,将第一个区域视为主区域,用于创建 mainDiag
- // 其它区域视为 relatedInformation 区域
- let mainDiag: lsp.Diagnostic | undefined = undefined;
- let i = 0;
- // 对于源码级问题,problem.data 每一个元素视为一个诊断
- for (let pbData of problem.data) {
- i++;
- const srcRange = pbData.srcRange;
- if (!srcRange || srcRange.hidden) {
- continue;
- }
- const fileUri = URI.file(path.resolve(workspaceRootPath, srcRange.filePath));
- if (fileUri.toString() !== docUri.toString()) {
- continue;
- }
+ // 当一个问题包含多个源码区域时,将第一个区域视为主区域,用于创建 mainDiag
+ // 其它区域视为 relatedInformation 区域
+ let mainDiag: lsp.Diagnostic | undefined = undefined;
+ let i = 0;
+ // 对于源码级问题,problem.data 每一个元素视为一个诊断
+ for (let pbData of problem.data) {
+ i++;
+ const srcRange = pbData.srcRange;
+ if (!srcRange || srcRange.hidden) {
+ continue;
+ }
+ const fileUri = URI.file(path.resolve(workspaceRootPath, srcRange.filePath));
+ if (fileUri.toString() !== docUri.toString()) {
+ continue;
+ }
- /** 代码文本 */
- const codeText = document.getText({
- start: {
- line: srcRange.lineFrom - 1,
- character: srcRange.colFrom ? srcRange.colFrom : 0,
- },
- end: {
- line: srcRange.lineUpto ? srcRange.lineUpto - 1 : srcRange.lineFrom - 1,
- character: srcRange.colUpto ? srcRange.colUpto : 999999,
- },
- });
+ /** 代码文本 */
+ const codeText = document.getText({
+ start: {
+ line: srcRange.lineFrom - 1,
+ character: srcRange.colFrom ? srcRange.colFrom : 0,
+ },
+ end: {
+ line: srcRange.lineUpto ? srcRange.lineUpto - 1 : srcRange.lineFrom - 1,
+ character: srcRange.colUpto ? srcRange.colUpto : 999999,
+ },
+ });
- /** Language Server Range */
- const lspRange = lsp.Range.create(
- lsp.Position.create(srcRange.lineFrom - 1, srcRange.colFrom ? srcRange.colFrom : 0),
- lsp.Position.create(
- srcRange.lineUpto ? srcRange.lineUpto - 1 : srcRange.lineFrom - 1,
- srcRange.colUpto ? srcRange.colUpto : 999999
- )
- );
+ /** Language Server Range */
+ const lspRange = lsp.Range.create(
+ lsp.Position.create(srcRange.lineFrom - 1, srcRange.colFrom ? srcRange.colFrom : 0),
+ lsp.Position.create(
+ srcRange.lineUpto ? srcRange.lineUpto - 1 : srcRange.lineFrom - 1,
+ srcRange.colUpto ? srcRange.colUpto : 999999
+ )
+ );
- if (mainDiag) {
- mainDiag.relatedInformation!.push(
- lsp.DiagnosticRelatedInformation.create(
- lsp.Location.create(
- URI.file(path.resolve(workspaceRootPath, srcRange.filePath)).toString(),
- lspRange
- ),
- srcRange.comment ? srcRange.comment : "See also:"
- )
- );
- } else if (i === 1) {
- mainDiag = lsp.Diagnostic.create(
- lspRange,
- ruleInfo ? ruleInfo.desc : pbData.desc,
- srcRange.level ? srcRange.level : problem.level,
- ({
- target: "vscode://tcse-iscas.rvportingtool/".concat(
- CommandID.wikiHelperOpenRule,
- "?",
- problem.ruleId
- ),
- value: problem.ruleId,
- }) as string,
- problem.checkerId,
- []
- );
- }
- }
- if (mainDiag) {
- diags.push(mainDiag);
- }
+ if (mainDiag) {
+ mainDiag.relatedInformation!.push(
+ lsp.DiagnosticRelatedInformation.create(
+ lsp.Location.create(
+ URI.file(path.resolve(workspaceRootPath, srcRange.filePath)).toString(),
+ lspRange
+ ),
+ srcRange.comment ? srcRange.comment : "See also:"
+ )
+ );
+ } else if (i === 1) {
+ mainDiag = lsp.Diagnostic.create(
+ lspRange,
+ ruleInfo ? ruleInfo.desc : pbData.desc,
+ srcRange.level ? srcRange.level : problem.level,
+ ({
+ target: "vscode://tcse-iscas.rvportingtool/".concat(
+ CommandID.wikiHelperOpenRule,
+ "?",
+ problem.ruleId
+ ),
+ value: problem.ruleId,
+ }) as string,
+ problem.checkerId,
+ []
+ );
+ }
+ }
+ if (mainDiag) {
+ diags.push(mainDiag);
}
- await connection.sendDiagnostics({
- uri: docUri.toString(),
- version: reportMeta.reportData.version,
- diagnostics: diags,
- });
+ }
+ await connection.sendDiagnostics({
+ uri: docUri.toString(),
+ version: reportMeta.reportData.version,
+ diagnostics: diags,
+ });
}
diff --git a/server/src/reportTransformer.ts b/server/src/reportTransformer.ts
index 1aad124..33335fe 100644
--- a/server/src/reportTransformer.ts
+++ b/server/src/reportTransformer.ts
@@ -24,130 +24,137 @@ import { SourceRange } from "../../common/src/types/report";
import { SourceRangeUtils } from "../../common/src/utils/sourceRangeUtils";
export interface TextDocChangeParams {
- document: TextDoc.TextDocument;
- changes: TextDoc.TextDocumentContentChangeEvent[];
+ document: TextDoc.TextDocument;
+ changes: TextDoc.TextDocumentContentChangeEvent[];
}
const logger = ServerLogger.getLogger("reportTransformer");
-export function updateReportByTextDocumentChange(reportMeta: ReportMeta, params: TextDocChangeParams) {
- const docUri = params.document.uri.toString();
-
- const docCacheManager = DocumentsCacheManager.getInstance();
- const oldDoc = docCacheManager.get(docUri);
- if (oldDoc === undefined) {
- logger.error("Failed to retrieve oldText from DocumentsCacheManager");
- return;
+export function updateReportByTextDocumentChange(
+ reportMeta: ReportMeta,
+ params: TextDocChangeParams
+) {
+ const docUri = params.document.uri.toString();
+
+ const docCacheManager = DocumentsCacheManager.getInstance();
+ const oldDoc = docCacheManager.get(docUri);
+ if (oldDoc === undefined) {
+ logger.error("Failed to retrieve oldText from DocumentsCacheManager");
+ return;
+ }
+ const newDoc = docCacheManager.clone(oldDoc)!;
+ TextDoc.TextDocument.update(newDoc, params.changes, newDoc.version + 1);
+
+ for (let change of params.changes) {
+ const rangeLSP = (change).range;
+ const oldText = oldDoc.getText(rangeLSP);
+ const newText = change.text;
+
+ if (oldText === newText) {
+ return;
}
- const newDoc = docCacheManager.clone(oldDoc)!;
- TextDoc.TextDocument.update(newDoc, params.changes, newDoc.version + 1);
-
- for (let change of params.changes) {
- const rangeLSP = (change).range;
- const oldText = oldDoc.getText(rangeLSP);
- const newText = change.text;
- if (oldText === newText) {
- return;
+ const range = SourceRangeUtils.fromLSPRange(rangeLSP);
+ const oldLines = oldText.split("\n");
+ const newLines = newText.split("\n");
+ logger.debug(oldLines);
+ logger.debug(newLines);
+ logger.debug(range);
+
+ // 综合行数差异
+ const lineDelta = newLines.length - oldLines.length;
+ logger.debug("lineDelta" + lineDelta);
+
+ // 最后一行字数差
+ const oldLastLine = oldLines.length > 0 ? oldLines[oldLines.length - 1] : "";
+ const newLastLine = newLines.length > 0 ? newLines[newLines.length - 1] : "";
+ const lastLineDelta = newLastLine.length - oldLastLine.length;
+
+ // 首行字数差
+ const oldFirstLine = oldLines.length > 0 ? oldLines[0] : "";
+ const newFirstLine = newLines.length > 0 ? newLines[0] : "";
+ const firstLineDelta = newFirstLine.length - oldFirstLine.length;
+
+ for (let problem of reportMeta.reportData.problems) {
+ for (let pbData of problem.data) {
+ if (!pbData.srcRange) {
+ continue;
}
+ const srcRange = pbData.srcRange;
- const range = SourceRangeUtils.fromLSPRange(rangeLSP);
- const oldLines = oldText.split("\n");
- const newLines = newText.split("\n");
- logger.debug(oldLines);
- logger.debug(newLines);
- logger.debug(range);
-
- // 综合行数差异
- const lineDelta = newLines.length - oldLines.length;
- logger.debug("lineDelta" + lineDelta);
-
- // 最后一行字数差
- const oldLastLine = oldLines.length > 0 ? oldLines[oldLines.length - 1] : "";
- const newLastLine = newLines.length > 0 ? newLines[newLines.length - 1] : "";
- const lastLineDelta = newLastLine.length - oldLastLine.length;
-
- // 首行字数差
- const oldFirstLine = oldLines.length > 0 ? oldLines[0] : "";
- const newFirstLine = newLines.length > 0 ? newLines[0] : "";
- const firstLineDelta = newFirstLine.length - oldFirstLine.length;
-
- for (let problem of reportMeta.reportData.problems) {
- for (let pbData of problem.data) {
- if (!pbData.srcRange) {
- continue;
- }
- const srcRange = pbData.srcRange;
-
- // srcRange 位于修改范围之前,无需调整
- if (SourceRangeUtils.isPrev(range, srcRange)) {
- logger.debug("before change");
- continue;
- }
- // srcRange 位于修改范围之后
- if (SourceRangeUtils.isAfter(range, srcRange)) {
- if (range.lineUpto === srcRange.lineFrom) {
- // 与修改范围的结束行有重叠,调整列号
- if (srcRange.colFrom !== undefined) {
- srcRange.colFrom += lastLineDelta;
- }
- if (srcRange.colUpto !== undefined) {
- srcRange.colUpto += lastLineDelta;
- }
- logger.debug("after change");
- }
- // 调整行号
- srcRange.lineFrom += lineDelta;
- if (srcRange.lineUpto !== undefined) {
- srcRange.lineUpto += lineDelta;
- }
- continue;
- }
- // srcRange 与修改内容有交集
- // 先比较内容,若内容无变化则忽略
- const srcRangeLSP = SourceRangeUtils.toLSPRange(srcRange);
- const pOldText = oldDoc.getText();
- const pNewText = newDoc.getText();
-
- logger.debug("srcRange".concat(JSON.stringify(srcRange)));
- if (pOldText === pNewText) {
- continue;
- }
- const interRange = SourceRangeUtils.getIntersect(range, srcRange, true);
- if (interRange !== undefined) {
- // 删除或完全替换
- if (
- interRange.lineFrom === srcRange.lineFrom &&
- interRange.lineUpto === srcRange.lineUpto &&
- interRange.colFrom === srcRange.colFrom &&
- interRange.colUpto === srcRange.colUpto &&
- interRange.colFrom! < interRange.colUpto!
- ) {
- srcRange.hidden = true;
- logger.debug("delete");
- }
-
- // 单行内部修改
- if (interRange.lineFrom === interRange.lineUpto! && srcRange.lineFrom === srcRange.lineUpto) {
- srcRange.colUpto! = srcRange.colFrom! + 1;
- logger.debug("single line change");
- }
-
- // 多行内部修改
- else if (srcRange.lineFrom < srcRange.lineUpto!) {
- srcRange.lineFrom = Math.min(srcRange.lineFrom, range.lineFrom);
- srcRange.lineUpto = srcRange.lineFrom;
- srcRange.colFrom = srcRange.lineFrom > range.lineFrom ? range.colFrom! : srcRange.colFrom;
- srcRange.colUpto = srcRange.colFrom! + 1;
- logger.debug("multi line change");
- }
- }
- logger.debug("interRange ".concat(JSON.stringify(interRange)));
- logger.debug("?");
+ // srcRange 位于修改范围之前,无需调整
+ if (SourceRangeUtils.isPrev(range, srcRange)) {
+ logger.debug("before change");
+ continue;
+ }
+ // srcRange 位于修改范围之后
+ if (SourceRangeUtils.isAfter(range, srcRange)) {
+ if (range.lineUpto === srcRange.lineFrom) {
+ // 与修改范围的结束行有重叠,调整列号
+ if (srcRange.colFrom !== undefined) {
+ srcRange.colFrom += lastLineDelta;
}
+ if (srcRange.colUpto !== undefined) {
+ srcRange.colUpto += lastLineDelta;
+ }
+ logger.debug("after change");
+ }
+ // 调整行号
+ srcRange.lineFrom += lineDelta;
+ if (srcRange.lineUpto !== undefined) {
+ srcRange.lineUpto += lineDelta;
+ }
+ continue;
+ }
+ // srcRange 与修改内容有交集
+ // 先比较内容,若内容无变化则忽略
+ const srcRangeLSP = SourceRangeUtils.toLSPRange(srcRange);
+ const pOldText = oldDoc.getText();
+ const pNewText = newDoc.getText();
+
+ logger.debug("srcRange".concat(JSON.stringify(srcRange)));
+ if (pOldText === pNewText) {
+ continue;
+ }
+ const interRange = SourceRangeUtils.getIntersect(range, srcRange, true);
+ if (interRange !== undefined) {
+ // 删除或完全替换
+ if (
+ interRange.lineFrom === srcRange.lineFrom &&
+ interRange.lineUpto === srcRange.lineUpto &&
+ interRange.colFrom === srcRange.colFrom &&
+ interRange.colUpto === srcRange.colUpto &&
+ interRange.colFrom! < interRange.colUpto!
+ ) {
+ srcRange.hidden = true;
+ logger.debug("delete");
+ }
+
+ // 单行内部修改
+ if (
+ interRange.lineFrom === interRange.lineUpto! &&
+ srcRange.lineFrom === srcRange.lineUpto
+ ) {
+ srcRange.colUpto! = srcRange.colFrom! + 1;
+ logger.debug("single line change");
+ }
+
+ // 多行内部修改
+ else if (srcRange.lineFrom < srcRange.lineUpto!) {
+ srcRange.lineFrom = Math.min(srcRange.lineFrom, range.lineFrom);
+ srcRange.lineUpto = srcRange.lineFrom;
+ srcRange.colFrom =
+ srcRange.lineFrom > range.lineFrom ? range.colFrom! : srcRange.colFrom;
+ srcRange.colUpto = srcRange.colFrom! + 1;
+ logger.debug("multi line change");
+ }
}
+ logger.debug("interRange ".concat(JSON.stringify(interRange)));
+ logger.debug("?");
+ }
}
+ }
- // Update document cache
- docCacheManager.update(docUri, params.changes);
+ // Update document cache
+ docCacheManager.update(docUri, params.changes);
}
diff --git a/server/src/server.ts b/server/src/server.ts
index 9b1e66e..b192974 100644
--- a/server/src/server.ts
+++ b/server/src/server.ts
@@ -38,65 +38,67 @@ const clientCapabilities = new ClientCapabilities();
// 连接建立时,检查 Language Client 能力
connection.onInitialize((params: lsp.InitializeParams) => {
- // Does the client support the `workspace/configuration` request?
- // If not, we fall back using global settings.
- const capabilities = params.capabilities;
- clientCapabilities.hasConfigurationCapability = !!(
- capabilities.workspace && !!capabilities.workspace.configuration
- );
- clientCapabilities.hasWorkspaceFolderCapability = !!(
- capabilities.workspace && !!capabilities.workspace.workspaceFolders
- );
- clientCapabilities.hasDiagnosticCapability = !!(
- capabilities.textDocument && capabilities.textDocument.publishDiagnostics
- );
- clientCapabilities.hasDiagnosticRelatedInformationCapability = !!(
- capabilities.textDocument &&
- capabilities.textDocument.publishDiagnostics &&
- capabilities.textDocument.publishDiagnostics.relatedInformation
- );
+ // Does the client support the `workspace/configuration` request?
+ // If not, we fall back using global settings.
+ const capabilities = params.capabilities;
+ clientCapabilities.hasConfigurationCapability = !!(
+ capabilities.workspace && !!capabilities.workspace.configuration
+ );
+ clientCapabilities.hasWorkspaceFolderCapability = !!(
+ capabilities.workspace && !!capabilities.workspace.workspaceFolders
+ );
+ clientCapabilities.hasDiagnosticCapability = !!(
+ capabilities.textDocument && capabilities.textDocument.publishDiagnostics
+ );
+ clientCapabilities.hasDiagnosticRelatedInformationCapability = !!(
+ capabilities.textDocument &&
+ capabilities.textDocument.publishDiagnostics &&
+ capabilities.textDocument.publishDiagnostics.relatedInformation
+ );
- const result: lsp.InitializeResult = {
- capabilities: {
- textDocumentSync: {
- openClose: true,
- save: true,
- change: lsp.TextDocumentSyncKind.Incremental,
- },
- // Tell the client that this server supports code completion.
- // completionProvider: {
- // resolveProvider: true,
- // },
- },
+ const result: lsp.InitializeResult = {
+ capabilities: {
+ textDocumentSync: {
+ openClose: true,
+ save: true,
+ change: lsp.TextDocumentSyncKind.Incremental,
+ },
+ // Tell the client that this server supports code completion.
+ // completionProvider: {
+ // resolveProvider: true,
+ // },
+ },
+ };
+ if (clientCapabilities.hasWorkspaceFolderCapability) {
+ result.capabilities.workspace = {
+ workspaceFolders: {
+ supported: true,
+ },
};
- if (clientCapabilities.hasWorkspaceFolderCapability) {
- result.capabilities.workspace = {
- workspaceFolders: {
- supported: true,
- },
- };
- }
- return result;
+ }
+ return result;
});
// 连接建立成功后,初始化各模块
connection.onInitialized(() => {
- // 初始化 TextDocument 配置管理器
- DocumentsSettingManager.init(connection, documents, clientCapabilities, "rvportingtool", {
- maxNumberOfProblems: 100,
- logLevel: "info",
- trace: {
- server: "messages",
- },
- });
+ // 初始化 TextDocument 配置管理器
+ DocumentsSettingManager.init(connection, documents, clientCapabilities, "rvportingtool", <
+ RVCodingAsstConfig
+ >{
+ maxNumberOfProblems: 100,
+ logLevel: "info",
+ trace: {
+ server: "messages",
+ },
+ });
- // 初始化 Report Manager Server
- ReportManagerServer.init(connection, documents, clientCapabilities);
+ // 初始化 Report Manager Server
+ ReportManagerServer.init(connection, documents, clientCapabilities);
- // 初始化 Documents Cache Manager
- DocumentsCacheManager.init(documents, true);
+ // 初始化 Documents Cache Manager
+ DocumentsCacheManager.init(documents, true);
- logger.info("Finished initializing Language Server");
+ logger.info("Finished initializing Language Server");
});
// Make the text document manager listen on the connection
diff --git a/server/src/types/clientCapabilities.ts b/server/src/types/clientCapabilities.ts
index e4b7a2b..a069403 100644
--- a/server/src/types/clientCapabilities.ts
+++ b/server/src/types/clientCapabilities.ts
@@ -16,8 +16,8 @@
**************************************************************************************/
export class ClientCapabilities {
- public hasConfigurationCapability = false;
- public hasWorkspaceFolderCapability = false;
- public hasDiagnosticCapability = false;
- public hasDiagnosticRelatedInformationCapability = false;
+ public hasConfigurationCapability = false;
+ public hasWorkspaceFolderCapability = false;
+ public hasDiagnosticCapability = false;
+ public hasDiagnosticRelatedInformationCapability = false;
}
diff --git a/server/src/types/reportMeta.ts b/server/src/types/reportMeta.ts
index 29b6e68..e79a6b6 100644
--- a/server/src/types/reportMeta.ts
+++ b/server/src/types/reportMeta.ts
@@ -21,24 +21,24 @@ import { URI } from "vscode-uri";
/** 代码扫描报告元数据类 */
export class ReportMeta {
- public workspaceUri: URI;
+ public workspaceUri: URI;
- /** 工作区是否可缓存报告 */
- public cacheSavable?: boolean;
+ /** 工作区是否可缓存报告 */
+ public cacheSavable?: boolean;
- /** 代码扫描报告原始数据 */
- public reportData: IReport;
+ /** 代码扫描报告原始数据 */
+ public reportData: IReport;
- /** 代码扫描报告最后更新时间 */
- public lastUpdTimestamp: number;
+ /** 代码扫描报告最后更新时间 */
+ public lastUpdTimestamp: number;
- /** 代码扫描报告最后保存时间,-1 表示未保存过 */
- public lastSaveTimestamp: number;
+ /** 代码扫描报告最后保存时间,-1 表示未保存过 */
+ public lastSaveTimestamp: number;
- constructor(workspaceUri: URI, reportData: IReport) {
- this.workspaceUri = workspaceUri;
- this.reportData = reportData;
- this.lastUpdTimestamp = reportData.timestamp ? reportData.timestamp : new Date().getTime();
- this.lastSaveTimestamp = -1;
- }
+ constructor(workspaceUri: URI, reportData: IReport) {
+ this.workspaceUri = workspaceUri;
+ this.reportData = reportData;
+ this.lastUpdTimestamp = reportData.timestamp ? reportData.timestamp : new Date().getTime();
+ this.lastSaveTimestamp = -1;
+ }
}
diff --git a/server/src/utils/log.ts b/server/src/utils/log.ts
index dce0723..32a497e 100644
--- a/server/src/utils/log.ts
+++ b/server/src/utils/log.ts
@@ -21,95 +21,95 @@ import * as lsp from "vscode-languageserver/node";
export type LogLevel = "trace" | "debug" | "info" | "warn" | "error" | "fatal";
export class ServerLogger {
- private static cachedLoggers: Map;
- private static connection: lsp.Connection;
- private category: string;
+ private static cachedLoggers: Map;
+ private static connection: lsp.Connection;
+ private category: string;
- /**
- * Constructor of Logger
- *
- * @param context VSCode Extension Context
- * @param category Category name
- */
- private constructor(category: string) {
- this.category = category;
- }
+ /**
+ * Constructor of Logger
+ *
+ * @param context VSCode Extension Context
+ * @param category Category name
+ */
+ private constructor(category: string) {
+ this.category = category;
+ }
- /**
- * Initialize Language Server Logger
- *
- * Should be called when initializing language server.
- *
- * @param connection Language Server Connection
- */
- public static init(connection: lsp.Connection) {
- this.connection = connection;
- return this.getLogger();
- }
+ /**
+ * Initialize Language Server Logger
+ *
+ * Should be called when initializing language server.
+ *
+ * @param connection Language Server Connection
+ */
+ public static init(connection: lsp.Connection) {
+ this.connection = connection;
+ return this.getLogger();
+ }
- /**
- * Get or create logger with category name
- *
- * @param category Category name, undefined means main
- */
- public static getLogger(category?: string): ServerLogger {
- category = category ? category : "serverMain";
- if (ServerLogger.cachedLoggers) {
- if (ServerLogger.cachedLoggers.has(category)) {
- return ServerLogger.cachedLoggers.get(category)!;
- }
- } else {
- ServerLogger.cachedLoggers = new Map();
- }
- const logger = new ServerLogger(category);
- ServerLogger.cachedLoggers.set(category, logger);
- return logger;
+ /**
+ * Get or create logger with category name
+ *
+ * @param category Category name, undefined means main
+ */
+ public static getLogger(category?: string): ServerLogger {
+ category = category ? category : "serverMain";
+ if (ServerLogger.cachedLoggers) {
+ if (ServerLogger.cachedLoggers.has(category)) {
+ return ServerLogger.cachedLoggers.get(category)!;
+ }
+ } else {
+ ServerLogger.cachedLoggers = new Map();
}
+ const logger = new ServerLogger(category);
+ ServerLogger.cachedLoggers.set(category, logger);
+ return logger;
+ }
- /**
- * Write a single line log.
- *
- * For ServerLogger, we use connection.sendNotification() to send the log data to client.
- *
- * NOTE: According to the lifecycle of language server connection, sendNotification() will only take place after
- * connection.onInitialized(), otherwise the notification will be dropped, thus the log will be missed.
- *
- * @param level Log level
- * @param message Log message
- */
- public log(level: LogLevel, message: any) {
- if (!ServerLogger.connection) {
- console.error("Logger connection has not been initialized yet!");
- return;
- }
- ServerLogger.connection.sendNotification("writeLog", {
- category: this.category,
- level: level,
- message: message,
- });
+ /**
+ * Write a single line log.
+ *
+ * For ServerLogger, we use connection.sendNotification() to send the log data to client.
+ *
+ * NOTE: According to the lifecycle of language server connection, sendNotification() will only take place after
+ * connection.onInitialized(), otherwise the notification will be dropped, thus the log will be missed.
+ *
+ * @param level Log level
+ * @param message Log message
+ */
+ public log(level: LogLevel, message: any) {
+ if (!ServerLogger.connection) {
+ console.error("Logger connection has not been initialized yet!");
+ return;
}
+ ServerLogger.connection.sendNotification("writeLog", {
+ category: this.category,
+ level: level,
+ message: message,
+ });
+ }
- public trace(message: any) {
- this.log("trace", message);
- }
+ public trace(message: any) {
+ this.log("trace", message);
+ }
- public debug(message: any) {
- this.log("debug", message);
- }
+ public debug(message: any) {
+ this.log("debug", message);
+ }
- public info(message: any) {
- this.log("info", message);
- }
+ public info(message: any) {
+ this.log("info", message);
+ }
- public warn(message: any) {
- this.log("warn", message);
- }
+ public warn(message: any) {
+ this.log("warn", message);
+ }
- public error(message: any) {
- this.log("error", message);
- }
+ public error(message: any) {
+ this.log("error", message);
+ }
- public fatal(message: any) {
- this.log("fatal", message);
- }
+ public fatal(message: any) {
+ this.log("fatal", message);
+ }
}
diff --git a/server/tsconfig.json b/server/tsconfig.json
index b711098..92bb767 100644
--- a/server/tsconfig.json
+++ b/server/tsconfig.json
@@ -1,16 +1,16 @@
{
- "compilerOptions": {
- "composite": true,
- "module": "commonjs",
- "target": "es2020",
- "lib": ["es2020"],
- "outDir": "out",
- "rootDir": "..",
- "sourceMap": true,
- "strict": true,
- "noImplicitReturns": true,
- "noFallthroughCasesInSwitch": true
- },
- "include": ["src", "../common/src"],
- "exclude": ["node_modules", ".vscode-test"]
+ "compilerOptions": {
+ "composite": true,
+ "module": "commonjs",
+ "target": "es2020",
+ "lib": ["es2020"],
+ "outDir": "out",
+ "rootDir": "..",
+ "sourceMap": true,
+ "strict": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "include": ["src", "../common/src"],
+ "exclude": ["node_modules", ".vscode-test"]
}
diff --git a/testRoot/.vscode/settings.json b/testRoot/.vscode/settings.json
index 53f3735..a8c9f23 100644
--- a/testRoot/.vscode/settings.json
+++ b/testRoot/.vscode/settings.json
@@ -1,4 +1,4 @@
{
- "rvportingtool.logLevel": "verbose",
- "rvportingtool.trace.server": "verbose"
+ "rvportingtool.logLevel": "verbose",
+ "rvportingtool.trace.server": "verbose"
}
diff --git a/testRoot/DemoData.json b/testRoot/DemoData.json
index fbf65b4..90acc50 100644
--- a/testRoot/DemoData.json
+++ b/testRoot/DemoData.json
@@ -1,133 +1,133 @@
{
- "problem": [
- {
- "id": "1",
+ "problem": [
+ {
+ "id": "1",
+ "efficient": true,
+ "checker": "checker1",
+ "type": "Source",
+ "rule": "rule1",
+ "ruleId": "ruleId1",
+ "msg": "demo1",
+ "data": {
+ "files": [
+ "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
+ "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/Detector.java"
+ ],
+ "dirs": [
+ "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
+ "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/Detector.java"
+ ],
+ "sources": [
+ {
+ "srcMark": "demo",
"efficient": true,
- "checker": "checker1",
- "type": "Source",
- "rule": "rule1",
- "ruleId": "ruleId1",
- "msg": "demo1",
- "data": {
- "files": [
- "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
- "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/Detector.java"
- ],
- "dirs": [
- "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
- "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/Detector.java"
- ],
- "sources": [
- {
- "srcMark": "demo",
- "efficient": true,
- "grade": 1,
- "srcRange": {
- "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
- "lineBegin": 123,
- "colBegin": 0,
- "lineEnd": 124,
- "colEnd": 999
- }
- },
- {
- "srcMark": "demo",
- "efficient": true,
- "grade": 1,
- "srcRange": {
- "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
- "lineBegin": 127,
- "colBegin": 0,
- "lineEnd": 128,
- "colEnd": 999
- }
- },
- {
- "srcMark": "demo",
- "efficient": true,
- "grade": 2,
- "srcRange": {
- "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
- "lineBegin": 132,
- "colBegin": 0,
- "lineEnd": 133,
- "colEnd": 999
- }
- },
- {
- "srcMark": "demo",
- "efficient": true,
- "grade": 2,
- "srcRange": {
- "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
- "lineBegin": 135,
- "colBegin": 0,
- "lineEnd": 136,
- "colEnd": 999
- }
- },
- {
- "srcMark": "demo",
- "efficient": true,
- "grade": 3,
- "srcRange": {
- "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
- "lineBegin": 138,
- "colBegin": 0,
- "lineEnd": 139,
- "colEnd": 999
- }
- },
- {
- "srcMark": "demo",
- "efficient": true,
- "grade": 3,
- "srcRange": {
- "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
- "lineBegin": 141,
- "colBegin": 0,
- "lineEnd": 142,
- "colEnd": 999
- }
- },
- {
- "srcMark": "demo",
- "efficient": true,
- "grade": 1,
- "srcRange": {
- "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
- "lineBegin": 144,
- "colBegin": 0,
- "lineEnd": 145,
- "colEnd": 999
- }
- },
- {
- "srcMark": "demo",
- "efficient": true,
- "grade": 1,
- "srcRange": {
- "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
- "lineBegin": 147,
- "colBegin": 0,
- "lineEnd": 147,
- "colEnd": 999
- }
- },
- {
- "srcMark": "demo2",
- "efficient": true,
- "grade": 1,
- "srcRange": {
- "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/Detector.java",
- "lineBegin": 107,
- "colBegin": 0,
- "lineEnd": 138,
- "colEnd": 999
- }
- }
- ]
+ "grade": 1,
+ "srcRange": {
+ "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
+ "lineBegin": 123,
+ "colBegin": 0,
+ "lineEnd": 124,
+ "colEnd": 999
}
- }
- ]
+ },
+ {
+ "srcMark": "demo",
+ "efficient": true,
+ "grade": 1,
+ "srcRange": {
+ "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
+ "lineBegin": 127,
+ "colBegin": 0,
+ "lineEnd": 128,
+ "colEnd": 999
+ }
+ },
+ {
+ "srcMark": "demo",
+ "efficient": true,
+ "grade": 2,
+ "srcRange": {
+ "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
+ "lineBegin": 132,
+ "colBegin": 0,
+ "lineEnd": 133,
+ "colEnd": 999
+ }
+ },
+ {
+ "srcMark": "demo",
+ "efficient": true,
+ "grade": 2,
+ "srcRange": {
+ "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
+ "lineBegin": 135,
+ "colBegin": 0,
+ "lineEnd": 136,
+ "colEnd": 999
+ }
+ },
+ {
+ "srcMark": "demo",
+ "efficient": true,
+ "grade": 3,
+ "srcRange": {
+ "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
+ "lineBegin": 138,
+ "colBegin": 0,
+ "lineEnd": 139,
+ "colEnd": 999
+ }
+ },
+ {
+ "srcMark": "demo",
+ "efficient": true,
+ "grade": 3,
+ "srcRange": {
+ "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
+ "lineBegin": 141,
+ "colBegin": 0,
+ "lineEnd": 142,
+ "colEnd": 999
+ }
+ },
+ {
+ "srcMark": "demo",
+ "efficient": true,
+ "grade": 1,
+ "srcRange": {
+ "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
+ "lineBegin": 144,
+ "colBegin": 0,
+ "lineEnd": 145,
+ "colEnd": 999
+ }
+ },
+ {
+ "srcMark": "demo",
+ "efficient": true,
+ "grade": 1,
+ "srcRange": {
+ "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/TestPoisonArea.c",
+ "lineBegin": 147,
+ "colBegin": 0,
+ "lineEnd": 147,
+ "colEnd": 999
+ }
+ },
+ {
+ "srcMark": "demo2",
+ "efficient": true,
+ "grade": 1,
+ "srcRange": {
+ "filePath": "file:///d%3A/Projects/RISC-V/rv-vscode-plugin/demo/Detector.java",
+ "lineBegin": 107,
+ "colBegin": 0,
+ "lineEnd": 138,
+ "colEnd": 999
+ }
+ }
+ ]
+ }
+ }
+ ]
}
diff --git a/testRoot/example.json b/testRoot/example.json
index 55db4ce..4ebb051 100644
--- a/testRoot/example.json
+++ b/testRoot/example.json
@@ -1,405 +1,405 @@
{
- "version": 1,
- "timestamp": 1677654000000,
- "problems": [
+ "version": 1,
+ "timestamp": 1677654000000,
+ "problems": [
+ {
+ "id": "000001",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0001",
+ "level": 2,
+ "data": [
{
- "id": "000001",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0001",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 3,
- "colFrom": 12,
- "lineUpto": 3,
- "colUpto": 19,
- "comment": "__arm__"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 3,
+ "colFrom": 12,
+ "lineUpto": 3,
+ "colUpto": 19,
+ "comment": "__arm__"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000002",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0002",
+ "level": 2,
+ "data": [
{
- "id": "000002",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0002",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 3,
- "colFrom": 31,
- "lineUpto": 3,
- "colUpto": 43,
- "comment": "__ARCH_ARM__"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 3,
+ "colFrom": 31,
+ "lineUpto": 3,
+ "colUpto": 43,
+ "comment": "__ARCH_ARM__"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000003",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0002",
+ "level": 2,
+ "data": [
{
- "id": "000003",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0002",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 4,
- "colFrom": 8,
- "lineUpto": 4,
- "colUpto": 20,
- "comment": "RETURN_INSTR"
- }
- },
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 3,
- "colFrom": 12,
- "lineUpto": 3,
- "colUpto": 19,
- "comment": "Defined under macro: __arm__"
- }
- }
- ]
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 4,
+ "colFrom": 8,
+ "lineUpto": 4,
+ "colUpto": 20,
+ "comment": "RETURN_INSTR"
+ }
},
{
- "id": "000004",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0003",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 6,
- "colFrom": 14,
- "lineUpto": 6,
- "colUpto": 22,
- "comment": "__i386__"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 3,
+ "colFrom": 12,
+ "lineUpto": 3,
+ "colUpto": 19,
+ "comment": "Defined under macro: __arm__"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000004",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0003",
+ "level": 2,
+ "data": [
{
- "id": "000005",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0003",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 6,
- "colFrom": 34,
- "lineUpto": 6,
- "colUpto": 44,
- "comment": "__x86_64__"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 6,
+ "colFrom": 14,
+ "lineUpto": 6,
+ "colUpto": 22,
+ "comment": "__i386__"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000005",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0003",
+ "level": 2,
+ "data": [
{
- "id": "000006",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0003",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 6,
- "colFrom": 56,
- "lineUpto": 6,
- "colUpto": 62,
- "comment": "__i386"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 6,
+ "colFrom": 34,
+ "lineUpto": 6,
+ "colUpto": 44,
+ "comment": "__x86_64__"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000006",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0003",
+ "level": 2,
+ "data": [
{
- "id": "000007",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0003",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 7,
- "colFrom": 14,
- "lineUpto": 7,
- "colUpto": 22,
- "comment": "__x86_64"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 6,
+ "colFrom": 56,
+ "lineUpto": 6,
+ "colUpto": 62,
+ "comment": "__i386"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000007",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0003",
+ "level": 2,
+ "data": [
{
- "id": "000008",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0003",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 7,
- "colFrom": 34,
- "lineUpto": 7,
- "colUpto": 41,
- "comment": "_M_IX86"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 7,
+ "colFrom": 14,
+ "lineUpto": 7,
+ "colUpto": 22,
+ "comment": "__x86_64"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000008",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0003",
+ "level": 2,
+ "data": [
{
- "id": "000009",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0003",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 7,
- "colFrom": 53,
- "lineUpto": 7,
- "colUpto": 61,
- "comment": "_M_AMD64"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 7,
+ "colFrom": 34,
+ "lineUpto": 7,
+ "colUpto": 41,
+ "comment": "_M_IX86"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000009",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0003",
+ "level": 2,
+ "data": [
{
- "id": "000010",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0003",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 8,
- "colFrom": 8,
- "lineUpto": 8,
- "colUpto": 20,
- "comment": "RETURN_INSTR"
- }
- },
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 6,
- "colFrom": 14,
- "lineUpto": 6,
- "colUpto": 22,
- "comment": "Defined under macro: __i386__"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 7,
+ "colFrom": 53,
+ "lineUpto": 7,
+ "colUpto": 61,
+ "comment": "_M_AMD64"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000010",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0003",
+ "level": 2,
+ "data": [
{
- "id": "000011",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0004",
- "level": 1,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 9,
- "colFrom": 13,
- "lineUpto": 9,
- "colUpto": 36,
- "comment": "__builtin_ia64_flush_rs"
- }
- }
- ]
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 8,
+ "colFrom": 8,
+ "lineUpto": 8,
+ "colUpto": 20,
+ "comment": "RETURN_INSTR"
+ }
},
{
- "id": "000012",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0005",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 12,
- "colFrom": 0,
- "lineUpto": 16,
- "colUpto": 37,
- "comment": "inline asm",
- "hidden": true
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 6,
+ "colFrom": 14,
+ "lineUpto": 6,
+ "colUpto": 22,
+ "comment": "Defined under macro: __i386__"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000011",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0004",
+ "level": 1,
+ "data": [
{
- "id": "000013",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0006",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 20,
- "colFrom": 8,
- "lineUpto": 20,
- "colUpto": 14,
- "comment": "inline asm"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 9,
+ "colFrom": 13,
+ "lineUpto": 9,
+ "colUpto": 36,
+ "comment": "__builtin_ia64_flush_rs"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000012",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0005",
+ "level": 2,
+ "data": [
{
- "id": "000014",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0008",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 22,
- "colFrom": 8,
- "lineUpto": 22,
- "colUpto": 14,
- "comment": "EM_386"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 12,
+ "colFrom": 0,
+ "lineUpto": 16,
+ "colUpto": 37,
+ "comment": "inline asm",
+ "hidden": true
+ }
+ }
+ ]
+ },
+ {
+ "id": "000013",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0006",
+ "level": 2,
+ "data": [
{
- "id": "000015",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0008",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 23,
- "colFrom": 8,
- "lineUpto": 23,
- "colUpto": 15,
- "comment": "EM_MIPS"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 20,
+ "colFrom": 8,
+ "lineUpto": 20,
+ "colUpto": 14,
+ "comment": "inline asm"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000014",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0008",
+ "level": 2,
+ "data": [
{
- "id": "000016",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0008",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 24,
- "colFrom": 8,
- "lineUpto": 24,
- "colUpto": 15,
- "comment": "EM_S390"
- }
- }
- ]
- },
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 22,
+ "colFrom": 8,
+ "lineUpto": 22,
+ "colUpto": 14,
+ "comment": "EM_386"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000015",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0008",
+ "level": 2,
+ "data": [
+ {
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 23,
+ "colFrom": 8,
+ "lineUpto": 23,
+ "colUpto": 15,
+ "comment": "EM_MIPS"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000016",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0008",
+ "level": 2,
+ "data": [
+ {
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 24,
+ "colFrom": 8,
+ "lineUpto": 24,
+ "colUpto": 15,
+ "comment": "EM_S390"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000017",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0008",
+ "level": 2,
+ "data": [
{
- "id": "000017",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0008",
- "level": 2,
- "data": [
- {
- "path": "example.c",
- "desc": "",
- "srcRange": {
- "filePath": "example.c",
- "lineFrom": 25,
- "colFrom": 8,
- "lineUpto": 25,
- "colUpto": 20,
- "comment": "EM_LOONGARCH"
- }
- }
- ]
+ "path": "example.c",
+ "desc": "",
+ "srcRange": {
+ "filePath": "example.c",
+ "lineFrom": 25,
+ "colFrom": 8,
+ "lineUpto": 25,
+ "colUpto": 20,
+ "comment": "EM_LOONGARCH"
+ }
}
- ]
+ ]
+ }
+ ]
}
diff --git a/testRoot/report_demo1.json b/testRoot/report_demo1.json
index fd3fb3d..ddb26ff 100644
--- a/testRoot/report_demo1.json
+++ b/testRoot/report_demo1.json
@@ -1,96 +1,96 @@
{
- "version": 1,
- "timestamp": 1677654000000,
- "problems": [
+ "version": 1,
+ "timestamp": 1677654000000,
+ "problems": [
+ {
+ "id": "000001",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "CC-0003",
+ "level": 1,
+ "data": [
{
- "id": "000001",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "CC-0003",
- "level": 1,
- "data": [
- {
- "path": "TestPoisonArea.c",
- "desc": "X86 architecture-specified macro",
- "srcRange": {
- "filePath": "TestPoisonArea.c",
- "lineFrom": 123,
- "colFrom": 12,
- "lineUpto": 123,
- "colUpto": 20,
- "comment": "__i386__"
- }
- },
- {
- "path": "TestPoisonArea.c",
- "desc": "Previously defined",
- "srcRange": {
- "filePath": "TestPoisonArea.c",
- "lineFrom": 117,
- "colFrom": 0,
- "lineUpto": 122,
- "colUpto": 0,
- "comment": "Previously defined here"
- }
- }
- ]
+ "path": "TestPoisonArea.c",
+ "desc": "X86 architecture-specified macro",
+ "srcRange": {
+ "filePath": "TestPoisonArea.c",
+ "lineFrom": 123,
+ "colFrom": 12,
+ "lineUpto": 123,
+ "colUpto": 20,
+ "comment": "__i386__"
+ }
},
{
- "id": "000002",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "test",
- "level": 1,
- "data": [
- {
- "path": "TestPoisonArea.c",
- "desc": "X86 architecture-specified macro",
- "srcRange": {
- "filePath": "TestPoisonArea.c",
- "lineFrom": 123,
- "colFrom": 32,
- "lineUpto": 123,
- "colUpto": 42,
- "comment": "__x86_64__"
- }
- },
- {
- "path": "TestPoisonArea.c",
- "desc": "X86 architecture-specified macro1",
- "srcRange": {
- "filePath": "TestPoisonArea.c",
- "lineFrom": 106,
- "colFrom": 0,
- "lineUpto": 113,
- "colUpto": 6,
- "comment": "any"
- }
- }
- ]
+ "path": "TestPoisonArea.c",
+ "desc": "Previously defined",
+ "srcRange": {
+ "filePath": "TestPoisonArea.c",
+ "lineFrom": 117,
+ "colFrom": 0,
+ "lineUpto": 122,
+ "colUpto": 0,
+ "comment": "Previously defined here"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000002",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "test",
+ "level": 1,
+ "data": [
+ {
+ "path": "TestPoisonArea.c",
+ "desc": "X86 architecture-specified macro",
+ "srcRange": {
+ "filePath": "TestPoisonArea.c",
+ "lineFrom": 123,
+ "colFrom": 32,
+ "lineUpto": 123,
+ "colUpto": 42,
+ "comment": "__x86_64__"
+ }
},
{
- "id": "000004",
- "state": 1,
- "checkerId": "c_cxx",
- "type": "source",
- "ruleId": "test",
- "level": 1,
- "data": [
- {
- "path": "TestPoisonArea.c",
- "desc": "multiline macro",
- "srcRange": {
- "filePath": "TestPoisonArea.c",
- "lineFrom": 106,
- "colFrom": 0,
- "lineUpto": 113,
- "colUpto": 6,
- "comment": "any"
- }
- }
- ]
+ "path": "TestPoisonArea.c",
+ "desc": "X86 architecture-specified macro1",
+ "srcRange": {
+ "filePath": "TestPoisonArea.c",
+ "lineFrom": 106,
+ "colFrom": 0,
+ "lineUpto": 113,
+ "colUpto": 6,
+ "comment": "any"
+ }
+ }
+ ]
+ },
+ {
+ "id": "000004",
+ "state": 1,
+ "checkerId": "c_cxx",
+ "type": "source",
+ "ruleId": "test",
+ "level": 1,
+ "data": [
+ {
+ "path": "TestPoisonArea.c",
+ "desc": "multiline macro",
+ "srcRange": {
+ "filePath": "TestPoisonArea.c",
+ "lineFrom": 106,
+ "colFrom": 0,
+ "lineUpto": 113,
+ "colUpto": 6,
+ "comment": "any"
+ }
}
- ]
+ ]
+ }
+ ]
}
diff --git a/tsconfig.json b/tsconfig.json
index 7a91d07..fc45d0f 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,20 +1,20 @@
{
- "compilerOptions": {
- "downlevelIteration": true
+ "compilerOptions": {
+ "downlevelIteration": true
+ },
+ "exclude": ["*"],
+ "references": [
+ {
+ "path": "./client"
},
- "exclude": ["*"],
- "references": [
- {
- "path": "./client"
- },
- {
- "path": "./server"
- },
- {
- "path": "./common"
- },
- {
- "path": "./webview"
- }
- ]
+ {
+ "path": "./server"
+ },
+ {
+ "path": "./common"
+ },
+ {
+ "path": "./webview"
+ }
+ ]
}
diff --git a/webview/package.json b/webview/package.json
index 8eaa25b..fc24e1b 100644
--- a/webview/package.json
+++ b/webview/package.json
@@ -1,23 +1,23 @@
{
- "name": "rvportingtool-webview",
- "description": "VSCode WebView Part of Software Porting Tool for RISC-V",
- "author": "tcse-iscas",
- "license": "MulanPSL-2.0",
- "version": "0.0.1",
- "publisher": "tcse-iscas",
- "engines": {
- "node": "*"
- },
- "dependencies": {
- "@types/markdown-it": "^12.2.3",
- "@types/markdown-it-container": "^2.0.5",
- "@vscode/webview-ui-toolkit": "^1.2.2",
- "markdown-it": "^13.0.1",
- "markdown-it-container": "^3.0.0",
- "prismjs": "^1.29.0"
- },
- "devDependencies": {
- "@types/prismjs": "^1.26.0",
- "@types/vscode-webview": "^1.57.1"
- }
+ "name": "rvportingtool-webview",
+ "description": "VSCode WebView Part of Software Porting Tool for RISC-V",
+ "author": "tcse-iscas",
+ "license": "MulanPSL-2.0",
+ "version": "0.0.1",
+ "publisher": "tcse-iscas",
+ "engines": {
+ "node": "*"
+ },
+ "dependencies": {
+ "@types/markdown-it": "^12.2.3",
+ "@types/markdown-it-container": "^2.0.5",
+ "@vscode/webview-ui-toolkit": "^1.2.2",
+ "markdown-it": "^13.0.1",
+ "markdown-it-container": "^3.0.0",
+ "prismjs": "^1.29.0"
+ },
+ "devDependencies": {
+ "@types/prismjs": "^1.26.0",
+ "@types/vscode-webview": "^1.57.1"
+ }
}
diff --git a/webview/src/wikiView/initUI.ts b/webview/src/wikiView/initUI.ts
index 89364ee..9931d6e 100644
--- a/webview/src/wikiView/initUI.ts
+++ b/webview/src/wikiView/initUI.ts
@@ -16,50 +16,50 @@
**************************************************************************************/
import {
- Checkbox,
- DataGrid,
- provideVSCodeDesignSystem,
- vsCodeBadge,
- vsCodeButton,
- vsCodeCheckbox,
- vsCodeDataGrid,
- vsCodeDataGridCell,
- vsCodeDataGridRow,
- vsCodeDivider,
- vsCodeDropdown,
- vsCodeLink,
- vsCodeOption,
- vsCodePanels,
- vsCodePanelTab,
- vsCodePanelView,
- vsCodeProgressRing,
- vsCodeRadio,
- vsCodeRadioGroup,
- vsCodeTag,
- vsCodeTextArea,
- vsCodeTextField,
+ Checkbox,
+ DataGrid,
+ provideVSCodeDesignSystem,
+ vsCodeBadge,
+ vsCodeButton,
+ vsCodeCheckbox,
+ vsCodeDataGrid,
+ vsCodeDataGridCell,
+ vsCodeDataGridRow,
+ vsCodeDivider,
+ vsCodeDropdown,
+ vsCodeLink,
+ vsCodeOption,
+ vsCodePanels,
+ vsCodePanelTab,
+ vsCodePanelView,
+ vsCodeProgressRing,
+ vsCodeRadio,
+ vsCodeRadioGroup,
+ vsCodeTag,
+ vsCodeTextArea,
+ vsCodeTextField,
} from "@vscode/webview-ui-toolkit";
export function initUI() {
- provideVSCodeDesignSystem().register(
- vsCodeBadge(),
- vsCodeButton(),
- vsCodeCheckbox(),
- vsCodeDataGrid(),
- vsCodeDataGridCell(),
- vsCodeDataGridRow(),
- vsCodeDivider(),
- vsCodeDropdown(),
- vsCodeLink(),
- vsCodeOption(),
- vsCodePanels(),
- vsCodePanelTab(),
- vsCodePanelView(),
- vsCodeProgressRing(),
- vsCodeRadio(),
- vsCodeRadioGroup(),
- vsCodeTag(),
- vsCodeTextArea(),
- vsCodeTextField()
- );
+ provideVSCodeDesignSystem().register(
+ vsCodeBadge(),
+ vsCodeButton(),
+ vsCodeCheckbox(),
+ vsCodeDataGrid(),
+ vsCodeDataGridCell(),
+ vsCodeDataGridRow(),
+ vsCodeDivider(),
+ vsCodeDropdown(),
+ vsCodeLink(),
+ vsCodeOption(),
+ vsCodePanels(),
+ vsCodePanelTab(),
+ vsCodePanelView(),
+ vsCodeProgressRing(),
+ vsCodeRadio(),
+ vsCodeRadioGroup(),
+ vsCodeTag(),
+ vsCodeTextArea(),
+ vsCodeTextField()
+ );
}
diff --git a/webview/src/wikiView/main.ts b/webview/src/wikiView/main.ts
index 7708c82..d50c039 100644
--- a/webview/src/wikiView/main.ts
+++ b/webview/src/wikiView/main.ts
@@ -30,17 +30,17 @@ initUI();
initMDTransformer(msgHandlers);
window.addEventListener("load", () => {
- console.log("WebView Initialized, state: ", vscode.getState());
- prism.highlightAll();
- vscode.postMessage({
- type: "WikiViewLoadedMsg",
- });
+ console.log("WebView Initialized, state: ", vscode.getState());
+ prism.highlightAll();
+ vscode.postMessage({
+ type: "WikiViewLoadedMsg",
+ });
});
window.addEventListener("message", (ev) => {
- const message = ev.data;
- console.info("WebView received message: ", message);
- if (message.type && msgHandlers.has(message.type)) {
- msgHandlers.get(message.type)!(message);
- }
+ const message = ev.data;
+ console.info("WebView received message: ", message);
+ if (message.type && msgHandlers.has(message.type)) {
+ msgHandlers.get(message.type)!(message);
+ }
});
diff --git a/webview/src/wikiView/mdTransformer.ts b/webview/src/wikiView/mdTransformer.ts
index f5086ca..8bfbd62 100644
--- a/webview/src/wikiView/mdTransformer.ts
+++ b/webview/src/wikiView/mdTransformer.ts
@@ -21,39 +21,39 @@ import { WikiViewApplyMarkdownMsg } from "../../../common/src/types/wikiView";
const prism = window.Prism;
const engine: MarkdownIt = require("markdown-it")({
- html: true,
+ html: true,
});
engine.use(require("markdown-it-container"), "details", {
- validate: function (params: any) {
- return params.trim().match(/^details\s+(.*)$/) !== null;
- },
+ validate: function (params: any) {
+ return params.trim().match(/^details\s+(.*)$/) !== null;
+ },
- render: function (tokens: Token[], idx: number) {
- var m = tokens[idx].info.trim().match(/^details\s+(.*)$/);
- if (m && tokens[idx].nesting === 1) {
- return "" + engine.utils.escapeHtml(m[1]) + "
\n";
- } else {
- return " \n";
- }
- },
+ render: function (tokens: Token[], idx: number) {
+ var m = tokens[idx].info.trim().match(/^details\s+(.*)$/);
+ if (m && tokens[idx].nesting === 1) {
+ return "" + engine.utils.escapeHtml(m[1]) + "
\n";
+ } else {
+ return " \n";
+ }
+ },
});
// tag 转 vscode-tag
const htmlInlineOldRule = engine.renderer.rules.html_inline!;
engine.renderer.rules.html_inline = function (tokens, idx, options, env, self) {
- const token = tokens[idx];
- token.content = token.content.replace(/(<)([/]*)(tag)/g, "$1$2vscode-tag");
- return htmlInlineOldRule(tokens, idx, options, env, self);
+ const token = tokens[idx];
+ token.content = token.content.replace(/(<)([/]*)(tag)/g, "$1$2vscode-tag");
+ return htmlInlineOldRule(tokens, idx, options, env, self);
};
engine.renderer.rules.fence;
export function initMDTransformer(msgHandlers: Map void>) {
- msgHandlers.set("WikiViewApplyMarkdownMsg", (msg: WikiViewApplyMarkdownMsg) => {
- const mainDiv = document.getElementById("main")!;
- console.info("Rendering Markdown to HTML...");
- mainDiv.innerHTML = engine.render(msg.content);
- prism.highlightAll();
- window.scrollTo(0, 0);
- });
+ msgHandlers.set("WikiViewApplyMarkdownMsg", (msg: WikiViewApplyMarkdownMsg) => {
+ const mainDiv = document.getElementById("main")!;
+ console.info("Rendering Markdown to HTML...");
+ mainDiv.innerHTML = engine.render(msg.content);
+ prism.highlightAll();
+ window.scrollTo(0, 0);
+ });
}
diff --git a/webview/src/wikiView/state.ts b/webview/src/wikiView/state.ts
index 2eae4d5..aa28992 100644
--- a/webview/src/wikiView/state.ts
+++ b/webview/src/wikiView/state.ts
@@ -17,6 +17,6 @@
/** WikiViewState */
export class WikiViewState {
- /** 最后一次查看的规则 ID */
- public lastRuleId?: string;
+ /** 最后一次查看的规则 ID */
+ public lastRuleId?: string;
}
diff --git a/webview/tsconfig.json b/webview/tsconfig.json
index 59d7a88..c2857bd 100644
--- a/webview/tsconfig.json
+++ b/webview/tsconfig.json
@@ -1,17 +1,17 @@
{
- "compilerOptions": {
- "composite": true,
- "target": "ES2020",
- "lib": ["ES2020", "DOM", "DOM.Iterable"],
- "outDir": "out",
- "rootDir": "..",
- "sourceMap": true,
- "strict": true,
- "noImplicitReturns": true,
- "noFallthroughCasesInSwitch": true,
- "moduleResolution": "node",
- "skipLibCheck": true
- },
- "include": ["src", "../common/src"],
- "exclude": ["node_modules", ".vscode-test"]
+ "compilerOptions": {
+ "composite": true,
+ "target": "ES2020",
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "outDir": "out",
+ "rootDir": "..",
+ "sourceMap": true,
+ "strict": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true,
+ "moduleResolution": "node",
+ "skipLibCheck": true
+ },
+ "include": ["src", "../common/src"],
+ "exclude": ["node_modules", ".vscode-test"]
}
--
Gitee
From 71b81cef5d3fa38366b18892df019c33fa454066 Mon Sep 17 00:00:00 2001
From: LightningRS
Date: Fri, 6 Sep 2024 12:11:29 +0800
Subject: [PATCH 4/6] license: change organization
---
client/src/extension.ts | 4 ++--
client/src/reportManagerClient.ts | 4 ++--
client/src/test/runTest.ts | 2 +-
client/src/test/suite/index.ts | 2 +-
client/src/types/checkerRules.ts | 4 ++--
client/src/utils/log.ts | 4 ++--
client/src/wikiHelper.ts | 4 ++--
client/src/wikiView/wikiViewProvider.ts | 4 ++--
common/src/types/command.ts | 4 ++--
common/src/types/extConfig.ts | 4 ++--
common/src/types/notification.ts | 4 ++--
common/src/types/report.ts | 4 ++--
common/src/types/reportManager.ts | 4 ++--
common/src/types/request.ts | 4 ++--
common/src/types/wikiView.ts | 4 ++--
common/src/utils/sourceRangeUtils.ts | 4 ++--
esbuild.js | 4 ++--
package.json | 1 +
pnpm-lock.yaml | 16 ++++++++++++++++
server/src/docCacheManager.ts | 4 ++--
server/src/docSettingManager.ts | 4 ++--
server/src/reportManager.ts | 2 +-
server/src/reportManagerServer.ts | 2 +-
server/src/reportToDiagnostic.ts | 4 ++--
server/src/reportTransformer.ts | 6 +++---
server/src/server.ts | 4 ++--
server/src/types/clientCapabilities.ts | 4 ++--
server/src/types/reportMeta.ts | 4 ++--
server/src/utils/log.ts | 4 ++--
webview/src/wikiView/initUI.ts | 4 ++--
webview/src/wikiView/main.ts | 4 ++--
webview/src/wikiView/mdTransformer.ts | 4 ++--
webview/src/wikiView/state.ts | 4 ++--
33 files changed, 76 insertions(+), 59 deletions(-)
diff --git a/client/src/extension.ts b/client/src/extension.ts
index 2e3fd45..2ef66ac 100644
--- a/client/src/extension.ts
+++ b/client/src/extension.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Client Entry for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 15, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as path from "path";
diff --git a/client/src/reportManagerClient.ts b/client/src/reportManagerClient.ts
index 7d803bc..74882fc 100644
--- a/client/src/reportManagerClient.ts
+++ b/client/src/reportManagerClient.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Language Client Report Manager for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 16, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as lsp from "vscode-languageclient";
diff --git a/client/src/test/runTest.ts b/client/src/test/runTest.ts
index 8b667da..b22556b 100644
--- a/client/src/test/runTest.ts
+++ b/client/src/test/runTest.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
diff --git a/client/src/test/suite/index.ts b/client/src/test/suite/index.ts
index 03f1025..84306c4 100644
--- a/client/src/test/suite/index.ts
+++ b/client/src/test/suite/index.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
diff --git a/client/src/types/checkerRules.ts b/client/src/types/checkerRules.ts
index b83a249..f6d2864 100644
--- a/client/src/types/checkerRules.ts
+++ b/client/src/types/checkerRules.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Checker Rules Information Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 17, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as vscode from "vscode";
diff --git a/client/src/utils/log.ts b/client/src/utils/log.ts
index f929edb..01408c1 100644
--- a/client/src/utils/log.ts
+++ b/client/src/utils/log.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Client Logger Module for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 13, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as log4js from "log4js";
diff --git a/client/src/wikiHelper.ts b/client/src/wikiHelper.ts
index c907d6b..d262d99 100644
--- a/client/src/wikiHelper.ts
+++ b/client/src/wikiHelper.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* (Client) Wiki Helper for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 31, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as lsp from "vscode-languageclient/node";
diff --git a/client/src/wikiView/wikiViewProvider.ts b/client/src/wikiView/wikiViewProvider.ts
index 638a7bc..8ee65fc 100644
--- a/client/src/wikiView/wikiViewProvider.ts
+++ b/client/src/wikiView/wikiViewProvider.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* (Client) Wiki View Provider for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 31, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as fs from "fs";
diff --git a/common/src/types/command.ts b/common/src/types/command.ts
index a305109..698e3fa 100644
--- a/common/src/types/command.ts
+++ b/common/src/types/command.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Command ID Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 14, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
/** Command ID 定义 */
diff --git a/common/src/types/extConfig.ts b/common/src/types/extConfig.ts
index e632299..21ba355 100644
--- a/common/src/types/extConfig.ts
+++ b/common/src/types/extConfig.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Extension Configuration Data Model for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 13, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
/** 插件日志级别 */
diff --git a/common/src/types/notification.ts b/common/src/types/notification.ts
index 5d20295..50c6634 100644
--- a/common/src/types/notification.ts
+++ b/common/src/types/notification.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Language Client/Server Notification ID Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 14, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
/** LSP 通知 ID 定义 */
diff --git a/common/src/types/report.ts b/common/src/types/report.ts
index 896ab0e..262bd34 100644
--- a/common/src/types/report.ts
+++ b/common/src/types/report.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Language Server Report Type Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 14, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
/** 代码问题状态 */
diff --git a/common/src/types/reportManager.ts b/common/src/types/reportManager.ts
index bb3a57e..38b712e 100644
--- a/common/src/types/reportManager.ts
+++ b/common/src/types/reportManager.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Language Client/Server Report Manager Extra Types for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 16, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
/** 报告读取参数 */
diff --git a/common/src/types/request.ts b/common/src/types/request.ts
index 4678e14..a1b0443 100644
--- a/common/src/types/request.ts
+++ b/common/src/types/request.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Language Client/Server Request/Response ID Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 14, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
/** LSP 请求/响应 ID 定义 */
diff --git a/common/src/types/wikiView.ts b/common/src/types/wikiView.ts
index 56c1095..396312e 100644
--- a/common/src/types/wikiView.ts
+++ b/common/src/types/wikiView.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Client Wiki View WebView Type Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 27, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
/** WikiView 加载完毕消息 */
diff --git a/common/src/utils/sourceRangeUtils.ts b/common/src/utils/sourceRangeUtils.ts
index ec6c752..323de6a 100644
--- a/common/src/utils/sourceRangeUtils.ts
+++ b/common/src/utils/sourceRangeUtils.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Source Range Utilities for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 17, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as LSPTypes from "vscode-languageserver-types";
diff --git a/esbuild.js b/esbuild.js
index 38e87d1..5a4a9a4 100644
--- a/esbuild.js
+++ b/esbuild.js
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* ESBuild Script for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 27, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
const { build } = require("esbuild");
diff --git a/package.json b/package.json
index 200123c..bbec88e 100644
--- a/package.json
+++ b/package.json
@@ -142,6 +142,7 @@
"esbuild": "^0.16.17",
"esbuild-plugin-copy": "^2.1.1",
"eslint": "^8.57.0",
+ "eslint-plugin-license-header": "^0.6.1",
"glob": "^11.0.0",
"mocha": "^10.7.3",
"prettier": "2.8.4",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 553163e..68980b4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -48,6 +48,9 @@ importers:
eslint:
specifier: ^8.57.0
version: 8.57.0
+ eslint-plugin-license-header:
+ specifier: ^0.6.1
+ version: 0.6.1
glob:
specifier: ^11.0.0
version: 11.0.0
@@ -584,6 +587,9 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
+ eslint-plugin-license-header@0.6.1:
+ resolution: {integrity: sha512-9aIz8q3OaMr1/uQmCGCWySjTs5nEXUJexNegz/8lluNcZbEl82Ag1Vyr1Hu3oIveRW1NbXDPs6nu4zu9mbrmWA==}
+
eslint-scope@5.1.1:
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
engines: {node: '>=8.0.0'}
@@ -1015,6 +1021,10 @@ packages:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
+ requireindex@1.2.0:
+ resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==}
+ engines: {node: '>=0.10.5'}
+
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -1742,6 +1752,10 @@ snapshots:
escape-string-regexp@4.0.0: {}
+ eslint-plugin-license-header@0.6.1:
+ dependencies:
+ requireindex: 1.2.0
+
eslint-scope@5.1.1:
dependencies:
esrecurse: 4.3.0
@@ -2218,6 +2232,8 @@ snapshots:
require-directory@2.1.1: {}
+ requireindex@1.2.0: {}
+
resolve-from@4.0.0: {}
restore-cursor@4.0.0:
diff --git a/server/src/docCacheManager.ts b/server/src/docCacheManager.ts
index d4d4695..be251c1 100644
--- a/server/src/docCacheManager.ts
+++ b/server/src/docCacheManager.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Language Server Documents Cache Manager for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 17, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as lsp from "vscode-languageserver/node";
diff --git a/server/src/docSettingManager.ts b/server/src/docSettingManager.ts
index 01369ad..0a971ab 100644
--- a/server/src/docSettingManager.ts
+++ b/server/src/docSettingManager.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Language Server Documents Setting Manager for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 16, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as lsp from "vscode-languageserver/node";
diff --git a/server/src/reportManager.ts b/server/src/reportManager.ts
index 44f63d5..17aaf54 100644
--- a/server/src/reportManager.ts
+++ b/server/src/reportManager.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
diff --git a/server/src/reportManagerServer.ts b/server/src/reportManagerServer.ts
index d27e1f4..fe21584 100644
--- a/server/src/reportManagerServer.ts
+++ b/server/src/reportManagerServer.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
diff --git a/server/src/reportToDiagnostic.ts b/server/src/reportToDiagnostic.ts
index 8e6ae80..4ab93df 100644
--- a/server/src/reportToDiagnostic.ts
+++ b/server/src/reportToDiagnostic.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Language Server Report To Diagnostics Converter for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 31, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as lsp from "vscode-languageserver";
diff --git a/server/src/reportTransformer.ts b/server/src/reportTransformer.ts
index 33335fe..2434ab9 100644
--- a/server/src/reportTransformer.ts
+++ b/server/src/reportTransformer.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -11,8 +11,8 @@
*
* Language Server Report Transformer for RVPortingTool VSCode Extension
*
- * Author:
- * Last Change: Mar 17, 2023
+ * Author: Lightning Rainstorm
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as LSPTypes from "vscode-languageserver-types";
diff --git a/server/src/server.ts b/server/src/server.ts
index b192974..cdee81a 100644
--- a/server/src/server.ts
+++ b/server/src/server.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Language Server Entry for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 16, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as lsp from "vscode-languageserver/node";
diff --git a/server/src/types/clientCapabilities.ts b/server/src/types/clientCapabilities.ts
index a069403..c57f3ca 100644
--- a/server/src/types/clientCapabilities.ts
+++ b/server/src/types/clientCapabilities.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Language Client Capabilities Descriptor for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 14, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
export class ClientCapabilities {
diff --git a/server/src/types/reportMeta.ts b/server/src/types/reportMeta.ts
index e79a6b6..add08de 100644
--- a/server/src/types/reportMeta.ts
+++ b/server/src/types/reportMeta.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Language Server Report Meta Data Model for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 16, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import { IReport } from "../../../common/src/types/report";
diff --git a/server/src/utils/log.ts b/server/src/utils/log.ts
index 32a497e..bea7b2e 100644
--- a/server/src/utils/log.ts
+++ b/server/src/utils/log.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Server Logger Module for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 14, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as lsp from "vscode-languageserver/node";
diff --git a/webview/src/wikiView/initUI.ts b/webview/src/wikiView/initUI.ts
index 9931d6e..7abeea8 100644
--- a/webview/src/wikiView/initUI.ts
+++ b/webview/src/wikiView/initUI.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Client Wiki View WebView Init UI Script for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 27, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import {
diff --git a/webview/src/wikiView/main.ts b/webview/src/wikiView/main.ts
index d50c039..ea2080c 100644
--- a/webview/src/wikiView/main.ts
+++ b/webview/src/wikiView/main.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Client Wiki View WebView Script for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 26, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import { initMDTransformer } from "./mdTransformer";
diff --git a/webview/src/wikiView/mdTransformer.ts b/webview/src/wikiView/mdTransformer.ts
index 8bfbd62..c078c02 100644
--- a/webview/src/wikiView/mdTransformer.ts
+++ b/webview/src/wikiView/mdTransformer.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Client Wiki View WebView Script for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 26, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
import * as MarkdownIt from "markdown-it";
diff --git a/webview/src/wikiView/state.ts b/webview/src/wikiView/state.ts
index aa28992..70c21ee 100644
--- a/webview/src/wikiView/state.ts
+++ b/webview/src/wikiView/state.ts
@@ -1,5 +1,5 @@
/***************************************************************************************
- * Copyright (c) 2023 TCSE-ISCAS. All rights reserved.
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
* RVPortingTool is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
@@ -12,7 +12,7 @@
* Client Wiki View WebView Persisted State Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Mar 27, 2023
+ * Last Change: Sep 6, 2024
**************************************************************************************/
/** WikiViewState */
--
Gitee
From 997b6522649d3cdcd50e94e5eb747666204d3742 Mon Sep 17 00:00:00 2001
From: LightningRS
Date: Fri, 6 Sep 2024 12:23:14 +0800
Subject: [PATCH 5/6] license: add license check
---
.eslintrc.json | 5 +++--
client/src/extension.ts | 4 +++-
client/src/reportManagerClient.ts | 4 +++-
client/src/test/completion.test.ts | 15 +++++++++++----
client/src/test/diagnostics.test.ts | 15 +++++++++++----
client/src/test/helper.ts | 15 +++++++++++----
client/src/test/runTest.ts | 4 +++-
client/src/test/suite/index.ts | 4 +++-
client/src/types/checkerRules.ts | 4 +++-
client/src/utils/log.ts | 4 +++-
client/src/wikiHelper.ts | 4 +++-
client/src/wikiView/wikiViewProvider.ts | 4 +++-
common/src/types/command.ts | 4 +++-
common/src/types/extConfig.ts | 4 +++-
common/src/types/notification.ts | 4 +++-
common/src/types/report.ts | 4 +++-
common/src/types/reportManager.ts | 4 +++-
common/src/types/request.ts | 4 +++-
common/src/types/wikiView.ts | 4 +++-
common/src/utils/sourceRangeUtils.ts | 4 +++-
package.json | 2 +-
resources/license-header.ts | 11 +++++++++++
server/src/docCacheManager.ts | 4 +++-
server/src/docSettingManager.ts | 4 +++-
server/src/reportManager.ts | 4 +++-
server/src/reportManagerServer.ts | 4 +++-
server/src/reportToDiagnostic.ts | 4 +++-
server/src/reportTransformer.ts | 4 +++-
server/src/server.ts | 4 +++-
server/src/types/clientCapabilities.ts | 4 +++-
server/src/types/reportMeta.ts | 4 +++-
server/src/utils/log.ts | 4 +++-
webview/src/wikiView/initUI.ts | 4 +++-
webview/src/wikiView/main.ts | 4 +++-
webview/src/wikiView/mdTransformer.ts | 4 +++-
webview/src/wikiView/state.ts | 4 +++-
36 files changed, 138 insertions(+), 45 deletions(-)
create mode 100644 resources/license-header.ts
diff --git a/.eslintrc.json b/.eslintrc.json
index 5dfecab..3582e5d 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -5,14 +5,15 @@
"ecmaVersion": 6,
"sourceType": "module"
},
- "plugins": ["@typescript-eslint"],
+ "plugins": ["@typescript-eslint", "license-header"],
"rules": {
"@typescript-eslint/naming-convention": "warn",
"@typescript-eslint/semi": "warn",
"curly": "warn",
"eqeqeq": "warn",
"no-throw-literal": "warn",
- "semi": "off"
+ "semi": "off",
+ "license-header/header": ["error", "resources/license-header.ts"]
},
"ignorePatterns": ["out", "dist", "**/*.d.ts"]
}
diff --git a/client/src/extension.ts b/client/src/extension.ts
index 2ef66ac..e4437ef 100644
--- a/client/src/extension.ts
+++ b/client/src/extension.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Client Entry for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/client/src/reportManagerClient.ts b/client/src/reportManagerClient.ts
index 74882fc..3fb256a 100644
--- a/client/src/reportManagerClient.ts
+++ b/client/src/reportManagerClient.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Client Report Manager for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/client/src/test/completion.test.ts b/client/src/test/completion.test.ts
index 3963c4f..a4f3b2e 100644
--- a/client/src/test/completion.test.ts
+++ b/client/src/test/completion.test.ts
@@ -1,7 +1,14 @@
-/* --------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- * ------------------------------------------------------------------------------------------ */
+/***************************************************************************************
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
+ * RVPortingTool is licensed under Mulan PSL v2.
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
+ * You may obtain a copy of Mulan PSL v2 at:
+ * http://license.coscl.org.cn/MulanPSL2
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+ * See the Mulan PSL v2 for more details.
+ **************************************************************************************/
import * as assert from "assert";
import * as vscode from "vscode";
diff --git a/client/src/test/diagnostics.test.ts b/client/src/test/diagnostics.test.ts
index c505ad8..2f00b9c 100644
--- a/client/src/test/diagnostics.test.ts
+++ b/client/src/test/diagnostics.test.ts
@@ -1,7 +1,14 @@
-/* --------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- * ------------------------------------------------------------------------------------------ */
+/***************************************************************************************
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
+ * RVPortingTool is licensed under Mulan PSL v2.
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
+ * You may obtain a copy of Mulan PSL v2 at:
+ * http://license.coscl.org.cn/MulanPSL2
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+ * See the Mulan PSL v2 for more details.
+ **************************************************************************************/
import * as assert from "assert";
import * as vscode from "vscode";
diff --git a/client/src/test/helper.ts b/client/src/test/helper.ts
index 4b644ac..e68da93 100644
--- a/client/src/test/helper.ts
+++ b/client/src/test/helper.ts
@@ -1,7 +1,14 @@
-/* --------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- * ------------------------------------------------------------------------------------------ */
+/***************************************************************************************
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
+ * RVPortingTool is licensed under Mulan PSL v2.
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
+ * You may obtain a copy of Mulan PSL v2 at:
+ * http://license.coscl.org.cn/MulanPSL2
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+ * See the Mulan PSL v2 for more details.
+ **************************************************************************************/
import * as path from "path";
import * as vscode from "vscode";
diff --git a/client/src/test/runTest.ts b/client/src/test/runTest.ts
index b22556b..98c2d0f 100644
--- a/client/src/test/runTest.ts
+++ b/client/src/test/runTest.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Client Report Manager for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/client/src/test/suite/index.ts b/client/src/test/suite/index.ts
index 84306c4..36adc57 100644
--- a/client/src/test/suite/index.ts
+++ b/client/src/test/suite/index.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Client Report Manager for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/client/src/types/checkerRules.ts b/client/src/types/checkerRules.ts
index f6d2864..32f0d55 100644
--- a/client/src/types/checkerRules.ts
+++ b/client/src/types/checkerRules.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Checker Rules Information Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/client/src/utils/log.ts b/client/src/utils/log.ts
index 01408c1..4a905ce 100644
--- a/client/src/utils/log.ts
+++ b/client/src/utils/log.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Client Logger Module for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/client/src/wikiHelper.ts b/client/src/wikiHelper.ts
index d262d99..50b5446 100644
--- a/client/src/wikiHelper.ts
+++ b/client/src/wikiHelper.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* (Client) Wiki Helper for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/client/src/wikiView/wikiViewProvider.ts b/client/src/wikiView/wikiViewProvider.ts
index 8ee65fc..6ce052b 100644
--- a/client/src/wikiView/wikiViewProvider.ts
+++ b/client/src/wikiView/wikiViewProvider.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* (Client) Wiki View Provider for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/common/src/types/command.ts b/common/src/types/command.ts
index 698e3fa..71e4274 100644
--- a/common/src/types/command.ts
+++ b/common/src/types/command.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Command ID Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/common/src/types/extConfig.ts b/common/src/types/extConfig.ts
index 21ba355..9785b98 100644
--- a/common/src/types/extConfig.ts
+++ b/common/src/types/extConfig.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Extension Configuration Data Model for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/common/src/types/notification.ts b/common/src/types/notification.ts
index 50c6634..1f4cd29 100644
--- a/common/src/types/notification.ts
+++ b/common/src/types/notification.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Client/Server Notification ID Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/common/src/types/report.ts b/common/src/types/report.ts
index 262bd34..2fc13f3 100644
--- a/common/src/types/report.ts
+++ b/common/src/types/report.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Server Report Type Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/common/src/types/reportManager.ts b/common/src/types/reportManager.ts
index 38b712e..5d3b3ea 100644
--- a/common/src/types/reportManager.ts
+++ b/common/src/types/reportManager.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Client/Server Report Manager Extra Types for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/common/src/types/request.ts b/common/src/types/request.ts
index a1b0443..5963a3c 100644
--- a/common/src/types/request.ts
+++ b/common/src/types/request.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Client/Server Request/Response ID Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/common/src/types/wikiView.ts b/common/src/types/wikiView.ts
index 396312e..a02509f 100644
--- a/common/src/types/wikiView.ts
+++ b/common/src/types/wikiView.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Client Wiki View WebView Type Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/common/src/utils/sourceRangeUtils.ts b/common/src/utils/sourceRangeUtils.ts
index 323de6a..51dc912 100644
--- a/common/src/utils/sourceRangeUtils.ts
+++ b/common/src/utils/sourceRangeUtils.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Source Range Utilities for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/package.json b/package.json
index bbec88e..b51a653 100644
--- a/package.json
+++ b/package.json
@@ -125,7 +125,7 @@
"watch_esbuild": "node esbuild.js --watch",
"clean": "tsc -b --clean",
"pretest": "pnpm run compile && pnpm run lint",
- "lint": "eslint ./client/src ./server/src ./common/src ./webview/src --ext ts,tsx",
+ "lint": "eslint ./client/src ./server/src ./common/src ./webview/src --ext ts,tsx,js",
"test": "node ./client/out/src/test/runTest",
"extract_l10n": "npx @vscode/l10n-dev export -o ./l10n ./client/src ./common/src && python ./scripts/merge_l10n.py"
},
diff --git a/resources/license-header.ts b/resources/license-header.ts
new file mode 100644
index 0000000..ed641d1
--- /dev/null
+++ b/resources/license-header.ts
@@ -0,0 +1,11 @@
+/***************************************************************************************
+ * Copyright (c) 2023-2024 RVSmartPorting. All rights reserved.
+ * RVPortingTool is licensed under Mulan PSL v2.
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
+ * You may obtain a copy of Mulan PSL v2 at:
+ * http://license.coscl.org.cn/MulanPSL2
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
+ * See the Mulan PSL v2 for more details.
+ **************************************************************************************/
diff --git a/server/src/docCacheManager.ts b/server/src/docCacheManager.ts
index be251c1..0e4007a 100644
--- a/server/src/docCacheManager.ts
+++ b/server/src/docCacheManager.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Server Documents Cache Manager for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/server/src/docSettingManager.ts b/server/src/docSettingManager.ts
index 0a971ab..c574c11 100644
--- a/server/src/docSettingManager.ts
+++ b/server/src/docSettingManager.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Server Documents Setting Manager for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/server/src/reportManager.ts b/server/src/reportManager.ts
index 17aaf54..4bfdc36 100644
--- a/server/src/reportManager.ts
+++ b/server/src/reportManager.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Server Report Manager for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/server/src/reportManagerServer.ts b/server/src/reportManagerServer.ts
index fe21584..bd4adc8 100644
--- a/server/src/reportManagerServer.ts
+++ b/server/src/reportManagerServer.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Server Report Manager for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/server/src/reportToDiagnostic.ts b/server/src/reportToDiagnostic.ts
index 4ab93df..25fe5c6 100644
--- a/server/src/reportToDiagnostic.ts
+++ b/server/src/reportToDiagnostic.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Server Report To Diagnostics Converter for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/server/src/reportTransformer.ts b/server/src/reportTransformer.ts
index 2434ab9..9397b11 100644
--- a/server/src/reportTransformer.ts
+++ b/server/src/reportTransformer.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Server Report Transformer for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/server/src/server.ts b/server/src/server.ts
index cdee81a..101254b 100644
--- a/server/src/server.ts
+++ b/server/src/server.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Server Entry for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/server/src/types/clientCapabilities.ts b/server/src/types/clientCapabilities.ts
index c57f3ca..b2273b5 100644
--- a/server/src/types/clientCapabilities.ts
+++ b/server/src/types/clientCapabilities.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Client Capabilities Descriptor for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/server/src/types/reportMeta.ts b/server/src/types/reportMeta.ts
index add08de..3404c6c 100644
--- a/server/src/types/reportMeta.ts
+++ b/server/src/types/reportMeta.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Language Server Report Meta Data Model for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/server/src/utils/log.ts b/server/src/utils/log.ts
index bea7b2e..7590fa3 100644
--- a/server/src/utils/log.ts
+++ b/server/src/utils/log.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Server Logger Module for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/webview/src/wikiView/initUI.ts b/webview/src/wikiView/initUI.ts
index 7abeea8..5e933ed 100644
--- a/webview/src/wikiView/initUI.ts
+++ b/webview/src/wikiView/initUI.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Client Wiki View WebView Init UI Script for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/webview/src/wikiView/main.ts b/webview/src/wikiView/main.ts
index ea2080c..659d08d 100644
--- a/webview/src/wikiView/main.ts
+++ b/webview/src/wikiView/main.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Client Wiki View WebView Script for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/webview/src/wikiView/mdTransformer.ts b/webview/src/wikiView/mdTransformer.ts
index c078c02..724a492 100644
--- a/webview/src/wikiView/mdTransformer.ts
+++ b/webview/src/wikiView/mdTransformer.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Client Wiki View WebView Script for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/webview/src/wikiView/state.ts b/webview/src/wikiView/state.ts
index 70c21ee..9b86dda 100644
--- a/webview/src/wikiView/state.ts
+++ b/webview/src/wikiView/state.ts
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* Client Wiki View WebView Persisted State Definition for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
--
Gitee
From db76fd5152b3f56530628575c9aded38885cfae2 Mon Sep 17 00:00:00 2001
From: liccc
Date: Tue, 10 Sep 2024 21:27:23 +0800
Subject: [PATCH 6/6] style: fix indent error
---
.vscode/settings.json | 4 +-
client/src/wikiView/wikiViewProvider.ts | 69 ++++++++++++++-----------
esbuild.js | 4 +-
scripts/merge_l10n.py | 4 +-
4 files changed, 46 insertions(+), 35 deletions(-)
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 8912006..9fc8ab9 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -40,5 +40,7 @@
"command": "extension.typescriptImportsSort",
"includeFileExtensions": [".ts"]
}
- }
+ },
+ "editor.tabSize": 2,
+ "typescript.tsdk": "node_modules\\typescript\\lib"
}
diff --git a/client/src/wikiView/wikiViewProvider.ts b/client/src/wikiView/wikiViewProvider.ts
index 6ce052b..86bbad8 100644
--- a/client/src/wikiView/wikiViewProvider.ts
+++ b/client/src/wikiView/wikiViewProvider.ts
@@ -14,7 +14,7 @@
* (Client) Wiki View Provider for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
- * Last Change: Sep 6, 2024
+ * Last Change: Sep 10, 2024
**************************************************************************************/
import * as fs from "fs";
@@ -110,36 +110,43 @@ export class WikiViewProvider implements vscode.WebviewViewProvider {
let bodyHtml = "" + vscode.l10n.t("No Wiki pages have been opened yet.") + "
";
- return `
-
-
-
-
-
- RVPortingTool
-
-
-
- ${bodyHtml}
-
-
- `;
+ return `
+
+
+
+
+
+
+ RVPortingTool
+
+
+
+
+ ${bodyHtml}
+
+
+
+
+ `;
}
}
diff --git a/esbuild.js b/esbuild.js
index 5a4a9a4..f180a98 100644
--- a/esbuild.js
+++ b/esbuild.js
@@ -8,7 +8,9 @@
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
- *
+ **************************************************************************************/
+
+/***************************************************************************************
* ESBuild Script for RVPortingTool VSCode Extension
*
* Author: Lightning Rainstorm
diff --git a/scripts/merge_l10n.py b/scripts/merge_l10n.py
index ac47143..ae67356 100644
--- a/scripts/merge_l10n.py
+++ b/scripts/merge_l10n.py
@@ -15,7 +15,7 @@ def merge_l10n(base_dir: str):
with open(bd_path, 'r', encoding='utf-8') as f:
bd_base: Dict[str, str] = json.load(f)
with open(bd_path, 'w', encoding='utf-8') as f:
- json.dump(bd_base, f, indent=4, sort_keys=True, ensure_ascii=False)
+ json.dump(bd_base, f, indent=2, sort_keys=True, ensure_ascii=False)
for f_item in os.listdir(base_dir):
if not f_item.startswith('bundle.l10n') or f_item == 'bundle.l10n.json':
@@ -39,7 +39,7 @@ def merge_l10n(base_dir: str):
# Save merged result
with open(f_path, 'w', encoding='utf-8') as f:
- json.dump(bd_current, f, indent=4, sort_keys=True, ensure_ascii=False)
+ json.dump(bd_current, f, indent=2, sort_keys=True, ensure_ascii=False)
print("Updated {}".format(f_item))
--
Gitee