From 350bf28cf4c09361ef400d89c3b433dffbe287ea Mon Sep 17 00:00:00 2001 From: esarver Date: Tue, 27 Aug 2024 12:25:40 -0400 Subject: [PATCH] Implement VISA and Platform Specific Packages (#44) --- .github/workflows/pr.yml | 110 ++- .prettierrc | 3 +- CHANGELOG.md | 7 +- package-lock.json | 1429 +++++++++++++++++++++++------------ package.json | 68 +- src/communicationmanager.ts | 47 +- src/extension.ts | 104 +-- src/helpDocumentWebView.ts | 20 +- src/instruments.ts | 102 +-- src/kic-cli.ts | 13 + src/logging.ts | 52 +- src/resourceManager.ts | 97 +-- src/terminationManager.ts | 12 +- src/tspConfigJsonParser.ts | 2 +- src/utility.ts | 76 +- src/workspaceManager.ts | 28 +- tsconfig.json | 8 +- 17 files changed, 1342 insertions(+), 836 deletions(-) create mode 100644 src/kic-cli.ts diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 28b9edf..5ff6e58 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -25,7 +25,7 @@ jobs: - name: Tool Versions run: npx prettier --version - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: run prettier run: npx prettier --list-different @@ -42,7 +42,7 @@ jobs: - name: Tool Versions run: npx eslint --version - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install dependencies run: | echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" > .npmrc @@ -60,7 +60,7 @@ jobs: password: ${{secrets.GITHUB_TOKEN}} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Tools run: | echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" > .npmrc @@ -68,7 +68,7 @@ jobs: - name: Generate NPM BOM run: npx @cyclonedx/cyclonedx-npm --output-format JSON --package-lock-only --output-reproducible --output-file npm.cdx.json - name: Upload Results - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: software-bom path: | @@ -87,7 +87,7 @@ jobs: - name: Tool Versions run: npx prettier --version - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install dependencies run: | echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" > .npmrc @@ -98,40 +98,85 @@ jobs: run: npx nyc report --reporter=cobertura --reporter=text compile: - name: compile - runs-on: ubuntu-latest - container: - image: ghcr.io/tektronix/tsp-toolkit-build:latest - credentials: - username: ${{github.actor}} - password: ${{secrets.GITHUB_TOKEN}} + name: Build and Package + strategy: + matrix: + include: + - runner: ubuntu-latest + triple: x86_64-unknown-linux-gnu + vscode-platform: linux-x64 + os: linux + arch: x64 + - runner: windows-latest + triple: x86_64-pc-windows-msvc + vscode-platform: win32-x64 + os: win32 + arch: x64 + # - runner: macos-latest + # triple: x86_64-apple-darwin + # vscode-platform: darwin-arm64 + runs-on: ${{matrix.runner}} steps: - - name: Update ClamAV - run: freshclam - name: Tool Versions run: | npm --version - clamscan -V - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install dependencies run: | echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" > .npmrc npm install - - name: Build run: npm run compile - name: npm Package run: | - npx vsce package - - name: Run ClamAV - run: clamscan -v *.vsix + npx vsce package --target ${{matrix.vscode-platform}} - name: Upload Artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: package + name: package-${{matrix.vscode-platform}} path: "*.vsix" + scan: + name: AV Scan + runs-on: ubuntu-latest + strategy: + matrix: + include: + - runner: ubuntu-latest + triple: x86_64-unknown-linux-gnu + vscode-platform: linux-x64 + os: linux + arch: x64 + - runner: windows-latest + triple: x86_64-pc-windows-msvc + vscode-platform: win32-x64 + os: win32 + arch: x64 + # - runner: macos-latest + # triple: x86_64-apple-darwin + # vscode-platform: darwin-arm64 + needs: + - compile + container: + image: ghcr.io/tektronix/tsp-toolkit-build:latest + credentials: + username: ${{github.actor}} + password: ${{secrets.GITHUB_TOKEN}} + steps: + - name: Get Artifacts + uses: actions/download-artifact@v4 + with: + name: package-${{matrix.vscode-platform}} + path: extension + - name: Update ClamAV + run: freshclam + - name: Tool Versions + run: | + clamscan -V + - name: Run ClamAV + run: clamscan -v extension/*.vsix + publish: name: Publish runs-on: ubuntu-latest @@ -149,20 +194,24 @@ jobs: if: ${{ (endsWith(github.base_ref, 'main') && (contains(github.head_ref, 'release/')) && github.event.pull_request.merged ) }} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 fetch-tags: true - name: Get Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: - name: package + pattern: package-* + merge-multiple: true path: extension - name: Publish to VSCode Marketplace run: | echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" > .npmrc + # install vsce npm install --devDependencies - npx vsce publish --packagePath extension/*.vsix + for f in extension/*.vsix; do + npx vsce publish --packagePath "$f" + done env: VSCE_PAT: ${{secrets.VSCE_PAT}} @@ -182,7 +231,7 @@ jobs: if: ${{ (endsWith(github.base_ref, 'main') && (contains(github.head_ref, 'release/')) || github.event.pull_request.merged ) }} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 fetch-tags: true @@ -224,12 +273,13 @@ jobs: - run: 'git tag --list ${V}*' - name: Get Artifacts - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: - name: package + pattern: package-* + merge-multiple: true path: extension - name: Get SBOM - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: software-bom path: sbom diff --git a/.prettierrc b/.prettierrc index b33872d..27b0070 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,5 @@ { "semi": false, - "singleQuote": false + "singleQuote": false, + "trailingComma": "all" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d84a91..1271d63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,10 +19,15 @@ Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how ## [0.17.2] ### Fixed + - Many notification at TSP Toolkit Activation (TSP-779) - Make *.tsp=lua file association a User-level setting instead of a workspace setting (TSP-624) + ### Added --Add a + button to the Instruments pane title bar(TSP-792) + +- Added VISA support for connecting to an instrument +- Added platform-specific extension versions for Windows x86_64 and Linux x86_64 systems +- Add a + button to the Instruments pane title bar(TSP-792) ## [0.17.0] diff --git a/package-lock.json b/package-lock.json index d05e58a..726398a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,46 +11,48 @@ "license": "Apache-2.0", "dependencies": { "@tektronix/keithley_instrument_libraries": "0.16.0", - "@tektronix/kic-cli": "0.17.0", "@tektronix/web-help-documents": "0.15.3", - "@types/cheerio": "^0.22.35", - "cheerio": "^1.0.0-rc.12", - "class-transformer": "^0.5.1", - "json-rpc-2.0": "^1.7.0", - "node-fetch": "^2.7.0", - "path-browserify": "^1.0.1", - "portfinder": "^1.0.32", - "sax-ts": "^1.2.13", - "xml-js": "^1.6.11" + "@types/cheerio": "0.22.35", + "cheerio": "1.0.0", + "class-transformer": "0.5.1", + "json-rpc-2.0": "1.7.0", + "path-browserify": "1.0.1", + "portfinder": "1.0.32", + "sax-ts": "1.2.13", + "xml-js": "1.6.11" }, "devDependencies": { - "@cyclonedx/cyclonedx-npm": "^1.10.0", - "@istanbuljs/nyc-config-typescript": "^1.0.2", - "@types/chai": "^4.3.14", - "@types/mocha": "^9.1.1", - "@types/node": "^14.18.63", - "@types/node-fetch": "^2.6.11", - "@types/vscode": "^1.75.0", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", - "@vscode/vsce": "^2.24.0", + "@cyclonedx/cyclonedx-npm": "1.19.3", + "@istanbuljs/nyc-config-typescript": "1.0.2", + "@types/chai": "4.3.18", + "@types/mocha": "10.0.7", + "@types/node": "22.5.0", + "@types/node-fetch": "3.0.2", + "@types/vscode": "1.92.0", + "@typescript-eslint/eslint-plugin": "8.3.0", + "@typescript-eslint/parser": "8.3.0", + "@vscode/vsce": "3.0.0", "chai": "^4.4.1", - "eslint": "^8.57.0", - "eslint-config-prettier": "^8.10.0", - "eslint-import-resolver-typescript": "^2.7.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsdoc": "^39.9.1", - "eslint-plugin-prettier": "^4.2.1", - "license-checker": "^25.0.1", + "eslint": "8.57.0", + "eslint-config-prettier": "8.2.0", + "eslint-import-resolver-typescript": "3.6.3", + "eslint-plugin-import": "2.29.1", + "eslint-plugin-jsdoc": "50.2.2", + "eslint-plugin-prettier": "5.2.1", + "license-checker": "25.0.1", "mocha": "^9.2.2", - "nyc": "^15.1.0", - "prettier": "^2.8.8", - "source-map-support": "^0.5.21", - "ts-node": "^10.9.2", - "typescript": "^4.9.5" + "nyc": "15.1.0", + "prettier": "3.3.3", + "source-map-support": "0.5.21", + "ts-node": "10.9.2", + "typescript": "5.5.4" }, "engines": { - "vscode": "^1.75.0" + "vscode": "^1.92.0" + }, + "optionalDependencies": { + "@tektronix/kic-cli-linux-x64": "0.17.2-0", + "@tektronix/kic-cli-win32-x64": "0.17.2-0" } }, "node_modules/@ampproject/remapping": { @@ -240,33 +242,33 @@ } }, "node_modules/@azure/msal-browser": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.20.0.tgz", - "integrity": "sha512-ErsxbfCGIwdqD8jipqdxpfAGiUEQS7MWUe39Rjhl0ZVPsb1JEe9bZCe2+0g23HDH6DGyCAtnTNN9scPtievrMQ==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.21.0.tgz", + "integrity": "sha512-BAwcFsVvOrYzKuUZHhFuvRykUmQGq6lDxst2qGnjxnpNZc3d/tnVPcmhgvUdeKl28VSE0ltgBzT3HkdpDtz9rg==", "dev": true, "dependencies": { - "@azure/msal-common": "14.14.0" + "@azure/msal-common": "14.14.1" }, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-common": { - "version": "14.14.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.14.0.tgz", - "integrity": "sha512-OxcOk9H1/1fktHh6//VCORgSNJc2dCQObTm6JNmL824Z6iZSO6eFo/Bttxe0hETn9B+cr7gDouTQtsRq3YPuSQ==", + "version": "14.14.1", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.14.1.tgz", + "integrity": "sha512-2Q3tqNz/PZLfSr8BvcHZVpRRfSn4MjGSqjj9J+HlBsmbf1Uu4P0WeXnemjTJwwx9KrmplsrN3UkZ/LPOR720rw==", "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-node": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.12.0.tgz", - "integrity": "sha512-jmk5Im5KujRA2AcyCb0awA3buV8niSrwXZs+NBJWIvxOz76RvNlusGIqi43A0h45BPUy93Qb+CPdpJn82NFTIg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.13.0.tgz", + "integrity": "sha512-DhP97ycs7qlCVzzzWGzJiwAFyFj5okno74E4FUZ61oCLfKh4IxA1kxirqzrWuYZWpBe9HVPL6GA4NvmlEOBN5Q==", "dev": true, "dependencies": { - "@azure/msal-common": "14.14.0", + "@azure/msal-common": "14.14.1", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -288,9 +290,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", - "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -342,12 +344,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", - "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", + "version": "7.25.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz", + "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==", "dev": true, "dependencies": { - "@babel/types": "^7.25.0", + "@babel/types": "^7.25.4", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -496,12 +498,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", - "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", + "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", "dev": true, "dependencies": { - "@babel/types": "^7.25.2" + "@babel/types": "^7.25.4" }, "bin": { "parser": "bin/babel-parser.js" @@ -525,16 +527,16 @@ } }, "node_modules/@babel/traverse": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", - "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz", + "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", + "@babel/generator": "^7.25.4", + "@babel/parser": "^7.25.4", "@babel/template": "^7.25.0", - "@babel/types": "^7.25.2", + "@babel/types": "^7.25.4", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -552,9 +554,9 @@ } }, "node_modules/@babel/types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", - "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.24.8", @@ -640,17 +642,17 @@ } }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.36.1", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.36.1.tgz", - "integrity": "sha512-922xqFsTpHs6D0BUiG4toiyPOMc8/jafnWKxz1KWgS4XzKPy2qXf1Pe6UFuNSCQqt6tOuhAWXBNuuyUhJmw9Vg==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.48.0.tgz", + "integrity": "sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==", "dev": true, "dependencies": { - "comment-parser": "1.3.1", - "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "~3.1.0" + "comment-parser": "1.4.1", + "esquery": "^1.6.0", + "jsdoc-type-pratt-parser": "~4.1.0" }, "engines": { - "node": "^14 || ^16 || ^17 || ^18 || ^19" + "node": ">=16" } }, "node_modules/@eslint-community/eslint-utils": { @@ -716,12 +718,34 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { "version": "8.57.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", @@ -746,6 +770,28 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1029,6 +1075,27 @@ "node": ">= 6" } }, + "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "optional": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1064,6 +1131,15 @@ "node": ">= 8" } }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "engines": { + "node": ">=12.4.0" + } + }, "node_modules/@oozcitak/dom": { "version": "1.15.10", "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", @@ -1122,15 +1198,52 @@ "node": ">=14" } }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@tektronix/keithley_instrument_libraries": { "version": "0.16.0", "resolved": "https://npm.pkg.github.com/download/@tektronix/keithley_instrument_libraries/0.16.0/0cb45ce26027b552f2eada86ebb4833e8c6c62c8", "integrity": "sha512-Q9KBTHtLRTqLy5rzygqa722JmFm3dpY55X6UGml3U2Wo+cwcKycCtcT8C/2qtHLxldbT598h8tZ/8rsUhXgK8g==" }, - "node_modules/@tektronix/kic-cli": { - "version": "0.17.0", - "resolved": "https://npm.pkg.github.com/download/@tektronix/kic-cli/0.17.0/b5d488837fa5d9af2792853fb34a5169ac5ca83d", - "integrity": "sha512-MWouaYOnaQJKRuZplvWZ7Ld3eq7FIFMvhbGq7CfOYnjhcjvn4TYXfrj2b9vgyu+8mu6hz4RYibl3BicGmDmQlw==", + "node_modules/@tektronix/kic-cli-linux-x64": { + "version": "0.17.2-0", + "resolved": "https://npm.pkg.github.com/download/@tektronix/kic-cli-linux-x64/0.17.2-0/11e20c1eb0ec7e4e284c4fcee14904256fd38461", + "integrity": "sha512-HG4/SxSaXVT86rgyZLaRfUr4STUX1Gtvo2I4EI3dEQgqf/t4bWngAc4vcYhNK0znj7KflK2YjweDaHPp8Almcw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "bin": { + "linux-kic": "bin/kic", + "linux-kic-discover": "bin/kic-discover", + "windows-kic": "bin/kic.exe", + "windows-kic-discover": "bin/kic-discover.exe" + } + }, + "node_modules/@tektronix/kic-cli-win32-x64": { + "version": "0.17.2-0", + "resolved": "https://npm.pkg.github.com/download/@tektronix/kic-cli-win32-x64/0.17.2-0/6b61e337b80e4470a8b731933fe6e9fb3d5f6bf7", + "integrity": "sha512-vGAawE4TxYhgWFcYkRCgA4y1yNrANi1uYgNJh2sgqhXS7ZNG861o+r1txfS/qKXnLONTOKOot3ZKolWlqVhWtw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], "bin": { "linux-kic": "bin/kic", "linux-kic-discover": "bin/kic-discover", @@ -1168,9 +1281,9 @@ "dev": true }, "node_modules/@types/chai": { - "version": "4.3.17", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.17.tgz", - "integrity": "sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow==", + "version": "4.3.18", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.18.tgz", + "integrity": "sha512-2UfJzigyNa8kYTKn7o4hNMPphkxtu4WTJyobK3m4FBpyj7EK5xgtPcOtxLm7Dznk/Qxr0QXn+gQbkg7mCZKdfg==", "dev": true }, "node_modules/@types/cheerio": { @@ -1181,12 +1294,6 @@ "@types/node": "*" } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -1194,32 +1301,28 @@ "dev": true }, "node_modules/@types/mocha": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", - "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.7.tgz", + "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", "dev": true }, "node_modules/@types/node": { - "version": "14.18.63", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz", + "integrity": "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==", + "dependencies": { + "undici-types": "~6.19.2" + } }, "node_modules/@types/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-3.0.2.tgz", + "integrity": "sha512-3q5FyT6iuekUxXeL2qjcyIhtMJdfMF7RGhYXWKkYpdcW9k36A/+txXrjG0l+NMVkiC30jKNrcOqVlqBl7BcCHA==", "dev": true, "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" + "node-fetch": "*" } }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, "node_modules/@types/vscode": { "version": "1.92.0", "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.92.0.tgz", @@ -1227,32 +1330,31 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz", + "integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/type-utils": "8.3.0", + "@typescript-eslint/utils": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1261,25 +1363,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz", + "integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", "debug": "^4.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -1288,16 +1391,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz", + "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1305,26 +1408,23 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz", + "integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", + "@typescript-eslint/typescript-estree": "8.3.0", + "@typescript-eslint/utils": "8.3.0", "debug": "^4.3.4", - "tsutils": "^3.21.0" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "*" - }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -1332,12 +1432,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz", + "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1345,21 +1445,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz", + "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1372,42 +1473,38 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz", + "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz", + "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "8.3.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", @@ -1427,9 +1524,9 @@ "dev": true }, "node_modules/@vscode/vsce": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.31.1.tgz", - "integrity": "sha512-LwEQFKXV21C4/brvGPH/9+7ZOUM5cbK7oJ4fVmy0YG75NIy1HV8eMSoBZrl+u23NxpAhor62Cu1aI+JFtCtjSg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.0.0.tgz", + "integrity": "sha512-UKYcC7fcSw6AUK6nlfm8A8WSOA41H3DRAwafCMp9CQpg3K9COAQKkrgQ+dKPhwkFTP7SPZNEiulDpPLwvr5QQQ==", "dev": true, "dependencies": { "@azure/identity": "^4.1.0", @@ -1461,7 +1558,7 @@ "vsce": "vsce" }, "engines": { - "node": ">= 16" + "node": ">= 20" }, "optionalDependencies": { "keytar": "^7.7.0" @@ -1602,6 +1699,16 @@ "win32" ] }, + "node_modules/@vscode/vsce/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@vscode/vsce/node_modules/commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -1611,6 +1718,18 @@ "node": ">= 6" } }, + "node_modules/@vscode/vsce/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -1794,6 +1913,15 @@ "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "engines": { + "node": ">=14" + } + }, "node_modules/are-we-there-yet": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", @@ -1866,15 +1994,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/array.prototype.findlastindex": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", @@ -2074,13 +2193,12 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -2232,9 +2350,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001651", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", - "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "version": "1.0.30001653", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz", + "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==", "dev": true, "funding": [ { @@ -2296,20 +2414,24 @@ } }, "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" + "domutils": "^3.1.0", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^9.1.0", + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^6.19.5", + "whatwg-mimetype": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=18.17" }, "funding": { "url": "https://github.com/cheeriojs/cheerio?sponsor=1" @@ -2531,9 +2653,9 @@ } }, "node_modules/comment-parser": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", - "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, "engines": { "node": ">= 12.0.0" @@ -2610,6 +2732,15 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", @@ -2844,18 +2975,6 @@ "node": ">=0.3.1" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/discontinuous-range": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz", @@ -2942,9 +3061,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.5.tgz", - "integrity": "sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", "dev": true }, "node_modules/emoji-regex": { @@ -2953,6 +3072,18 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, + "node_modules/encoding-sniffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -2963,6 +3094,19 @@ "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -3055,6 +3199,12 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true + }, "node_modules/es-object-atoms": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", @@ -3187,9 +3337,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.2.0.tgz", + "integrity": "sha512-dWV9EVeSo2qodOPi1iBYU/x6F6diHv8uujxbxr77xExs3zTAlNXvVZKiyLsQGNz7yPV2K49JY5WjPzNIuDc2Bw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -3219,50 +3369,44 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", - "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "glob": "^7.2.0", - "is-glob": "^4.0.3", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", + "dev": true, + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "is-glob": "^4.0.3" }, "engines": { - "node": ">=4" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" }, "peerDependencies": { "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } } }, "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.2.tgz", + "integrity": "sha512-3XnC5fDyc8M4J2E8pt8pmSVRX2M+5yWMCfI/kDZwauQeFgzQOuhcRBFKjTeJagqgk4sFKxe1mvNVnaWwImx/Tg==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -3316,6 +3460,16 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -3337,34 +3491,83 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, "bin": { - "semver": "bin/semver.js" + "json5": "lib/cli.js" } }, - "node_modules/eslint-plugin-jsdoc": { - "version": "39.9.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-39.9.1.tgz", - "integrity": "sha512-Rq2QY6BZP2meNIs48aZ3GlIlJgBqFCmR55+UBvaDkA3ZNQ0SvQXOs2QKkubakEijV8UbIVbVZKsOVN8G3MuqZw==", + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.36.1", - "comment-parser": "1.3.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "esquery": "^1.4.0", - "semver": "^7.3.8", - "spdx-expression-parse": "^3.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^14 || ^16 || ^17 || ^18 || ^19" + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "50.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.2.2.tgz", + "integrity": "sha512-i0ZMWA199DG7sjxlzXn5AeYZxpRfMJjDPUl7lL9eJJX8TPRoIaxJU4ys/joP5faM5AXE1eqW/dslCj3uj4Nqpg==", + "dev": true, + "dependencies": { + "@es-joy/jsdoccomment": "~0.48.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.3.6", + "escape-string-regexp": "^4.0.0", + "espree": "^10.1.0", + "esquery": "^1.6.0", + "parse-imports": "^2.1.1", + "semver": "^7.6.3", + "spdx-expression-parse": "^4.0.0", + "synckit": "^0.9.1" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { @@ -3379,48 +3582,79 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz", + "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/espree": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz", + "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==", "dev": true, "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", "dev": true, "dependencies": { - "prettier-linter-helpers": "^1.0.0" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" }, "engines": { - "node": ">=12.0.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" }, "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, "eslint-config-prettier": { "optional": true } } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { @@ -3466,6 +3700,16 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -3512,31 +3756,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -3552,6 +3771,18 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3606,15 +3837,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -3627,7 +3849,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -3636,15 +3858,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -3757,6 +3970,29 @@ "pend": "~1.2.0" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -3889,6 +4125,18 @@ "node": ">= 6" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/fromentries": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", @@ -4121,6 +4369,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", + "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -4163,15 +4423,6 @@ "node": ">=10.13.0" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/glob/node_modules/minimatch": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", @@ -4218,26 +4469,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -4412,9 +4643,9 @@ "dev": true }, "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -4425,8 +4656,8 @@ "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "domutils": "^3.1.0", + "entities": "^4.5.0" } }, "node_modules/http-proxy-agent": { @@ -4455,6 +4686,17 @@ "node": ">= 14" } }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -4477,9 +4719,9 @@ "optional": true }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -4613,6 +4855,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-bun-module": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.1.0.tgz", + "integrity": "sha512-4mTAVPlrXpaN3jtF0lsnPCMGnq4+qZjVIKq0HCpfcqf8OC1SM5oATCIAPM5V5FN05qp2NNnFndphmdZS9CV3hA==", + "dev": true, + "dependencies": { + "semver": "^7.6.3" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -4626,9 +4877,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", - "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "dependencies": { "hasown": "^2.0.2" @@ -5096,9 +5347,9 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-3.1.0.tgz", - "integrity": "sha512-MgtD0ZiCDk9B+eI73BextfRrVQl0oyzRG8B2BjORts6jbunj4ScKPcyXGTbB6eXL4y9TzxCm6hyeLq/2ASzNdw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", "dev": true, "engines": { "node": ">=12.0.0" @@ -5610,9 +5861,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { "braces": "^3.0.3", @@ -5669,15 +5920,18 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -5785,6 +6039,16 @@ "url": "https://opencollective.com/mochajs" } }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/mocha/node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -5895,6 +6159,15 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/moo": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz", @@ -5945,12 +6218,6 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, "node_modules/nearley": { "version": "2.20.1", "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.20.1.tgz", @@ -5982,9 +6249,9 @@ "optional": true }, "node_modules/node-abi": { - "version": "3.65.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", - "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==", + "version": "3.67.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.67.0.tgz", + "integrity": "sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==", "dev": true, "optional": true, "dependencies": { @@ -6001,23 +6268,41 @@ "dev": true, "optional": true }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, "dependencies": { - "whatwg-url": "^5.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, "node_modules/node-preload": { @@ -6182,6 +6467,16 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/nyc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/nyc/node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -6276,6 +6571,18 @@ "node": ">=8" } }, + "node_modules/nyc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/nyc/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -6647,6 +6954,19 @@ "node": ">=6" } }, + "node_modules/parse-imports": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/parse-imports/-/parse-imports-2.1.1.tgz", + "integrity": "sha512-TDT4HqzUiTMO1wJRwg/t/hYk8Wdp3iF/ToMIlAoVQfL1Xs/sTxq1dKWSMjMbQmIarfWKymOyly40+zmPHXMqCA==", + "dev": true, + "dependencies": { + "es-module-lexer": "^1.5.3", + "slashes": "^3.0.12" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/parse-semver": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", @@ -6688,6 +7008,17 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -6751,15 +7082,6 @@ "node": "20 || >=22" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", @@ -6924,15 +7246,15 @@ } }, "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -7125,6 +7447,16 @@ "npm-normalize-package-bin": "^1.0.0" } }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/read-package-json/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -7152,6 +7484,18 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/read-package-json/node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -7294,6 +7638,15 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -7330,6 +7683,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -7351,6 +7714,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -7429,6 +7804,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", @@ -7610,14 +7990,11 @@ "simple-concat": "^1.0.0" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/slashes": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/slashes/-/slashes-3.0.12.tgz", + "integrity": "sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==", + "dev": true }, "node_modules/slide": { "version": "1.1.6", @@ -7754,9 +8131,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", - "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", "dev": true }, "node_modules/spdx-ranges": { @@ -7996,6 +8373,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/synckit": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", + "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/tar": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", @@ -8088,6 +8490,16 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -8109,6 +8521,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -8148,7 +8572,9 @@ "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "optional": true }, "node_modules/treeify": { "version": "1.1.0", @@ -8159,6 +8585,18 @@ "node": ">=0.6" } }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -8211,64 +8649,10 @@ "node": ">=0.3.1" } }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "dev": true }, "node_modules/tunnel": { @@ -8420,16 +8804,16 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/uc.micro": { @@ -8459,6 +8843,19 @@ "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", "dev": true }, + "node_modules/undici": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", + "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, "node_modules/update-browserslist-db": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", @@ -8552,15 +8949,47 @@ "spdx-license-ids": "^3.0.0" } }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "optional": true + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "engines": { + "node": ">=18" + } }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "optional": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -8924,9 +9353,9 @@ } }, "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "engines": { "node": ">=10" diff --git a/package.json b/package.json index eac3b19..770ea69 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "url": "https://github.com/tektronix/tsp-toolkit.git" }, "engines": { - "vscode": "^1.75.0" + "vscode": "^1.92.0" }, "categories": [ "Other" @@ -311,44 +311,46 @@ "coverage": "nyc --nycrc-path='.nycrc.json' npm run test" }, "devDependencies": { - "@cyclonedx/cyclonedx-npm": "^1.10.0", - "@istanbuljs/nyc-config-typescript": "^1.0.2", - "@types/chai": "^4.3.14", - "@types/mocha": "^9.1.1", - "@types/node": "^14.18.63", - "@types/node-fetch": "^2.6.11", - "@types/vscode": "^1.75.0", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", - "@vscode/vsce": "^2.24.0", + "@cyclonedx/cyclonedx-npm": "1.19.3", + "@istanbuljs/nyc-config-typescript": "1.0.2", + "@types/chai": "4.3.18", + "@types/mocha": "10.0.7", + "@types/node": "22.5.0", + "@types/node-fetch": "3.0.2", + "@types/vscode": "1.92.0", + "@typescript-eslint/eslint-plugin": "8.3.0", + "@typescript-eslint/parser": "8.3.0", + "@vscode/vsce": "3.0.0", "chai": "^4.4.1", - "eslint": "^8.57.0", - "eslint-config-prettier": "^8.10.0", - "eslint-import-resolver-typescript": "^2.7.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsdoc": "^39.9.1", - "eslint-plugin-prettier": "^4.2.1", - "license-checker": "^25.0.1", + "eslint": "8.57.0", + "eslint-config-prettier": "8.2.0", + "eslint-import-resolver-typescript": "3.6.3", + "eslint-plugin-import": "2.29.1", + "eslint-plugin-jsdoc": "50.2.2", + "eslint-plugin-prettier": "5.2.1", + "license-checker": "25.0.1", "mocha": "^9.2.2", - "nyc": "^15.1.0", - "prettier": "^2.8.8", - "source-map-support": "^0.5.21", - "ts-node": "^10.9.2", - "typescript": "^4.9.5" + "nyc": "15.1.0", + "prettier": "3.3.3", + "source-map-support": "0.5.21", + "ts-node": "10.9.2", + "typescript": "5.5.4" }, "dependencies": { "@tektronix/keithley_instrument_libraries": "0.16.0", - "@tektronix/kic-cli": "0.17.0", "@tektronix/web-help-documents": "0.15.3", - "@types/cheerio": "^0.22.35", - "cheerio": "^1.0.0-rc.12", - "class-transformer": "^0.5.1", - "json-rpc-2.0": "^1.7.0", - "node-fetch": "^2.7.0", - "path-browserify": "^1.0.1", - "portfinder": "^1.0.32", - "sax-ts": "^1.2.13", - "xml-js": "^1.6.11" + "@types/cheerio": "0.22.35", + "cheerio": "1.0.0", + "class-transformer": "0.5.1", + "json-rpc-2.0": "1.7.0", + "path-browserify": "1.0.1", + "portfinder": "1.0.32", + "sax-ts": "1.2.13", + "xml-js": "1.6.11" + }, + "optionalDependencies": { + "@tektronix/kic-cli-linux-x64": "0.17.2-0", + "@tektronix/kic-cli-win32-x64": "0.17.2-0" }, "extensionDependencies": [ "sumneko.lua" diff --git a/src/communicationmanager.ts b/src/communicationmanager.ts index 430ce38..1274fb0 100644 --- a/src/communicationmanager.ts +++ b/src/communicationmanager.ts @@ -1,6 +1,6 @@ -import path = require("node:path") +import { join } from "node:path" import * as vscode from "vscode" -import { EXECUTABLE } from "@tektronix/kic-cli" +import { EXECUTABLE } from "./kic-cli" import { CONNECTION_RE, ConnectionHelper, @@ -16,7 +16,7 @@ export class CommunicationManager { constructor( context: vscode.ExtensionContext, kicProcessMgr: KicProcessMgr, - conneHelper: ConnectionHelper + conneHelper: ConnectionHelper, ) { this._connHelper = conneHelper this._kicProcessMgr = kicProcessMgr @@ -24,25 +24,25 @@ export class CommunicationManager { "tsp.sendFile", async (e) => { await this.sendScript(e) - } + }, ) const configureTspLanguage = vscode.commands.registerCommand( "tsp.configureTspLanguage", async (e) => { await this.fetchAndUpdateInstrumentTspLinkConfiguration(e) - } + }, ) const kic_openterminal = vscode.window.onDidOpenTerminal( - async () => await this.terminalAction() + async () => await this.terminalAction(), ) const kic_closeterminal = vscode.window.onDidCloseTerminal( - async (e) => await this.handleTerminalCloseAction(e) + async (e) => await this.handleTerminalCloseAction(e), ) const sendFileToAllInstr = vscode.commands.registerCommand( "tsp.sendFileToAllInstr", (e) => { this.sendScriptToAllInstruments(e) - } + }, ) context.subscriptions.push(kic_openterminal) context.subscriptions.push(kic_closeterminal) @@ -57,7 +57,7 @@ export class CommunicationManager { const filePath = `.script "${uriObject.fsPath}"` await this.handleSendTextToTerminal(filePath).then(() => { void vscode.window.showInformationMessage( - "Sending script to terminal" + "Sending script to terminal", ) }) } @@ -87,13 +87,10 @@ export class CommunicationManager { */ private async fetchAndUpdateInstrumentTspLinkConfiguration(_e: unknown) { const uriObject = _e as vscode.Uri - const text = `.nodes "${path.join( - uriObject.fsPath, - "config.tsp.json" - )}"` + const text = `.nodes "${join(uriObject.fsPath, "config.tsp.json")}"` await this.handleSendTextToTerminal(text) void vscode.window.showInformationMessage( - "Fetching and Updating Instrument tspLink Configuration" + "Fetching and Updating Instrument tspLink Configuration", ) } @@ -121,7 +118,7 @@ export class CommunicationManager { const Ip = await vscode.window.showInputBox(options) if (Ip == undefined) { - return Promise.reject("IP is undefined") + return Promise.reject(new Error("IP is undefined")) } const msn = await this._connHelper.getModelAndSerialNumber(Ip) @@ -131,7 +128,7 @@ export class CommunicationManager { ": Found instrument model " + msn.model + " with S/N: " + - msn.sn + msn.sn, ) await createTerminal(Ip, msn.model, text) return Promise.resolve(true) @@ -159,7 +156,7 @@ export class CommunicationManager { }) if ((await vscode.window.showInputBox(options)) != undefined) { const selectedTerm = await vscode.window.showQuickPick( - Object.keys(kicDict) + Object.keys(kicDict), ) if (selectedTerm != undefined) { kicDict[selectedTerm]?.sendText(text) @@ -168,7 +165,7 @@ export class CommunicationManager { } } - return Promise.reject("Unknown error") + return Promise.reject(new Error("Unknown error")) } //this is the main create @@ -186,7 +183,7 @@ export class CommunicationManager { term_name: string, instrumentIp?: string, usb_unique_string?: string, - filePath?: string + filePath?: string, ): [info: string, verified_name?: string] { let res: [string, string?] = ["", undefined] const maxerr: number = @@ -223,7 +220,7 @@ export class CommunicationManager { ip, "lan", maxerr, - filePath + filePath, ) } else if (usb_unique_string != undefined) { let unique_string = usb_unique_string @@ -236,7 +233,7 @@ export class CommunicationManager { unique_string, "usb", undefined, - filePath + filePath, ) } @@ -254,12 +251,12 @@ export class CommunicationManager { (t) => ( t.creationOptions as vscode.TerminalOptions - )?.shellPath?.toString() === EXECUTABLE + )?.shellPath?.toString() === EXECUTABLE, ) await vscode.commands.executeCommand( "setContext", "isKicTerminalActive", - kicTerminals.length > 1 + kicTerminals.length > 1, ) } @@ -283,12 +280,12 @@ export class CommunicationManager { (t) => ( t.creationOptions as vscode.TerminalOptions - )?.shellPath?.toString() === EXECUTABLE + )?.shellPath?.toString() === EXECUTABLE, ) await vscode.commands.executeCommand( "setContext", "isKicTerminalActive", - kicTerminals.length > 1 + kicTerminals.length > 1, ) } diff --git a/src/extension.ts b/src/extension.ts index 99eb5a7..7cf0700 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,10 +1,10 @@ import * as fs from "fs" -import path = require("path") +import { join } from "path" import * as vscode from "vscode" import { COMMAND_SETS } from "@tektronix/keithley_instrument_libraries" -import { EXECUTABLE } from "@tektronix/kic-cli" +import { EXECUTABLE } from "./kic-cli" import { CommunicationManager } from "./communicationmanager" -import { TerminationManager } from "./terminationManager" +//import { TerminationManager } from "./terminationManager" import { InstrumentsExplorer } from "./instruments" import { HelpDocumentWebView } from "./helpDocumentWebView" import { @@ -28,7 +28,7 @@ import { LOG_DIR } from "./utility" import { LoggerManager } from "./logging" let _activeConnectionManager: CommunicationManager -let _terminationMgr: TerminationManager +//let _terminationMgr: TerminationManager let _instrExplorer: InstrumentsExplorer let _kicProcessMgr: KicProcessMgr let _connHelper: ConnectionHelper @@ -43,7 +43,7 @@ let _connHelper: ConnectionHelper export async function createTerminal( connection_string: string, model_serial?: string, - command_text?: string + command_text?: string, ) { //'example@5e6:2461@2' OR 'example@127.0.0.1' let res: [string, string?] = ["", undefined] @@ -66,7 +66,7 @@ export async function createTerminal( name, undefined, connection_string, - command_text + command_text, ) } else { //LAN @@ -77,7 +77,7 @@ export async function createTerminal( if (name == "") { name = FriendlyNameMgr.generateUniqueName( IoType.Lan, - model_serial_no + model_serial_no, ) } @@ -86,13 +86,13 @@ export async function createTerminal( ": Found instrument model " + msn.model + " with S/N: " + - msn.sn + msn.sn, ) res = _activeConnectionManager?.createTerminal( name, `${connection_string}:${msn.port}`, undefined, - command_text + command_text, ) } //TODO: Remove this else statement once lxi page is ready for versatest @@ -101,7 +101,7 @@ export async function createTerminal( name, connection_string, undefined, - command_text + command_text, ) } @@ -127,9 +127,9 @@ export function activate(context: vscode.ExtensionContext) { _activeConnectionManager = new CommunicationManager( context, _kicProcessMgr, - _connHelper + _connHelper, ) - _terminationMgr = new TerminationManager() + //_terminationMgr = new TerminationManager() _instrExplorer = new InstrumentsExplorer(context, _kicProcessMgr) // The command has been defined in the package.json file @@ -137,14 +137,14 @@ export function activate(context: vscode.ExtensionContext) { // The commandId parameter must match the command field in package.json const openTerminal = vscode.commands.registerCommand( "tsp.openTerminal", - pickConnection + pickConnection, ) const add_new_connection = vscode.commands.registerCommand( "InstrumentsExplorer.connect", async () => { await pickConnection("New Connection") - } + }, ) context.subscriptions.push(add_new_connection) @@ -183,7 +183,7 @@ export function activate(context: vscode.ExtensionContext) { { "*.tsp": "lua", }, - vscode.ConfigurationTarget.Global + vscode.ConfigurationTarget.Global, ) void processWorkspaceFolders() @@ -191,21 +191,21 @@ export function activate(context: vscode.ExtensionContext) { context.subscriptions.push( vscode.workspace.onDidSaveTextDocument((textFilePath) => { void onDidSaveTextDocument(textFilePath) - }) + }), ) // Register a handler to process files whenever a new workspace folder is added context.subscriptions.push( vscode.workspace.onDidChangeWorkspaceFolders((event) => { hookTspConfigFileChange(context, event.added.slice()) void processWorkspaceFolders() - }) + }), ) // Register a handler to process files whenever a file is created is added context.subscriptions.push( vscode.workspace.onDidCreateFiles(() => { void processWorkspaceFolders() - }) + }), ) return base_api @@ -225,7 +225,7 @@ function updateExtensionSettings() { .showInformationMessage( setting + ' is deprecated. Select "Remove" to remove it from settings.json. If you wish to leave it, select "Ignore"', - ...["Remove", "Ignore"] + ...["Remove", "Ignore"], ) .then((selection) => { if (selection == "Remove") { @@ -234,7 +234,7 @@ function updateExtensionSettings() { .update(setting, undefined, true) .then(() => { void vscode.window.showInformationMessage( - "removed setting: " + setting + "removed setting: " + setting, ) }) } @@ -252,14 +252,14 @@ function updateExtensionSettings() { */ function hookTspConfigFileChange( context: vscode.ExtensionContext, - workspace_folders: vscode.WorkspaceFolder[] | undefined + workspace_folders: vscode.WorkspaceFolder[] | undefined, ) { if (workspace_folders) { for (const folder of workspace_folders) { const folderPath = folder.uri const fileWatcher = vscode.workspace.createFileSystemWatcher( - new vscode.RelativePattern(folderPath, "**/*.tsp.json") + new vscode.RelativePattern(folderPath, "**/*.tsp.json"), ) // Event listener for file changes fileWatcher.onDidChange(onDidChangeTspConfigFile) @@ -298,11 +298,11 @@ async function onDidSaveTextDocument(textDocument: vscode.TextDocument) { const supported_models = fs .readdirSync(COMMAND_SETS) .filter((folder) => - fs.statSync(`${COMMAND_SETS}/${folder}`).isDirectory() + fs.statSync(`${COMMAND_SETS}/${folder}`).isDirectory(), ) if (!supported_models.includes(model.toUpperCase())) { void vscode.window.showInformationMessage( - `${model} model is not supported` + `${model} model is not supported`, ) if (workspace_path) await updateConfiguration( @@ -310,29 +310,27 @@ async function onDidSaveTextDocument(textDocument: vscode.TextDocument) { undefined, vscode.ConfigurationTarget.WorkspaceFolder, workspace_path, - false + false, ) return } - const lib_base_path = path.join(COMMAND_SETS, model.toUpperCase()) + const lib_base_path = join(COMMAND_SETS, model.toUpperCase()) - new_library_settings.push(path.join(lib_base_path, "Helper")) + new_library_settings.push(join(lib_base_path, "Helper")) if (nodes.some((str) => str.includes("self"))) { - new_library_settings.push( - path.join(lib_base_path, "AllTspCommands") - ) + new_library_settings.push(join(lib_base_path, "AllTspCommands")) } if (nodes.some((str) => str.includes("node"))) { new_library_settings.push( - path.join(lib_base_path, "tspLinkSupportedCommands") + join(lib_base_path, "tspLinkSupportedCommands"), ) } const className = getClassName( - path.join( + join( lib_base_path, "tspLinkSupportedCommands", - "nodeTable.lua" - ) + "nodeTable.lua", + ), ) nodes.forEach((node: string) => { if (node.includes(".")) { @@ -341,7 +339,7 @@ async function onDidSaveTextDocument(textDocument: vscode.TextDocument) { if (node.includes("node")) { const node_num = parseInt( node.match(/\d+/)?.[0] || "", - 10 + 10, ) nodeStr = nodeStr + `node[${node_num}] = ${className}\n` @@ -354,19 +352,19 @@ async function onDidSaveTextDocument(textDocument: vscode.TextDocument) { if (workspace_path != undefined) { updateNodeDetails( - path.join( + join( workspace_path.uri.fsPath, RELATIVE_TSP_CONFIG_FILE_PATH, - "nodeTable.tsp" + "nodeTable.tsp", ), - nodeStr + nodeStr, ) await updateConfiguration( "Lua.workspace.library", new_library_settings, vscode.ConfigurationTarget.WorkspaceFolder, workspace_path, - true + true, ) } } @@ -381,7 +379,7 @@ async function pickConnection(connection_info?: string): Promise { selection = (await vscode.window.showQuickPick( ["New Connection"].concat(connections), - { placeHolder: "Select a connection" } + { placeHolder: "Select a connection" }, )) || "" if (selection === undefined) { @@ -407,7 +405,7 @@ async function pickConnection(connection_info?: string): Promise { async function connect( inIp: string, shouldPrompt?: boolean, - model_serial?: string + model_serial?: string, ): Promise { let Ip: string | undefined = inIp if (shouldPrompt == true) { @@ -446,9 +444,9 @@ async function startInstrDiscovery(): Promise { shellPath: EXECUTABLE, shellArgs: [ "--log-file", - path.join( + join( LOG_DIR, - `${new Date().toISOString().substring(0, 10)}-kic.log` + `${new Date().toISOString().substring(0, 10)}-kic.log`, ), "--log-socket", `${logger.host}:${logger.port}`, @@ -463,9 +461,9 @@ async function startInstrDiscovery(): Promise { } } -function startTerminateAllConn() { - void _terminationMgr.terminateAllConn() -} +//function startTerminateAllConn() { +// void _terminationMgr.terminateAllConn() +//} async function startRename(def: unknown): Promise { await _instrExplorer.rename(def) @@ -488,17 +486,17 @@ const base_api = { (t) => ( t.creationOptions as vscode.TerminalOptions - )?.shellPath?.toString() === EXECUTABLE + )?.shellPath?.toString() === EXECUTABLE, ) return kicTerminals }, async fetchConnDetails( - term_pid: Thenable | undefined + term_pid: Thenable | undefined, ): Promise { if (_kicProcessMgr != undefined) { const kicCell = _kicProcessMgr.kicList.find( - (x) => x.terminalPid == term_pid + (x) => x.terminalPid == term_pid, ) const connDetails = kicCell?.fetchConnDetials() @@ -510,13 +508,15 @@ const base_api = { }, () => { found = false - } + }, ) if (found) { return Promise.resolve(connDetails) } return Promise.reject( - "Couldn't close terminal. Please check instrument state" + new Error( + "Couldn't close terminal. Please check instrument state", + ), ) } }, @@ -527,7 +527,7 @@ const base_api = { instr.Name, instr.ConnAddr, instr.ConnType, - instr.Maxerr + instr.Maxerr, ) } }, diff --git a/src/helpDocumentWebView.ts b/src/helpDocumentWebView.ts index ae63e86..3c92908 100644 --- a/src/helpDocumentWebView.ts +++ b/src/helpDocumentWebView.ts @@ -1,4 +1,4 @@ -import path = require("path") +import { join } from "path" import * as fs from "fs" import * as vscode from "vscode" import * as cheerio from "cheerio" @@ -18,8 +18,8 @@ export class HelpDocumentWebView { "kic.viewHelpDocument", (helpfile: string) => { this.getHelpDocumentContent(helpfile) - } - ) + }, + ), ) } /** @@ -51,7 +51,7 @@ export class HelpDocumentWebView { "helpFileWebView", helpfile, { viewColumn: this.getViewColumn(), preserveFocus: true }, - options + options, ) panel.onDidDispose( @@ -59,7 +59,7 @@ export class HelpDocumentWebView { HelpDocumentWebView.currentPanel = undefined }, null, - this.context.subscriptions + this.context.subscriptions, ) HelpDocumentWebView.currentPanel = panel @@ -91,7 +91,7 @@ export class HelpDocumentWebView { * @return html string */ private static generateWebviewContent(htmlFileName: string): string { - const filePath = path.join(WEB_HELP_FILE_PATH, htmlFileName) + const filePath = join(WEB_HELP_FILE_PATH, htmlFileName) if (!fs.existsSync(filePath)) { return ` @@ -154,12 +154,12 @@ export class HelpDocumentWebView { const uri = HelpDocumentWebView.currentPanel?.webview.asWebviewUri( vscode.Uri.file( - path.join( + join( WEB_HELP_FILE_PATH, htmlFileName.split("/")[0], - src - ) - ) + src, + ), + ), ) html = html.replace(src, uri?.toString() || src) } diff --git a/src/instruments.ts b/src/instruments.ts index 560a4d3..7e9d763 100644 --- a/src/instruments.ts +++ b/src/instruments.ts @@ -1,5 +1,5 @@ import * as cp from "node:child_process" -import path = require("path") +import { join } from "path" import * as vscode from "vscode" import { @@ -8,9 +8,8 @@ import { JSONRPCRequest, JSONRPCResponse, } from "json-rpc-2.0" -import { DISCOVER_EXECUTABLE, EXECUTABLE } from "@tektronix/kic-cli" -import fetch from "node-fetch" import { plainToInstance } from "class-transformer" +import { DISCOVER_EXECUTABLE, EXECUTABLE } from "./kic-cli" import { FriendlyNameMgr, IIDNInfo, @@ -97,15 +96,15 @@ const rpcClient: JSONRPCClient = new JSONRPCClient( // Use client.receive when you received a JSON-RPC response. return response .json() - .then((jsonRPCResponse: JSONRPCResponse) => - rpcClient.receive(jsonRPCResponse) + .then((jsonRPCResponse) => + rpcClient.receive(jsonRPCResponse as JSONRPCResponse), ) // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access } else if (jsonRPCRequest.id !== undefined) { return Promise.reject(new Error(response.statusText)) } }), - createID + createID, ) const jsonRPCRequest: JSONRPCRequest = { @@ -292,7 +291,7 @@ class IOInstrNode extends InstrNode { const res_instr = connections.find( (x: InstrInfo) => x.io_type == this._instrInfo.io_type && - x.model + "#" + x.serial_number == this._modSerial + x.model + "#" + x.serial_number == this._modSerial, ) if (res_instr != undefined) { friendly_name = res_instr.friendly_name @@ -306,7 +305,7 @@ class IOInstrNode extends InstrNode { public addDefaultFriendlyName() { this._instrInfo.friendly_name = DiscoveryHelper.createModelSerial( - this._instrInfo + this._instrInfo, ) } @@ -345,10 +344,10 @@ class IOInstrNode extends InstrNode { this.children.push(new InstrNode("Model: " + this._instrInfo.model)) this.children.push( - new InstrNode("Port: " + (this._instrInfo.socket_port ?? "NA")) + new InstrNode("Port: " + (this._instrInfo.socket_port ?? "NA")), ) this.children.push( - new InstrNode("Serial No: " + this._instrInfo.serial_number) + new InstrNode("Serial No: " + this._instrInfo.serial_number), ) } } @@ -645,7 +644,7 @@ export class NewTDPModel { (jsonRPCResponse: JSONRPCResponse) => { if (jsonRPCResponse.error) { console.log( - `Received an error with code ${jsonRPCResponse.error.code} and message ${jsonRPCResponse.error.message}` + `Received an error with code ${jsonRPCResponse.error.code} and message ${jsonRPCResponse.error.message}`, ) } else { this.parseDiscoveredInstruments(jsonRPCResponse) @@ -653,7 +652,7 @@ export class NewTDPModel { }, () => { console.log("RPC Instr List Fetch failed!") - } + }, ) //todo }) @@ -710,7 +709,7 @@ export class NewTDPModel { public addFromConnectToSavedList(ioType: IoType, instr_details: InstrInfo) { if (instr_details != undefined) { this._savedNodeProvider?.saveInstrToList( - DiscoveryHelper.createUniqueID(instr_details) + DiscoveryHelper.createUniqueID(instr_details), ) this.addToConnectionList(instr_details) @@ -730,7 +729,7 @@ export class NewTDPModel { const nodeToBeSaved = instr as IOInstrNode if (nodeToBeSaved != undefined) { this._savedNodeProvider?.saveInstrToList( - nodeToBeSaved.FetchUniqueID() ?? "" + nodeToBeSaved.FetchUniqueID() ?? "", ) nodeToBeSaved.addDefaultFriendlyName() @@ -790,7 +789,7 @@ export class NewTDPModel { let idx = -1 for (let i = 0; i < this.connection_list.length; i++) { const uid = DiscoveryHelper.createUniqueID( - this.connection_list[i] + this.connection_list[i], ) if (uid == nodeToBeRemoved.FetchUniqueID()) { idx = i @@ -803,7 +802,7 @@ export class NewTDPModel { } this._savedNodeProvider?.removeInstrFromList( - nodeToBeRemoved.FetchUniqueID() ?? "" + nodeToBeRemoved.FetchUniqueID() ?? "", ) const saved_list = this._savedNodeProvider?.getSavedInstrList() @@ -848,7 +847,7 @@ export class NewTDPModel { this.connection_list.forEach((item: InstrInfo) => { this._savedNodeProvider?.saveInstrToList( - DiscoveryHelper.createUniqueID(item) + DiscoveryHelper.createUniqueID(item), ) }) @@ -856,7 +855,7 @@ export class NewTDPModel { const res_node = disc_node_provider as NodeProvider res_node.updateSavedList( this._savedNodeProvider?.getSavedInstrList() ?? [], - false + false, ) }) } @@ -871,7 +870,7 @@ export class NewTDPModel { if ( DiscoveryHelper.createUniqueID(this.discovery_list[i]) == DiscoveryHelper.createUniqueID( - this.connection_list[j] + this.connection_list[j], ) && this.discovery_list[i].instr_address != this.connection_list[j].instr_address @@ -920,7 +919,7 @@ export class NewTDPModel { void config.update( "savedInstruments", instrList, - vscode.ConfigurationTarget.Global + vscode.ConfigurationTarget.Global, ) } } catch (err_msg) { @@ -956,7 +955,7 @@ export class NewTDPModel { void config.update( "savedInstruments", instrList, - vscode.ConfigurationTarget.Global + vscode.ConfigurationTarget.Global, ) } else { //found, check if connection address has changed @@ -974,7 +973,7 @@ export class NewTDPModel { void config.update( "savedInstruments", instrList, - vscode.ConfigurationTarget.Global + vscode.ConfigurationTarget.Global, ) } } @@ -1014,7 +1013,7 @@ export class NewTDPModel { this.new_instr = undefined if ( DiscoveryHelper.createUniqueID( - this.discovery_list[i] + this.discovery_list[i], ) == DiscoveryHelper.createUniqueID(obj) ) { if ( @@ -1064,7 +1063,7 @@ export class InstrTDP implements newTDP { this.instrModel = model } getTreeItem( - element: InstrNode + element: InstrNode, ): vscode.TreeItem | Thenable { let expandableState = vscode.TreeItemCollapsibleState.None @@ -1109,7 +1108,7 @@ export class InstrTDP implements newTDP { } getChildren( - element?: InstrNode | undefined + element?: InstrNode | undefined, ): vscode.ProviderResult { return element ? this.instrModel?.getChildren(element) @@ -1145,7 +1144,7 @@ export class InstrTDP implements newTDP { */ public saveInstrumentFromConnect( ioType: IoType, - instr_details: InstrInfo + instr_details: InstrInfo, ): void { this.instrModel?.addFromConnectToSavedList(ioType, instr_details) this.reloadTreeData() @@ -1171,7 +1170,7 @@ export class InstrumentsExplorer { constructor( context: vscode.ExtensionContext, - kicProcessMgr: KicProcessMgr + kicProcessMgr: KicProcessMgr, ) { this._kicProcessMgr = kicProcessMgr const tdpModel = new NewTDPModel() @@ -1188,60 +1187,60 @@ export class InstrumentsExplorer { }) vscode.commands.registerCommand( "InstrumentsExplorer.openInstrumentsDiscoveryResource", - () => void 0 + () => void 0, ) vscode.commands.registerCommand( "InstrumentsExplorer.revealResource", - () => void 0 + () => void 0, ) const upgradefw = vscode.commands.registerCommand( "InstrumentsExplorer.upgradeFirmware", async (e) => { await this.upgradeFirmware(e) - } + }, ) const upgradeMainframe = vscode.commands.registerCommand( "InstrumentsExplorer.upgradeMainframe", async (e) => { await this.upgradeMainframe(e) - } + }, ) const upgradeSlot1 = vscode.commands.registerCommand( "InstrumentsExplorer.upgradeSlot1", async (e) => { await this.upgradeSlot1(e) - } + }, ) const upgradeSlot2 = vscode.commands.registerCommand( "InstrumentsExplorer.upgradeSlot2", async (e) => { await this.upgradeSlot2(e) - } + }, ) const upgradeSlot3 = vscode.commands.registerCommand( "InstrumentsExplorer.upgradeSlot3", async (e) => { await this.upgradeSlot3(e) - } + }, ) const saveInstrument = vscode.commands.registerCommand( "InstrumentsExplorer.save", (e) => { this.saveInstrument(e) - } + }, ) const removeInstrument = vscode.commands.registerCommand( "InstrumentsExplorer.remove", (e) => { this.removeInstrument(e) - } + }, ) context.subscriptions.push(upgradefw) @@ -1262,11 +1261,11 @@ export class InstrumentsExplorer { DISCOVER_EXECUTABLE, [ "--log-file", - path.join( + join( LOG_DIR, `${new Date() .toISOString() - .substring(0, 10)}-kic-discover.log` + .substring(0, 10)}-kic-discover.log`, ), "--log-socket", `${logger.host}:${logger.port}`, @@ -1274,7 +1273,7 @@ export class InstrumentsExplorer { "--timeout", DISCOVERY_TIMEOUT.toString(), "--exit", - ] + ], //, // { // detached: true, @@ -1293,11 +1292,14 @@ export class InstrumentsExplorer { this.treeDataProvider?.refresh() }, 1000) - setTimeout(() => { - this.InstrumentsDiscoveryViewer.message = "" - clearInterval(this.intervalID) - //void stopDiscovery() - }, DISCOVERY_TIMEOUT * 1000 + 10000) + setTimeout( + () => { + this.InstrumentsDiscoveryViewer.message = "" + clearInterval(this.intervalID) + //void stopDiscovery() + }, + DISCOVERY_TIMEOUT * 1000 + 10000, + ) } } @@ -1315,14 +1317,14 @@ export class InstrumentsExplorer { ) { await FriendlyNameMgr.checkandAddFriendlyName( input_item.fetchInstrInfo(), - ip_str + ip_str, ) this.treeDataProvider?.reloadTreeData() } } public fetchConnectionArgs( - item: object + item: object, ): [connection_str: string, model_serial?: string] { const resNode = item as IOInstrNode if (resNode != undefined) { @@ -1346,11 +1348,11 @@ export class InstrumentsExplorer { ioType: IoType, info: string, friendly_name: string, - port: string | undefined + port: string | undefined, ) { if (info == "") { void vscode.window.showErrorMessage( - "Unable to connect to instrument" + "Unable to connect to instrument", ) return } @@ -1414,7 +1416,7 @@ export class InstrumentsExplorer { }) if (kicTerminals.length == 0) { void vscode.window.showInformationMessage( - "Not connected to any instrument. Cannot proceed." + "Not connected to any instrument. Cannot proceed.", ) return } else { @@ -1442,7 +1444,7 @@ export class InstrumentsExplorer { // .update "path" --slot {number} kicCell.sendTextToTerminal( `.upgrade "${fw_file[0].fsPath}" --slot ${slot}\n - ` + `, ) } return diff --git a/src/kic-cli.ts b/src/kic-cli.ts new file mode 100644 index 0000000..5612822 --- /dev/null +++ b/src/kic-cli.ts @@ -0,0 +1,13 @@ +const platform = process.platform.toString() +const arch = process.arch.toString() +const kic_cli = `@tektronix/kic-cli-${platform}-${arch}` + +// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-unsafe-assignment +const cli = require(kic_cli) + +const { EXECUTABLE, DISCOVER_EXECUTABLE } = cli as { + EXECUTABLE: string + DISCOVER_EXECUTABLE: string +} + +export { EXECUTABLE, DISCOVER_EXECUTABLE } diff --git a/src/logging.ts b/src/logging.ts index ed11e76..82aa423 100644 --- a/src/logging.ts +++ b/src/logging.ts @@ -50,8 +50,8 @@ interface KicLogMessage { level: KicLogLevels fields: Fields target: string - span: Span - spans: Span[] + span?: Span + spans?: Span[] } /** @@ -71,7 +71,7 @@ export class Logger { name: string, host: string, port: number, - manager?: LoggerManager + manager?: LoggerManager, ) { this._name = name this._host = host @@ -85,23 +85,33 @@ export class Logger { }) this._server = createServer((stream) => { + let accumulated_data: string = "" stream.on("data", (c) => { //console.log(c.toString()) - const raw = "[" + c.toString() + "]" - const messages = JSON.parse(raw) as KicLogMessage[] - - for (const m of messages) { - const spans = m.spans - .map((x) => { - let span_string = "" - const { name, ...args } = x - span_string += name - if (Object.keys(args).length > 0) { - span_string += JSON.stringify(args) - } - return span_string - }) - .join(":") + accumulated_data += c.toString() + const end = accumulated_data.lastIndexOf("\n") + const complete_messages = accumulated_data.substring(0, end) + accumulated_data = accumulated_data.substring(end + 1) + complete_messages.split("\n").forEach((raw) => { + raw = raw.trim() + if (raw.length === 0) { + return + } + const m = JSON.parse(raw) as KicLogMessage + let spans = "" + if (m.spans) { + spans = m.spans + .map((x) => { + let span_string = "" + const { name, ...args } = x + span_string += name + if (Object.keys(args).length > 0) { + span_string += JSON.stringify(args) + } + return span_string + }) + .join(":") + } const fields = ((f: Fields): string => { let msg_text = "" @@ -141,7 +151,7 @@ export class Logger { default: break } - } + }) }) stream.on("end", () => { @@ -163,7 +173,7 @@ export class Logger { this._port++ if (this._port > PORT_MAX) { this._outputChannel.appendLine( - "Unable to find a usable port number for logger." + "Unable to find a usable port number for logger.", ) return } @@ -173,7 +183,7 @@ export class Logger { this._server.listen(this._port, this._host, () => { console.log( - `Logger for ${this._name} listening on ${this._host}:${this._port}` + `Logger for ${this._name} listening on ${this._host}:${this._port}`, ) }) } diff --git a/src/resourceManager.ts b/src/resourceManager.ts index b168349..d4291d1 100644 --- a/src/resourceManager.ts +++ b/src/resourceManager.ts @@ -1,9 +1,9 @@ import * as child from "child_process" -import path = require("path") +import { join } from "path" import { EventEmitter } from "events" -import fetch from "node-fetch" -import { EXECUTABLE } from "@tektronix/kic-cli" +import { ReadableStream } from "node:stream/web" import * as vscode from "vscode" +import { EXECUTABLE } from "./kic-cli" import { LOG_DIR } from "./utility" import { LoggerManager } from "./logging" @@ -80,7 +80,7 @@ export class FriendlyNameMgr { */ public static generateUniqueName( io_type: IoType, - model_serial: string | undefined + model_serial: string | undefined, ): string { let unique_name = "" let found = false @@ -123,7 +123,7 @@ export class FriendlyNameMgr { */ public static async checkandAddFriendlyName( instr: InstrInfo, - new_name: string + new_name: string, ) { const connections: Array = vscode.workspace.getConfiguration("tsp").get("savedInstruments") ?? @@ -134,7 +134,7 @@ export class FriendlyNameMgr { (i) => i.io_type === instr.io_type && i.model == instr.model && - i.serial_number == instr.serial_number + i.serial_number == instr.serial_number, ) if (index !== -1) { //update @@ -142,14 +142,14 @@ export class FriendlyNameMgr { await config.update( "savedInstruments", connections, - vscode.ConfigurationTarget.Global + vscode.ConfigurationTarget.Global, ) } else { connections.push(instr) await config.update( "savedInstruments", connections, - vscode.ConfigurationTarget.Global + vscode.ConfigurationTarget.Global, ) } @@ -167,7 +167,7 @@ export class ConnectionDetails { name: string, connAddr: string, connType: string, - maxerr?: number + maxerr?: number, ) { this.Name = name this.ConnAddr = connAddr @@ -206,7 +206,7 @@ export class KicProcessMgr { unique_id: string, connType: string, maxerr?: number, - filePath?: string + filePath?: string, ): [info: string, verified_name?: string] { const newCell = new KicCell() const [info, verified_name] = newCell.initialiseComponents( @@ -214,7 +214,7 @@ export class KicProcessMgr { unique_id, connType, maxerr, - filePath + filePath, ) this.debugTermPid = newCell.terminalPid this.kicList.push(newCell) @@ -235,7 +235,7 @@ export class KicProcessMgr { this._reconnectInstrDetails.Name, this._reconnectInstrDetails.ConnAddr, this._reconnectInstrDetails.ConnType, - this._reconnectInstrDetails.Maxerr + this._reconnectInstrDetails.Maxerr, ) } } @@ -248,7 +248,7 @@ export class KicProcessMgr { } const ip = await vscode.window.showInputBox(options) if (ip === undefined) { - return Promise.reject("connection unsuccessful.") + return Promise.reject(new Error("connection unsuccessful.")) } this.doReconnect = false @@ -280,7 +280,7 @@ export class KicCell extends EventEmitter { unique_id: string, connType: string, maxerr?: number, - filePath?: string + filePath?: string, ): [info: string, verified_name?: string] { //#ToDo: need to verify if maxerr is required this._uniqueID = unique_id @@ -290,7 +290,7 @@ export class KicCell extends EventEmitter { name, unique_id, connType, - maxerr + maxerr, ) const logger = LoggerManager.instance().add_logger("TSP Terminal") @@ -302,11 +302,11 @@ export class KicCell extends EventEmitter { EXECUTABLE, [ "--log-file", - path.join( + join( LOG_DIR, `${new Date() .toISOString() - .substring(0, 10)}-kic.log` + .substring(0, 10)}-kic.log`, ), "--log-socket", `${logger.host}:${logger.port}`, @@ -317,7 +317,7 @@ export class KicCell extends EventEmitter { ], { env: { CLICOLOR: "1", CLICOLOR_FORCE: "1" }, - } + }, ) .stdout.toString() @@ -330,7 +330,7 @@ export class KicCell extends EventEmitter { verified_name = FriendlyNameMgr.generateUniqueName( IoType.Lan, - _info.model + "#" + _info.serial_number + _info.model + "#" + _info.serial_number, ) name = verified_name this._connDetails.Name = name @@ -341,9 +341,9 @@ export class KicCell extends EventEmitter { shellPath: EXECUTABLE, shellArgs: [ "--log-file", - path.join( + join( LOG_DIR, - `${new Date().toISOString().substring(0, 10)}-kic.log` + `${new Date().toISOString().substring(0, 10)}-kic.log`, ), "--log-socket", `${logger.host}:${logger.port}`, @@ -359,9 +359,9 @@ export class KicCell extends EventEmitter { shellPath: EXECUTABLE, shellArgs: [ "--log-file", - path.join( + join( LOG_DIR, - `${new Date().toISOString().substring(0, 10)}-kic.log` + `${new Date().toISOString().substring(0, 10)}-kic.log`, ), "--log-socket", `${logger.host}:${logger.port}`, @@ -376,6 +376,7 @@ export class KicCell extends EventEmitter { vscode.window.onDidCloseTerminal((t) => { if ( t.creationOptions.iconPath !== undefined && + // eslint-disable-next-line @typescript-eslint/no-base-to-string t.creationOptions.iconPath.toString().search("keithley-logo") && t.exitStatus !== undefined && t.exitStatus.reason !== vscode.TerminalExitReason.Process @@ -413,7 +414,7 @@ export class KicCell extends EventEmitter { await this.sleep(500) } } - return Promise.reject("couldn't close terminal") + return Promise.reject(new Error("couldn't close terminal")) } private sendEvent(event: string, ...args: string[]): void { @@ -439,7 +440,7 @@ export class KicCell extends EventEmitter { export class ConnectionHelper { public IPTest(ip: string) { return /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test( - ip + ip, ) } public instrIPValidator = (val: string) => { @@ -458,7 +459,7 @@ export class ConnectionHelper { ": Found instrument model " + msn.model + " with S/N: " + - msn.sn + msn.sn, ) } }) @@ -471,35 +472,37 @@ export class ConnectionHelper { >() public async getModelAndSerialNumber( - ip: string + ip: string, ): Promise<{ model: string; sn: string; port: string } | undefined> { if (this.myIPmap.has(ip)) { return this.myIPmap.get(ip) } - const read = async (body: NodeJS.ReadableStream) => { - let error: string - body.on("error", (err) => { - error = err as string - }) - let retbody = "" - for await (const chunk of body) { - retbody += chunk.toString() - } - - return new Promise((resolve, reject) => { - body.on("close", () => { - error ? reject(error) : resolve(retbody) + const read = async (response: Response) => { + if (!response.ok) { + return new Promise((_, reject) => { + return reject( + new ReferenceError( + "did not receive instrument LXI information page", + ), + ) }) - return resolve(retbody) - }) + } + return response.body } try { const response = await fetch("http://" + ip + "/lxi/identification") - const body = await read(response.body) - const model = body.split("")[0].split("")[1] - const sn = body + + const body = (await read(response)) as ReadableStream + if (body === null) { + console.log("did not receive instrument LXI information") + return undefined + } + const model = new String(body) + .split("")[0] + .split("")[1] + const sn = new String(body) .split("")[0] .split("")[1] // const portSplit = body.split("::SOCKET")[0].split("::") @@ -522,7 +525,7 @@ export class ConnectionHelper { kicProcessMgr: KicProcessMgr, instrumentIp?: string, usb_unique_string?: string, - filePath?: string + filePath?: string, ) { const maxerr: number = vscode.workspace.getConfiguration("tsp").get("errorLimit") ?? 0 @@ -568,7 +571,7 @@ export class ConnectionHelper { unique_string, "usb", undefined, - filePath + filePath, ) } diff --git a/src/terminationManager.ts b/src/terminationManager.ts index b00876a..4233b62 100644 --- a/src/terminationManager.ts +++ b/src/terminationManager.ts @@ -1,6 +1,6 @@ -import path = require("node:path") +import { join } from "node:path" import * as vscode from "vscode" -import { EXECUTABLE } from "@tektronix/kic-cli" +import { EXECUTABLE } from "./kic-cli" import { CONNECTION_RE } from "./resourceManager" import { LOG_DIR } from "./utility" @@ -12,7 +12,7 @@ export class TerminationManager { (t) => ( t.creationOptions as vscode.TerminalOptions - )?.shellPath?.toString() === EXECUTABLE + )?.shellPath?.toString() === EXECUTABLE, ) if (kicTerminals.length == 0) { const options: vscode.InputBoxOptions = { @@ -49,7 +49,7 @@ export class TerminationManager { }) if ((await vscode.window.showInputBox(options)) != undefined) { const selectedTerm = await vscode.window.showQuickPick( - Object.keys(kicDict) + Object.keys(kicDict), ) if (selectedTerm != undefined) { kicDict[selectedTerm]?.sendText(".terminate") @@ -71,9 +71,9 @@ export class TerminationManager { shellPath: EXECUTABLE, shellArgs: [ "--log-file", - path.join( + join( LOG_DIR, - `${new Date().toISOString().substring(0, 10)}-kic.log` + `${new Date().toISOString().substring(0, 10)}-kic.log`, ), "--log-socket", `${logger.host}:${logger.port}`, diff --git a/src/tspConfigJsonParser.ts b/src/tspConfigJsonParser.ts index c9bdc91..999e69a 100644 --- a/src/tspConfigJsonParser.ts +++ b/src/tspConfigJsonParser.ts @@ -69,7 +69,7 @@ export function getNodeDetails(filePath: string): Record { */ export function updateNodeDetails( file_path: string, - node_details: string + node_details: string, ): void { // Read the file content // Write the updated content back to the file diff --git a/src/utility.ts b/src/utility.ts index cd037f0..0511bf7 100644 --- a/src/utility.ts +++ b/src/utility.ts @@ -1,9 +1,7 @@ import { existsSync, mkdirSync, PathLike } from "node:fs" import { homedir, platform, tmpdir } from "node:os" -import path = require("node:path") -import process = require("node:process") - -const { env } = process +import { basename, join } from "node:path" +import { env } from "node:process" interface PathsInterface { data: PathLike @@ -58,7 +56,7 @@ class Paths { get temp(): string { if (!existsSync(this._temp)) { - mkdirSync(this._temp), { recursive: true } + mkdirSync(this._temp, { recursive: true }) } return this._temp } @@ -79,60 +77,57 @@ class Paths { const PATHS: Paths = (function (app_name: string): Paths { switch (platform()) { case "win32": { - const ad = env.APPDATA || path.join(homedir(), "AppData", "Roaming") - const lad = - env.LOCALAPPDATA || path.join(homedir(), "AppData", "Local") + const ad = env.APPDATA || join(homedir(), "AppData", "Roaming") + const lad = env.LOCALAPPDATA || join(homedir(), "AppData", "Local") return new Paths({ - data: path.join(lad, app_name, "Data"), - config: path.join(ad, app_name, "Config"), - cache: path.join(lad, app_name, "Cache"), - log: path.join(lad, app_name, "Log"), - temp: path.join(tmpdir(), app_name), + data: join(lad, app_name, "Data"), + config: join(ad, app_name, "Config"), + cache: join(lad, app_name, "Cache"), + log: join(lad, app_name, "Log"), + temp: join(tmpdir(), app_name), }) } case "darwin": { - const lib = path.join(homedir(), "Library") + const lib = join(homedir(), "Library") return new Paths({ - data: path.join(lib, app_name, "Application Support"), - config: path.join(lib, app_name, "Preferences"), - cache: path.join(lib, app_name, "Caches"), - log: path.join(lib, app_name, "Logs"), - temp: path.join(tmpdir(), app_name), + data: join(lib, app_name, "Application Support"), + config: join(lib, app_name, "Preferences"), + cache: join(lib, app_name, "Caches"), + log: join(lib, app_name, "Logs"), + temp: join(tmpdir(), app_name), }) } case "linux": { - const username = path.basename(homedir()) + const username = basename(homedir()) return new Paths({ - data: path.join( - env.XDG_DATA_HOME || - path.join(homedir(), ".local", "share"), - app_name + data: join( + env.XDG_DATA_HOME || join(homedir(), ".local", "share"), + app_name, ), - config: path.join( - env.XDG_CONFIG_HOME || path.join(homedir(), ".config"), - app_name + config: join( + env.XDG_CONFIG_HOME || join(homedir(), ".config"), + app_name, ), - cache: path.join( - env.XDG_CACHE_HOME || path.join(homedir(), ".cache"), - app_name + cache: join( + env.XDG_CACHE_HOME || join(homedir(), ".cache"), + app_name, ), - log: path.join( - env.XDG_STATE_HOME || - path.join(homedir(), ".local", "state"), - app_name + log: join( + env.XDG_STATE_HOME || join(homedir(), ".local", "state"), + app_name, ), - temp: path.join(tmpdir(), username, app_name), + temp: join(tmpdir(), username, app_name), }) } default: { return new Paths({ - data: path.join(homedir(), app_name, "data"), - config: path.join(homedir(), app_name, "config"), - cache: path.join(homedir(), app_name, "cache"), - log: path.join(homedir(), app_name, "log"), - temp: path.join(tmpdir(), app_name), + data: join(homedir(), app_name, "data"), + config: join(homedir(), app_name, "config"), + cache: join(homedir(), app_name, "cache"), + log: join(homedir(), app_name, "log"), + temp: join(tmpdir(), app_name), }) } } @@ -147,4 +142,3 @@ const log_path = PATHS.log * - **macOS**: ~/Library/Logs/tsp-toolkit */ export const LOG_DIR = log_path - diff --git a/src/workspaceManager.ts b/src/workspaceManager.ts index 1f539a2..4556bc9 100644 --- a/src/workspaceManager.ts +++ b/src/workspaceManager.ts @@ -60,7 +60,7 @@ const tspConfigJsonContent = `{ */ function createTspFileFolder(folderPath: string) { const nodeConfigFolderPath = vscode.Uri.file( - path.join(folderPath, RELATIVE_TSP_CONFIG_FILE_PATH) + path.join(folderPath, RELATIVE_TSP_CONFIG_FILE_PATH), ) vscode.workspace.fs.stat(nodeConfigFolderPath).then( @@ -75,8 +75,8 @@ function createTspFileFolder(folderPath: string) { path.join( folderPath, RELATIVE_TSP_CONFIG_FILE_PATH, - "config.tsp.json" - ) + "config.tsp.json", + ), ) await fs.promises.writeFile(tspconfig.fsPath, tspConfigJsonContent) @@ -84,8 +84,8 @@ function createTspFileFolder(folderPath: string) { path.join( folderPath, RELATIVE_TSP_CONFIG_FILE_PATH, - "tspSchema.json" - ) + "tspSchema.json", + ), ) await fs.promises.writeFile(tspSchema.fsPath, tspSchemaContent) @@ -93,11 +93,11 @@ function createTspFileFolder(folderPath: string) { path.join( folderPath, RELATIVE_TSP_CONFIG_FILE_PATH, - "nodeTable.tsp" - ) + "nodeTable.tsp", + ), ) await fs.promises.writeFile(nodeTable.fsPath, "") - } + }, ) } @@ -106,7 +106,7 @@ export async function updateConfiguration( value: unknown, target: vscode.ConfigurationTarget = vscode.ConfigurationTarget.Workspace, workspace_path?: vscode.WorkspaceFolder, - notification?: boolean + notification?: boolean, ) { const config = workspace_path ? vscode.workspace.getConfiguration(undefined, workspace_path.uri) @@ -123,12 +123,12 @@ export async function updateConfiguration( await config.update(config_name, updatedConfiguration, target) if (notification) { void vscode.window.showInformationMessage( - `${config_name} configuration updated successfully.` + `${config_name} configuration updated successfully.`, ) } - } catch (error) { + } catch { void vscode.window.showErrorMessage( - `Failed to update ${config_name} configuration` + `Failed to update ${config_name} configuration`, ) } } @@ -146,13 +146,13 @@ export async function processWorkspaceFolders() { "Lua.workspace.ignoreDir", [], vscode.ConfigurationTarget.WorkspaceFolder, - folder + folder, ) await updateConfiguration( "Lua.diagnostics.libraryFiles", "Disable", vscode.ConfigurationTarget.WorkspaceFolder, - folder + folder, ) createTspFileFolder(folderPath) } diff --git a/tsconfig.json b/tsconfig.json index 78ae002..f1f2c3b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,13 +1,13 @@ { "compilerOptions": { - "module": "commonjs", - "target": "ES2021", + "module": "Node16", + "target": "ES2022", "outDir": "out", "lib": [ - "ES2021" + "ES2022" ], "sourceMap": true, "rootDir": "src", - "strict": true /* enable all strict type-checking options */ + "strict": true, /* enable all strict type-checking options */ } }