From 82d3d1985b005be119b7a6e5cc54924114e69026 Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Thu, 1 Aug 2024 22:15:03 -0700 Subject: [PATCH 01/14] Add basic unit test infrastructure --- .vscode-test.mjs | 3 + package-lock.json | 1746 ++++++++++++++++++++++++++++++++++++++++++++- package.json | 20 +- 3 files changed, 1753 insertions(+), 16 deletions(-) create mode 100644 .vscode-test.mjs diff --git a/.vscode-test.mjs b/.vscode-test.mjs new file mode 100644 index 00000000..c1a0379c --- /dev/null +++ b/.vscode-test.mjs @@ -0,0 +1,3 @@ +// https://github.com/microsoft/vscode-test-cli +import { defineConfig } from '@vscode/test-cli'; +export default defineConfig({ files: 'out/test/**/*.test.js' }); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 8d7a969a..d480d160 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "vscode-autohotkey2-lsp", - "version": "2.4.6", + "version": "2.4.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "vscode-autohotkey2-lsp", - "version": "2.4.6", + "version": "2.4.8", "license": "LGPLv3.0", "dependencies": { "vscode-languageclient": "^9.0.1", @@ -17,6 +17,8 @@ "devDependencies": { "@eslint/js": "^9.4.0", "@types/vscode": "^1.82.0", + "@vscode/test-cli": "^0.0.10", + "@vscode/test-electron": "^2.4.1", "@vscode/vsce": "^2.27.0", "eslint": "^9.4.0", "globals": "^15.4.0", @@ -254,6 +256,13 @@ "node": ">=16" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -416,6 +425,119 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -518,6 +640,17 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@types/eslint": { "version": "8.56.10", "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.10.tgz", @@ -547,6 +680,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -554,6 +694,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/mocha": { + "version": "10.0.7", + "resolved": "https://registry.npmmirror.com/@types/mocha/-/mocha-10.0.7.tgz", + "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "20.14.2", "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.14.2.tgz", @@ -689,6 +836,107 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@vscode/test-cli": { + "version": "0.0.10", + "resolved": "https://registry.npmmirror.com/@vscode/test-cli/-/test-cli-0.0.10.tgz", + "integrity": "sha512-B0mMH4ia+MOOtwNiLi79XhA+MLmUItIC8FckEuKrVAVriIuSWjt7vv4+bF8qVFiNFe4QRfzPaIZk39FZGWEwHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mocha": "^10.0.2", + "c8": "^9.1.0", + "chokidar": "^3.5.3", + "enhanced-resolve": "^5.15.0", + "glob": "^10.3.10", + "minimatch": "^9.0.3", + "mocha": "^10.2.0", + "supports-color": "^9.4.0", + "yargs": "^17.7.2" + }, + "bin": { + "vscode-test": "out/bin.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@vscode/test-cli/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, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@vscode/test-cli/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/test-cli/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/test-cli/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@vscode/test-electron": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/@vscode/test-electron/-/test-electron-2.4.1.tgz", + "integrity": "sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "jszip": "^3.10.1", + "ora": "^7.0.1", + "semver": "^7.6.2" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/@vscode/vsce": { "version": "2.27.0", "resolved": "https://registry.npmmirror.com/@vscode/vsce/-/vsce-2.27.0.tgz", @@ -1163,6 +1411,16 @@ "ajv": "^6.9.1" } }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -1186,6 +1444,20 @@ "node": ">=4" } }, + "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, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", @@ -1246,8 +1518,20 @@ "url": "https://feross.org/support" } ], + "license": "MIT" + }, + "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, "license": "MIT", - "optional": true + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/bl": { "version": "4.1.0", @@ -1293,6 +1577,13 @@ "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, + "license": "ISC" + }, "node_modules/browserslist": { "version": "4.23.0", "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.0.tgz", @@ -1376,6 +1667,97 @@ "dev": true, "license": "MIT" }, + "node_modules/c8": { + "version": "9.1.0", + "resolved": "https://registry.npmmirror.com/c8/-/c8-9.1.0.tgz", + "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^3.1.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=14.14.0" + } + }, + "node_modules/c8/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, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/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, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/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, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8/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, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz", @@ -1406,6 +1788,19 @@ "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001629", "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001629.tgz", @@ -1482,6 +1877,44 @@ "url": "https://github.com/sponsors/fb55" } }, + "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, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz", @@ -1500,6 +1933,50 @@ "node": ">=6.0" } }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz", @@ -1579,6 +2056,20 @@ "dev": true, "license": "MIT" }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1642,6 +2133,19 @@ } } }, + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz", @@ -1726,6 +2230,16 @@ "node": ">=8" } }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "license": "BSD-3-Clause", + "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", @@ -1798,6 +2312,13 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmmirror.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -1815,6 +2336,13 @@ "dev": true, "license": "ISC" }, + "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, + "license": "MIT" + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -2433,6 +2961,23 @@ "dev": true, "license": "ISC" }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", @@ -2463,6 +3008,21 @@ "dev": true, "license": "ISC" }, + "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, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", @@ -2473,6 +3033,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -2666,6 +3236,16 @@ "node": ">= 0.4" } }, + "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, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -2679,6 +3259,13 @@ "node": ">=10" } }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, "node_modules/htmlparser2": { "version": "8.0.2", "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-8.0.2.tgz", @@ -2714,9 +3301,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "version": "7.0.5", + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, "license": "MIT", "dependencies": { @@ -2746,8 +3333,7 @@ "url": "https://feross.org/support" } ], - "license": "BSD-3-Clause", - "optional": true + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.3.1", @@ -2759,6 +3345,13 @@ "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, + "license": "MIT" + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2853,6 +3446,19 @@ "node": ">= 0.10" } }, + "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, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz", @@ -2892,6 +3498,16 @@ "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", @@ -2905,6 +3521,19 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", @@ -2925,6 +3554,16 @@ "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -2938,6 +3577,19 @@ "node": ">=0.10.0" } }, + "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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz", @@ -2951,6 +3603,13 @@ "node": ">=8" } }, + "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, + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", @@ -2968,6 +3627,84 @@ "node": ">=0.10.0" } }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmmirror.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmmirror.com/jest-worker/-/jest-worker-27.5.1.tgz", @@ -3103,6 +3840,52 @@ "safe-buffer": "^5.0.1" } }, + "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, + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/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, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/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, + "license": "MIT" + }, + "node_modules/jszip/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, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/jwa": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/jwa/-/jwa-2.0.0.tgz", @@ -3183,6 +3966,16 @@ "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, + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/linkify-it": { "version": "3.0.3", "resolved": "https://registry.npmmirror.com/linkify-it/-/linkify-it-3.0.3.tgz", @@ -3272,6 +4065,99 @@ "dev": true, "license": "MIT" }, + "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, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/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, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/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, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/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, + "license": "MIT" + }, + "node_modules/log-symbols/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", @@ -3285,6 +4171,22 @@ "node": ">=10" } }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/markdown-it": { "version": "12.3.2", "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-12.3.2.tgz", @@ -3386,6 +4288,16 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/mimic-response": { "version": "3.1.0", "resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz", @@ -3424,6 +4336,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmmirror.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", @@ -3432,6 +4354,251 @@ "license": "MIT", "optional": true }, + "node_modules/mocha": { + "version": "10.7.0", + "resolved": "https://registry.npmmirror.com/mocha/-/mocha-10.7.0.tgz", + "integrity": "sha512-v8/rBWr2VO5YkspYINnvu81inSz2y3ODJrhO175/Exzor1RcEZZkizgE2A+w/CAXXoESS8Kys5E62dOHGHzULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^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" + }, + "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, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "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, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/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, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "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/mocha/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/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, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/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, + "license": "ISC", + "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, + "license": "MIT" + }, + "node_modules/mocha/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, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/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, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", @@ -3497,6 +4664,16 @@ "dev": true, "license": "MIT" }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", @@ -3530,6 +4707,22 @@ "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmmirror.com/open/-/open-8.4.2.tgz", @@ -3566,6 +4759,127 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/ora/-/ora-7.0.1.tgz", + "integrity": "sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.0", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^1.3.0", + "log-symbols": "^5.1.0", + "stdin-discarder": "^0.1.0", + "string-width": "^6.1.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/string-width": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-6.1.0.tgz", + "integrity": "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^10.2.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz", @@ -3605,6 +4919,20 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "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, + "license": "(MIT AND Zlib)" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", @@ -3709,6 +5037,30 @@ "dev": true, "license": "MIT" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", @@ -3797,6 +5149,13 @@ "node": ">= 0.8.0" } }, + "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, + "license": "MIT" + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", @@ -3902,7 +5261,6 @@ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -3912,6 +5270,19 @@ "node": ">= 6" } }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/rechoir": { "version": "0.7.1", "resolved": "https://registry.npmmirror.com/rechoir/-/rechoir-0.7.1.tgz", @@ -3925,6 +5296,16 @@ "node": ">= 0.10" } }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz", @@ -3966,6 +5347,30 @@ "node": ">=8" } }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", @@ -4088,6 +5493,13 @@ "node": ">= 0.4" } }, + "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, + "license": "MIT" + }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -4143,6 +5555,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz", @@ -4233,6 +5658,59 @@ "node": ">=0.10.0" } }, + "node_modules/stdin-discarder": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz", + "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stdin-discarder/node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/stdin-discarder/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/stoppable": { "version": "1.1.0", "resolved": "https://registry.npmmirror.com/stoppable/-/stoppable-1.1.0.tgz", @@ -4250,11 +5728,41 @@ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { "safe-buffer": "~5.2.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, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "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, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4268,6 +5776,20 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -4408,6 +5930,21 @@ "dev": true, "license": "MIT" }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", @@ -4833,8 +6370,7 @@ "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, - "license": "MIT", - "optional": true + "license": "MIT" }, "node_modules/uuid": { "version": "8.3.2", @@ -4846,6 +6382,21 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmmirror.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, "node_modules/vscode-jsonrpc": { "version": "8.2.0", "resolved": "https://registry.npmmirror.com/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", @@ -5108,6 +6659,122 @@ "node": ">=0.10.0" } }, + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmmirror.com/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, + "license": "Apache-2.0" + }, + "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, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "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, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/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, + "license": "MIT" + }, + "node_modules/wrap-ansi/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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/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, + "license": "MIT" + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", @@ -5139,6 +6806,16 @@ "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, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", @@ -5146,6 +6823,51 @@ "dev": true, "license": "ISC" }, + "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, + "license": "MIT", + "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": "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, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "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, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmmirror.com/yauzl/-/yauzl-2.10.0.tgz", diff --git a/package.json b/package.json index afe3ce90..dbded5e6 100644 --- a/package.json +++ b/package.json @@ -56,8 +56,15 @@ "light": "icon_filetype.png" } }, - { "id": "ahk", "aliases": ["AutoHotkey"] }, - { "id": "~ahk2-output" } + { + "id": "ahk", + "aliases": [ + "AutoHotkey" + ] + }, + { + "id": "~ahk2-output" + } ], "grammars": [ { @@ -579,11 +586,14 @@ "patch": "npm version patch", "publish": "vsce publish", "package": "vsce package", - "chrome": "vscode-test-web --browserType=chromium --extensionDevelopmentPath=. ./test-data" + "chrome": "vscode-test-web --browserType=chromium --extensionDevelopmentPath=. ./test-data", + "test": "vscode-test" }, "devDependencies": { "@eslint/js": "^9.4.0", "@types/vscode": "^1.82.0", + "@vscode/test-cli": "^0.0.10", + "@vscode/test-electron": "^2.4.1", "@vscode/vsce": "^2.27.0", "eslint": "^9.4.0", "globals": "^15.4.0", @@ -600,5 +610,7 @@ "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, - "overrides": { "eslint": "^9.4.0" } + "overrides": { + "eslint": "^9.4.0" + } } From 80d9c417963d418522c3adfe669390c486b490d2 Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Thu, 1 Aug 2024 22:29:14 -0700 Subject: [PATCH 02/14] Add sample test --- .vscode-test.mjs => client/.vscode-test.mjs | 5 ++++- client/src/test/sample.test.ts | 15 +++++++++++++++ package-lock.json | 1 + package.json | 3 ++- 4 files changed, 22 insertions(+), 2 deletions(-) rename .vscode-test.mjs => client/.vscode-test.mjs (53%) create mode 100644 client/src/test/sample.test.ts diff --git a/.vscode-test.mjs b/client/.vscode-test.mjs similarity index 53% rename from .vscode-test.mjs rename to client/.vscode-test.mjs index c1a0379c..5812c63a 100644 --- a/.vscode-test.mjs +++ b/client/.vscode-test.mjs @@ -1,3 +1,6 @@ // https://github.com/microsoft/vscode-test-cli import { defineConfig } from '@vscode/test-cli'; -export default defineConfig({ files: 'out/test/**/*.test.js' }); \ No newline at end of file +export default defineConfig({ + files: 'dist/test/**/*.test.js', + version: '1.92.0' +}); \ No newline at end of file diff --git a/client/src/test/sample.test.ts b/client/src/test/sample.test.ts new file mode 100644 index 00000000..a8c89c82 --- /dev/null +++ b/client/src/test/sample.test.ts @@ -0,0 +1,15 @@ +import * as assert from 'assert'; + +// You can import and use all API from the 'vscode' module +// as well as import your extension to test it +import * as vscode from 'vscode'; +// import * as myExtension from '../extension'; + +suite('Extension Test Suite 1', () => { + vscode.window.showInformationMessage('Start all tests.'); + + test('Sample test', () => { + assert.equal(-1, [1, 2, 3].indexOf(5)); + assert.equal(-1, [1, 2, 3].indexOf(0)); + }); +}); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d480d160..eefcd453 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "@vscode/vsce": "^2.27.0", "eslint": "^9.4.0", "globals": "^15.4.0", + "mocha": "^10.7.0", "path-browserify": "^1.0.1", "ts-loader": "^9.4.0", "typescript": "^5.3.2", diff --git a/package.json b/package.json index dbded5e6..4b9b936c 100644 --- a/package.json +++ b/package.json @@ -587,7 +587,7 @@ "publish": "vsce publish", "package": "vsce package", "chrome": "vscode-test-web --browserType=chromium --extensionDevelopmentPath=. ./test-data", - "test": "vscode-test" + "test": "cd client && tsc && vscode-test" }, "devDependencies": { "@eslint/js": "^9.4.0", @@ -597,6 +597,7 @@ "@vscode/vsce": "^2.27.0", "eslint": "^9.4.0", "globals": "^15.4.0", + "mocha": "^10.7.0", "path-browserify": "^1.0.1", "ts-loader": "^9.4.0", "typescript": "^5.3.2", From 5af3fb0cab1a93221f976568b4d63ec24cc8553e Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Thu, 1 Aug 2024 22:30:05 -0700 Subject: [PATCH 03/14] Cleanup sample test --- client/src/test/sample.test.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/client/src/test/sample.test.ts b/client/src/test/sample.test.ts index a8c89c82..04d967c0 100644 --- a/client/src/test/sample.test.ts +++ b/client/src/test/sample.test.ts @@ -1,9 +1,5 @@ import * as assert from 'assert'; - -// You can import and use all API from the 'vscode' module -// as well as import your extension to test it import * as vscode from 'vscode'; -// import * as myExtension from '../extension'; suite('Extension Test Suite 1', () => { vscode.window.showInformationMessage('Start all tests.'); From d5fe089a38d7ee567f2416a413d02b3cb5622a29 Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Sat, 10 Aug 2024 15:27:13 -0700 Subject: [PATCH 04/14] Cleanup extension.ts a bit --- client/src/extension.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/client/src/extension.ts b/client/src/extension.ts index 875f807b..72ec5ab7 100644 --- a/client/src/extension.ts +++ b/client/src/extension.ts @@ -42,7 +42,8 @@ const textdecoders: TextDecoder[] = [new TextDecoder('utf8', { fatal: true }), n const isWindows = process.platform === 'win32'; export async function activate(context: ExtensionContext) { - // The server is implemented in node + /** Absolute path to `server.js` */ + // .replace(/^.*[\\/]/, '') is used to get the last part of the path const serverModule = context.asAbsolutePath(`server/${process.env.VSCODE_AHK_SERVER_PATH ?? __dirname.replace(/^.*[\\/]/, '')}/server.js`); // If the extension is launched in debug mode then the debug server options are used @@ -57,9 +58,8 @@ export async function activate(context: ExtensionContext) { }; // eslint-disable-next-line @typescript-eslint/no-explicit-any - const request_handlers: { [cmd: string]: any } = { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - 'ahk2.executeCommand': (params: any[]) => commands.executeCommand(params.shift(), ...params), + const request_handlers: Record = { + 'ahk2.executeCommand': (params: string[]) => commands.executeCommand(params.shift() as string, ...params), 'ahk2.getActiveTextEditorUriAndPosition': () => { const editor = window.activeTextEditor; if (!editor) return; @@ -102,6 +102,7 @@ export async function activate(context: ExtensionContext) { ...ahkconfig } }; + if (ahkconfig.FormatOptions?.one_true_brace !== undefined) window.showWarningMessage('configuration "AutoHotkey2.FormatOptions.one_true_brace" is deprecated!\nplease use "AutoHotkey2.FormatOptions.brace_style"'); From 42078d22338449b1283511f3131ebf54ef5a5099 Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Sat, 10 Aug 2024 18:29:40 -0700 Subject: [PATCH 05/14] Test resolvePath --- client/src/extension.ts | 3 ++- client/src/test/extension.test.ts | 10 ++++++++++ client/src/test/sample.test.ts | 11 ----------- 3 files changed, 12 insertions(+), 12 deletions(-) create mode 100644 client/src/test/extension.test.ts delete mode 100644 client/src/test/sample.test.ts diff --git a/client/src/extension.ts b/client/src/extension.ts index 72ec5ab7..98846db7 100644 --- a/client/src/extension.ts +++ b/client/src/extension.ts @@ -677,7 +677,8 @@ async function onDidChangegetInterpreter() { } } -function resolvePath(path: string, workspace?: string, resolveSymbolicLink = true): string { +/** Resolves a given path to an absolute path. Returns empty string if resolution fails. */ +export function resolvePath(path: string, workspace?: string, resolveSymbolicLink = true): string { if (!path) return ''; const paths: string[] = []; diff --git a/client/src/test/extension.test.ts b/client/src/test/extension.test.ts new file mode 100644 index 00000000..5d9757b4 --- /dev/null +++ b/client/src/test/extension.test.ts @@ -0,0 +1,10 @@ +import * as assert from 'assert'; +import {resolvePath} from '../extension'; + +suite('resolvePath', () => { + [['', '']].forEach(([input, expected]) => { + test(`resolvePath('${input}') === '${expected}'`, () => { + assert.strictEqual(resolvePath(input), expected); + }); + }); +}); \ No newline at end of file diff --git a/client/src/test/sample.test.ts b/client/src/test/sample.test.ts deleted file mode 100644 index 04d967c0..00000000 --- a/client/src/test/sample.test.ts +++ /dev/null @@ -1,11 +0,0 @@ -import * as assert from 'assert'; -import * as vscode from 'vscode'; - -suite('Extension Test Suite 1', () => { - vscode.window.showInformationMessage('Start all tests.'); - - test('Sample test', () => { - assert.equal(-1, [1, 2, 3].indexOf(5)); - assert.equal(-1, [1, 2, 3].indexOf(0)); - }); -}); \ No newline at end of file From c857b6c85b1d7387b94877931ceaf31d9a66a9ab Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Sat, 10 Aug 2024 18:30:07 -0700 Subject: [PATCH 06/14] Fixup existsSync --- client/src/extension.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/client/src/extension.ts b/client/src/extension.ts index 98846db7..669fa217 100644 --- a/client/src/extension.ts +++ b/client/src/extension.ts @@ -700,12 +700,15 @@ export function resolvePath(path: string, workspace?: string, resolveSymbolicLin return ''; } +/** + * Returns whether the given path exists. + * Only returns false if lstatSync give an ENOENT error. + */ function existsSync(path: string): boolean { try { lstatSync(path); } catch (err) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - if ((err as any)?.code === 'ENOENT') + if ((err as { code: string})?.code === 'ENOENT') return false; } return true; From 026aeab42d9f362580174b04574faa0da9148c88 Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Sat, 10 Aug 2024 18:30:18 -0700 Subject: [PATCH 07/14] Document statSync --- client/src/extension.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/extension.ts b/client/src/extension.ts index 669fa217..dd4837b6 100644 --- a/client/src/extension.ts +++ b/client/src/extension.ts @@ -714,6 +714,7 @@ function existsSync(path: string): boolean { return true; } +/** Returns lstatSync on the file, resolving the symbolic link if it exists. */ function statSync(path: string) { const st = lstatSync(path); if (st.isSymbolicLink()) From 712e8645e0ea13f7cc0ca2e5957511e7509cfeba Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Sat, 10 Aug 2024 18:30:28 -0700 Subject: [PATCH 08/14] Document resolvePath --- client/src/extension.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/extension.ts b/client/src/extension.ts index dd4837b6..4c7dd2b8 100644 --- a/client/src/extension.ts +++ b/client/src/extension.ts @@ -682,8 +682,10 @@ export function resolvePath(path: string, workspace?: string, resolveSymbolicLin if (!path) return ''; const paths: string[] = []; + // If the path does not contain a colon, resolve it relative to the workspace if (!path.includes(':')) paths.push(resolve(workspace ?? '', path)); + // If there are no slashes or backslashes in the path and the platform is Windows if (!/[\\/]/.test(path) && isWindows) paths.push(execSync(`where ${path}`, { encoding: 'utf-8' }).trim()); paths.push(path); From 58015be3947d39032b586ec95612e06e6e03564f Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Sat, 10 Aug 2024 18:30:53 -0700 Subject: [PATCH 09/14] Fixup onDidChangegetInterpreter --- client/src/extension.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/client/src/extension.ts b/client/src/extension.ts index 4c7dd2b8..0bcb1d99 100644 --- a/client/src/extension.ts +++ b/client/src/extension.ts @@ -102,7 +102,7 @@ export async function activate(context: ExtensionContext) { ...ahkconfig } }; - + if (ahkconfig.FormatOptions?.one_true_brace !== undefined) window.showWarningMessage('configuration "AutoHotkey2.FormatOptions.one_true_brace" is deprecated!\nplease use "AutoHotkey2.FormatOptions.brace_style"'); @@ -662,18 +662,18 @@ function findfile(files: string[], workspace: string) { } async function onDidChangegetInterpreter() { - let path = ahkpath_cur; const uri = window.activeTextEditor?.document.uri; const ws = uri ? workspace.getWorkspaceFolder(uri)?.uri.fsPath : undefined; - path = resolvePath(path, ws, false); - if (path.toLowerCase().endsWith('.exe') && existsSync(path)) { - if (path !== ahkStatusBarItem.tooltip) { - ahkStatusBarItem.tooltip = path; - ahkStatusBarItem.text = (await getAHKversion([path]))[0] || (zhcn ? '未知版本' : 'Unknown version'); + let ahkPath = resolvePath(ahkpath_cur, ws, false); + if (ahkPath.toLowerCase().endsWith('.exe') && existsSync(ahkPath)) { + // ahkStatusBarItem.tooltip is the current saved interpreter path + if (ahkPath !== ahkStatusBarItem.tooltip) { + ahkStatusBarItem.tooltip = ahkPath; + ahkStatusBarItem.text = (await getAHKversion([ahkPath]))[0] || (zhcn ? '未知版本' : 'Unknown version'); } } else { ahkStatusBarItem.text = (zhcn ? '选择AutoHotkey2解释器' : 'Select AutoHotkey2 Interpreter'); - ahkStatusBarItem.tooltip = undefined, path = ''; + ahkStatusBarItem.tooltip = undefined, ahkPath = ''; } } From 24ff02c8d10b53c0286fe79c3f5a9bc47e469fbe Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Sat, 10 Aug 2024 18:31:11 -0700 Subject: [PATCH 10/14] Add validate script and rimraf step --- package-lock.json | 117 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 6 ++- 2 files changed, 121 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index eefcd453..7f6a6893 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "globals": "^15.4.0", "mocha": "^10.7.0", "path-browserify": "^1.0.1", + "rimraf": "^6.0.1", "ts-loader": "^9.4.0", "typescript": "^5.3.2", "typescript-eslint": "^7.12.0", @@ -5383,6 +5384,122 @@ "node": ">=0.10.0" } }, + "node_modules/rimraf": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/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, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "11.0.0", + "resolved": "https://registry.npmmirror.com/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/jackspeak": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-4.0.1.tgz", + "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/rimraf/node_modules/lru-cache": { + "version": "11.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-11.0.0.tgz", + "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "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", diff --git a/package.json b/package.json index 4b9b936c..93d64c1a 100644 --- a/package.json +++ b/package.json @@ -578,7 +578,7 @@ }, "scripts": { "vscode:prepublish": "webpack --mode production --devtool hidden-source-map", - "compile": "webpack", + "compile": "rimraf client/dist && webpack", "compile-cli": "webpack --config webpack.config.cli.js --mode production --devtool hidden-source-map", "eslint": "eslint --fix", "watch": "tsc -b -w", @@ -587,7 +587,8 @@ "publish": "vsce publish", "package": "vsce package", "chrome": "vscode-test-web --browserType=chromium --extensionDevelopmentPath=. ./test-data", - "test": "cd client && tsc && vscode-test" + "test": "cd client && tsc && vscode-test", + "validate": "npm run compile && npm run test && npm run package" }, "devDependencies": { "@eslint/js": "^9.4.0", @@ -599,6 +600,7 @@ "globals": "^15.4.0", "mocha": "^10.7.0", "path-browserify": "^1.0.1", + "rimraf": "^6.0.1", "ts-loader": "^9.4.0", "typescript": "^5.3.2", "typescript-eslint": "^7.12.0", From 8dbf19028c72a0c822327482d9169c3c0199a0e5 Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Sat, 10 Aug 2024 18:43:32 -0700 Subject: [PATCH 11/14] Ignore new test files (validated with --debug) --- eslint.config.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 80c09fc8..fc24cdc2 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -15,7 +15,7 @@ export default [ pluginJs.configs.recommended, ...tseslint.configs.recommended, { - ignores: ['**/*.js', '!**/src/*'] + ignores: ['**/*.js', '**/*.d.ts', '**/.vscode-test-web/*', '**/.vscode-test/*'], }, { rules: { From d5c50be24faffb443538543f09103d8fc55ca62a Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Sat, 10 Aug 2024 19:07:05 -0700 Subject: [PATCH 12/14] Add prettierrc and mock lstatSync --- client/src/extension.ts | 3 +- client/src/test/extension.test.ts | 32 +- package-lock.json | 155 ++++ package.json | 1253 +++++++++++++++-------------- 4 files changed, 818 insertions(+), 625 deletions(-) diff --git a/client/src/extension.ts b/client/src/extension.ts index 0bcb1d99..ae6884f1 100644 --- a/client/src/extension.ts +++ b/client/src/extension.ts @@ -695,7 +695,8 @@ export function resolvePath(path: string, workspace?: string, resolveSymbolicLin if (lstatSync(path).isSymbolicLink() && resolveSymbolicLink) path = resolve(path, '..', readlinkSync(path)); return path; - } catch { + } catch (ex) { + console.log("resolvePath threw exception", ex); continue; } } diff --git a/client/src/test/extension.test.ts b/client/src/test/extension.test.ts index 5d9757b4..3b7ecec3 100644 --- a/client/src/test/extension.test.ts +++ b/client/src/test/extension.test.ts @@ -1,10 +1,28 @@ import * as assert from 'assert'; -import {resolvePath} from '../extension'; +import * as sinon from 'sinon'; +import * as fs from 'fs'; +import { resolvePath } from '../extension'; suite('resolvePath', () => { - [['', '']].forEach(([input, expected]) => { - test(`resolvePath('${input}') === '${expected}'`, () => { - assert.strictEqual(resolvePath(input), expected); - }); - }); -}); \ No newline at end of file + let lstatSyncStub: sinon.SinonStub; + + suiteSetup(() => { + lstatSyncStub = sinon.stub(fs, 'lstatSync'); + }); + + const theories: ([string, string] | [string, string, boolean])[] = [ + ['', ''], + ['C:/out.txt', 'C:/out.txt'], + ]; + + theories.forEach(([input, expected, isSymbolicLink = false]) => { + test(`resolvePath('${input}') === '${expected}'`, () => { + // Mock the behavior of fs.lstatSync + lstatSyncStub + .withArgs(input) + .returns({ isSymbolicLink: () => isSymbolicLink }); + + assert.strictEqual(resolvePath(input), expected); + }); + }); +}); diff --git a/package-lock.json b/package-lock.json index 7f6a6893..5428d09a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ }, "devDependencies": { "@eslint/js": "^9.4.0", + "@types/sinon": "^17.0.3", "@types/vscode": "^1.82.0", "@vscode/test-cli": "^0.0.10", "@vscode/test-electron": "^2.4.1", @@ -25,6 +26,7 @@ "mocha": "^10.7.0", "path-browserify": "^1.0.1", "rimraf": "^6.0.1", + "sinon": "^18.0.0", "ts-loader": "^9.4.0", "typescript": "^5.3.2", "typescript-eslint": "^7.12.0", @@ -653,6 +655,55 @@ "node": ">=14" } }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmmirror.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmmirror.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true, + "license": "(Unlicense OR Apache-2.0)" + }, "node_modules/@types/eslint": { "version": "8.56.10", "resolved": "https://registry.npmmirror.com/@types/eslint/-/eslint-8.56.10.tgz", @@ -713,6 +764,23 @@ "undici-types": "~5.26.4" } }, + "node_modules/@types/sinon": { + "version": "17.0.3", + "resolved": "https://registry.npmmirror.com/@types/sinon/-/sinon-17.0.3.tgz", + "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmmirror.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/vscode": { "version": "1.90.0", "resolved": "https://registry.npmmirror.com/@types/vscode/-/vscode-1.90.0.tgz", @@ -3888,6 +3956,13 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/just-extend": { + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", + "dev": true, + "license": "MIT" + }, "node_modules/jwa": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/jwa/-/jwa-2.0.0.tgz", @@ -4011,6 +4086,13 @@ "node": ">=8" } }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmmirror.com/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.includes": { "version": "4.3.0", "resolved": "https://registry.npmmirror.com/lodash.includes/-/lodash.includes-4.3.0.tgz", @@ -4637,6 +4719,20 @@ "dev": true, "license": "MIT" }, + "node_modules/nise": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/nise/-/nise-6.0.0.tgz", + "integrity": "sha512-K8ePqo9BFvN31HXwEtTNGzgrPpmvgciDsFz8aztFjt4LqKO/JeFD8tBOeuDiCMXrIl/m1YvfH8auSpxfaD09wg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + } + }, "node_modules/node-abi": { "version": "3.63.0", "resolved": "https://registry.npmmirror.com/node-abi/-/node-abi-3.63.0.tgz", @@ -5063,6 +5159,13 @@ "dev": true, "license": "ISC" }, + "node_modules/path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "dev": true, + "license": "MIT" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", @@ -5735,6 +5838,48 @@ "simple-concat": "^1.0.0" } }, + "node_modules/sinon": { + "version": "18.0.0", + "resolved": "https://registry.npmmirror.com/sinon/-/sinon-18.0.0.tgz", + "integrity": "sha512-+dXDXzD1sBO6HlmZDd7mXZCR/y5ECiEiGCBSGuFD/kZ0bDTofPYc6JaeGmPSF+1j1MejGUWkORbYOLDyvqCWpA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.2.0", + "nise": "^6.0.0", + "supports-color": "^7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sinon/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", @@ -6247,6 +6392,16 @@ "node": ">= 0.8.0" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmmirror.com/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/typed-rest-client": { "version": "1.8.11", "resolved": "https://registry.npmmirror.com/typed-rest-client/-/typed-rest-client-1.8.11.tgz", diff --git a/package.json b/package.json index 93d64c1a..8b184cd5 100644 --- a/package.json +++ b/package.json @@ -1,619 +1,638 @@ { - "name": "vscode-autohotkey2-lsp", - "displayName": "AutoHotkey v2 Language Support", - "description": "AutoHotkey v2 Language Support, based on vscode-lsp.", - "author": "thqby", - "publisher": "thqby", - "version": "2.4.8", - "license": "LGPLv3.0", - "categories": [ - "Formatters", - "Programming Languages", - "Snippets" - ], - "keywords": [ - "ahk", - "ahk2", - "autohotkey", - "autohotkey2" - ], - "repository": { - "type": "git", - "url": "https://github.com/thqby/vscode-autohotkey2-lsp" - }, - "homepage": "https://github.com/thqby/vscode-autohotkey2-lsp/blob/main/README.md", - "icon": "icon.png", - "bugs": { - "url": "https://github.com/thqby/vscode-autohotkey2-lsp/issues" - }, - "engines": { - "vscode": "^1.82.0" - }, - "main": "./client/dist/extension", - "browser": "./client/dist/browserClientMain", - "contributes": { - "breakpoints": [ - { - "language": "ahk2" - } - ], - "languages": [ - { - "id": "ahk2", - "aliases": [ - "AutoHotkey2", - "autohotkey2", - "ahk2" - ], - "extensions": [ - ".ahk", - ".ah2", - ".ahk2" - ], - "configuration": "./ahk2.configuration.json", - "icon": { - "dark": "icon_filetype.png", - "light": "icon_filetype.png" - } - }, - { - "id": "ahk", - "aliases": [ - "AutoHotkey" - ] - }, - { - "id": "~ahk2-output" - } - ], - "grammars": [ - { - "language": "ahk2", - "scopeName": "source.ahk2", - "path": "./syntaxes/ahk2.tmLanguage.json", - "embeddedLanguages": { - "meta.embedded.ahk2": "ahk2" - }, - "unbalancedBracketScopes": [ - "keyword.keys.ahk2" - ] - }, - { - "language": "~ahk2-output", - "scopeName": "ahk2.output", - "path": "./syntaxes/ahk2-output.tmLanguage.json" - } - ], - "configuration": { - "title": "AutoHotkey2", - "properties": { - "AutoHotkey2.AutoLibInclude": { - "scope": "window", - "type": "string", - "enum": [ - "Disabled", - "Local", - "User and Standard", - "All" - ], - "default": "Disabled", - "description": "%ahk2.autolibinclude%" - }, - "AutoHotkey2.CommentTags": { - "scope": "window", - "type": "string", - "default": "^;;\\s*(?.+)", - "description": "%ahk2.commenttags%" - }, - "AutoHotkey2.CompilerCMD": { - "scope": "window", - "type": "string", - "default": "/compress 0 /base ${execPath}", - "markdownDescription": "%ahk2.compilercmd%" - }, - "AutoHotkey2.CompleteFunctionParens": { - "scope": "window", - "type": "boolean", - "default": false, - "markdownDescription": "%ahk2.completefunctionparens%" - }, - "AutoHotkey2.DebugConfiguration": { - "scope": "window", - "type": "object", - "default": { - "port": "9002-9100", - "useAnnounce": "detail", - "useAutoJumpToError": true, - "useDebugDirective": true, - "usePerfTips": true - }, - "description": "%ahk2.debugconfiguration%" - }, - "AutoHotkey2.Diagnostics.ClassNonDynamicMemberCheck": { - "scope": "window", - "type": "boolean", - "default": true, - "description": "%ahk2.diagnostics.class-non-dynamic-member-check%" - }, - "AutoHotkey2.Diagnostics.ParamsCheck": { - "scope": "window", - "type": "boolean", - "default": true, - "description": "%ahk2.diagnostics.paramscheck%" - }, - "AutoHotkey2.Warn.VarUnset": { - "scope": "window", - "type": "boolean", - "default": true, - "description": "%ahk2.warn.varunset%" - }, - "AutoHotkey2.Warn.LocalSameAsGlobal": { - "scope": "window", - "type": "boolean", - "default": false, - "description": "%ahk2.warn.localsameasglobal%" - }, - "AutoHotkey2.Warn.CallWithoutParentheses": { - "scope": "window", - "type": "string", - "enum": [ - "Off", - "Parentheses", - "On" - ], - "default": "Off", - "description": "%ahk2.warn.callwithoutparentheses%" - }, - "AutoHotkey2.ActionWhenV1IsDetected": { - "scope": "window", - "type": "string", - "default": "Warn", - "enum": [ - "Continue", - "Warn", - "StopParsing", - "SwitchToV1", - "SkipLine" - ], - "description": "%ahk2.actionwhenv1isdetected%" - }, - "AutoHotkey2.CompletionCommitCharacters": { - "scope": "window", - "type": "object", - "properties": { - "Class": { - "type": "string" - }, - "Function": { - "type": "string" - } - }, - "additionalProperties": { - "type": "string" - }, - "default": { - "Class": ".(", - "Function": "(" - }, - "markdownDescription": "%ahk2.completioncommitcharacters%" - }, - "AutoHotkey2.Files.Exclude": { - "scope": "window", - "type": "array", - "default": [], - "items": { - "type": "string" - }, - "uniqueItems": true, - "description": "%ahk2.files.exclude%" - }, - "AutoHotkey2.Files.ScanMaxDepth": { - "scope": "window", - "type": "integer", - "default": 2, - "description": "%ahk2.files.scanmaxdepth%" - }, - "AutoHotkey2.FormatOptions": { - "scope": "window", - "type": "object", - "properties": { - "array_style": { - "type": "string", - "enum": [ - "collapse", - "expand", - "none" - ], - "default": "none" - }, - "brace_style": { - "type": "string", - "enum": [ - "One True Brace", - "Allman", - "One True Brace Variant" - ], - "enumDescriptions": [ - "if 1 {\n} else {\n}", - "if 1\n{\n}\nelse\n{\n}", - "if 1 {\n}\nelse {\n}" - ] - }, - "break_chained_methods": { - "type": "boolean", - "default": false - }, - "ignore_comment": { - "type": "boolean", - "default": false - }, - "indent_string": { - "type": "string", - "default": "\t" - }, - "indent_between_hotif_directive": { - "type": "boolean", - "default": false - }, - "keyword_start_with_uppercase": { - "type": "boolean", - "default": false - }, - "max_preserve_newlines": { - "type": "number", - "default": 2 - }, - "object_style": { - "type": "string", - "enum": [ - "collapse", - "expand", - "none" - ], - "default": "none" - }, - "preserve_newlines": { - "type": "boolean", - "default": true - }, - "space_before_conditional": { - "type": "boolean", - "default": true - }, - "space_after_double_colon": { - "type": "boolean", - "default": true - }, - "space_in_empty_paren": { - "type": "boolean", - "default": false - }, - "space_in_other": { - "type": "boolean", - "default": true - }, - "space_in_paren": { - "type": "boolean", - "default": false - }, - "switch_case_alignment": { - "type": "boolean", - "default": false - }, - "symbol_with_same_case": { - "type": "boolean", - "default": false - }, - "white_space_before_inline_comment": { - "type": "string" - }, - "wrap_line_length": { - "type": "number", - "default": 0 - } - }, - "additionalProperties": { - "type": "string" - }, - "default": {} - }, - "AutoHotkey2.InterpreterPath": { - "scope": "window", - "type": "string", - "default": "C:\\Program Files\\Autohotkey\\v2\\AutoHotkey.exe", - "markdownDescription": "%ahk2.interpreterpath%" - }, - "AutoHotkey2.SymbolFoldingFromOpenBrace": { - "scope": "window", - "type": "boolean", - "default": false, - "description": "%ahk2.symbolfoldingfromopenbrace%" - }, - "AutoHotkey2.WorkingDirs": { - "scope": "window", - "type": "array", - "default": [], - "items": { - "type": "string" - }, - "uniqueItems": true, - "description": "%ahk2.workingdirs%" - }, - "AutoHotkey2.Syntaxes": { - "scope": "window", - "type": "string", - "markdownDescription": "%ahk2.syntaxes%" - } - } - }, - "configurationDefaults": { - "[ahk2]": { - "editor.defaultFormatter": "thqby.vscode-autohotkey2-lsp", - "editor.quickSuggestions": { - "other": true, - "comments": false, - "strings": true - } - } - }, - "commands": [ - { - "enablement": "editorLangId == ahk2 && shellExecutionSupported", - "command": "ahk2.debug", - "title": "%ahk2.debug%", - "icon": "$(debug)", - "category": "ahk2" - }, - { - "enablement": "!isWeb", - "command": "ahk2.debug.attach", - "title": "%ahk2.debug.attach%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && shellExecutionSupported", - "command": "ahk2.debug.params", - "title": "%ahk2.debug.params%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2", - "command": "ahk2.diagnostic.full", - "title": "%ahk2.diagnostic.full%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2", - "command": "ahk2.export.symbols", - "title": "%ahk2.export.symbols%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && shellExecutionSupported", - "command": "ahk2.run", - "title": "%ahk2.run%", - "icon": "$(play)", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.selection.run", - "title": "%ahk2.selection.run%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.stop", - "title": "%ahk2.stop%", - "icon": "$(stop)", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && shellExecutionSupported", - "command": "ahk2.compile", - "title": "%ahk2.compile%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.help", - "title": "%ahk2.help%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2", - "command": "ahk2.generate.comment", - "title": "%ahk2.generatecomment%", - "category": "ahk2" - }, - { - "enablement": "!isWeb", - "command": "ahk2.setinterpreter", - "title": "%ahk2.setinterpreter%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2", - "command": "ahk2.updateversioninfo", - "title": "%ahk2.updateversioninfo%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 || editorLangId == ahk", - "command": "ahk2.switch", - "title": "Switch v1/v2", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.selectsyntaxes", - "title": "Select syntaxes", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && resourceScheme == file", - "command": "ahk2.setscriptdir", - "title": "%ahk2.setscriptdir%", - "category": "ahk2" - } - ], - "menus": { - "editor/context": [ - { - "when": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.debug", - "group": "navigation@1" - }, - { - "when": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.debug.attach", - "group": "navigation@2" - }, - { - "when": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.debug.params", - "group": "navigation@2" - }, - { - "when": "editorLangId == ahk2 && !isWeb && editorHasSelection", - "command": "ahk2.selection.run", - "group": "navigation@0" - }, - { - "when": "editorLangId == ahk2 && !isWeb && !editorHasSelection", - "command": "ahk2.run", - "group": "navigation@0" - }, - { - "when": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.compile", - "group": "navigation@2" - }, - { - "when": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.help", - "group": "navigation@1" - }, - { - "when": "editorLangId == ahk2 && !isWeb && ahk2:isRunning", - "command": "ahk2.stop", - "group": "navigation@0" - }, - { - "when": "editorLangId == ahk2", - "command": "ahk2.generate.comment", - "group": "navigation@2" - }, - { - "when": "editorLangId == ahk2", - "command": "ahk2.updateversioninfo", - "group": "navigation@2" - } - ], - "editor/title": [ - { - "command": "ahk2.run", - "group": "navigation@0", - "when": "resourceLangId == ahk2 && shellExecutionSupported" - }, - { - "command": "ahk2.stop", - "group": "navigation@0", - "when": "resourceLangId == ahk2 && ahk2:isRunning && shellExecutionSupported" - }, - { - "command": "ahk2.debug", - "group": "navigation@1", - "when": "resourceLangId == ahk2 && shellExecutionSupported" - } - ] - }, - "keybindings": [ - { - "command": "ahk2.run", - "key": "ctrl+f5", - "when": "editorLangId == ahk2 && !isWeb && !editorHasSelection" - }, - { - "command": "ahk2.selection.run", - "key": "ctrl+f5", - "when": "editorLangId == ahk2 && !isWeb && editorHasSelection" - }, - { - "command": "ahk2.compile", - "key": "ctrl+shift+f5", - "when": "editorLangId == ahk2 && !isWeb" - }, - { - "command": "ahk2.debug", - "key": "f5", - "when": "editorLangId == ahk2 && !isWeb && !inDebugMode" - }, - { - "command": "ahk2.debug.params", - "key": "shift+f5", - "when": "editorLangId == ahk2 && !isWeb" - }, - { - "command": "ahk2.help", - "key": "ctrl+f1", - "when": "editorLangId == ahk2 && !isWeb" - }, - { - "command": "ahk2.stop", - "key": "ctrl+f6", - "when": "editorLangId == ahk2 && !isWeb && ahk2:isRunning" - } - ], - "semanticTokenScopes": [ - { - "language": "ahk2", - "scopes": { - "operator": [ - "keyword.operator.wordlike.ahk2" - ] - } - } - ] - }, - "scripts": { - "vscode:prepublish": "webpack --mode production --devtool hidden-source-map", - "compile": "rimraf client/dist && webpack", - "compile-cli": "webpack --config webpack.config.cli.js --mode production --devtool hidden-source-map", - "eslint": "eslint --fix", - "watch": "tsc -b -w", - "watch-web": "webpack --watch", - "patch": "npm version patch", - "publish": "vsce publish", - "package": "vsce package", - "chrome": "vscode-test-web --browserType=chromium --extensionDevelopmentPath=. ./test-data", - "test": "cd client && tsc && vscode-test", - "validate": "npm run compile && npm run test && npm run package" - }, - "devDependencies": { - "@eslint/js": "^9.4.0", - "@types/vscode": "^1.82.0", - "@vscode/test-cli": "^0.0.10", - "@vscode/test-electron": "^2.4.1", - "@vscode/vsce": "^2.27.0", - "eslint": "^9.4.0", - "globals": "^15.4.0", - "mocha": "^10.7.0", - "path-browserify": "^1.0.1", - "rimraf": "^6.0.1", - "ts-loader": "^9.4.0", - "typescript": "^5.3.2", - "typescript-eslint": "^7.12.0", - "webpack": "^5.74.0", - "webpack-cli": "^4.10.0" - }, - "dependencies": { - "vscode-languageclient": "^9.0.1", - "vscode-languageserver": "^9.0.1", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" - }, - "overrides": { - "eslint": "^9.4.0" - } + "name": "vscode-autohotkey2-lsp", + "displayName": "AutoHotkey v2 Language Support", + "description": "AutoHotkey v2 Language Support, based on vscode-lsp.", + "author": "thqby", + "publisher": "thqby", + "version": "2.4.8", + "license": "LGPLv3.0", + "categories": [ + "Formatters", + "Programming Languages", + "Snippets" + ], + "keywords": [ + "ahk", + "ahk2", + "autohotkey", + "autohotkey2" + ], + "repository": { + "type": "git", + "url": "https://github.com/thqby/vscode-autohotkey2-lsp" + }, + "homepage": "https://github.com/thqby/vscode-autohotkey2-lsp/blob/main/README.md", + "icon": "icon.png", + "bugs": { + "url": "https://github.com/thqby/vscode-autohotkey2-lsp/issues" + }, + "engines": { + "vscode": "^1.82.0" + }, + "main": "./client/dist/extension", + "browser": "./client/dist/browserClientMain", + "contributes": { + "breakpoints": [ + { + "language": "ahk2" + } + ], + "languages": [ + { + "id": "ahk2", + "aliases": [ + "AutoHotkey2", + "autohotkey2", + "ahk2" + ], + "extensions": [ + ".ahk", + ".ah2", + ".ahk2" + ], + "configuration": "./ahk2.configuration.json", + "icon": { + "dark": "icon_filetype.png", + "light": "icon_filetype.png" + } + }, + { + "id": "ahk", + "aliases": [ + "AutoHotkey" + ] + }, + { + "id": "~ahk2-output" + } + ], + "grammars": [ + { + "language": "ahk2", + "scopeName": "source.ahk2", + "path": "./syntaxes/ahk2.tmLanguage.json", + "embeddedLanguages": { + "meta.embedded.ahk2": "ahk2" + }, + "unbalancedBracketScopes": [ + "keyword.keys.ahk2" + ] + }, + { + "language": "~ahk2-output", + "scopeName": "ahk2.output", + "path": "./syntaxes/ahk2-output.tmLanguage.json" + } + ], + "configuration": { + "title": "AutoHotkey2", + "properties": { + "AutoHotkey2.AutoLibInclude": { + "scope": "window", + "type": "string", + "enum": [ + "Disabled", + "Local", + "User and Standard", + "All" + ], + "default": "Disabled", + "description": "%ahk2.autolibinclude%" + }, + "AutoHotkey2.CommentTags": { + "scope": "window", + "type": "string", + "default": "^;;\\s*(?.+)", + "description": "%ahk2.commenttags%" + }, + "AutoHotkey2.CompilerCMD": { + "scope": "window", + "type": "string", + "default": "/compress 0 /base ${execPath}", + "markdownDescription": "%ahk2.compilercmd%" + }, + "AutoHotkey2.CompleteFunctionParens": { + "scope": "window", + "type": "boolean", + "default": false, + "markdownDescription": "%ahk2.completefunctionparens%" + }, + "AutoHotkey2.DebugConfiguration": { + "scope": "window", + "type": "object", + "default": { + "port": "9002-9100", + "useAnnounce": "detail", + "useAutoJumpToError": true, + "useDebugDirective": true, + "usePerfTips": true + }, + "description": "%ahk2.debugconfiguration%" + }, + "AutoHotkey2.Diagnostics.ClassNonDynamicMemberCheck": { + "scope": "window", + "type": "boolean", + "default": true, + "description": "%ahk2.diagnostics.class-non-dynamic-member-check%" + }, + "AutoHotkey2.Diagnostics.ParamsCheck": { + "scope": "window", + "type": "boolean", + "default": true, + "description": "%ahk2.diagnostics.paramscheck%" + }, + "AutoHotkey2.Warn.VarUnset": { + "scope": "window", + "type": "boolean", + "default": true, + "description": "%ahk2.warn.varunset%" + }, + "AutoHotkey2.Warn.LocalSameAsGlobal": { + "scope": "window", + "type": "boolean", + "default": false, + "description": "%ahk2.warn.localsameasglobal%" + }, + "AutoHotkey2.Warn.CallWithoutParentheses": { + "scope": "window", + "type": "string", + "enum": [ + "Off", + "Parentheses", + "On" + ], + "default": "Off", + "description": "%ahk2.warn.callwithoutparentheses%" + }, + "AutoHotkey2.ActionWhenV1IsDetected": { + "scope": "window", + "type": "string", + "default": "Warn", + "enum": [ + "Continue", + "Warn", + "StopParsing", + "SwitchToV1", + "SkipLine" + ], + "description": "%ahk2.actionwhenv1isdetected%" + }, + "AutoHotkey2.CompletionCommitCharacters": { + "scope": "window", + "type": "object", + "properties": { + "Class": { + "type": "string" + }, + "Function": { + "type": "string" + } + }, + "additionalProperties": { + "type": "string" + }, + "default": { + "Class": ".(", + "Function": "(" + }, + "markdownDescription": "%ahk2.completioncommitcharacters%" + }, + "AutoHotkey2.Files.Exclude": { + "scope": "window", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "uniqueItems": true, + "description": "%ahk2.files.exclude%" + }, + "AutoHotkey2.Files.ScanMaxDepth": { + "scope": "window", + "type": "integer", + "default": 2, + "description": "%ahk2.files.scanmaxdepth%" + }, + "AutoHotkey2.FormatOptions": { + "scope": "window", + "type": "object", + "properties": { + "array_style": { + "type": "string", + "enum": [ + "collapse", + "expand", + "none" + ], + "default": "none" + }, + "brace_style": { + "type": "string", + "enum": [ + "One True Brace", + "Allman", + "One True Brace Variant" + ], + "enumDescriptions": [ + "if 1 {\n} else {\n}", + "if 1\n{\n}\nelse\n{\n}", + "if 1 {\n}\nelse {\n}" + ] + }, + "break_chained_methods": { + "type": "boolean", + "default": false + }, + "ignore_comment": { + "type": "boolean", + "default": false + }, + "indent_string": { + "type": "string", + "default": "\t" + }, + "indent_between_hotif_directive": { + "type": "boolean", + "default": false + }, + "keyword_start_with_uppercase": { + "type": "boolean", + "default": false + }, + "max_preserve_newlines": { + "type": "number", + "default": 2 + }, + "object_style": { + "type": "string", + "enum": [ + "collapse", + "expand", + "none" + ], + "default": "none" + }, + "preserve_newlines": { + "type": "boolean", + "default": true + }, + "space_before_conditional": { + "type": "boolean", + "default": true + }, + "space_after_double_colon": { + "type": "boolean", + "default": true + }, + "space_in_empty_paren": { + "type": "boolean", + "default": false + }, + "space_in_other": { + "type": "boolean", + "default": true + }, + "space_in_paren": { + "type": "boolean", + "default": false + }, + "switch_case_alignment": { + "type": "boolean", + "default": false + }, + "symbol_with_same_case": { + "type": "boolean", + "default": false + }, + "white_space_before_inline_comment": { + "type": "string" + }, + "wrap_line_length": { + "type": "number", + "default": 0 + } + }, + "additionalProperties": { + "type": "string" + }, + "default": {} + }, + "AutoHotkey2.InterpreterPath": { + "scope": "window", + "type": "string", + "default": "C:\\Program Files\\Autohotkey\\v2\\AutoHotkey.exe", + "markdownDescription": "%ahk2.interpreterpath%" + }, + "AutoHotkey2.SymbolFoldingFromOpenBrace": { + "scope": "window", + "type": "boolean", + "default": false, + "description": "%ahk2.symbolfoldingfromopenbrace%" + }, + "AutoHotkey2.WorkingDirs": { + "scope": "window", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "uniqueItems": true, + "description": "%ahk2.workingdirs%" + }, + "AutoHotkey2.Syntaxes": { + "scope": "window", + "type": "string", + "markdownDescription": "%ahk2.syntaxes%" + } + } + }, + "configurationDefaults": { + "[ahk2]": { + "editor.defaultFormatter": "thqby.vscode-autohotkey2-lsp", + "editor.quickSuggestions": { + "other": true, + "comments": false, + "strings": true + } + } + }, + "commands": [ + { + "enablement": "editorLangId == ahk2 && shellExecutionSupported", + "command": "ahk2.debug", + "title": "%ahk2.debug%", + "icon": "$(debug)", + "category": "ahk2" + }, + { + "enablement": "!isWeb", + "command": "ahk2.debug.attach", + "title": "%ahk2.debug.attach%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && shellExecutionSupported", + "command": "ahk2.debug.params", + "title": "%ahk2.debug.params%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2", + "command": "ahk2.diagnostic.full", + "title": "%ahk2.diagnostic.full%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2", + "command": "ahk2.export.symbols", + "title": "%ahk2.export.symbols%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && shellExecutionSupported", + "command": "ahk2.run", + "title": "%ahk2.run%", + "icon": "$(play)", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.selection.run", + "title": "%ahk2.selection.run%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.stop", + "title": "%ahk2.stop%", + "icon": "$(stop)", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && shellExecutionSupported", + "command": "ahk2.compile", + "title": "%ahk2.compile%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.help", + "title": "%ahk2.help%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2", + "command": "ahk2.generate.comment", + "title": "%ahk2.generatecomment%", + "category": "ahk2" + }, + { + "enablement": "!isWeb", + "command": "ahk2.setinterpreter", + "title": "%ahk2.setinterpreter%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2", + "command": "ahk2.updateversioninfo", + "title": "%ahk2.updateversioninfo%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 || editorLangId == ahk", + "command": "ahk2.switch", + "title": "Switch v1/v2", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.selectsyntaxes", + "title": "Select syntaxes", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && resourceScheme == file", + "command": "ahk2.setscriptdir", + "title": "%ahk2.setscriptdir%", + "category": "ahk2" + } + ], + "menus": { + "editor/context": [ + { + "when": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.debug", + "group": "navigation@1" + }, + { + "when": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.debug.attach", + "group": "navigation@2" + }, + { + "when": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.debug.params", + "group": "navigation@2" + }, + { + "when": "editorLangId == ahk2 && !isWeb && editorHasSelection", + "command": "ahk2.selection.run", + "group": "navigation@0" + }, + { + "when": "editorLangId == ahk2 && !isWeb && !editorHasSelection", + "command": "ahk2.run", + "group": "navigation@0" + }, + { + "when": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.compile", + "group": "navigation@2" + }, + { + "when": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.help", + "group": "navigation@1" + }, + { + "when": "editorLangId == ahk2 && !isWeb && ahk2:isRunning", + "command": "ahk2.stop", + "group": "navigation@0" + }, + { + "when": "editorLangId == ahk2", + "command": "ahk2.generate.comment", + "group": "navigation@2" + }, + { + "when": "editorLangId == ahk2", + "command": "ahk2.updateversioninfo", + "group": "navigation@2" + } + ], + "editor/title": [ + { + "command": "ahk2.run", + "group": "navigation@0", + "when": "resourceLangId == ahk2 && shellExecutionSupported" + }, + { + "command": "ahk2.stop", + "group": "navigation@0", + "when": "resourceLangId == ahk2 && ahk2:isRunning && shellExecutionSupported" + }, + { + "command": "ahk2.debug", + "group": "navigation@1", + "when": "resourceLangId == ahk2 && shellExecutionSupported" + } + ] + }, + "keybindings": [ + { + "command": "ahk2.run", + "key": "ctrl+f5", + "when": "editorLangId == ahk2 && !isWeb && !editorHasSelection" + }, + { + "command": "ahk2.selection.run", + "key": "ctrl+f5", + "when": "editorLangId == ahk2 && !isWeb && editorHasSelection" + }, + { + "command": "ahk2.compile", + "key": "ctrl+shift+f5", + "when": "editorLangId == ahk2 && !isWeb" + }, + { + "command": "ahk2.debug", + "key": "f5", + "when": "editorLangId == ahk2 && !isWeb && !inDebugMode" + }, + { + "command": "ahk2.debug.params", + "key": "shift+f5", + "when": "editorLangId == ahk2 && !isWeb" + }, + { + "command": "ahk2.help", + "key": "ctrl+f1", + "when": "editorLangId == ahk2 && !isWeb" + }, + { + "command": "ahk2.stop", + "key": "ctrl+f6", + "when": "editorLangId == ahk2 && !isWeb && ahk2:isRunning" + } + ], + "semanticTokenScopes": [ + { + "language": "ahk2", + "scopes": { + "operator": [ + "keyword.operator.wordlike.ahk2" + ] + } + } + ] + }, + "scripts": { + "vscode:prepublish": "webpack --mode production --devtool hidden-source-map", + "compile": "rimraf client/dist && webpack", + "compile-cli": "webpack --config webpack.config.cli.js --mode production --devtool hidden-source-map", + "eslint": "eslint --fix", + "watch": "tsc -b -w", + "watch-web": "webpack --watch", + "patch": "npm version patch", + "publish": "vsce publish", + "package": "vsce package", + "chrome": "vscode-test-web --browserType=chromium --extensionDevelopmentPath=. ./test-data", + "test": "cd client && tsc && vscode-test", + "validate": "npm run compile && npm run test && npm run package" + }, + "devDependencies": { + "@eslint/js": "^9.4.0", + "@types/sinon": "^17.0.3", + "@types/vscode": "^1.82.0", + "@vscode/test-cli": "^0.0.10", + "@vscode/test-electron": "^2.4.1", + "@vscode/vsce": "^2.27.0", + "eslint": "^9.4.0", + "globals": "^15.4.0", + "mocha": "^10.7.0", + "path-browserify": "^1.0.1", + "rimraf": "^6.0.1", + "sinon": "^18.0.0", + "ts-loader": "^9.4.0", + "typescript": "^5.3.2", + "typescript-eslint": "^7.12.0", + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0" + }, + "dependencies": { + "vscode-languageclient": "^9.0.1", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "overrides": { + "eslint": "^9.4.0" + }, + "prettier": { + "singleQuote": true, + "tabWidth": 4, + "trailingComma": "all", + "overrides": [ + { + "files": [ + "*.yml", + "*.yaml", + ".prettierrc" + ], + "options": { + "tabWidth": 2 + } + } + ] + } } From acb7f9c2a2bdb110974b4e972ee61536f7b80557 Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Sat, 10 Aug 2024 19:07:43 -0700 Subject: [PATCH 13/14] Recommend Prettier to devs --- .vscode/extensions.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .vscode/extensions.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..974188b8 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["esbenp.prettier-vscode"] +} From db4b7182e061935a98ecc6b4a43c8b1fdbb23b94 Mon Sep 17 00:00:00 2001 From: Mark Wiemer Date: Sat, 10 Aug 2024 20:54:40 -0700 Subject: [PATCH 14/14] Indent with tabs --- client/src/test/extension.test.ts | 34 +- package.json | 1273 +++++++++++++++-------------- 2 files changed, 654 insertions(+), 653 deletions(-) diff --git a/client/src/test/extension.test.ts b/client/src/test/extension.test.ts index 3b7ecec3..d32135e6 100644 --- a/client/src/test/extension.test.ts +++ b/client/src/test/extension.test.ts @@ -4,25 +4,25 @@ import * as fs from 'fs'; import { resolvePath } from '../extension'; suite('resolvePath', () => { - let lstatSyncStub: sinon.SinonStub; + let lstatSyncStub: sinon.SinonStub; - suiteSetup(() => { - lstatSyncStub = sinon.stub(fs, 'lstatSync'); - }); + suiteSetup(() => { + lstatSyncStub = sinon.stub(fs, 'lstatSync'); + }); - const theories: ([string, string] | [string, string, boolean])[] = [ - ['', ''], - ['C:/out.txt', 'C:/out.txt'], - ]; + const theories: ([string, string] | [string, string, boolean])[] = [ + ['', ''], + ['C:/out.txt', 'C:/out.txt'], + ]; - theories.forEach(([input, expected, isSymbolicLink = false]) => { - test(`resolvePath('${input}') === '${expected}'`, () => { - // Mock the behavior of fs.lstatSync - lstatSyncStub - .withArgs(input) - .returns({ isSymbolicLink: () => isSymbolicLink }); + theories.forEach(([input, expected, isSymbolicLink = false]) => { + test(`resolvePath('${input}') === '${expected}'`, () => { + // Mock the behavior of fs.lstatSync + lstatSyncStub + .withArgs(input) + .returns({ isSymbolicLink: () => isSymbolicLink }); - assert.strictEqual(resolvePath(input), expected); - }); - }); + assert.strictEqual(resolvePath(input), expected); + }); + }); }); diff --git a/package.json b/package.json index 8b184cd5..f41b6b1d 100644 --- a/package.json +++ b/package.json @@ -1,638 +1,639 @@ { - "name": "vscode-autohotkey2-lsp", - "displayName": "AutoHotkey v2 Language Support", - "description": "AutoHotkey v2 Language Support, based on vscode-lsp.", - "author": "thqby", - "publisher": "thqby", - "version": "2.4.8", - "license": "LGPLv3.0", - "categories": [ - "Formatters", - "Programming Languages", - "Snippets" - ], - "keywords": [ - "ahk", - "ahk2", - "autohotkey", - "autohotkey2" - ], - "repository": { - "type": "git", - "url": "https://github.com/thqby/vscode-autohotkey2-lsp" - }, - "homepage": "https://github.com/thqby/vscode-autohotkey2-lsp/blob/main/README.md", - "icon": "icon.png", - "bugs": { - "url": "https://github.com/thqby/vscode-autohotkey2-lsp/issues" - }, - "engines": { - "vscode": "^1.82.0" - }, - "main": "./client/dist/extension", - "browser": "./client/dist/browserClientMain", - "contributes": { - "breakpoints": [ - { - "language": "ahk2" - } - ], - "languages": [ - { - "id": "ahk2", - "aliases": [ - "AutoHotkey2", - "autohotkey2", - "ahk2" - ], - "extensions": [ - ".ahk", - ".ah2", - ".ahk2" - ], - "configuration": "./ahk2.configuration.json", - "icon": { - "dark": "icon_filetype.png", - "light": "icon_filetype.png" - } - }, - { - "id": "ahk", - "aliases": [ - "AutoHotkey" - ] - }, - { - "id": "~ahk2-output" - } - ], - "grammars": [ - { - "language": "ahk2", - "scopeName": "source.ahk2", - "path": "./syntaxes/ahk2.tmLanguage.json", - "embeddedLanguages": { - "meta.embedded.ahk2": "ahk2" - }, - "unbalancedBracketScopes": [ - "keyword.keys.ahk2" - ] - }, - { - "language": "~ahk2-output", - "scopeName": "ahk2.output", - "path": "./syntaxes/ahk2-output.tmLanguage.json" - } - ], - "configuration": { - "title": "AutoHotkey2", - "properties": { - "AutoHotkey2.AutoLibInclude": { - "scope": "window", - "type": "string", - "enum": [ - "Disabled", - "Local", - "User and Standard", - "All" - ], - "default": "Disabled", - "description": "%ahk2.autolibinclude%" - }, - "AutoHotkey2.CommentTags": { - "scope": "window", - "type": "string", - "default": "^;;\\s*(?.+)", - "description": "%ahk2.commenttags%" - }, - "AutoHotkey2.CompilerCMD": { - "scope": "window", - "type": "string", - "default": "/compress 0 /base ${execPath}", - "markdownDescription": "%ahk2.compilercmd%" - }, - "AutoHotkey2.CompleteFunctionParens": { - "scope": "window", - "type": "boolean", - "default": false, - "markdownDescription": "%ahk2.completefunctionparens%" - }, - "AutoHotkey2.DebugConfiguration": { - "scope": "window", - "type": "object", - "default": { - "port": "9002-9100", - "useAnnounce": "detail", - "useAutoJumpToError": true, - "useDebugDirective": true, - "usePerfTips": true - }, - "description": "%ahk2.debugconfiguration%" - }, - "AutoHotkey2.Diagnostics.ClassNonDynamicMemberCheck": { - "scope": "window", - "type": "boolean", - "default": true, - "description": "%ahk2.diagnostics.class-non-dynamic-member-check%" - }, - "AutoHotkey2.Diagnostics.ParamsCheck": { - "scope": "window", - "type": "boolean", - "default": true, - "description": "%ahk2.diagnostics.paramscheck%" - }, - "AutoHotkey2.Warn.VarUnset": { - "scope": "window", - "type": "boolean", - "default": true, - "description": "%ahk2.warn.varunset%" - }, - "AutoHotkey2.Warn.LocalSameAsGlobal": { - "scope": "window", - "type": "boolean", - "default": false, - "description": "%ahk2.warn.localsameasglobal%" - }, - "AutoHotkey2.Warn.CallWithoutParentheses": { - "scope": "window", - "type": "string", - "enum": [ - "Off", - "Parentheses", - "On" - ], - "default": "Off", - "description": "%ahk2.warn.callwithoutparentheses%" - }, - "AutoHotkey2.ActionWhenV1IsDetected": { - "scope": "window", - "type": "string", - "default": "Warn", - "enum": [ - "Continue", - "Warn", - "StopParsing", - "SwitchToV1", - "SkipLine" - ], - "description": "%ahk2.actionwhenv1isdetected%" - }, - "AutoHotkey2.CompletionCommitCharacters": { - "scope": "window", - "type": "object", - "properties": { - "Class": { - "type": "string" - }, - "Function": { - "type": "string" - } - }, - "additionalProperties": { - "type": "string" - }, - "default": { - "Class": ".(", - "Function": "(" - }, - "markdownDescription": "%ahk2.completioncommitcharacters%" - }, - "AutoHotkey2.Files.Exclude": { - "scope": "window", - "type": "array", - "default": [], - "items": { - "type": "string" - }, - "uniqueItems": true, - "description": "%ahk2.files.exclude%" - }, - "AutoHotkey2.Files.ScanMaxDepth": { - "scope": "window", - "type": "integer", - "default": 2, - "description": "%ahk2.files.scanmaxdepth%" - }, - "AutoHotkey2.FormatOptions": { - "scope": "window", - "type": "object", - "properties": { - "array_style": { - "type": "string", - "enum": [ - "collapse", - "expand", - "none" - ], - "default": "none" - }, - "brace_style": { - "type": "string", - "enum": [ - "One True Brace", - "Allman", - "One True Brace Variant" - ], - "enumDescriptions": [ - "if 1 {\n} else {\n}", - "if 1\n{\n}\nelse\n{\n}", - "if 1 {\n}\nelse {\n}" - ] - }, - "break_chained_methods": { - "type": "boolean", - "default": false - }, - "ignore_comment": { - "type": "boolean", - "default": false - }, - "indent_string": { - "type": "string", - "default": "\t" - }, - "indent_between_hotif_directive": { - "type": "boolean", - "default": false - }, - "keyword_start_with_uppercase": { - "type": "boolean", - "default": false - }, - "max_preserve_newlines": { - "type": "number", - "default": 2 - }, - "object_style": { - "type": "string", - "enum": [ - "collapse", - "expand", - "none" - ], - "default": "none" - }, - "preserve_newlines": { - "type": "boolean", - "default": true - }, - "space_before_conditional": { - "type": "boolean", - "default": true - }, - "space_after_double_colon": { - "type": "boolean", - "default": true - }, - "space_in_empty_paren": { - "type": "boolean", - "default": false - }, - "space_in_other": { - "type": "boolean", - "default": true - }, - "space_in_paren": { - "type": "boolean", - "default": false - }, - "switch_case_alignment": { - "type": "boolean", - "default": false - }, - "symbol_with_same_case": { - "type": "boolean", - "default": false - }, - "white_space_before_inline_comment": { - "type": "string" - }, - "wrap_line_length": { - "type": "number", - "default": 0 - } - }, - "additionalProperties": { - "type": "string" - }, - "default": {} - }, - "AutoHotkey2.InterpreterPath": { - "scope": "window", - "type": "string", - "default": "C:\\Program Files\\Autohotkey\\v2\\AutoHotkey.exe", - "markdownDescription": "%ahk2.interpreterpath%" - }, - "AutoHotkey2.SymbolFoldingFromOpenBrace": { - "scope": "window", - "type": "boolean", - "default": false, - "description": "%ahk2.symbolfoldingfromopenbrace%" - }, - "AutoHotkey2.WorkingDirs": { - "scope": "window", - "type": "array", - "default": [], - "items": { - "type": "string" - }, - "uniqueItems": true, - "description": "%ahk2.workingdirs%" - }, - "AutoHotkey2.Syntaxes": { - "scope": "window", - "type": "string", - "markdownDescription": "%ahk2.syntaxes%" - } - } - }, - "configurationDefaults": { - "[ahk2]": { - "editor.defaultFormatter": "thqby.vscode-autohotkey2-lsp", - "editor.quickSuggestions": { - "other": true, - "comments": false, - "strings": true - } - } - }, - "commands": [ - { - "enablement": "editorLangId == ahk2 && shellExecutionSupported", - "command": "ahk2.debug", - "title": "%ahk2.debug%", - "icon": "$(debug)", - "category": "ahk2" - }, - { - "enablement": "!isWeb", - "command": "ahk2.debug.attach", - "title": "%ahk2.debug.attach%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && shellExecutionSupported", - "command": "ahk2.debug.params", - "title": "%ahk2.debug.params%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2", - "command": "ahk2.diagnostic.full", - "title": "%ahk2.diagnostic.full%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2", - "command": "ahk2.export.symbols", - "title": "%ahk2.export.symbols%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && shellExecutionSupported", - "command": "ahk2.run", - "title": "%ahk2.run%", - "icon": "$(play)", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.selection.run", - "title": "%ahk2.selection.run%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.stop", - "title": "%ahk2.stop%", - "icon": "$(stop)", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && shellExecutionSupported", - "command": "ahk2.compile", - "title": "%ahk2.compile%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.help", - "title": "%ahk2.help%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2", - "command": "ahk2.generate.comment", - "title": "%ahk2.generatecomment%", - "category": "ahk2" - }, - { - "enablement": "!isWeb", - "command": "ahk2.setinterpreter", - "title": "%ahk2.setinterpreter%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2", - "command": "ahk2.updateversioninfo", - "title": "%ahk2.updateversioninfo%", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 || editorLangId == ahk", - "command": "ahk2.switch", - "title": "Switch v1/v2", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.selectsyntaxes", - "title": "Select syntaxes", - "category": "ahk2" - }, - { - "enablement": "editorLangId == ahk2 && resourceScheme == file", - "command": "ahk2.setscriptdir", - "title": "%ahk2.setscriptdir%", - "category": "ahk2" - } - ], - "menus": { - "editor/context": [ - { - "when": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.debug", - "group": "navigation@1" - }, - { - "when": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.debug.attach", - "group": "navigation@2" - }, - { - "when": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.debug.params", - "group": "navigation@2" - }, - { - "when": "editorLangId == ahk2 && !isWeb && editorHasSelection", - "command": "ahk2.selection.run", - "group": "navigation@0" - }, - { - "when": "editorLangId == ahk2 && !isWeb && !editorHasSelection", - "command": "ahk2.run", - "group": "navigation@0" - }, - { - "when": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.compile", - "group": "navigation@2" - }, - { - "when": "editorLangId == ahk2 && !isWeb", - "command": "ahk2.help", - "group": "navigation@1" - }, - { - "when": "editorLangId == ahk2 && !isWeb && ahk2:isRunning", - "command": "ahk2.stop", - "group": "navigation@0" - }, - { - "when": "editorLangId == ahk2", - "command": "ahk2.generate.comment", - "group": "navigation@2" - }, - { - "when": "editorLangId == ahk2", - "command": "ahk2.updateversioninfo", - "group": "navigation@2" - } - ], - "editor/title": [ - { - "command": "ahk2.run", - "group": "navigation@0", - "when": "resourceLangId == ahk2 && shellExecutionSupported" - }, - { - "command": "ahk2.stop", - "group": "navigation@0", - "when": "resourceLangId == ahk2 && ahk2:isRunning && shellExecutionSupported" - }, - { - "command": "ahk2.debug", - "group": "navigation@1", - "when": "resourceLangId == ahk2 && shellExecutionSupported" - } - ] - }, - "keybindings": [ - { - "command": "ahk2.run", - "key": "ctrl+f5", - "when": "editorLangId == ahk2 && !isWeb && !editorHasSelection" - }, - { - "command": "ahk2.selection.run", - "key": "ctrl+f5", - "when": "editorLangId == ahk2 && !isWeb && editorHasSelection" - }, - { - "command": "ahk2.compile", - "key": "ctrl+shift+f5", - "when": "editorLangId == ahk2 && !isWeb" - }, - { - "command": "ahk2.debug", - "key": "f5", - "when": "editorLangId == ahk2 && !isWeb && !inDebugMode" - }, - { - "command": "ahk2.debug.params", - "key": "shift+f5", - "when": "editorLangId == ahk2 && !isWeb" - }, - { - "command": "ahk2.help", - "key": "ctrl+f1", - "when": "editorLangId == ahk2 && !isWeb" - }, - { - "command": "ahk2.stop", - "key": "ctrl+f6", - "when": "editorLangId == ahk2 && !isWeb && ahk2:isRunning" - } - ], - "semanticTokenScopes": [ - { - "language": "ahk2", - "scopes": { - "operator": [ - "keyword.operator.wordlike.ahk2" - ] - } - } - ] - }, - "scripts": { - "vscode:prepublish": "webpack --mode production --devtool hidden-source-map", - "compile": "rimraf client/dist && webpack", - "compile-cli": "webpack --config webpack.config.cli.js --mode production --devtool hidden-source-map", - "eslint": "eslint --fix", - "watch": "tsc -b -w", - "watch-web": "webpack --watch", - "patch": "npm version patch", - "publish": "vsce publish", - "package": "vsce package", - "chrome": "vscode-test-web --browserType=chromium --extensionDevelopmentPath=. ./test-data", - "test": "cd client && tsc && vscode-test", - "validate": "npm run compile && npm run test && npm run package" - }, - "devDependencies": { - "@eslint/js": "^9.4.0", - "@types/sinon": "^17.0.3", - "@types/vscode": "^1.82.0", - "@vscode/test-cli": "^0.0.10", - "@vscode/test-electron": "^2.4.1", - "@vscode/vsce": "^2.27.0", - "eslint": "^9.4.0", - "globals": "^15.4.0", - "mocha": "^10.7.0", - "path-browserify": "^1.0.1", - "rimraf": "^6.0.1", - "sinon": "^18.0.0", - "ts-loader": "^9.4.0", - "typescript": "^5.3.2", - "typescript-eslint": "^7.12.0", - "webpack": "^5.74.0", - "webpack-cli": "^4.10.0" - }, - "dependencies": { - "vscode-languageclient": "^9.0.1", - "vscode-languageserver": "^9.0.1", - "vscode-languageserver-textdocument": "^1.0.11", - "vscode-uri": "^3.0.8" - }, - "overrides": { - "eslint": "^9.4.0" - }, - "prettier": { - "singleQuote": true, - "tabWidth": 4, - "trailingComma": "all", - "overrides": [ - { - "files": [ - "*.yml", - "*.yaml", - ".prettierrc" - ], - "options": { - "tabWidth": 2 - } - } - ] - } + "name": "vscode-autohotkey2-lsp", + "displayName": "AutoHotkey v2 Language Support", + "description": "AutoHotkey v2 Language Support, based on vscode-lsp.", + "author": "thqby", + "publisher": "thqby", + "version": "2.4.8", + "license": "LGPLv3.0", + "categories": [ + "Formatters", + "Programming Languages", + "Snippets" + ], + "keywords": [ + "ahk", + "ahk2", + "autohotkey", + "autohotkey2" + ], + "repository": { + "type": "git", + "url": "https://github.com/thqby/vscode-autohotkey2-lsp" + }, + "homepage": "https://github.com/thqby/vscode-autohotkey2-lsp/blob/main/README.md", + "icon": "icon.png", + "bugs": { + "url": "https://github.com/thqby/vscode-autohotkey2-lsp/issues" + }, + "engines": { + "vscode": "^1.82.0" + }, + "main": "./client/dist/extension", + "browser": "./client/dist/browserClientMain", + "contributes": { + "breakpoints": [ + { + "language": "ahk2" + } + ], + "languages": [ + { + "id": "ahk2", + "aliases": [ + "AutoHotkey2", + "autohotkey2", + "ahk2" + ], + "extensions": [ + ".ahk", + ".ah2", + ".ahk2" + ], + "configuration": "./ahk2.configuration.json", + "icon": { + "dark": "icon_filetype.png", + "light": "icon_filetype.png" + } + }, + { + "id": "ahk", + "aliases": [ + "AutoHotkey" + ] + }, + { + "id": "~ahk2-output" + } + ], + "grammars": [ + { + "language": "ahk2", + "scopeName": "source.ahk2", + "path": "./syntaxes/ahk2.tmLanguage.json", + "embeddedLanguages": { + "meta.embedded.ahk2": "ahk2" + }, + "unbalancedBracketScopes": [ + "keyword.keys.ahk2" + ] + }, + { + "language": "~ahk2-output", + "scopeName": "ahk2.output", + "path": "./syntaxes/ahk2-output.tmLanguage.json" + } + ], + "configuration": { + "title": "AutoHotkey2", + "properties": { + "AutoHotkey2.AutoLibInclude": { + "scope": "window", + "type": "string", + "enum": [ + "Disabled", + "Local", + "User and Standard", + "All" + ], + "default": "Disabled", + "description": "%ahk2.autolibinclude%" + }, + "AutoHotkey2.CommentTags": { + "scope": "window", + "type": "string", + "default": "^;;\\s*(?.+)", + "description": "%ahk2.commenttags%" + }, + "AutoHotkey2.CompilerCMD": { + "scope": "window", + "type": "string", + "default": "/compress 0 /base ${execPath}", + "markdownDescription": "%ahk2.compilercmd%" + }, + "AutoHotkey2.CompleteFunctionParens": { + "scope": "window", + "type": "boolean", + "default": false, + "markdownDescription": "%ahk2.completefunctionparens%" + }, + "AutoHotkey2.DebugConfiguration": { + "scope": "window", + "type": "object", + "default": { + "port": "9002-9100", + "useAnnounce": "detail", + "useAutoJumpToError": true, + "useDebugDirective": true, + "usePerfTips": true + }, + "description": "%ahk2.debugconfiguration%" + }, + "AutoHotkey2.Diagnostics.ClassNonDynamicMemberCheck": { + "scope": "window", + "type": "boolean", + "default": true, + "description": "%ahk2.diagnostics.class-non-dynamic-member-check%" + }, + "AutoHotkey2.Diagnostics.ParamsCheck": { + "scope": "window", + "type": "boolean", + "default": true, + "description": "%ahk2.diagnostics.paramscheck%" + }, + "AutoHotkey2.Warn.VarUnset": { + "scope": "window", + "type": "boolean", + "default": true, + "description": "%ahk2.warn.varunset%" + }, + "AutoHotkey2.Warn.LocalSameAsGlobal": { + "scope": "window", + "type": "boolean", + "default": false, + "description": "%ahk2.warn.localsameasglobal%" + }, + "AutoHotkey2.Warn.CallWithoutParentheses": { + "scope": "window", + "type": "string", + "enum": [ + "Off", + "Parentheses", + "On" + ], + "default": "Off", + "description": "%ahk2.warn.callwithoutparentheses%" + }, + "AutoHotkey2.ActionWhenV1IsDetected": { + "scope": "window", + "type": "string", + "default": "Warn", + "enum": [ + "Continue", + "Warn", + "StopParsing", + "SwitchToV1", + "SkipLine" + ], + "description": "%ahk2.actionwhenv1isdetected%" + }, + "AutoHotkey2.CompletionCommitCharacters": { + "scope": "window", + "type": "object", + "properties": { + "Class": { + "type": "string" + }, + "Function": { + "type": "string" + } + }, + "additionalProperties": { + "type": "string" + }, + "default": { + "Class": ".(", + "Function": "(" + }, + "markdownDescription": "%ahk2.completioncommitcharacters%" + }, + "AutoHotkey2.Files.Exclude": { + "scope": "window", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "uniqueItems": true, + "description": "%ahk2.files.exclude%" + }, + "AutoHotkey2.Files.ScanMaxDepth": { + "scope": "window", + "type": "integer", + "default": 2, + "description": "%ahk2.files.scanmaxdepth%" + }, + "AutoHotkey2.FormatOptions": { + "scope": "window", + "type": "object", + "properties": { + "array_style": { + "type": "string", + "enum": [ + "collapse", + "expand", + "none" + ], + "default": "none" + }, + "brace_style": { + "type": "string", + "enum": [ + "One True Brace", + "Allman", + "One True Brace Variant" + ], + "enumDescriptions": [ + "if 1 {\n} else {\n}", + "if 1\n{\n}\nelse\n{\n}", + "if 1 {\n}\nelse {\n}" + ] + }, + "break_chained_methods": { + "type": "boolean", + "default": false + }, + "ignore_comment": { + "type": "boolean", + "default": false + }, + "indent_string": { + "type": "string", + "default": "\t" + }, + "indent_between_hotif_directive": { + "type": "boolean", + "default": false + }, + "keyword_start_with_uppercase": { + "type": "boolean", + "default": false + }, + "max_preserve_newlines": { + "type": "number", + "default": 2 + }, + "object_style": { + "type": "string", + "enum": [ + "collapse", + "expand", + "none" + ], + "default": "none" + }, + "preserve_newlines": { + "type": "boolean", + "default": true + }, + "space_before_conditional": { + "type": "boolean", + "default": true + }, + "space_after_double_colon": { + "type": "boolean", + "default": true + }, + "space_in_empty_paren": { + "type": "boolean", + "default": false + }, + "space_in_other": { + "type": "boolean", + "default": true + }, + "space_in_paren": { + "type": "boolean", + "default": false + }, + "switch_case_alignment": { + "type": "boolean", + "default": false + }, + "symbol_with_same_case": { + "type": "boolean", + "default": false + }, + "white_space_before_inline_comment": { + "type": "string" + }, + "wrap_line_length": { + "type": "number", + "default": 0 + } + }, + "additionalProperties": { + "type": "string" + }, + "default": {} + }, + "AutoHotkey2.InterpreterPath": { + "scope": "window", + "type": "string", + "default": "C:\\Program Files\\Autohotkey\\v2\\AutoHotkey.exe", + "markdownDescription": "%ahk2.interpreterpath%" + }, + "AutoHotkey2.SymbolFoldingFromOpenBrace": { + "scope": "window", + "type": "boolean", + "default": false, + "description": "%ahk2.symbolfoldingfromopenbrace%" + }, + "AutoHotkey2.WorkingDirs": { + "scope": "window", + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "uniqueItems": true, + "description": "%ahk2.workingdirs%" + }, + "AutoHotkey2.Syntaxes": { + "scope": "window", + "type": "string", + "markdownDescription": "%ahk2.syntaxes%" + } + } + }, + "configurationDefaults": { + "[ahk2]": { + "editor.defaultFormatter": "thqby.vscode-autohotkey2-lsp", + "editor.quickSuggestions": { + "other": true, + "comments": false, + "strings": true + } + } + }, + "commands": [ + { + "enablement": "editorLangId == ahk2 && shellExecutionSupported", + "command": "ahk2.debug", + "title": "%ahk2.debug%", + "icon": "$(debug)", + "category": "ahk2" + }, + { + "enablement": "!isWeb", + "command": "ahk2.debug.attach", + "title": "%ahk2.debug.attach%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && shellExecutionSupported", + "command": "ahk2.debug.params", + "title": "%ahk2.debug.params%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2", + "command": "ahk2.diagnostic.full", + "title": "%ahk2.diagnostic.full%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2", + "command": "ahk2.export.symbols", + "title": "%ahk2.export.symbols%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && shellExecutionSupported", + "command": "ahk2.run", + "title": "%ahk2.run%", + "icon": "$(play)", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.selection.run", + "title": "%ahk2.selection.run%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.stop", + "title": "%ahk2.stop%", + "icon": "$(stop)", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && shellExecutionSupported", + "command": "ahk2.compile", + "title": "%ahk2.compile%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.help", + "title": "%ahk2.help%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2", + "command": "ahk2.generate.comment", + "title": "%ahk2.generatecomment%", + "category": "ahk2" + }, + { + "enablement": "!isWeb", + "command": "ahk2.setinterpreter", + "title": "%ahk2.setinterpreter%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2", + "command": "ahk2.updateversioninfo", + "title": "%ahk2.updateversioninfo%", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 || editorLangId == ahk", + "command": "ahk2.switch", + "title": "Switch v1/v2", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.selectsyntaxes", + "title": "Select syntaxes", + "category": "ahk2" + }, + { + "enablement": "editorLangId == ahk2 && resourceScheme == file", + "command": "ahk2.setscriptdir", + "title": "%ahk2.setscriptdir%", + "category": "ahk2" + } + ], + "menus": { + "editor/context": [ + { + "when": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.debug", + "group": "navigation@1" + }, + { + "when": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.debug.attach", + "group": "navigation@2" + }, + { + "when": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.debug.params", + "group": "navigation@2" + }, + { + "when": "editorLangId == ahk2 && !isWeb && editorHasSelection", + "command": "ahk2.selection.run", + "group": "navigation@0" + }, + { + "when": "editorLangId == ahk2 && !isWeb && !editorHasSelection", + "command": "ahk2.run", + "group": "navigation@0" + }, + { + "when": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.compile", + "group": "navigation@2" + }, + { + "when": "editorLangId == ahk2 && !isWeb", + "command": "ahk2.help", + "group": "navigation@1" + }, + { + "when": "editorLangId == ahk2 && !isWeb && ahk2:isRunning", + "command": "ahk2.stop", + "group": "navigation@0" + }, + { + "when": "editorLangId == ahk2", + "command": "ahk2.generate.comment", + "group": "navigation@2" + }, + { + "when": "editorLangId == ahk2", + "command": "ahk2.updateversioninfo", + "group": "navigation@2" + } + ], + "editor/title": [ + { + "command": "ahk2.run", + "group": "navigation@0", + "when": "resourceLangId == ahk2 && shellExecutionSupported" + }, + { + "command": "ahk2.stop", + "group": "navigation@0", + "when": "resourceLangId == ahk2 && ahk2:isRunning && shellExecutionSupported" + }, + { + "command": "ahk2.debug", + "group": "navigation@1", + "when": "resourceLangId == ahk2 && shellExecutionSupported" + } + ] + }, + "keybindings": [ + { + "command": "ahk2.run", + "key": "ctrl+f5", + "when": "editorLangId == ahk2 && !isWeb && !editorHasSelection" + }, + { + "command": "ahk2.selection.run", + "key": "ctrl+f5", + "when": "editorLangId == ahk2 && !isWeb && editorHasSelection" + }, + { + "command": "ahk2.compile", + "key": "ctrl+shift+f5", + "when": "editorLangId == ahk2 && !isWeb" + }, + { + "command": "ahk2.debug", + "key": "f5", + "when": "editorLangId == ahk2 && !isWeb && !inDebugMode" + }, + { + "command": "ahk2.debug.params", + "key": "shift+f5", + "when": "editorLangId == ahk2 && !isWeb" + }, + { + "command": "ahk2.help", + "key": "ctrl+f1", + "when": "editorLangId == ahk2 && !isWeb" + }, + { + "command": "ahk2.stop", + "key": "ctrl+f6", + "when": "editorLangId == ahk2 && !isWeb && ahk2:isRunning" + } + ], + "semanticTokenScopes": [ + { + "language": "ahk2", + "scopes": { + "operator": [ + "keyword.operator.wordlike.ahk2" + ] + } + } + ] + }, + "scripts": { + "vscode:prepublish": "webpack --mode production --devtool hidden-source-map", + "compile": "rimraf client/dist && webpack", + "compile-cli": "webpack --config webpack.config.cli.js --mode production --devtool hidden-source-map", + "eslint": "eslint --fix", + "watch": "tsc -b -w", + "watch-web": "webpack --watch", + "patch": "npm version patch", + "publish": "vsce publish", + "package": "vsce package", + "chrome": "vscode-test-web --browserType=chromium --extensionDevelopmentPath=. ./test-data", + "test": "cd client && tsc && vscode-test", + "validate": "npm run compile && npm run test && npm run package" + }, + "devDependencies": { + "@eslint/js": "^9.4.0", + "@types/sinon": "^17.0.3", + "@types/vscode": "^1.82.0", + "@vscode/test-cli": "^0.0.10", + "@vscode/test-electron": "^2.4.1", + "@vscode/vsce": "^2.27.0", + "eslint": "^9.4.0", + "globals": "^15.4.0", + "mocha": "^10.7.0", + "path-browserify": "^1.0.1", + "rimraf": "^6.0.1", + "sinon": "^18.0.0", + "ts-loader": "^9.4.0", + "typescript": "^5.3.2", + "typescript-eslint": "^7.12.0", + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0" + }, + "dependencies": { + "vscode-languageclient": "^9.0.1", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "overrides": { + "eslint": "^9.4.0" + }, + "prettier": { + "useTabs": true, + "singleQuote": true, + "tabWidth": 4, + "trailingComma": "all", + "overrides": [ + { + "files": [ + "*.yml", + "*.yaml", + ".prettierrc" + ], + "options": { + "tabWidth": 2 + } + } + ] + } }