From 8514c4c22ba982e700d0efe5e477dccc5f7de1ad Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Wed, 24 Jun 2026 16:12:31 +0200 Subject: [PATCH 01/13] BREAKING CHANGE: migrated to pnpm, nx and included error translator --- .github/FUNDING.yml | 1 - .github/ISSUE_TEMPLATE/bug_report.md | 41 - .github/workflows/pr-ci.yml | 49 - .gitignore | 6 +- .nxignore | 2 + .vscode/launch.json | 10 +- .vscode/settings.json | 2 +- .vscode/tasks.json | 37 +- CONTRIBUTING.md | 134 - HANDOFF_O3_O1_LOCAL_TRANSLATOR.md | 806 ++ ...XTENSION_DELIVERY_TRANSLATOR_2026_06_24.md | 638 ++ ...F_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md | 259 + README.md | 46 +- apps/vscode-extension/.vscodeignore | 11 + apps/vscode-extension/package.json | 71 +- apps/vscode-extension/project.json | 123 + apps/vscode-extension/scripts/build.js | 91 - .../vscode-extension/scripts/package-vsix.mjs | 172 + apps/vscode-extension/src/diagnostics.ts | 22 +- .../src/formattedDiagnosticsStore.ts | 4 +- apps/vscode-extension/src/lspDiagnostic.ts | 121 + .../src/provider/selectedTextHoverProvider.ts | 38 +- .../src/provider/webviewViewProvider.ts | 18 +- apps/vscode-extension/src/test/runTest.ts | 12 +- apps/vscode-extension/tsconfig.app.json | 23 + apps/vscode-extension/tsconfig.json | 16 +- apps/vscode-extension/tsconfig.test.json | 14 + docs/ARCHITECTURE.md | 2 +- docs/hide-original-errors.md | 2 +- nx.json | 66 + package-lock.json | 7508 --------------- package.json | 49 +- packages/error-translator/package.json | 23 + packages/error-translator/project.json | 55 + .../error-translator/scripts/bundleErrors.mjs | 55 + .../scripts/refreshTsErrorMessages.mjs | 52 + .../src/generated/bundleErrors.json | 270 + .../src/generated/tsErrorMessages.json | 8522 +++++++++++++++++ .../src/getImprovedMessage.ts | 15 + packages/error-translator/src/index.ts | 12 + packages/error-translator/src/parseErrors.ts | 186 + .../src/translateDiagnosticMessage.ts | 59 + packages/error-translator/test/engine.test.ts | 189 + packages/error-translator/tsconfig.json | 12 + packages/error-translator/tsconfig.lib.json | 7 + .../vendor/matt-pocock/errors/1002.md | 5 + .../vendor/matt-pocock/errors/1003.md | 5 + .../vendor/matt-pocock/errors/1006.md | 5 + .../vendor/matt-pocock/errors/1009.md | 5 + .../vendor/matt-pocock/errors/1014.md | 5 + .../vendor/matt-pocock/errors/1015.md | 5 + .../vendor/matt-pocock/errors/1091.md | 5 + .../vendor/matt-pocock/errors/1109.md | 5 + .../vendor/matt-pocock/errors/1117.md | 5 + .../vendor/matt-pocock/errors/1155.md | 5 + .../vendor/matt-pocock/errors/1163.md | 5 + .../vendor/matt-pocock/errors/1208.md | 5 + .../vendor/matt-pocock/errors/1240.md | 5 + .../vendor/matt-pocock/errors/1254.md | 5 + .../vendor/matt-pocock/errors/1268.md | 5 + .../vendor/matt-pocock/errors/1313.md | 5 + .../vendor/matt-pocock/errors/1434.md | 5 + .../vendor/matt-pocock/errors/17004.md | 5 + .../vendor/matt-pocock/errors/18004.md | 5 + .../vendor/matt-pocock/errors/2304.md | 5 + .../vendor/matt-pocock/errors/2305.md | 5 + .../vendor/matt-pocock/errors/2307.md | 5 + .../vendor/matt-pocock/errors/2312.md | 5 + .../vendor/matt-pocock/errors/2314.md | 5 + .../vendor/matt-pocock/errors/2322.md | 5 + .../vendor/matt-pocock/errors/2324.md | 5 + .../vendor/matt-pocock/errors/2326.md | 5 + .../vendor/matt-pocock/errors/2327.md | 5 + .../vendor/matt-pocock/errors/2339.md | 5 + .../vendor/matt-pocock/errors/2344.md | 5 + .../vendor/matt-pocock/errors/2345.md | 5 + .../vendor/matt-pocock/errors/2349.md | 5 + .../vendor/matt-pocock/errors/2352.md | 5 + .../vendor/matt-pocock/errors/2353.md | 5 + .../vendor/matt-pocock/errors/2355.md | 5 + .../vendor/matt-pocock/errors/2365.md | 5 + .../vendor/matt-pocock/errors/2393.md | 5 + .../vendor/matt-pocock/errors/2414.md | 5 + .../vendor/matt-pocock/errors/2451.md | 5 + .../vendor/matt-pocock/errors/2488.md | 5 + .../vendor/matt-pocock/errors/2551.md | 5 + .../vendor/matt-pocock/errors/2552.md | 5 + .../vendor/matt-pocock/errors/2554.md | 5 + .../vendor/matt-pocock/errors/2556.md | 5 + .../vendor/matt-pocock/errors/2571.md | 5 + .../vendor/matt-pocock/errors/2590.md | 5 + .../vendor/matt-pocock/errors/2604.md | 5 + .../vendor/matt-pocock/errors/2614.md | 5 + .../vendor/matt-pocock/errors/2686.md | 5 + .../vendor/matt-pocock/errors/2722.md | 5 + .../vendor/matt-pocock/errors/2739.md | 5 + .../vendor/matt-pocock/errors/2741.md | 5 + .../vendor/matt-pocock/errors/2749.md | 5 + .../vendor/matt-pocock/errors/2761.md | 5 + .../vendor/matt-pocock/errors/2775.md | 5 + .../vendor/matt-pocock/errors/2783.md | 5 + .../vendor/matt-pocock/errors/5075.md | 5 + .../vendor/matt-pocock/errors/6133.md | 5 + .../vendor/matt-pocock/errors/6142.md | 5 + .../vendor/matt-pocock/errors/6244.md | 5 + .../vendor/matt-pocock/errors/7006.md | 5 + .../vendor/matt-pocock/errors/7026.md | 5 + .../vendor/matt-pocock/errors/7053.md | 5 + .../vendor/matt-pocock/errors/7057.md | 5 + .../vendor/matt-pocock/errors/7061.md | 5 + .../vendor/matt-pocock/errors/8016.md | 5 + .../vendor/matt-pocock/errors/95050.md | 5 + packages/formatter/README.md | 2 +- packages/formatter/package.json | 32 +- packages/formatter/project.json | 77 + .../formatter/src/addMissingParentheses.ts | 25 +- packages/formatter/test/errorMessageMocks.ts | 2 +- packages/formatter/tsconfig.lib.json | 12 + packages/utils/package.json | 12 +- packages/utils/project.json | 44 + packages/utils/src/index.ts | 14 +- packages/utils/tsconfig.lib.json | 7 + packages/vscode-formatter/package.json | 36 +- packages/vscode-formatter/project.json | 77 + .../src/components/actions.ts | 10 - .../format/prettifyDiagnosticForSidebar.ts | 7 +- .../format/renderPlainEnglishTranslations.ts | 94 + packages/vscode-formatter/tsconfig.json | 3 + packages/vscode-formatter/tsconfig.lib.json | 18 + pnpm-lock.yaml | 7669 +++++++++++++++ pnpm-workspace.yaml | 488 + project.json | 31 + tsconfig.base.json | 9 +- tsconfig.json | 19 +- turbo.json | 17 - 135 files changed, 20798 insertions(+), 8093 deletions(-) delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/workflows/pr-ci.yml create mode 100644 .nxignore delete mode 100644 CONTRIBUTING.md create mode 100644 HANDOFF_O3_O1_LOCAL_TRANSLATOR.md create mode 100644 HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md create mode 100644 HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md create mode 100644 apps/vscode-extension/.vscodeignore create mode 100644 apps/vscode-extension/project.json delete mode 100644 apps/vscode-extension/scripts/build.js create mode 100644 apps/vscode-extension/scripts/package-vsix.mjs create mode 100644 apps/vscode-extension/src/lspDiagnostic.ts create mode 100644 apps/vscode-extension/tsconfig.app.json create mode 100644 apps/vscode-extension/tsconfig.test.json create mode 100644 nx.json delete mode 100644 package-lock.json create mode 100644 packages/error-translator/package.json create mode 100644 packages/error-translator/project.json create mode 100644 packages/error-translator/scripts/bundleErrors.mjs create mode 100644 packages/error-translator/scripts/refreshTsErrorMessages.mjs create mode 100644 packages/error-translator/src/generated/bundleErrors.json create mode 100644 packages/error-translator/src/generated/tsErrorMessages.json create mode 100644 packages/error-translator/src/getImprovedMessage.ts create mode 100644 packages/error-translator/src/index.ts create mode 100644 packages/error-translator/src/parseErrors.ts create mode 100644 packages/error-translator/src/translateDiagnosticMessage.ts create mode 100644 packages/error-translator/test/engine.test.ts create mode 100644 packages/error-translator/tsconfig.json create mode 100644 packages/error-translator/tsconfig.lib.json create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1002.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1003.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1006.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1009.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1014.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1015.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1091.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1109.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1117.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1155.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1163.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1208.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1240.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1254.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1268.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1313.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/1434.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/17004.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/18004.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2304.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2305.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2307.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2312.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2314.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2322.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2324.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2326.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2327.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2339.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2344.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2345.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2349.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2352.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2353.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2355.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2365.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2393.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2414.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2451.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2488.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2551.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2552.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2554.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2556.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2571.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2590.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2604.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2614.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2686.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2722.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2739.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2741.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2749.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2761.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2775.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/2783.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/5075.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/6133.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/6142.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/6244.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/7006.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/7026.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/7053.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/7057.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/7061.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/8016.md create mode 100644 packages/error-translator/vendor/matt-pocock/errors/95050.md create mode 100644 packages/formatter/project.json create mode 100644 packages/formatter/tsconfig.lib.json create mode 100644 packages/utils/project.json create mode 100644 packages/utils/tsconfig.lib.json create mode 100644 packages/vscode-formatter/project.json create mode 100644 packages/vscode-formatter/src/format/renderPlainEnglishTranslations.ts create mode 100644 packages/vscode-formatter/tsconfig.lib.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 project.json delete mode 100644 turbo.json diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index ba128b1..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: [yoavbls, kevinramharak] diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 5930898..0000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: "" -labels: bug -assignees: "" ---- - -### **Describe the bug** - -A clear and concise description of what the bug is. - -### **Expected behavior** - -A clear and concise description of what you expected to happen. - -### **Original error** - -If this bug is related to an error that is not formatting well, please -attach the original error in a code block: - -``` -Type 'number' is not assignable to type 'string'.ts(2322) -``` - -### **Logs** - -Add the logs to help debugging what went wrong. See [these instructions](https://github.com/yoavbls/pretty-ts-errors/blob/main/docs/vscode-logs.md) on how to find and export the logs. - -Either add it as an external file or put them in between these `
` tags below:
-
-
-Logs -

-
-
-
- -### **Screenshots** - -If applicable, add screenshots to help explain your problem. diff --git a/.github/workflows/pr-ci.yml b/.github/workflows/pr-ci.yml deleted file mode 100644 index 013ea1f..0000000 --- a/.github/workflows/pr-ci.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: PR CI - -on: - workflow_dispatch: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - -permissions: - contents: read - -concurrency: - group: pr-ci-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - validate: - name: Install, Build, and Test - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: npm - - - name: Install dependencies - run: npm install - - - name: Install VSCE CLI - run: npm install -g @vscode/vsce - - - name: Check formatting - run: npm run format:check - - - name: Build all workspaces - run: npm run build - - - name: Run formatter tests - run: npm -w @pretty-ts-errors/formatter run test -- --reporter=verbose - - - name: Run VS Code formatter tests - run: npm -w @pretty-ts-errors/vscode-formatter run test -- --reporter=verbose - - - name: Run VS Code extension tests - run: xvfb-run -a npm --workspace apps/vscode-extension run test diff --git a/.gitignore b/.gitignore index bebf105..fa9f31c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,15 @@ out dist node_modules +.pnpm +.nx .vscode-test/ *.vsix -.turbo .vercel .idea **/.DS_Store tsconfig.tsbuildinfo coverage +artifacts/vsix +tmp +*.tsbuildinfo \ No newline at end of file diff --git a/.nxignore b/.nxignore new file mode 100644 index 0000000..3aa5d21 --- /dev/null +++ b/.nxignore @@ -0,0 +1,2 @@ +tmp/** +examples/** diff --git a/.vscode/launch.json b/.vscode/launch.json index 5d133de..b8772da 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -13,10 +13,9 @@ "--extensionDevelopmentPath=${workspaceFolder}/apps/vscode-extension" ], "outFiles": [ - "${workspaceFolder}/apps/vscode-extension/dist/**/*.js", - "${workspaceFolder}/apps/vscode-extension/out/**/*.js" + "${workspaceFolder}/apps/vscode-extension/dist/**/*.js" ], - "preLaunchTask": "watch - apps/vscode-extension" + "preLaunchTask": "watch - pretty-ts-errors" }, { "name": "Run Extension (all extensions disabled)", @@ -27,10 +26,9 @@ "--extensionDevelopmentPath=${workspaceFolder}/apps/vscode-extension" ], "outFiles": [ - "${workspaceFolder}/apps/vscode-extension/dist/**/*.js", - "${workspaceFolder}/apps/vscode-extension/out/**/*.js" + "${workspaceFolder}/apps/vscode-extension/dist/**/*.js" ], - "preLaunchTask": "watch - apps/vscode-extension" + "preLaunchTask": "watch - pretty-ts-errors" }, { "name": "Extension Tests", diff --git a/.vscode/settings.json b/.vscode/settings.json index 5a88a8e..46ab493 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,7 +8,7 @@ "out": true, // set this to false to include "out" folder in search results "dist": true // set this to false to include "dist" folder in search results }, - // Turn off tsc task auto detection since we have the necessary tasks as npm scripts + // Turn off tsc task auto detection since the workspace uses explicit Nx tasks. "typescript.tsc.autoDetect": "off", "chat.tools.terminal.autoApprove": { "npx vitest": true diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 38a2281..ad88a18 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -4,31 +4,20 @@ "version": "2.0.0", "tasks": [ { - "label": "watch - apps/vscode-extension", + "label": "watch - pretty-ts-errors", "type": "shell", - "command": "npm run watch --silent", + "command": "pnpm exec nx run pretty-ts-errors:dev", "options": { - "cwd": "${workspaceFolder}/apps/vscode-extension" + "cwd": "${workspaceFolder}" }, "problemMatcher": { "owner": "esbuild", "fileLocation": "autoDetect", - "pattern": [ - { - "regexp": "^✘ \\[ERROR\\] (.*)$", - "message": 1 - }, - { - "regexp": "^\\s*(.*):(\\d+):(\\d+):$", - "file": 1, - "line": 2, - "column": 3 - } - ], + "pattern": [], "background": { "activeOnStart": true, - "beginsPattern": "^\\[watch\\] build started$", - "endsPattern": "^\\[watch\\] build finished$" + "beginsPattern": "^> nx run pretty-ts-errors:dev$", + "endsPattern": "^\\[ watch \\] build succeeded, watching for changes\\.\\.\\.$" } }, "isBackground": true, @@ -42,9 +31,12 @@ } }, { - "type": "npm", - "script": "watch-tests", - "path": "apps/vscode-extension", + "label": "watch-tests - pretty-ts-errors", + "type": "shell", + "command": "pnpm exec nx run pretty-ts-errors:watch-tests", + "options": { + "cwd": "${workspaceFolder}" + }, "problemMatcher": "$tsc-watch", "isBackground": true, "presentation": { @@ -55,7 +47,10 @@ }, { "label": "tasks: watch-tests", - "dependsOn": ["watch - apps/vscode-extension", "npm: watch-tests"], + "dependsOn": [ + "watch - pretty-ts-errors", + "watch-tests - pretty-ts-errors" + ], "problemMatcher": [] } ] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 3984d29..0000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,134 +0,0 @@ -# Contributing to Pretty TypeScript Errors - -First off, thanks for taking the time to contribute! - -All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions. - -And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about: - -- Vote on the [open issues](https://github.com/yoavbls/pretty-ts-errors/discussions/43) at `microsoft/vscode` to allow for new and better features -- Star the project -- Share it on social media -- Mention the project at local meetups and tell your friends/colleagues -- Check the [`help wanted`](https://github.com/yoavbls/pretty-ts-errors/issues?q=state%3Aopen%20label%3A%22help%20wanted%22) label to see if you can help out - -## Table of contents - -- [I Have a Question](#i-have-a-question) -- [Reporting Bugs](#reporting-bugs) -- [Requesting Enhancements & Features](#enhancements-and-features) -- [Set up Local Dev Environment](#set-up-local-dev-environment) -- [Contributing to the Source Code](#contributing-to-the-source-code) -- [Attribution](#attribution) - -## I Have a Question - -Search in the [issues](https://github.com/yoavbls/pretty-ts-errors/issues) and [discussions](https://github.com/yoavbls/pretty-ts-errors/discussions) before you create a new one. If your question is not answered feel free to create a [new discussion](https://github.com/yoavbls/pretty-ts-errors/discussions/new/choose). If it concerns a bug consider writing [a bug report](https://github.com/yoavbls/pretty-ts-errors/issues/new?template=bug_report.md). - -## Reporting Bugs - -Search the [open issues](https://github.com/yoavbls/pretty-ts-errors/issues) before adding your own bug report. If none exists create a [new isse](https://github.com/yoavbls/pretty-ts-errors/issues/new?template=bug_report.md) by using the `Bug Report` template. - -Try and add enough information to allow others to reproduce the error, if possible provide code samples or a link to a repository. If a bug cannot be reproduced, it will decrease the odds of it being fixed. - -If the bug contains visual elements (like the hover feature), also provide a screenshot to help understand what goes wrong. - -## Requesting Enhancements & Features - -Search in the [issues](https://github.com/yoavbls/pretty-ts-errors/issues) and [discussions](https://github.com/yoavbls/pretty-ts-errors/discussions) and feel free to add your own comments to existing requests. - -If none exists create a [new discussion](https://github.com/yoavbls/pretty-ts-errors/discussions/new/choose) to dicuss the requested feature or enhancement. - -3 of the most requested enhancements and features are grouped in tracking issues: - -- [Tracking: Performance Issues](https://github.com/yoavbls/pretty-ts-errors/issues/139) -- [Tracking: Internationalization and localization](https://github.com/yoavbls/pretty-ts-errors/issues/144) -- [Tracking: IDE support / LSP implementation](https://github.com/yoavbls/pretty-ts-errors/issues/145) - -## Set up Local Dev Environment - -To setup your local environment clone the project and run `npm i` to install all dependencies like: - -```bash -git clone https://github.com/yoavbls/pretty-ts-errors.git -cd pretty-ts-errors -npm i -``` - -### Mono Repo & Turbo - -`pretty-ts-errors` uses a mono-repo setup to manage the different packages under a single git repository. To run parallel tasks in all packages [`turbo`](https://turborepo.dev/) is used. - -See the root `package.json` for the tasks that can be run. Check the package specific `package.json` to see what tasks can be run for that package. - -When developing it is the easiest to run the `dev` command in the root of the package: - -```bash -npm run dev -``` - -This will run the `dev` task in parallel for package of the project, thus immediatly propegating changes troughout the repo. For more info on the project architecture, read [`ARCHITECTURE.md`](./docs/ARCHITECTURE.md). For more info on debugging and testing see [this section](#debugging--testing). - -### Issues with Local Dev Setup - -If you have issues with setting up your local dev environment, feel free to create a [new discussion](https://github.com/yoavbls/pretty-ts-errors/discussions/new/choose) to ask for help. - -## Contributing to the Source Code - -If you are looking to contribute to the source code check the [issues](https://github.com/yoavbls/pretty-ts-errors/issues) for what to work on. The label [`good first issue`](https://github.com/yoavbls/pretty-ts-errors/issues?q=state:open%20label:%22good%20first%20issue%22) is a good place to start, and consider checking the [`help wanted`](https://github.com/yoavbls/pretty-ts-errors/issues?q=state%3Aopen%20label%3A%22help%20wanted%22) to see if you can contribute. You can also tinker with the code, but it is preferred to have an existing issue to link to before you open a PR. - -Keep in mind that there is a [Stability & Performance](https://code.visualstudio.com/api/advanced-topics/extension-host#stability-and-performance) impact when running extensions in VS Code, always keep in mind that the extension (code) should contribute to a users workflow, not diminish it. - -### Architecture - -See the [`ARCHITECTURE.md`](./docs/ARCHITECTURE.md) for more information about the project architecture. - -### Styleguide - -There is no specific styleguide to adhere to, besides the `eslint` and `prettier` commands that will lint and format the project. Try to keep the style similar to what already exists to keep the source code easier to read and maintain. Fundamental changes can always be discussed in PR's. - -### Debugging & Testing - -#### Debugging - -See the [`.vscode/launch.json`](.vscode/launch.json) for the available debug configurations. You can use the [VS Code debugger](https://code.visualstudio.com/docs/debugtest/debugging) (default `F5` key) to start a debugging sessions. It is recommended to use `Run Extension (all extensions disabled)` to improve startup time when iterating but only loading the default extesions. Use the `Run Extension` if you want to debug the extension with all your installed extensions enabled. - -> !NOTE -> Most Themes and Programming Languages require non-default extensions and will not load when running with `Run Extension (all extensions disabled)` - -When running either of these debug tasks the `watch` task of the `apps/vscode-extension` directory will be run in the background, no additional actions are required to debug the extension. - -There is a scaffolding setup for automated tests for the VS Code extension, but it is unused yet. - -The [`@pretty-ts-errors/formatter`](./packages/formatter/) does have some unit tests which uses [`vitest`](https://vitest.dev/) as a testing framework. - -When running the extension with the debugger there is a [`selectedTextHoverProvider`](./apps/vscode-extension/src/provider/selectedTextHoverProvider.ts) that allows for selecting text in the `test` directories and treat them as a typescript error message: -![example of the selected text hover provider](./docs/selected-text-hover-provider-example.png) - -#### Installing the packaged extension manually - -By running the `npm run build` command, the extension will be build in production mode and packaged as a `apps/vscode-extensions/pretty-ts-errors-{version}.vsix` file. These files can [be installed manually](https://code.visualstudio.com/docs/configure/extensions/extension-marketplace#_install-from-a-vsix) to install the build without having to use the marketplace. - -> !NOTE -> When running a manually installed `.vsix` file, the [`ExtensionMode`](https://code.visualstudio.com/api/references/vscode-api#ExtensionMode) will be set to `Production`. - -#### Testing - -To see the currently configured command to run tests, check the [`.github/workflows/pr-ci.yml`](./.github/workflows/pr-ci.yml). - -The packages in [`packages/`](./packages/) will use test runners to test package specific functionality. - -The [`apps/vscode-extension/`](./apps/vscode-extension/) is scaffolded to use the [VS Code testing utilities](https://code.visualstudio.com/api/working-with-extensions/testing-extension). - -### Documentation & Resources - -The documentation regarding `pretty-ts-errors` is found in the [`README.md`](./README.md), `CONTRIBUTING.md` or the [`docs`](./docs) directory. - -Some comments in the code can be found where specific behaviour or caveats are documented, like the caching mechanism or performance critical sections. - -The [Visual Studio Code Extension API documentation](https://code.visualstudio.com/api) is a good place to read about the extension API. -When external libraries are used, always check and read their respective documentation to ensure they are used properly. - -## Attribution - -This guide is based on the [`contributing.md`](https://contributing.md/example/). [Make your own](https://contributing.md/)! diff --git a/HANDOFF_O3_O1_LOCAL_TRANSLATOR.md b/HANDOFF_O3_O1_LOCAL_TRANSLATOR.md new file mode 100644 index 0000000..f4205f2 --- /dev/null +++ b/HANDOFF_O3_O1_LOCAL_TRANSLATOR.md @@ -0,0 +1,806 @@ +# Referenzdokument: O3/O1-Remediation und lokale Internalisierung des Matt-Pocock-Translators in `pretty-ts-errors` +[INTENT: KONTEXT] + +--- + +## 0. Quellenbasis & Scope-Grenzen +[INTENT: KONTEXT] + +**Quellemodus:** `CURRENT_CONTEXT_DEFAULT` mit expliziter externer Referenz auf `https://github.com/mattpocock/ts-error-translator` + +**Freigegebenes Source-Bundle:** + +- die aktuelle Task-Konversation bis zu diesem Stand +- die bereits geprueften lokalen Repo-Dateien in `pretty-ts-errors` +- die geprueften Web-Fakten zu `mattpocock/ts-error-translator`, `ts-error-translator.vercel.app`, `Decoded`, `dmmulroy/ts-error-translator.nvim` und `synoet/ts-error-translator-proxy` +- die lokal angelegte Upstream-Clone-Referenz in `tmp/ts-error-translator` + +**Explizit ausgeschlossen:** + +- `.git` +- die Themenbereiche `Y3` und `Y1` +- die spaetere `pnpm`-Migration +- jede autonome Suche ausserhalb der bereits geprueften lokalen Dateien, Web-Fakten und des lokal geklonten Upstream-Repos + +**Scope dieses Dokuments:** + +- dieses Dokument beschreibt ausschliesslich die O3- und O1-bezogene Zielrichtung +- O3 muss vollstaendig erklaeren, dass Trusted Diagnostic Content aktuell `HTML`- und `WebView`-Surfaces erreicht +- O1 muss vollstaendig erklaeren, dass der volle Fehlertext an einen Drittanbieter abfliessen kann +- O1 muss explizit festhalten, dass die Plain-English-Translator-Logik architektonisch aus Matt Pococks Projekt stammt +- dieses Dokument definiert den korrekten Hand-off fuer eine lokale, first-party Integration des Translators in das Monorepo + +**Nicht Ziel dieses Dokuments:** + +- keine Umsetzung der Aenderungen selbst +- keine Behandlung von `Y3`/`Y1` +- keine Vollanalyse aller sonstigen externen Links ausserhalb des hier explizit benoetigten Kontexts + +--- + +## 1. Aufgabenuebersicht +[INTENT: KONTEXT] + +Dieses Referenzdokument beschreibt den vollstaendigen Hand-off fuer zwei unmittelbar zusammenhaengende Themen in `pretty-ts-errors`: + +1. **O3 / Trusted Diagnostic Content erreicht HTML- und WebView-Surfaces** + Der aktuelle Rendering-Pfad materialisiert Diagnostic-Inhalte in HTML-Strings, transportiert diese in die Sidebar-WebView und setzt sie dort per `innerHTML` ein. Der korrekte Zielzustand ist ein strikt strukturierter, lokal gerenderter Datenfluss ohne diagnostikgetriebene HTML-Injektion. + +2. **O1 / Voller Fehlertext kann an einen Drittanbieter abfliessen** + Der aktuelle Translator-Pfad oeffnet `ts-error-translator.vercel.app` und uebergibt den kompletten Fehlertext als URL-Parameter. Der korrekte Zielzustand ist eine lokale Inhouse-Integration der Plain-English-Translator-Logik ohne externe Remote-Verbindung. + +Der Zielansatz fuer die O1-Remediation ist **nicht**, ein neues Remote-System zu waehlen, sondern **Matt Pococks Source-basierte Translator-Logik** lokal in das bestehende Monorepo zu uebernehmen, auf den benoetigten Kern zu reduzieren und als internes Package zu betreiben. + +Der Zielansatz fuer die O3-Remediation ist **nicht**, die bestehende HTML-String-Pipeline nur leicht zu kaschieren, sondern den Diagnose-zu-UI-Pfad so umzubauen, dass: + +- Diagnostic-Daten als strukturierte View-Modelle transportiert werden, +- WebView-Rendering ueber sichere DOM-/`textContent`-Pfade erfolgt, +- keine diagnostikgetriebenen Rohstrings mehr via `innerHTML` in die WebView gelangen, +- und lokale Translator-Daten nicht ueber externe Browser-Links oder Drittanbieter-Surfaces laufen. + +Das Dokument ist HCOA-ready und so strukturiert, dass ein neuer Agent in einem frischen Kontextfenster direkt mit der Umsetzung fortfahren kann. + +--- + +## 2. Informationsregister (INHALT-Einheiten) +[INTENT: REFERENZ] + +| ID | Typ | Beschreibung | Veraenderung | Status | +|----|-----|-------------|--------------|--------| +| REQ-001 | ANFORDERUNG | O3 muss vollstaendig dokumentieren, dass Trusted Diagnostic Content aktuell `HTML`- und `WebView`-Surfaces erreicht, und wie der sichere Zielzustand aussieht. | Ja | Festgelegt | +| INFO-001 | INFORMATION | Aktueller Repo-Zustand: Remote-Translator-Link, HTML-String-Pipeline und WebView-`innerHTML`-Pfad sind vorhanden. | Nein | Festgestellt | +| REQ-002 | ANFORDERUNG | O1 muss vollstaendig dokumentieren, dass der volle Fehlertext an einen Drittanbieter abfliessen kann, und dass die Translator-Logik architektonisch von Matt Pocock stammt. | Ja | Festgelegt | +| INFO-002 | INFORMATION | Das lokal geklonte Upstream-Repo von Matt Pocock ist ein Monorepo mit `packages/engine`, `packages/parser`, `packages/searcher` und `apps/vscode`. | Nein | Festgestellt | +| REQ-003 | ANFORDERUNG | Das Upstream-Repo muss in `tmp/` im Projekt liegen und als lokale Extraktionsbasis fuer den Folge-Agenten dienen. | Ja | Bereits vorbereitet | +| REQ-004 | ANFORDERUNG | Es duerfen nur die benoetigten Source-Daten uebernommen werden; Upstream-VS-Code-App und unnoetige Pakete duerfen nicht mit eingebunden werden. | Ja | Festgelegt | +| REQ-005 | ANFORDERUNG | Die korrekte Zielverortung im Monorepo ist `packages/`, nicht `apps/`. | Ja | Architektonisch festgelegt | +| REQ-006 | ANFORDERUNG | Es muss ein neues internes Translator-Package mit klarer, first-party API entstehen. | Ja | Architektonisch festgelegt | +| REQ-007 | ANFORDERUNG | Der bestehende Remote-Translator-Pfad muss komplett durch eine lokale Integration ersetzt werden. | Ja | Festgelegt | +| INFO-003 | INFORMATION | 2026 gibt es neuere GitHub-Projekte, aber keinen klar reifen VS-Code-/offline-/enterprise-tauglichen Drop-in-Ersatz fuer diesen Use-Case. | Nein | Festgestellt | +| WF-001 | WORKFLOW | Es gibt eine konkrete empfohlene Umsetzungsreihenfolge fuer Clone, Extraktion, Monorepo-Package, UI-Integration und O3-Haertung. | Ja | Festgelegt | +| CONST-001 | CONSTRAINT | Alle fuer den Translator relevanten Remote-Verbindungen muessen entfernt werden; `Y3` und `Y1` sind aus dem Scope ausgeschlossen. | Nein | Festgelegt | + +--- + +## 3. Informationseinheiten +[INTENT: SPEZIFIKATION] + +### 3.1 REQ-001: O3 vollstaendig dokumentieren und sichere Zielarchitektur festlegen +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Das Hand-off muss explizit und vollstaendig dokumentieren, dass Trusted Diagnostic Content aktuell bis in `HTML`- und `WebView`-Surfaces gelangt. Es muss ebenfalls den korrekten Zielzustand beschreiben: Der Diagnose-zu-UI-Pfad darf nicht mehr auf diagnostikgetriebenen HTML-Strings basieren, sondern muss auf einem strukturierten, first-party kontrollierten View-Model- und Safe-Render-Pfad beruhen. + +**Ist-Zustand:** + +- `apps/vscode-extension/src/diagnostics.ts` erstellt `MarkdownString`-Instanzen und setzt `isTrusted` sowie `supportHtml`. +- `packages/vscode-formatter/src/format/identSentences.ts` materialisiert diagnostiknahe Zeilen in HTML-Fragmenten. +- `packages/vscode-formatter/src/components/plainCodeBlock.ts` und `packages/vscode-formatter/src/components/htmlCodeBlock.ts` bauen HTML-Strings. +- `apps/vscode-extension/src/provider/webviewViewProvider.ts` sammelt `fullHtml` und sendet dieses per `webview.postMessage({ command: "update-content", html: fullHtml })` in die WebView. +- `apps/vscode-extension/webview/index.js` setzt `$content.innerHTML = message.html`. +- `apps/vscode-extension/src/provider/markdownWebviewProvider.ts` aktiviert `enableScripts` und rewritet die CSP in Richtung `unsafe-inline`. + +**Soll-Zustand:** + +- Keine diagnostikabgeleitete Zeichenkette darf ungeescaped in HTML interpoliert werden. +- Die Sidebar-WebView darf keine diagnostikabgeleiteten Payloads mehr per `innerHTML` einsetzen. +- Der Extension-Host muss strukturierte Datenmodelle erzeugen, zum Beispiel `DiagnosticSidebarModel`, `PlainEnglishTranslation` und `ActionDescriptor`. +- Die WebView muss daraus DOM-Knoten mit `textContent` oder aehnlich sicheren DOM-APIs aufbauen. +- HTML darf nur noch aus internen, vorgegebenen Template-Huellen stammen, nicht aus untrusted Diagnostic Content. +- Hover-/Markdown-Surfaces muessen diagnostikabgeleitete Inhalte nur escaped oder in plain markdown/text transportieren; keine rohen diagnostikgetriebenen HTML-Segmente. + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `apps/vscode-extension/src/diagnostics.ts` | Einstieg des Trusted-Diagnostic-Pfads | `registerOnDidChangeDiagnostics()`, `MarkdownString`, `supportHtml`, `isTrusted` | +| `packages/vscode-formatter/src/format/identSentences.ts` | Baut HTML-nahe Zeilenfragmente aus Diagnoseinhalt | `identSentences()` | +| `packages/vscode-formatter/src/components/plainCodeBlock.ts` | Interpoliert Content in HTML | `plainCodeBlock()` | +| `packages/vscode-formatter/src/components/htmlCodeBlock.ts` | Baut HTML fuer Sidebar-Codebloecke | `htmlCodeBlock()` | +| `apps/vscode-extension/src/provider/webviewViewProvider.ts` | Transportiert `fullHtml` in die WebView | `refresh()` | +| `apps/vscode-extension/webview/index.js` | Setzt HTML tatsaechlich in die DOM-Surface ein | `window.addEventListener("message", ...)`, `innerHTML` | +| `apps/vscode-extension/src/provider/markdownWebviewProvider.ts` | Aktiviert WebView-Capabilities und CSP-Rewrite | `getWebviewOptions()`, `patchCspSafeAttrs()` | + +**Positivbeispiel(e):** + +```ts +type PlainEnglishTranslation = { + code: number; + rawError: string; + body: string | null; +}; + +type DiagnosticSidebarModel = { + originalMessage: string; + translations: PlainEnglishTranslation[]; + actions: Array<{ kind: 'copy' | 'pin' | 'reveal' | 'showTranslation' }>; +}; +``` + +```js +const paragraph = document.createElement("p"); +paragraph.textContent = model.originalMessage; +container.appendChild(paragraph); +``` + +**Negativbeispiel(e):** + +```ts +const fullHtml = sections.join(""); +webview.postMessage({ command: "update-content", html: fullHtml }); +``` + +```js +$content.innerHTML = message.html; +``` + +**Warum falsch:** +Die beiden Muster transportieren und materialisieren diagnostikabgeleitete HTML-Strings direkt in die WebView-Surface. Genau das ist der O3-Pfad, der entfernt werden muss. + +--- + +### 3.2 INFO-001: Aktueller Repo-Zustand fuer O3 und O1 +[INTENT: SPEZIFIKATION] + +**Typ:** INFORMATION + +**Beschreibung:** +Der aktuelle Repo-Zustand kombiniert zwei Problemfelder: + +1. Der Translator fuer "plain English" ist nicht lokal integriert, sondern nur als externer Link vorhanden. +2. Die bestehende Sidebar-/Hover-Render-Pipeline arbeitet mit trusted HTML-/Markdown-Surfaces und einer WebView-`innerHTML`-Materialisierung. + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `packages/vscode-formatter/src/components/actions.ts` | enthaelt den externen Translator-Link | `errorMessageTranslationLink()` | +| `packages/vscode-formatter/package.json` | zeigt aktuelle lokale Translator-Abhaengigkeit | `lz-string` | +| `apps/vscode-extension/src/diagnostics.ts` | trusted Markdown-Pfad | `MarkdownString`, `supportHtml`, `isTrusted` | +| `apps/vscode-extension/src/provider/webviewViewProvider.ts` | HTML-Transport in WebView | `refresh()` | +| `apps/vscode-extension/webview/index.js` | `innerHTML`-Setzung | `update-content`-Handler | + +--- + +### 3.3 REQ-002: O1-Abfluss des vollen Fehlertexts entfernen und Matt-Pocock-Herkunft festhalten +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Das Hand-off muss vollstaendig dokumentieren, dass aktuell der volle Fehlertext an einen Drittanbieter abfliessen kann. Gleichzeitig muss es explizit festhalten, dass die Translator-Logik fachlich/architektonisch aus Matt Pococks Projekt stammt und lokal uebernommen werden soll, statt weiterhin ueber eine externe gehostete App zu laufen. + +**Ist-Zustand:** + +- `packages/vscode-formatter/src/components/actions.ts` komprimiert den kompletten `Diagnostic["message"]` mit `lz-string`. +- Danach wird `https://ts-error-translator.vercel.app/?error=...` gebaut. +- Die aktuelle Anwendung nutzt also **keinen lokalen Translator**, sondern nur einen Browser-Link auf eine gehostete Drittanbieter-App. +- Die Idee der Plain-English-Umformung stammt architektonisch von Matt Pococks Projekt `ts-error-translator` / `Total TypeScript`. + +**Soll-Zustand:** + +- Der Remote-Translator-Link muss vollstaendig entfernt werden. +- Stattdessen muss eine lokale first-party Translator-API verwendet werden. +- Die neue lokale Translator-Funktion muss 100% der aktuell aus Matt Pococks Source uebernehmbaren Uebersetzungsfunktionalitaet bereitstellen. +- Fuer nicht uebersetzte Error-Codes darf **kein** Remote-Fallback existieren. Stattdessen muss lokal angezeigt werden, dass fuer diesen Code keine Plain-English-Translation vorhanden ist. + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `packages/vscode-formatter/src/components/actions.ts` | aktueller O1-Egress-Punkt | `errorMessageTranslationLink()` | +| `packages/vscode-formatter/package.json` | enthaelt `lz-string` fuer den URL-Parameter-Pfad | `dependencies.lz-string` | +| `tmp/ts-error-translator/apps/vscode/src/humaniseDiagnostic.ts` | zeigt, wie Matt lokal Uebersetzungen ausliefert | `humaniseDiagnostic()` | +| `tmp/ts-error-translator/apps/vscode/src/bundleErrors.ts` | zeigt, wie Matt lokale Error-Markdown-Dateien in ein Bundle ueberfuehrt | `bundleErrors()` | + +**Positivbeispiel(e):** + +```ts +import { translateDiagnosticMessage } from '@pretty-ts-errors/error-translator'; + +const translations = translateDiagnosticMessage(diagnostic.message); +``` + +```ts +const actions = [ + { kind: 'showTranslation', diagnosticMessage: diagnostic.message }, +]; +``` + +**Negativbeispiel(e):** + +```ts +const encodedMessage = compressToEncodedURIComponent(message); +return `https://ts-error-translator.vercel.app/?error=${encodedMessage}`; +``` + +**Warum falsch:** +Dieses Muster uebergibt den kompletten Fehlertext an einen externen Web-Dienst und verletzt damit die Null-Remote-Vorgabe fuer den Translator-Pfad. + +**Wichtiger Zusatzhinweis:** +Im gleichen Action-Bereich existiert zusaetzlich ein externer Link zu `typescript.tv`. Dieser ist **nicht** der O1-Translator-Pfad, bleibt aber eine weitere externe Surface. Wenn "alle externen Remote-Verbindungen" wortwoertlich gilt, muss dieser Link gesondert mitentschieden werden. + +--- + +### 3.4 INFO-002: Upstream-Struktur des Matt-Pocock-Repos +[INTENT: SPEZIFIKATION] + +**Typ:** INFORMATION + +**Beschreibung:** +Das lokal geklonte Upstream-Repo `tmp/ts-error-translator` ist ein Monorepo mit einer klaren Trennung zwischen Engine, Parser/Tips, Search-Utility und VS-Code-App: + +- `packages/engine` + Kern fuer Error-Matching und Plain-English-Translation +- `packages/parser` + Tips-/Syntax-/Education-Parser, nicht der Kern der Error-Translation +- `packages/searcher` + Utility fuer Tip-Suche in Codebasen, nicht der Kern der Error-Translation +- `apps/vscode` + Matts eigene VS-Code-Extension mit Hover-/Diagnostic-Integration + +Zusatzfakten aus dem Clone: + +- `packages/engine/errors/*.md` enthaelt aktuell **67** kuratierte Error-Translation-Dateien +- `packages/engine/src/tsErrorMessages.json` enthaelt das groessere Diagnostic-Matching-Register +- `apps/vscode/src/humaniseDiagnostic.ts` zeigt die lokale Verwendung des Engines plus `bundleErrors.json` + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `tmp/ts-error-translator/package.json` | Upstream-Monorepo-Root | `workspaces`, Scripts | +| `tmp/ts-error-translator/packages/engine/package.json` | Kernpackage fuer Error-Translation | Package-Name, Dependencies | +| `tmp/ts-error-translator/packages/parser/package.json` | Tip-Parser, fuer O1 nicht zwingend notwendig | Package-Name | +| `tmp/ts-error-translator/packages/searcher/package.json` | Tip-Suche, fuer O1 nicht zwingend notwendig | Package-Name | +| `tmp/ts-error-translator/apps/vscode/package.json` | volle Upstream-VS-Code-App | `displayName`, Scripts | +| `tmp/ts-error-translator/packages/engine/errors/*.md` | kuratierte Translationen | 67 Markdown-Dateien | + +--- + +### 3.5 REQ-003: Upstream-Clone in `tmp/` als lokale Extraktionsbasis verwenden +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Das Upstream-Repo muss im Projekt unter `tmp/` liegen, damit der Folge-Agent die reale Source-Struktur lokal referenzieren und daraus die benoetigten Teile extrahieren kann. Dieses `tmp/`-Verzeichnis ist **Analyse-/Extraktionsbasis**, nicht Ziel des Runtime-Produkts. + +**Ist-Zustand:** + +- Das Repo wurde lokal geklont nach `tmp/ts-error-translator`. +- Der Clone ist bereits im Workspace vorhanden und kann vom Folge-Agenten direkt gelesen werden. + +**Soll-Zustand:** + +- Der Clone bleibt als lokale Referenz erhalten, bis die benoetigten Quellen in ein first-party Package uebernommen wurden. +- Der Folge-Agent darf den Clone fuer Dateivergleiche, Datenuebernahme und Attributionsarbeit benutzen. +- Der Clone darf **nicht** als Runtime-Abhaengigkeit, Git-Submodule oder finaler Shipping-Ort verwendet werden. + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `tmp/ts-error-translator/` | lokale Upstream-Quelle | gesamtes Upstream-Repo | + +**Positivbeispiel(e):** + +```powershell +git clone "https://github.com/mattpocock/ts-error-translator.git" "tmp/ts-error-translator" +``` + +**Negativbeispiel(e):** + +```text +Remote-Translator weiter ueber Browser-Link verwenden und gar keinen lokalen Source-Clone anlegen. +``` + +**Warum falsch:** +Ohne lokalen Clone gibt es keine first-party kontrollierte Extraktionsbasis. Der ganze Zweck der Inhouse-Integration waere dann verfehlt. + +--- + +### 3.6 REQ-004: Nur benoetigte Source-Daten uebernehmen, nicht die komplette Upstream-App +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Es duerfen nur die Teile von Matt Pococks Repo uebernommen werden, die fuer die lokale Plain-English-Translation wirklich benoetigt werden. Die komplette Upstream-VS-Code-App, das Tip-System und sonstige Release-/Workspace-Infrastruktur duerfen nicht mit in das Zielpaket wandern. + +**Ist-Zustand:** + +- Upstream enthaelt neben der Translation-Engine auch eine VS-Code-App und Tip-/Search-Pakete. +- Die aktuelle Zielanwendung `pretty-ts-errors` benoetigt fuer O1 nur die lokale Translator-Funktionalitaet, nicht Matts gesamtes Produkt. + +**Soll-Zustand:** + +**Zu uebernehmen:** + +- `tmp/ts-error-translator/packages/engine/src/parseErrors.ts` +- `tmp/ts-error-translator/packages/engine/src/tsErrorMessages.json` +- `tmp/ts-error-translator/packages/engine/errors/*.md` +- die in `tmp/ts-error-translator/apps/vscode/src/bundleErrors.ts` erkennbare Bundling-Idee, jedoch nur als lokale Build-/Sync-Mechanik +- die in `tmp/ts-error-translator/apps/vscode/src/humaniseDiagnostic.ts` erkennbare Verwendungslogik als Integrationsreferenz + +**Nicht zu uebernehmen:** + +- `tmp/ts-error-translator/apps/vscode/*` als ganze App +- `tmp/ts-error-translator/packages/parser/*` +- `tmp/ts-error-translator/packages/searcher/*` +- Husky-/Changesets-/Turbo-/Release-Scaffolding aus dem Upstream-Root +- externe "request translation"- oder Web-Link-Fallbacks + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `tmp/ts-error-translator/packages/engine/src/parseErrors.ts` | Kern-Matching | `parseErrors()`, `parseErrorsWithDb()` | +| `tmp/ts-error-translator/packages/engine/src/tsErrorMessages.json` | TypeScript-Diagnostic-Matching-DB | Diagnostic-Text -> Code | +| `tmp/ts-error-translator/packages/engine/errors/*.md` | kuratierte Plain-English-Source-Daten | 67 Markdown-Dateien | +| `tmp/ts-error-translator/apps/vscode/src/bundleErrors.ts` | Build-Idee fuer lokales Bundle | `bundleErrors()` | +| `tmp/ts-error-translator/apps/vscode/src/humaniseDiagnostic.ts` | Referenz fuer lokale Usage | `humaniseDiagnostic()` | + +**Positivbeispiel(e):** + +```text +Lokales Zielpaket = Engine-Matching + Translation-Content + first-party Adapter. +Nicht Ziel = Matts komplette VS-Code-Extension. +``` + +**Negativbeispiel(e):** + +```text +Das komplette Verzeichnis tmp/ts-error-translator/apps/vscode in apps/ oder packages/ kopieren und als Bestandteil des Produkts shippen. +``` + +**Warum falsch:** +Das waere keine gezielte Source-Uebernahme, sondern ein unnnoetiges Mitschleppen von Produktteilen, die `pretty-ts-errors` nicht braucht. + +**Wichtiger Vollstaendigkeits-Hinweis:** +Die aktuelle Upstream-Coverage fuer Plain-English-Translation besteht aus **67** kuratierten Markdown-Dateien. "100% Funktionalitaet" bedeutet hier: **100% Paritaet zur aktuell vorhandenen Matt-Pocock-Translation-Coverage**, nicht 100% aller denkbaren TypeScript-Fehlercodes. + +--- + +### 3.7 REQ-005: Die korrekte Zielverortung ist `packages/`, nicht `apps/` +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Die Frage `packages` oder `apps` ist fuer dieses Vorhaben architektonisch zu entscheiden. Die korrekte Zielverortung ist **`packages/`**, weil der Translator ein wiederverwendbares first-party Library-/Engine-Stueck ist und keine eigenstaendige App. + +**Ist-Zustand:** + +- `pretty-ts-errors` trennt bereits zwischen wiederverwendbaren Libraries in `packages/*` und der VS-Code-Extension in `apps/vscode-extension`. +- Es existiert noch kein internes Translator-Package. + +**Soll-Zustand:** + +- Neues Zielpaket unter `packages/error-translator/` +- Paketname: `@pretty-ts-errors/error-translator` +- Konsumenten: + - primaer `packages/vscode-formatter` + - indirekt `apps/vscode-extension` ueber den bereits vorhandenen Formatter-/Sidebar-Pfad + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `package.json` | bestaetigt Monorepo-Workspaces | `"workspaces": ["packages/*", "apps/*"]` | +| `packages/` | Ort fuer Libraries | vorhandene interne Packages | +| `apps/vscode-extension/` | Ort der Produkt-App, nicht des wiederverwendbaren Translators | Extension-App | +| `packages/error-translator/` | empfohlener Zielort | neu anzulegen | + +**Positivbeispiel(e):** + +```json +{ + "name": "@pretty-ts-errors/error-translator", + "private": true +} +``` + +**Negativbeispiel(e):** + +```text +apps/translator/ +apps/plain-english-translator/ +``` + +**Warum falsch:** +Eine `apps/`-Verortung macht aus der Translator-Logik ein eigenes Produktartefakt. Hier wird aber ein first-party, wiederverwendbares Monorepo-Library-Package benoetigt. + +--- + +### 3.8 REQ-006: Neues internes Translator-Package mit klarer first-party API aufbauen +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Es muss ein lokales Package entstehen, das Matts Translator-Logik als first-party API bereitstellt. Dieses Package darf keine Runtime-Netzwerkzugriffe und keine Runtime-Dateisystemabhaengigkeit benoetigen. + +**Ist-Zustand:** + +- Kein internes Translator-Package vorhanden +- Kein lokaler Plain-English-API-Vertrag vorhanden + +**Soll-Zustand:** + +**Empfohlene Zielstruktur:** + +```text +packages/error-translator/ + package.json + README.md + src/ + index.ts + parseErrors.ts + translateDiagnosticMessage.ts + generated/ + tsErrorMessages.json + bundleErrors.json + vendor/ + matt-pocock/ + errors/ + *.md + test/ + translator.vitest.ts +``` + +**Empfohlener API-Vertrag:** + +```ts +export interface ParsedError { + code: number; + error: string; + rawError: string; + items: Array; +} + +export interface PlainEnglishTranslation { + code: number; + rawError: string; + body: string | null; +} + +export function parseDiagnosticMessage(message: string): ParsedError[]; +export function translateDiagnosticMessage(message: string): PlainEnglishTranslation[]; +export function hasTranslation(code: number): boolean; +``` + +**Architekturregeln fuer das Paket:** + +- keine Runtime-`fetch`-Aufrufe +- kein Runtime-`fs.readFileSync()` fuer Translationen +- statisches, eingechecktes Datenbundle fuer die Laufzeit +- rohe Upstream-Markdown-Dateien duerfen als Vendor-/Attributions-Quelle liegen bleiben + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `packages/error-translator/package.json` | neues internes Package | neu anzulegen | +| `packages/error-translator/src/index.ts` | oeffentliche API | neu anzulegen | +| `packages/error-translator/src/parseErrors.ts` | Engine-Matching | neu anzulegen | +| `packages/error-translator/src/translateDiagnosticMessage.ts` | Plain-English-Adapter | neu anzulegen | +| `packages/error-translator/src/generated/tsErrorMessages.json` | statische Matching-DB | neu anzulegen | +| `packages/error-translator/src/generated/bundleErrors.json` | statische Translation-DB | neu anzulegen | +| `packages/error-translator/vendor/matt-pocock/errors/` | rohe Upstream-Quellen | neu anzulegen | + +**Positivbeispiel(e):** + +```ts +import { parseErrors } from './parseErrors'; +import bundleErrors from './generated/bundleErrors.json'; + +export function translateDiagnosticMessage(message: string) { + return parseErrors(message).map((error) => ({ + code: error.code, + rawError: error.parseInfo.rawError, + body: bundleErrors[String(error.code)]?.body ?? null, + })); +} +``` + +**Negativbeispiel(e):** + +```ts +export function translate(message: string) { + return fetch(`https://ts-error-translator.vercel.app/?error=${message}`); +} +``` + +```ts +const fileResult = fs.readFileSync(file, 'utf8'); +``` + +**Warum falsch:** +Der erste Fall fuehrt die Remote-Abhaengigkeit wieder ein. Der zweite Fall macht die Laufzeit von Dateisystem-Zugriffen abhaengig, obwohl das Zielpaket fuer first-party, statische Monorepo-Nutzung gedacht ist. + +--- + +### 3.9 REQ-007: Remote-Translator in `pretty-ts-errors` komplett durch lokale Integration ersetzen +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Der bestehende Remote-Translator muss komplett verschwinden. Die bestehende UI soll weiterhin Plain-English-Funktionalitaet anbieten, aber ueber lokale Engine-Daten, lokale Commands und lokale WebView-/Sidebar-Ausgabe. + +**Ist-Zustand:** + +- `packages/vscode-formatter/src/components/actions.ts` baut einen externen Translator-Link. +- `packages/vscode-formatter` haengt fuer diesen Pfad aktuell an `lz-string`. +- `apps/vscode-extension` hat keinen lokalen Command fuer "show plain English translation". + +**Soll-Zustand:** + +- `packages/vscode-formatter` verwendet `@pretty-ts-errors/error-translator` +- der externe Translator-Link wird ersetzt durch eine lokale Action/Command +- empfohlene UX: + - Hover behaelt einen Action-Button + - der Button oeffnet **nicht** den Browser + - der Button routet in die bestehende Sidebar / denselben lokal kontrollierten Surface-Pfad + - die Sidebar rendert die lokale Plain-English-Translation unter oder neben dem Originalfehler +- `lz-string` kann entfernt werden, wenn kein anderer Codepfad es mehr braucht + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `packages/vscode-formatter/src/components/actions.ts` | aktueller Remote-Link und neuer lokaler Action-Punkt | `errorMessageTranslationLink()` | +| `packages/vscode-formatter/package.json` | Abhaengigkeit auf `lz-string` und neue interne Package-Abhaengigkeit | `dependencies` | +| `packages/vscode-formatter/src/format/prettifyDiagnosticForSidebar.ts` | lokaler Sidebar-Integrationspunkt | `prettifyDiagnosticForSidebar()` | +| `packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts` | Hover-Aktionspunkt | `prettifyDiagnosticForHover()` | +| `apps/vscode-extension/src/extension.ts` | neuer Command-Registrierungspunkt | `activate()` | +| `apps/vscode-extension/src/provider/webviewViewProvider.ts` | Sidebar-State und lokale Translation-Ansicht | `lockToDiagnostic()`, `refresh()` | + +**Positivbeispiel(e):** + +```ts +export const showPlainEnglishTranslationLink = (range: Range, message: string) => { + const args = encodeURIComponent(JSON.stringify([range, message])); + return `command:prettyTsErrors.showPlainEnglishTranslation?${args}`; +}; +``` + +```ts +const translations = translateDiagnosticMessage(diagnostic.message); +``` + +**Negativbeispiel(e):** + +```ts +return d /*html*/ ` + +``` + +**Warum falsch:** +Damit bleibt der aktuelle Browser-/Drittanbieter-Pfad bestehen und O1 waere nicht remediiert. + +--- + +### 3.10 INFO-003: 2026-Alternativen sind fuer diesen Use-Case keine bessere Zielbasis +[INTENT: SPEZIFIKATION] + +**Typ:** INFORMATION + +**Beschreibung:** +Es wurden 2026-er Kandidaten geprueft, aber keiner ist fuer diesen speziellen Use-Case ein besserer Zielpfad als die lokale Uebernahme von Matt Pococks Engine-Daten: + +- `imsesayflisl-design/Decoded` + aktuell und 2026 aktiv, aber provider-/LLM-/API-basiert und damit nicht passend zur Null-Remote-Vorgabe +- `dmmulroy/ts-error-translator.nvim` + lokal/offline und 2026 gepflegt, aber editor-spezifisch fuer Neovim/Lua, nicht VS-Code-zentriert +- `synoet/ts-error-translator-proxy` + architektonisch interessant als LSP-Proxy, aber jung, wenig Adoption, kein klarer reifer Standard + +**Schlussfolgerung:** +Fuer `pretty-ts-errors` ist die korrekte Richtung eine first-party Package-Internalisierung auf Basis der Matt-Pocock-Source, nicht der Wechsel auf ein anderes Remote- oder fremdes Produktsystem. + +--- + +### 3.11 WF-001: Empfohlene Umsetzungsreihenfolge fuer den Folge-Agenten +[INTENT: SPEZIFIKATION] + +**Typ:** WORKFLOW + +**Beschreibung:** +Die folgende Reihenfolge minimiert Risiko und haelt O1 und O3 sauber getrennt, ohne den Gesamtzusammenhang zu verlieren. + +**Ist-Zustand:** + +- der lokale Upstream-Clone liegt vor +- der Bericht dokumentiert die Zielrichtung +- noch keine Code-Integration umgesetzt + +**Soll-Zustand:** + +1. **Upstream-Referenz einfrieren** + Von `tmp/ts-error-translator` nur die benoetigten Engine-/Translation-Teile als lokale Referenz benutzen. + +2. **Neues internes Package anlegen** + `packages/error-translator/` anlegen und mit first-party API versehen. + +3. **Translation-Daten bundlen** + Die 67 Markdown-Dateien plus Matching-DB in statische first-party JSON-/Code-Daten ueberfuehren. + +4. **Remote-Translator-Link entfernen** + In `packages/vscode-formatter/src/components/actions.ts` den externen Vercel-Link loeschen und lokale Command-/Action-Logik einsetzen. + +5. **Sidebar lokal verknuepfen** + Lokale Translator-Ergebnisse in die bestehende Sidebar fuehren, nicht in den Browser. + +6. **O3-Sidebar-Haertung umsetzen** + `webview.postMessage({ html })` + `innerHTML` durch strukturierte Modelle + sichere DOM-Renderlogik ersetzen. + +7. **Hover-Pfad haerten** + Hover-Rendering so umbauen, dass diagnostikabgeleitete Werte escaped bleiben und keine neue HTML-Rohsurface entsteht. + +8. **Tests ergaenzen** + Translator-API, Bundling-Paritaet, Sidebar-Rendering und O1-Null-Remote-Verhalten abdecken. + +9. **Adjazente externe Links pruefen** + `typescript.tv` separat nach der globalen "no remote" Policy entscheiden. + +**Positivbeispiel(e):** + +```text +Clone -> internes Package -> Datenbundle -> lokale UI-Integration -> O3-Haertung -> Tests +``` + +**Negativbeispiel(e):** + +```text +Zuerst die komplette Upstream-VS-Code-App einbauen und spaeter versuchen, unnoetige Teile wieder herauszuscheiden. +``` + +**Warum falsch:** +Das vergroessert Scope, Risiko und Drift unnnoetig. Das Ziel ist eine gezielte first-party Integration, kein Produkt-Fork der kompletten Upstream-App. + +--- + +### 3.12 CONST-001: Harte Constraints fuer den Folge-Agenten +[INTENT: SPEZIFIKATION] + +**Typ:** CONSTRAINT + +**Beschreibung:** + +- Kein externer Remote-Translator mehr +- Keine Drittanbieter-Fehlertext-Uebergabe mehr +- Keine Uebernahme der kompletten Upstream-VS-Code-App +- Keine Uebernahme von `packages/parser` oder `packages/searcher`, solange fuer Plain-English-Translation nicht zwingend benoetigt +- `Y3` und `Y1` sind explizit aus dem Scope ausgeschlossen +- `packages/` ist der Zielort, nicht `apps/` +- MIT-/Attributions-Pflichten fuer uebernommenen Upstream-Source muessen erhalten bleiben +- Nicht uebersetzte Codes bleiben lokal und duerfen keinen externen Fallback oeffnen + +--- + +## 4. Konventionen & Constraints +[INTENT: CONSTRAINT] + +- Das Ziel ist **first-party Integration**, nicht Browser-Delegation. +- O3 und O1 muessen als zusammenhaengender Trust-/Boundary-Fall behandelt werden. +- Der Translator wird als wiederverwendbares Monorepo-Package modelliert. +- Die bestehende VS-Code-App in `apps/vscode-extension` bleibt Produktoberflaeche; die Translator-Logik wandert **nicht** als eigene App nach `apps/`. +- Upstream-Source von Matt Pocock ist selektiv zu uebernehmen, nicht vollstaendig zu forken. +- Die im Upstream vorhandenen 67 kuratierten Translationen definieren die aktuelle Paritaetsbasis. +- `Y3` und `Y1` bleiben ausserhalb dieses Hand-offs. + +--- + +## 5. Dateipfad-Index +[INTENT: REFERENZ] + +| # | Dateipfad | Relevanz | Zugehoerige Einheit-IDs | +|---|-----------|----------|-------------------------| +| 1 | `HANDOFF_O3_O1_LOCAL_TRANSLATOR.md` | dieses Referenzdokument | alle | +| 2 | `packages/vscode-formatter/src/components/actions.ts` | aktueller Remote-Translator-Link, spaeter lokaler Action-Ersatz | INFO-001, REQ-002, REQ-007 | +| 3 | `packages/vscode-formatter/package.json` | `lz-string` heute, interne Package-Abhaengigkeit spaeter | INFO-001, REQ-002, REQ-007 | +| 4 | `packages/vscode-formatter/src/components/htmlCodeBlock.ts` | HTML-String-Erzeugung fuer Sidebar | REQ-001, INFO-001 | +| 5 | `packages/vscode-formatter/src/components/plainCodeBlock.ts` | HTML-Interpolation fuer Code-Content | REQ-001, INFO-001 | +| 6 | `packages/vscode-formatter/src/format/identSentences.ts` | HTML-nahe Materialisierung diagnostischer Zeilen | REQ-001 | +| 7 | `packages/vscode-formatter/src/format/prettifyDiagnosticForSidebar.ts` | Sidebar-Integrationspunkt fuer lokale Translation | REQ-007 | +| 8 | `packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts` | Hover-Integrationspunkt fuer lokale Action | REQ-007 | +| 9 | `apps/vscode-extension/src/diagnostics.ts` | Trusted-Markdown-Diagnostic-Pfad | REQ-001, INFO-001 | +| 10 | `apps/vscode-extension/src/provider/markdownWebviewProvider.ts` | WebView-Capabilities und CSP-Rewrite | REQ-001 | +| 11 | `apps/vscode-extension/src/provider/webviewViewProvider.ts` | HTML-Transport in die Sidebar und spaeter sichere Model-Render-Pipeline | REQ-001, REQ-007 | +| 12 | `apps/vscode-extension/webview/index.js` | `innerHTML`-Setzung, spaeter sichere DOM-Render-Logik | REQ-001 | +| 13 | `apps/vscode-extension/src/extension.ts` | neuer lokaler Translation-Command | REQ-007 | +| 14 | `package.json` | bestaetigt Monorepo-Workspaces | REQ-005 | +| 15 | `tmp/ts-error-translator/` | lokale Upstream-Extraktionsbasis | REQ-003 | +| 16 | `tmp/ts-error-translator/package.json` | Upstream-Monorepo-Root | INFO-002 | +| 17 | `tmp/ts-error-translator/apps/vscode/package.json` | bestaetigt, dass Upstream eine eigene VS-Code-App mitbringt | INFO-002, REQ-004 | +| 18 | `tmp/ts-error-translator/apps/vscode/src/humaniseDiagnostic.ts` | lokale Upstream-Nutzung von Engine + Bundle | REQ-002, REQ-004 | +| 19 | `tmp/ts-error-translator/apps/vscode/src/bundleErrors.ts` | Vorlage fuer lokales Error-Bundle | REQ-002, REQ-004 | +| 20 | `tmp/ts-error-translator/packages/engine/package.json` | bestaetigt Engine als separaten Kern | INFO-002, REQ-004 | +| 21 | `tmp/ts-error-translator/packages/engine/src/index.ts` | Engine-Exportflaeche | REQ-004 | +| 22 | `tmp/ts-error-translator/packages/engine/src/parseErrors.ts` | Matching-Algorithmus fuer Diagnostic-Parsing | REQ-004, REQ-006 | +| 23 | `tmp/ts-error-translator/packages/engine/src/getImprovedMessage.ts` | Upstream-Helfer fuer Template-Fuellung | REQ-004, REQ-006 | +| 24 | `tmp/ts-error-translator/packages/engine/src/tsErrorMessages.json` | TypeScript-Diagnostic-Matching-DB | INFO-002, REQ-004, REQ-006 | +| 25 | `tmp/ts-error-translator/packages/engine/errors/*.md` | 67 kuratierte Translation-Dateien | INFO-002, REQ-004, REQ-006 | +| 26 | `tmp/ts-error-translator/packages/parser/package.json` | Tip-System, nicht in den Zielscope uebernehmen | INFO-002, REQ-004 | +| 27 | `tmp/ts-error-translator/packages/searcher/package.json` | Search-Utility, nicht in den Zielscope uebernehmen | INFO-002, REQ-004 | +| 28 | `packages/error-translator/package.json` | neues internes Zielpackage | REQ-005, REQ-006 | +| 29 | `packages/error-translator/src/index.ts` | neue first-party API | REQ-006 | +| 30 | `packages/error-translator/src/parseErrors.ts` | lokale Portierung des Matching-Kerns | REQ-006 | +| 31 | `packages/error-translator/src/translateDiagnosticMessage.ts` | lokaler Plain-English-Adapter | REQ-006 | +| 32 | `packages/error-translator/src/generated/tsErrorMessages.json` | statische Matching-Daten | REQ-006 | +| 33 | `packages/error-translator/src/generated/bundleErrors.json` | statische Translation-Daten | REQ-006 | +| 34 | `packages/error-translator/vendor/matt-pocock/errors/` | rohe Upstream-Quellen fuer Attribution und Sync | REQ-006 | +| 35 | `packages/error-translator/test/translator.vitest.ts` | empfohlene Zieltests fuer lokale Translator-Paritaet | WF-001 | +| 36 | `packages/vscode-formatter/test/vscode-formatter.vitest.ts` | bestehender Testort fuer Formatter-Integration | WF-001 | + +--- + +## 6. Ausfuehrungskontext fuer LLM-Agents +[INTENT: KONTEXT] + +**Repo-Root:** `C:\Projects\development-platform\vs-code\extensions\pretty-ts-errors` + +**Bereits erledigt in diesem Hand-off-Kontext:** + +- O3- und O1-Pfade wurden lokal und anhand des aktuellen Repos nachvollzogen +- das Matt-Pocock-Upstream-Repo wurde nach `tmp/ts-error-translator` geklont +- die relevanten Upstream-Pakete und Dateien wurden identifiziert +- 2026-Alternativen wurden geprueft und fuer diesen Use-Case eingeordnet + +**Aktuell etablierter Zielzustand aus diesem Dokument:** + +- Plain-English-Translation wird first-party lokal in `packages/error-translator` integriert +- Matts Upstream-Source wird selektiv als Basis uebernommen +- die aktuelle Remote-Vercel-Translator-Delegation wird entfernt +- der O3-Pfad wird in Richtung strukturierter Datenmodelle und sicherem DOM-Rendering umgebaut + +**Wichtige Umsetzungsdetails fuer den Folge-Agenten:** + +- Das lokale Upstream-Repo in `tmp/ts-error-translator` ist **Referenzquelle**, nicht Zielsystem. +- Die 67 Upstream-Markdown-Dateien sind die aktuelle Paritaetsbasis fuer Plain-English-Translation. +- `packages/parser` und `packages/searcher` gehoeren nicht in den Zielscope, solange kein neuer, expliziter Bedarf entsteht. +- Der schnellste und sauberste Integrationspfad ist: + - neues internes Package, + - lokale Datenbundle-Erzeugung, + - lokaler Sidebar-/Hover-Action-Ersatz, + - WebView-Haertung gegen `innerHTML`. + +**Noch nicht umgesetzt, aber durch dieses Dokument festgelegt:** + +- Anlegen von `packages/error-translator` +- Portierung/Bundle der benoetigten Upstream-Source-Daten +- Entfernung des Remote-Translator-Links +- O3-Haertung der WebView-/HTML-Pipeline + +**Explizit offene Restklaerung fuer den Folge-Agenten:** + +- Ob der externe `typescript.tv`-Link im selben Arbeitsstrang mit entfernt/ersetzt wird, wenn "alle externen Remote-Verbindungen" wortwoertlich fuer die gesamte UI gelten soll. + Dieses Dokument markiert ihn bewusst als **adjazente externe Surface**, aber nicht als den eigentlichen O1-Translator-Pfad. + +**HCOA-Hinweis:** + +Der Folge-Agent kann auf Basis dieses Dokuments direkt eine mehrstufige Implementierung planen, ohne nochmals projektweit nach der O1-/O3-Ursache oder nach der Upstream-Paketstruktur suchen zu muessen. Alle dafuer benoetigten lokalen und externen Referenzpfade sind oben bereits gebunden. diff --git a/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md b/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md new file mode 100644 index 0000000..0fba4fe --- /dev/null +++ b/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md @@ -0,0 +1,638 @@ +# Referenzdokument: Workspace-Handoff zur PNPM-, Nx-, Extension-Delivery- und Local-Translator-Migration in `pretty-ts-errors` +[INTENT: KONTEXT] + +--- + +## 0. Quellenbasis und Scope-Grenzen +[INTENT: KONTEXT] + +**Workspace-Root:** `C:\Projects\development-platform\vs-code\extensions\pretty-ts-errors` + +**Quellemodus:** `CURRENT_CONTEXT_DEFAULT` mit expliziten Zusatzreferenzen aus dem laufenden Chat-Kontext. + +**Freigegebene Quellenbasis fuer diesen Handoff:** + +- die komplette aktuelle Konversation von Beginn bis zu diesem Stand +- der bestaetigte Migrationsplan `nx-pnpm-translator-migration_c751d78b.plan.md` als Arbeitsreferenz +- die in dieser Session gelesenen AI-Base-Referenzen fuer: + - PNPM Fortress Core / Monorepo Boilerplate / Omitted Properties / Trust-Downgrade Response Order + - Nx `project.json` Governance + - Nx TypeScript Workspace Governance + - Nx Shared Package Build Orchestration + - VS Code Extension PNPM-first Bundle-first Delivery +- die in dieser Session gelesenen bestehenden Handoff-Dokumente: + - `HANDOFF_O3_O1_LOCAL_TRANSLATOR.md` + - `HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md` +- die in dieser Session gelesenen und/oder geaenderten Workspace-Dateien +- die in dieser Session ausgefuehrten Validierungs- und Installationslaeufe + +**Explizit nicht Ziel dieses Dokuments:** + +- keine Neuinterpretation ausserhalb des aktuellen Kontexts +- keine autonome Projekt-Neusuche ausserhalb der bereits verwendeten Quellen +- keine Erfindung neuer Architekturziele, die nicht bereits im Kontext entstanden sind +- keine Bearbeitung oder Loeschung der zwei bestehenden Handoff-Berichte + +**Wichtig zur Scope-Treue:** + +- dieses Dokument ist der dritte Workspace-Handoff-Bericht +- die bestehenden zwei Handoffs wurden **nicht** bearbeitet +- dieser Bericht beschreibt den **aktuellen Stand** inkl. erledigter Arbeit, offener Themen, Blocker, Entscheidungen und Dateioberflaechen + +--- + +## 1. Aufgabenuebersicht +[INTENT: KONTEXT] + +Der Benutzer hat in dieser Session eine grosse Architektur- und Migrationsaufgabe fuer `pretty-ts-errors` gestartet. + +Die uebergeordnete Zielrichtung war: + +1. das aktuelle `npm`-/`turbo`-Workspace-Setup auf ein `pnpm@11.7.0`-basiertes Fortress-Monorepo umzustellen +2. `turbo` vollstaendig durch `nx` zu ersetzen +3. die VS Code Extension Delivery auf eine PNPM-first / bundle-first / offizielle `@vscode/vsce --no-dependencies`-Architektur umzustellen +4. die TypeScript-/ESM-Lane neu zu ordnen +5. den lokalen `ts-error-translator` aus `tmp/ts-error-translator` spaeter in ein internes Package unter `packages/` zu integrieren +6. O1/O3/Y1-bezogene Sicherheits- und Handoff-Folgeschritte erst **nach** der Monorepo-/Package-Manager-/Delivery-Umstellung anzugehen + +Der Benutzer hat spaeter zusaetzlich klargestellt: + +- Node-Toolchain fuer das Monorepo: `26.2.0` +- Package-Manager: `pnpm 11.7.0` +- ESM statt CommonJS +- `tsconfig` auf `ESNext` +- `@types/node` in der spaetesten durch Minimum-Release-Age erlaubten Linie +- Nx soll **nativ** genutzt werden +- im Nx-Monorepo sollen Leaf-`package.json`-Skripte nicht die Orchestrierung tragen; semantische Tasks sollen in `project.json` liegen +- `tmp/**` und `examples/**` sind keine produktiven Oberflaechen und duerfen nicht in die produktive App-Type-/Build-Oberflaeche hineinbluten + +Der Benutzer hat zusaetzlich bestaetigt: + +- eine unerwartet geaenderte Produktidentitaet in `apps/vscode-extension/package.json` (`publisher`, `repository.url`, `homepage`) soll als beabsichtigt behandelt und **beibehalten** werden + +--- + +## 2. Informationsregister +[INTENT: REFERENZ] + +| ID | Typ | Beschreibung | Veraenderung | Status | +|----|-----|--------------|--------------|--------| +| REQ-001 | ANFORDERUNG | Root-Control-Plane auf `pnpm@11.7.0` + Fortress-Workspace umstellen | Ja | Erledigt | +| REQ-002 | ANFORDERUNG | `turbo` vollstaendig durch `nx` ersetzen | Ja | Erledigt | +| REQ-003 | ANFORDERUNG | VS Code Extension Delivery auf PNPM-first / bundle-first / `@vscode/vsce --no-dependencies` umstellen | Ja | Grossteils erledigt | +| REQ-004 | ANFORDERUNG | Translator-Logik spaeter unter `packages/` statt `apps/` integrieren | Nein | Architektur festgelegt, Umsetzung offen | +| REQ-005 | ANFORDERUNG | TypeScript-/Tooling-Stand auf 2026 anheben | Ja | Teilweise erledigt | +| REQ-006 | ANFORDERUNG | `tmp/**` und `examples/**` nicht produktiv mitbauen / mittypechecken | Ja | Erledigt fuer die produktive App-Lane | +| REQ-007 | ANFORDERUNG | Leaf-`package.json`-Skripte duerfen im Nx-Monorepo nicht die Task-Orchestrierung tragen | Ja | Erledigt | +| DEC-001 | ENTSCHEIDUNG | Root-Toolchain bleibt `Node 26.2.0`, auch wenn VS Code Stable embedded Node `24.16.0` nutzt | Ja | Aktiv | +| DEC-002 | ENTSCHEIDUNG | ESM-Zielarchitektur fuer die Extension; Node-Extension-Host only | Ja | Aktiv | +| DEC-003 | ENTSCHEIDUNG | Build- und Typecheck-Lane der Extension werden getrennt gefuehrt | Ja | Aktiv | +| DEC-004 | ENTSCHEIDUNG | `trustPolicyExclude` fuer `semver@6.3.1` ist aktuell notwendig | Ja | Aktiv | +| DEC-005 | ENTSCHEIDUNG | `registrySupportsTimeField` bleibt gemaess Referenz und verifiziertem Registry-Verhalten auf `false` | Ja | Aktiv | +| WARN-002 | WARNUNG | `skipTypeCheck` ist im Extension-Build aktuell `true`, obwohl der Benutzer spaeter `false` wollte | Nein | Offen | +| INFO-001 | INFORMATION | `apps/vscode-extension/package.json` verwendet aktuell `CyberT33N`-Identitaet und wurde auf Benutzerbestaetigung hin beibehalten | Nein | Aktiv | +| INFO-002 | INFORMATION | Ein `.vsix` wurde bereits erfolgreich unter `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` erzeugt | Nein | Aktiv | + +--- + +## 3. Current-State-Handoff +[INTENT: SPEZIFIKATION] + +### 3.1 Root-Control-Plane und PNPM-Fortress-Status +[INTENT: SPEZIFIKATION] + +**Ist-Zustand vor der Migration:** + +- Root `package.json` war `npm`-/`turbo`-basiert +- `packageManager` stand auf `npm@10.0.0` +- `turbo.json` war die Root-Orchestrierung +- `package-lock.json` existierte +- es gab kein `pnpm-workspace.yaml` +- es gab kein `nx.json` + +**Jetzt umgesetzter Stand:** + +- Root `package.json` fuehrt jetzt nur noch die Root-Control-Plane: + - `packageManager: "pnpm@11.7.0"` + - `devEngines.packageManager` + - `devEngines.runtime` mit `node 26.2.0` +- Root-`scripts` wurden aus `package.json` entfernt; Root-Orchestrierung laeuft ueber `project.json` +- neues `pnpm-workspace.yaml` als Fortress-Monorepo-Oberflaeche wurde erstellt +- `package-lock.json` wurde geloescht +- `turbo.json` wurde geloescht + +**Wichtige PNPM-Fortress-Details im aktuellen Workspace:** + +- `minimumReleaseAge: 10080` +- `minimumReleaseAgeIgnoreMissingTime: false` +- `minimumReleaseAgeStrict: true` +- `trustPolicy: no-downgrade` +- `blockExoticSubdeps: true` +- `strictDepBuilds: true` +- `allowBuilds` ist explizit befuellt statt global offen +- `resolutionMode: time-based` +- `registrySupportsTimeField: false` +- `catalogMode: strict` + +**Verifizierter Installationsstatus:** + +- `pnpm install` laeuft erfolgreich unter `pnpm v11.7.0` +- der Workspace hat jetzt ein `pnpm-lock.yaml` +- `nx@23.0.0` ist explizit in `allowBuilds` freigegeben, weil dessen `postinstall` in diesem Install-Domain gebraucht wird + +--- + +### 3.2 Warum `trustPolicyExclude` statt `overrides` fuer `semver@6.3.1` +[INTENT: SPEZIFIKATION] + +Diese Session hat den Trust-Downgrade-Pfad gemaess Referenz abgearbeitet: + +1. **zuerst Updates / neuere freigegebene Versionen** +2. **dann** nur wenn moeglich ein enger Override-Repair +3. **erst danach** exakte `trustPolicyExclude` + +Das wurde konkret auf den relevanten Graphen angewendet: + +- `@nx/js@23.0.0` +- zieht `@babel/core@7.29.7` +- `@babel/core@7.29.7` deklariert `semver: ^6.3.1` +- in der relevanten `6.3.x`-Linie existieren nur: + - `6.3.0` + - `6.3.1` + +**Warum kein `override`:** + +- ein zulassiger Repair muesste contract-kompatibel innerhalb der erlaubten Linie liegen +- `6.3.0` ist **unterhalb** des Contract-Floors `^6.3.1` +- `6.3.1` ist genau die geblockte Version +- damit existiert **kein** erlaubter enger Patch-Repair + +**Daher ist die aktuelle korrekte Reaktion:** + +- `trustPolicyExclude: [semver@6.3.1]` + +Die Begruendung steht auch als Kommentar direkt in `pnpm-workspace.yaml`. + +**Wichtige Folgepflicht:** + +- sobald `@nx/js` / `@babel/core` einen trust-konformen Graphen liefern, muss diese Ausnahme wieder entfernt werden + +--- + +### 3.3 `registrySupportsTimeField` ist weiterhin `false` +[INTENT: SPEZIFIKATION] + +**Aktueller Status:** + +- `registrySupportsTimeField` steht aktuell weiterhin auf `false` + +**Warum diese Abweichung entstanden ist:** + +- die offizielle PNPM-Dokumentation und Live-Checks in dieser Session zeigen: + - `resolutionMode: time-based` braucht npm-**full metadata** + - `registrySupportsTimeField: true` ist nur korrekt, wenn die Registry das `time`-Feld bereits im **abbreviated metadata**-Pfad liefert + - fuer `registry.npmjs.org` ist das in dem hier verwendeten Metadatenpfad **nicht** gegeben +- ein Live-Check fuer `@eslint/js` zeigte: + - abbreviated metadata: **kein** `time` + - full metadata: `time` **vorhanden** + +**Konsequenz:** + +- mit `registrySupportsTimeField: true` brach der Workspace in dieser Session real mit `ERR_PNPM_MISSING_TIME` + +**Aktuelle Entscheidung:** + +- der Benutzer hat spaeter explizit bestaetigt, dass diese Property gemaess Referenz auf `false` bleiben soll +- das ist im aktuellen Registry-Setup mit `registry.npmjs.org` auch technisch die korrekte Haltung +- `true` waere erst dann wieder zulaessig, wenn eine andere Registry-/Mirror-Architektur oder ein verifizierter Metadatenpfad das `time`-Feld im abbreviated response konsistent liefert + +--- + +### 3.4 Nx-Control-Plane und Task-Semantik +[INTENT: SPEZIFIKATION] + +**Neue Root-Oberflaechen:** + +- `nx.json` +- `project.json` am Workspace-Root +- `project.json` fuer: + - `packages/utils` + - `packages/formatter` + - `packages/vscode-formatter` + - `apps/vscode-extension` + +**Wichtige Nx-Entscheidungen:** + +- `@nx/js/typescript` ist auf `packages/**/*` als standardisierte TypeScript-Governance aktiv +- Shared Packages nutzen jetzt explizite `@nx/js:tsc`-Build-Targets +- die VS Code Extension nutzt `@nx/esbuild:esbuild` +- Leaf-`package.json`-Skripte wurden als Orchestrierungsoberflaechen entfernt +- Root-Format-/Sync-Funktionen leben jetzt im Root-`project.json` + +**Verifizierter Nx-Status:** + +- `nx show projects` erkennt aktuell: + - `@pretty-ts-errors/utils` + - `@pretty-ts-errors/formatter` + - `@pretty-ts-errors/vscode-formatter` + - `pretty-ts-errors` + - `workspace-root` +- `nx sync:check` ist erfolgreich +- `nx build @pretty-ts-errors/utils` ist erfolgreich +- `nx build @pretty-ts-errors/formatter` ist erfolgreich +- `nx build @pretty-ts-errors/vscode-formatter` ist erfolgreich +- `nx build pretty-ts-errors` ist erfolgreich + +--- + +### 3.5 TypeScript-/ESM-Umstellung +[INTENT: SPEZIFIKATION] + +**Root-TS-Stand:** + +- `tsconfig.base.json` wurde auf: + - `target: ESNext` + - `module: ESNext` + - `moduleResolution: Bundler` + umgestellt + +**Shared Packages:** + +- `packages/utils` +- `packages/formatter` +- `packages/vscode-formatter` + +wurden auf buildbare Nx-Paketoberflaechen umgestellt: + +- `tsconfig.lib.json` +- `project.json` +- ESM-Package-Surface via `type: module` +- `exports`-Eintraege +- public `dist/index.*`-Vertrag + +**App-Surface:** + +- `apps/vscode-extension/package.json` hat jetzt `type: "module"` +- die App-Type-Surfaces wurden in zwei Rollen getrennt: + - `tsconfig.app.json` + - `tsconfig.test.json` + +**Wichtige App-Korrekturen:** + +- lokale LSP-Diagnostic-Konvertierung ueber `src/lspDiagnostic.ts` +- kein Runtime-Deep-Import mehr als Designentscheidung fuer diesen Pfad +- `tmp/**` und `examples/**` sind ueber `.nxignore` aus der Nx-Nebenflaeche ausgeschlossen + +--- + +### 3.6 VS Code Extension Delivery +[INTENT: SPEZIFIKATION] + +**Manifest-/Produktoberflaeche:** + +- `displayName` ist jetzt: + - `Pretty TypeScript Errors [Secured]` +- `publisher`, `repository.url` und `homepage` sind aktuell: + - `CyberT33N` + - `https://github.com/CyberT33N/pretty-ts-errors` +- diese Identitaetsaenderung wurde nicht von mir initiiert, aber spaeter vom Benutzer explizit bestaetigt und daher beibehalten + +**Delivery-Oberflaechen:** + +- `.vscodeignore` fuer die VSIX-Strategie wurde eingefuehrt +- `.vscode/tasks.json` und `.vscode/launch.json` wurden auf Nx-Tasks / `dist/**`-Bundle-Vertrag umgestellt +- `apps/vscode-extension/scripts/build.js` wurde entfernt +- neues `apps/vscode-extension/scripts/package-vsix.mjs` wurde erstellt + +**Aktuelle Packaging-Logik:** + +- `pretty-ts-errors:typecheck` +- `pretty-ts-errors:build:production` +- `apps/vscode-extension/scripts/package-vsix.mjs` + +Das Packaging-Skript erledigt: + +- Stage-Directory +- Kopie von `dist/`, `assets/`, `syntaxes/`, `webview/` +- staged `package.json` +- Materialisierung von `catalog:`-Dependencies +- `NODE_PATH`- / `node_modules`-Bridge fuer `@vscode/vsce` +- offizielles `vsce package --no-dependencies` + +**Verifizierter Delivery-Status:** + +- `tsc -p apps/vscode-extension/tsconfig.app.json --noEmit` ist erfolgreich +- `tsc -p apps/vscode-extension/tsconfig.test.json --noEmit` ist erfolgreich +- `nx run pretty-ts-errors:build:production` ist erfolgreich +- `nx run pretty-ts-errors:package` ist erfolgreich +- vorhandenes Artefakt: + - `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` + +**Wichtige operative Beobachtung:** + +- vor dem final erfolgreichen Produktions-Build gab es ein `EPERM` auf `apps/vscode-extension/dist` +- die saubere Behebung war das rekursive Entfernen des alten `dist`-Verzeichnisses +- danach war `build:production` wieder gruen +- Nx markierte `pretty-ts-errors:build:production` als flaky task, weil in derselben Session ein frueherer Fehllauf existierte + +--- + +### 3.7 `skipTypeCheck` ist aktuell noch `true` +[INTENT: SPEZIFIKATION] + +**Aktueller Status:** + +- im App-`project.json` + - `build` + - `dev` + stehen aktuell beide auf: + - `skipTypeCheck: true` + +**Warum das aktuell so ist:** + +- die Bundle-Lane sollte nicht am kompletten Workspace- oder Beispiel-/`tmp`-Noise scheitern +- deshalb wurde die App-Typecheck-Lane explizit getrennt: + - `typecheck` target mit `tsconfig.app.json` + - Build/Bundle target mit `@nx/esbuild` + - Packaging target fuehrt aktuell zuerst `typecheck`, dann `build:production`, dann `package-vsix.mjs` aus + +**Wichtige offene Benutzeranforderung:** + +- der Benutzer hat spaeter explizit gesagt, `skipTypeCheck` muesse eigentlich auf `false` + +**Daraus folgt fuer die Fortsetzung:** + +- das Thema ist **nicht erledigt** +- aktuell existiert eine funktionierende, getrennte Architektur +- aber die Benutzerforderung nach `skipTypeCheck: false` ist noch offen und muss bewusst gegen die aktuelle Lane-Trennung entschieden oder umgesetzt werden + +--- + +### 3.8 `tmp/**` und `examples/**` +[INTENT: SPEZIFIKATION] + +Der Benutzer hat spaeter klargestellt: + +- `tmp` ist kein produktiver Teil des Produktbaus +- `examples` ist kein produktiver Teil des Produktbaus + +Der aktuelle Stand dazu: + +- `.nxignore` enthaelt: + - `tmp/**` + - `examples/**` +- die produktive App-Typecheck-Lane wurde auf `tsconfig.app.json` eingegrenzt +- die Test-Lane wurde auf `tsconfig.test.json` eingegrenzt + +**Wichtig:** + +- `tmp/ts-error-translator` ist weiterhin im Repository vorhanden +- das ist absichtlich so, weil die spaetere Translator-Extraktion aus diesem Clone noch aussteht + +--- + +### 3.9 Translator-Extraktion: aktueller Stand +[INTENT: SPEZIFIKATION] + +Der eigentliche lokale Translator-Einbau ist **noch nicht umgesetzt**. + +Was bereits erfolgt ist: + +- die Upstream-Struktur in `tmp/ts-error-translator` wurde architektonisch ausgewertet +- bestaetigt wurde: + - Zielort spaeter `packages/error-translator/` + - nicht `apps/` +- bestaetigt wurde: + - der relevante Kern sitzt primar in `packages/engine` + - `parser`, `searcher` und die Upstream-VSCode-App sind fuer O1 nicht der primaere Kern +- die `move_paths`-Schemaflaeche des Dateisystem-Tools wurde gelesen + +Was **noch offen** ist: + +- `packages/error-translator/` anlegen +- benoetigte Engine-Dateien physisch verschieben +- bundling-/generated-data-Lane fuer `bundleErrors`/`tsErrorMessages` aufbauen +- internes Package `project.json`, `package.json`, `tsconfig` und Nx-Ziele anlegen +- lokale API fuer die Extension-/Formatter-Integration schaffen + +--- + +### 3.10 TypeScript-2026-Refresh: aktueller Stand +[INTENT: SPEZIFIKATION] + +**Bereits umgesetzt:** + +- Root `typescript` auf die aktuelle durch Minimum-Release-Age erlaubte Linie: + - `6.0.3` +- `@types/node` auf: + - `25.9.3` +- `eslint` auf: + - `10.5.0` +- `@eslint/js` auf: + - `10.0.1` +- `typescript-eslint` auf: + - `8.61.1` +- `@types/vscode` auf: + - `1.120.0` +- `@vscode/test-electron` auf: + - `3.0.0` +- `vscode-languageclient` auf: + - `10.0.0` +- `@vscode/vsce` auf: + - `3.9.2` + +**Noch offen:** + +- der inhaltliche 2026-Refresh der Translator-Datenbasis gegen die installierten TypeScript-Quellen +- die eigentliche Auswertung und Integration der neuen TS-Deklarationen fuer den Translator + +--- + +### 3.11 Noch nicht angegangene O1/O3/Y1-Folgearbeit +[INTENT: SPEZIFIKATION] + +Die folgenden fachlichen Arbeitspakete sind noch **nicht** umgesetzt: + +1. **Remote-Translator-Egress entfernen** + - `packages/vscode-formatter/src/components/actions.ts` + - `lz-string`-Pfad + - externe `ts-error-translator.vercel.app`-Nutzung + +2. **Plain-English-Translator lokal integrieren** + - neues internes `packages/error-translator` + +3. **WebView-/Hover-Haertung** + - strukturierter Datenpfad statt HTML-String-Pipeline + - `innerHTML`-Reduktion / Ersetzung + - Trusted-Markdown-/supportHtml-Haertung + +4. **Bestehende Handoff-Berichte refactoren** + - `HANDOFF_O3_O1_LOCAL_TRANSLATOR.md` + - `HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md` + +Diese Punkte waren vom Benutzer bewusst nachgelagert und sollten erst nach der Monorepo-/Package-Manager-/Delivery-Umstellung kommen. + +--- + +## 4. Dateiinventar der in dieser Session veraenderten Hauptoberflaechen +[INTENT: REFERENZ] + +### 4.1 Neu erstellt + +- `pnpm-workspace.yaml` +- `nx.json` +- `project.json` +- `.nxignore` +- `packages/utils/project.json` +- `packages/formatter/project.json` +- `packages/vscode-formatter/project.json` +- `packages/utils/tsconfig.lib.json` +- `packages/formatter/tsconfig.lib.json` +- `packages/vscode-formatter/tsconfig.lib.json` +- `apps/vscode-extension/project.json` +- `apps/vscode-extension/tsconfig.app.json` +- `apps/vscode-extension/tsconfig.test.json` +- `apps/vscode-extension/.vscodeignore` +- `apps/vscode-extension/scripts/package-vsix.mjs` +- `apps/vscode-extension/src/lspDiagnostic.ts` +- `HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md` (dieser Bericht) + +### 4.2 Aktualisiert + +- `package.json` +- `.gitignore` +- `tsconfig.base.json` +- `.vscode/tasks.json` +- `.vscode/launch.json` +- `.vscode/settings.json` +- `packages/utils/package.json` +- `packages/formatter/package.json` +- `packages/vscode-formatter/package.json` +- `packages/utils/src/index.ts` +- `packages/formatter/src/addMissingParentheses.ts` +- `apps/vscode-extension/package.json` +- `apps/vscode-extension/tsconfig.json` +- `apps/vscode-extension/src/diagnostics.ts` +- `apps/vscode-extension/src/provider/selectedTextHoverProvider.ts` +- `apps/vscode-extension/src/formattedDiagnosticsStore.ts` +- `apps/vscode-extension/src/provider/webviewViewProvider.ts` +- `apps/vscode-extension/src/test/runTest.ts` + +### 4.3 Geloescht + +- `turbo.json` +- `package-lock.json` +- `apps/vscode-extension/scripts/build.js` + +--- + +## 5. Aktueller Verifikationsstand +[INTENT: REFERENZ] + +**Erfolgreich verifiziert in dieser Session:** + +- `pnpm install` +- `nx sync:check` +- `nx build @pretty-ts-errors/utils` +- `nx build @pretty-ts-errors/formatter` +- `nx build @pretty-ts-errors/vscode-formatter` +- `nx build pretty-ts-errors` +- `tsc -p apps/vscode-extension/tsconfig.app.json --noEmit` +- `tsc -p apps/vscode-extension/tsconfig.test.json --noEmit` +- `nx run pretty-ts-errors:build:production` +- `nx run pretty-ts-errors:package` + +**Erzeugtes Release-Artefakt:** + +- `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` + +**Wichtiger Hinweis:** + +- der Package-/Build-Pfad war waehrend der Session temporär sensitiv gegen alte `dist`-Reste +- nach rekursivem Entfernen von `apps/vscode-extension/dist` war der Produktions-Build wieder gruen + +--- + +## 6. Offene Punkte und Blocker fuer die naechste Fortsetzung +[INTENT: SPEZIFIKATION] + +### 6.1 Noch offene fachliche Anforderungen + +1. `skipTypeCheck` in `apps/vscode-extension/project.json` soll aus Benutzersicht eigentlich auf `false` + - aktueller Stand nutzt getrennte `typecheck`- und `build`-Lanes + - explizite Umstellung auf `false` ist noch offen + +2. Translator-Extraktion + - noch nicht begonnen auf Dateisystemebene + +3. 2026-Refresh des Translators gegen aktuelle TypeScript-Quellen + - noch offen + +4. O1/O3/Y1-Folgearbeit + - noch offen + +### 6.2 Konkrete naechste Resume-Reihenfolge + +1. **Entscheidung und Umsetzung fuer `skipTypeCheck`** + - falls Benutzerforderung strikt umgesetzt werden soll: + - Build-Lane so anpassen, dass `skipTypeCheck: false` funktioniert + - ohne `tmp/**` / `examples/**` wieder in die produktive App-Lane hineinzuziehen + +2. **Translator-Package bauen** + - `packages/error-translator/` + - Quellverschiebung per `move_paths` + - Nx-/PNPM-/TS-Surfaces anlegen + +3. **Formatter-/Extension-Integration** + - Remote-Link entfernen + - lokale Translator-API anschliessen + - `lz-string` entfernen + +4. **Security-Haertung** + - WebView-/Hover-Pipeline umstellen + - Handoffs aktualisieren + +--- + +## 7. Resume-Hinweise fuer einen neuen Agenten +[INTENT: KONTEXT] + +Ein neuer Agent kann von diesem Stand aus direkt weiterarbeiten. + +**Wichtigste Resume-Fakten:** + +- der Workspace ist bereits auf PNPM + Nx migriert +- die Delivery-Lane ist funktional und hat eine VSIX erzeugt +- die noch offene Arbeit ist **nicht** mehr Root-Migration, sondern: + - offene Fortress-Policy-Entscheidungen + - Translator-Extraktion + - Translator-2026-Refresh + - O1/O3/Y1-Folgehaertung + +**Besonders wichtig fuer den Resume-Agenten:** + +- die bestehenden zwei Handoff-Berichte bleiben unangetastet +- `tmp/ts-error-translator` bleibt vorerst als lokale Extraktionsbasis erhalten +- `publisher` / `repository.url` / `homepage` in `apps/vscode-extension/package.json` sind aktuell absichtlich auf `CyberT33N` belassen +- `trustPolicyExclude: semver@6.3.1` ist absichtlich gesetzt und muss nicht als Zufallsrest fehlinterpretiert werden +- `registrySupportsTimeField: false` ist jetzt die explizit bestaetigte Zielhaltung +- `skipTypeCheck: true` bleibt die noch offene Konfigurationsdiskussion + +--- + +## 8. Kurzfazit +[INTENT: KONTEXT] + +Die ersten drei grossen Migrationsblöcke sind in der aktuellen Session im Kern umgesetzt worden: + +- PNPM Fortress Root +- Nx-Monorepo-Orchestrierung +- VS Code Extension Delivery Lane + +Der Workspace ist installierbar, synchronisiert, buildbar und kann eine `.vsix` erzeugen. + +Nicht erledigt sind aktuell die inhaltliche Local-Translator-Integration, der 2026-Refresh dieser Translator-Datenbasis, die O1/O3/Y1-Haertung sowie die noch offene Konfigurationsforderung: + +- `skipTypeCheck = false` + +Dieser Bericht ist als neuer dritter Workspace-Handoff gedacht und soll die zwei bestehenden Handoffs nicht ersetzen, sondern ergaenzen. diff --git a/HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md b/HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md new file mode 100644 index 0000000..e51bf8a --- /dev/null +++ b/HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md @@ -0,0 +1,259 @@ +# Referenzdokument: Workspace-Handoff zu den verbleibenden Y1-Befunden in `tmp/ts-error-translator` +[INTENT: KONTEXT] + +--- + +## 0. Quellenbasis und Scope +[INTENT: KONTEXT] + +- Workspace-Root: `C:\Projects\development-platform\vs-code\extensions\pretty-ts-errors` +- Fachlicher Zielbereich: `tmp/ts-error-translator` +- Verwendete Quellen fuer diesen Handoff: + - aktueller Chat-Kontext inklusive des zuvor erstellten Security-Audits + - `tmp/ts-error-translator/packages/searcher/src/index.ts` + - `tmp/ts-error-translator/apps/vscode/src/extension.ts` +- Explizit aus dem Handoff ausgeschlossen: + - `R1` + - `O3` + - `O2` + - `Y3` + - `O1` +- Ziel dieses Dokuments: + - nur die beiden verbleibenden `Y1`-Themen auf Workspace-Ebene so aufbereiten, dass ein neuer Agent die Behebung direkt fortsetzen kann + +--- + +## 1. Aufgabenuebersicht +[INTENT: KONTEXT] + +Im Workspace `pretty-ts-errors` ist fuer den aktuell relevanten Unterbereich `tmp/ts-error-translator` nur noch ein enger Restscope offen. Dieser Restscope umfasst genau zwei `Y1`-Befunde: + +1. der Workspace-Scanner in `tmp/ts-error-translator/packages/searcher/src/index.ts` +2. die Trusted-Markdown-Verwendung in `tmp/ts-error-translator/apps/vscode/src/extension.ts` + +Das Problem beim Scanner ist keine Exfiltration und keine verdeckte Ausfuehrung, sondern eine zu breite lokale Read-/Discovery-Surface, weil der Scan-Root implizit aus `INIT_CWD` oder `process.cwd()` abgeleitet wird und danach rekursiv alle `ts/tsx`-Dateien liest. Das Problem beim Trusted Markdown ist keine bestaetigte Missbrauchslogik, sondern eine zu breit gesetzte VS-Code-Vertrauensgrenze, weil ein kompletter `MarkdownString` als trusted markiert wird, obwohl darin mehr als nur der notwendige Command-Link steckt. + +Beide Themen muessen nicht als Malware-Befund behandelt werden. Beide muessen aber sauber eingegrenzt werden, damit spaetere Erweiterungen nicht unbemerkt eine groessere lokale Dateileseflaeche oder eine groessere Command-/Link-Trust-Surface erzeugen. + +--- + +## 2. Informationsregister (INHALT-Einheiten) +[INTENT: REFERENZ] + +| ID | Typ | Beschreibung | Veraenderung | Status | +|----|-----|-------------|-------------|--------| +| REQ-001 | ANFORDERUNG | Der rekursive Workspace-Scanner darf seinen Scan-Root nicht nur implizit aus `INIT_CWD` oder `process.cwd()` beziehen. | Ja | Offen | +| REQ-002 | ANFORDERUNG | Der Trusted-Markdown-Pfad in der VS Code Extension muss auf den minimal noetigen Trust-Scope reduziert werden. | Ja | Offen | +| CONV-001 | CONSTRAINT | Dieser Handoff behandelt absichtlich nur die beiden `Y1`-Befunde und listet die ausgeschlossenen Risikoklassen nicht erneut auf. | Nein | Aktiv | + +--- + +## 3. Informationseinheiten +[INTENT: SPEZIFIKATION] + +### 3.1 REQ-001: Workspace-Scanner muss einen expliziten und begrenzten Scan-Root haben +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Das Paket `@total-typescript/searcher` ist ein lokales Hilfstool, das Tip-Muster in Quellcode sucht. Der aktuelle Code baut den Scan-Root aus `process.env.INIT_CWD || process.cwd()` und traversiert danach rekursiv `./**/*.{ts,tsx}`. Anschliessend wird jede gefundene Datei mit `readFile(..., 'utf-8')` vollstaendig gelesen und an `getTipsFromFile()` uebergeben. + +Das ist fuer den Zweck des Tools plausibel, aber die Vertrauensgrenze ist zu offen: Der effektive Suchraum haengt vom Aufrufkontext ab und ist nicht als explizite Fachentscheidung im Tool modelliert. Dadurch kann das Tool mehr vom lokalen Workspace lesen als eigentlich beabsichtigt, wenn es aus einem unerwarteten Root gestartet wird. + +**Ist-Zustand:** +- In `tmp/ts-error-translator/packages/searcher/src/index.ts` wird der Root hier implizit gebildet: + - `path.resolve(process.env.INIT_CWD || process.cwd(), './**/*.{ts,tsx}')` +- Die Traversierung erfolgt ueber `fast-glob`. +- Die Ignore-Liste enthaelt nur: + - `**/node_modules/**` + - `**/dist/**` + - `**/DefinitelyTyped/**` +- Jede gefundene Datei wird danach gelesen: + - `const fileContents = await readFile(file, 'utf-8');` +- Es gibt aktuell keinen expliziten Root-Parameter, keine bestaetigte Root-Grenze und keine Sichtbarmachung des final aufgeloesten Scan-Ziels vor dem Read. + +**Soll-Zustand:** +Die Behebung muss das Ergebnis liefern, dass der Scan-Root nicht mehr nur implizit aus Prozesskontext stammt. Der Scanner muss vor dem rekursiven Lesen klar an einen beabsichtigten lokalen Zielbereich gebunden werden. + +Das Minimalziel der Behebung ist: +- der effektive Scan-Root muss explizit bestimmt werden +- der effektive Scan-Root muss fuer den Aufrufer nachvollziehbar sein +- der rekursive Read darf nur ueber diesen bewusst gewaehlten Zielbereich laufen + +Was noch **nicht** festgelegt ist: +- ob die Bindung ueber einen CLI-Parameter, eine interaktive Bestaetigung oder eine andere Root-Festlegung umgesetzt wird + +Was jedoch **verbindlich** ist: +- `INIT_CWD || process.cwd()` alleine reicht als Sicherheitsgrenze nicht aus +- der Scanner darf nicht stillschweigend einen zu grossen lokalen Baum einlesen + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `tmp/ts-error-translator/packages/searcher/src/index.ts` | EnthaeIt die Root-Aufloesung, die rekursive Traversierung und den Datei-Read. | `run()`, `toIgnore`, `fg.default(...)`, `readFile(...)` | +| `tmp/ts-error-translator/packages/searcher/package.json` | Zeigt, dass das Tool ueber den aktuellen Arbeitskontext gestartet wird. | Script `go`, Nutzung von `INIT_CWD` | + +**✅ Positivbeispiel(e):** + +```ts +const scanRoot = resolvedUserProvidedRoot; + +const files = await fg.default(path.join(scanRoot, '**/*.{ts,tsx}'), { + ignore: toIgnore, +}); +``` + +Dieses Muster ist korrekt, weil der rekursive Read an einen bewusst festgelegten Root gebunden ist. + +**❌ Negativbeispiel(e):** + +```ts +const files = await fg.default( + path.resolve(process.env.INIT_CWD || process.cwd(), './**/*.{ts,tsx}'), + { ignore: toIgnore }, +); +``` + +Dieses Muster ist hier falsch, weil der effektive Scan-Root nur aus dem Laufkontext abgeleitet wird und nicht als explizit begrenzte Fachentscheidung sichtbar ist. + +--- + +### 3.2 REQ-002: Trusted Markdown muss auf den minimal noetigen Trust-Scope reduziert werden +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Die VS Code Extension baut Hover-Inhalte als `MarkdownString` und markiert den gesamten String mit `isTrusted = true` und `supportHtml = true`. Im selben String werden sowohl sichtbare Texte (`thisTip.name`, `thisTip.message`, Linktext) als auch ein Command-URI fuer `ts-error-translator.dont-show-again` zusammengefuehrt. + +Der Befund ist nicht, dass aktuell user-kontrollierter Input in diesen Pfad gelangt. Der Befund ist, dass die Vertrauensgrenze zu breit definiert ist. Der Code vertraut einem kompletten generierten Markdown-Block, obwohl nur ein kleiner Teil davon zwingend trust-benoetigt ist. + +**Ist-Zustand:** +- In `tmp/ts-error-translator/apps/vscode/src/extension.ts` wird pro Hover ein `MarkdownString` aufgebaut. +- Der Inhalt setzt sich zusammen aus: + - `thisTip.name` + - `thisTip.message` + - `thisTip.link.url` + - einem Command-Link auf `ts-error-translator.dont-show-again` +- Danach wird derselbe String pauschal als trusted markiert: + - `mdString.isTrusted = true;` + - `mdString.supportHtml = true;` +- Die aktuellen Tip-Daten stammen aus internen, statischen Quellen und nicht aus Benutzereingaben. Deshalb ist der Befund `Y1` und nicht hoeher. + +**Soll-Zustand:** +Die Behebung muss den Trust-Scope auf das minimal noetige Mass reduzieren. + +Verbindliche Zielbedingungen: +- Trusted Markdown darf nur fuer den Teil verwendet werden, der den Trust wirklich braucht +- frei kombinierte oder spaeter erweiterbare Textinhalte duerfen nicht pauschal im selben trusted Block landen +- es darf keine spaetere stillschweigende Oeffnung entstehen, bei der zusaetzliche oder user-nahe Inhalte automatisch denselben trusted Pfad benutzen + +Was noch **nicht** festgelegt ist: +- ob die Behebung ueber getrennte Markdown-Bloecke, eine engere Trust-Whitelisting-Strategie oder eine andere, gleichwertig enge Aufteilung erfolgt + +Was jedoch **verbindlich** ist: +- der gesamte zusammengesetzte Hover-String darf nicht dauerhaft breit trusted bleiben +- der Command-/Link-Trust muss vom restlichen Inhalt so weit wie moeglich entkoppelt werden + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `tmp/ts-error-translator/apps/vscode/src/extension.ts` | EnthaeIt den kompletten Hover-Aufbau und die Trusted-Markdown-Markierung. | `hoverProvider`, `MarkdownString`, `mdString.isTrusted`, `mdString.supportHtml` | +| `tmp/ts-error-translator/packages/parser/src/tipInfo.ts` | Zeigt, dass die aktuellen Inhalte aus statischen, repo-internen Tip-Daten stammen. | `tipInfo`, `name`, `message`, `link.url` | + +**✅ Positivbeispiel(e):** + +```ts +const body = new vscode.MarkdownString(); +body.appendText(thisTip.message ?? ''); + +const trustedActions = new vscode.MarkdownString(markAsLearnedText); +trustedActions.isTrusted = true; +``` + +Dieses Muster ist korrekt, weil der sichtbare Inhalt nicht automatisch denselben Trust-Scope wie der Command-Link erhaelt. + +**❌ Negativbeispiel(e):** + +```ts +const mdString = new vscode.MarkdownString( + `**${thisTip.name}**\n\n${thisTip.message}\n\n${linkText} | ${markAsLearnedText}`, +); +mdString.isTrusted = true; +mdString.supportHtml = true; +``` + +Dieses Muster ist hier falsch, weil der komplette zusammengebaute Hover-Block trusted wird, obwohl nur ein Teil davon den Trust wirklich benoetigt. + +--- + +### 3.3 CONV-001: Dieser Handoff ist absichtlich auf zwei Y1-Themen begrenzt +[INTENT: CONSTRAINT] + +**Typ:** CONSTRAINT + +**Beschreibung:** +Dieser Handoff ist kein Voll-Audit-Neuaufguss. Er ist absichtlich auf die zwei verbleibenden `Y1`-Themen beschraenkt: + +- Workspace-Scanner +- Trusted Markdown + +Die zuvor genannten Risikoklassen `R1`, `O3`, `O2`, `Y3` und `O1` sollen in diesem Handoff nicht erneut ausformuliert werden. + +--- + +## 4. Konventionen & Constraints +[INTENT: CONSTRAINT] + +- Der Handoff gilt auf Workspace-Ebene, aber der fachliche Reparaturfokus liegt in `tmp/ts-error-translator`. +- Es sollen nur die beiden verbleibenden `Y1`-Themen bearbeitet werden. +- Es sollen keine ausgeschlossenen Risikoklassen erneut dokumentiert oder priorisiert werden. +- Der neue Agent muss zwischen Problemkern und verbindlichem Behebungsziel unterscheiden: + - Problemkern = aktuelle zu breite lokale Read-/Discovery-Surface bzw. zu breite Trusted-Markdown-Surface + - Behebungsziel = engerer, expliziter Root beim Scanner bzw. minimaler Trust-Scope beim Hover-Markdown +- Wo die genaue Implementierungsvariante noch nicht festgelegt ist, darf kein neuer Agent stillschweigend neue Architektur erfinden. Er muss die Behebung am verbindlichen Zielzustand ausrichten. + +--- + +## 5. Dateipfad-Index +[INTENT: REFERENZ] + +| # | Dateipfad | Relevanz | Zugehoerige Einheit-IDs | +|---|-----------|----------|----------------------| +| 1 | `tmp/ts-error-translator/packages/searcher/src/index.ts` | Scanner-Root, Traversierung und Datei-Read | REQ-001 | +| 2 | `tmp/ts-error-translator/packages/searcher/package.json` | Aufrufkontext des Scanner-Tools | REQ-001 | +| 3 | `tmp/ts-error-translator/apps/vscode/src/extension.ts` | Hover-Aufbau, Command-Link und Trusted Markdown | REQ-002 | +| 4 | `tmp/ts-error-translator/packages/parser/src/tipInfo.ts` | Statische Quelle der aktuellen Tip-Inhalte | REQ-002 | + +--- + +## 6. Ausfuehrungskontext fuer LLM-Agents +[INTENT: KONTEXT] + +Der nachfolgende Agent muss **nicht** erneut das ganze Security-Audit aufrollen. Er muss nur diese beiden Punkte weiterverfolgen: + +1. `REQ-001` in `tmp/ts-error-translator/packages/searcher/src/index.ts` +2. `REQ-002` in `tmp/ts-error-translator/apps/vscode/src/extension.ts` + +Empfohlene Arbeitsreihenfolge: + +1. zuerst `REQ-001`, weil der Scanner eine direkte Workspace-Read-Surface ist +2. danach `REQ-002`, weil der Trusted-Markdown-Pfad eine VS-Code-Vertrauensgrenze betrifft + +Nicht neu zu klaeren: + +- dass beide Themen aktuell als `Y1` eingeordnet sind +- dass die ausgeschlossenen Risikoklassen in diesem Handoff nicht wieder ausgefuehrt werden sollen + +Noch offen und bei der Umsetzung bewusst zu entscheiden: + +- die konkrete API-/UX-Form fuer die explizite Root-Bindung des Scanners +- die konkrete technische Aufteilung, mit der der Trusted-Markdown-Scope minimal gemacht wird + +Verbindlich ist nur das Ergebnis: + +- der Scanner muss einen expliziten, eng begrenzten lokalen Zielbereich bekommen +- der Hover-Markdown muss nur noch dort trusted sein, wo Trust technisch wirklich noetig ist diff --git a/README.md b/README.md index 5bc2e9a..551b704 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ - + - - - Logo + + + Logo @@ -10,10 +10,10 @@ Make TypeScript errors prettier and human-readable in VSCode. -[![GitHub stars](https://img.shields.io/github/stars/yoavbls/pretty-ts-errors.svg?style=social&label=Star)](https://GitHub.com/yoavbls/pretty-ts-errors/stargazers/) -[![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7?logo=visualstudiocode&logoColor=white)](https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors) [![GitHub license](https://badgen.net/github/license/yoavbls/pretty-ts-errors)](https://github.com/yoavbls/pretty-ts-errors/blob/main/LICENSE) [![Visual Studio Code](https://img.shields.io/visual-studio-marketplace/i/yoavbls.pretty-ts-errors)](https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors) -Webstorm logo -[![Cursor](https://img.shields.io/badge/Cursor-000000?logo=cursor)](https://open-vsx.org/extension/yoavbls/pretty-ts-errors) +[![GitHub stars](https://img.shields.io/github/stars/CyberT33N/pretty-ts-errors.svg?style=social&label=Star)](https://GitHub.com/CyberT33N/pretty-ts-errors/stargazers/) +[![Visual Studio Code](https://img.shields.io/badge/Visual%20Studio%20Code-0078d7?logo=visualstudiocode&logoColor=white)](https://marketplace.visualstudio.com/items?itemName=CyberT33N.pretty-ts-errors) [![GitHub license](https://badgen.net/github/license/CyberT33N/pretty-ts-errors)](https://github.com/CyberT33N/pretty-ts-errors/blob/main/LICENSE) [![Visual Studio Code](https://img.shields.io/visual-studio-marketplace/i/CyberT33N.pretty-ts-errors)](https://marketplace.visualstudio.com/items?itemName=CyberT33N.pretty-ts-errors) +Webstorm logo +[![Cursor](https://img.shields.io/badge/Cursor-000000?logo=cursor)](https://open-vsx.org/extension/CyberT33N/pretty-ts-errors) TypeScript errors become messier as the complexity of types increases. At some point, TypeScript will throw on you a shitty heap of parentheses and `"..."`. This extension will help you understand what's going on. For example, in this relatively simple error: @@ -23,7 +23,7 @@ This extension will help you understand what's going on. For example, in this re ## Watch this - Watch theo's video + Watch theo's video and others from: @@ -37,7 +37,7 @@ and [more](https://www.youtube.com/playlist?list=PL0rc4JAdEsVpOriHzlAG7KUnhKIK9c - Syntax highlighting with your theme colors for types in error messages, supporting both light and dark themes - A button that leads you to the relevant type declaration next to the type in the error message - A button that navigates you to the error at [typescript.tv](http://typescript.tv), where you can find a detailed explanation, sometimes with a video -- A button that navigates you to [ts-error-translator](https://ts-error-translator.vercel.app/), where you can read the error in plain English +- A local plain-English translation for supported TypeScript errors directly in the sidebar ## Supports @@ -50,10 +50,10 @@ and [more](https://www.youtube.com/playlist?list=PL0rc4JAdEsVpOriHzlAG7KUnhKIK9c ## Installation ``` -code --install-extension yoavbls.pretty-ts-errors +code --install-extension CyberT33N.pretty-ts-errors ``` -Or simply by searching for `pretty-ts-errors` in the [VSCode marketplace](https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors) +Or simply by searching for `pretty-ts-errors` in the [VSCode marketplace](https://marketplace.visualstudio.com/items?itemName=CyberT33N.pretty-ts-errors) #### How to hide the original errors and make the types copyable @@ -71,28 +71,28 @@ Follow the instructions [there](./docs/hide-original-errors.md). unfortunately, - Winning the Productivity Booster category at JSNation 2023 + Winning the Productivity Booster category at JSNation 2023 - - - Tanner's tweet + + + Tanner's tweet - - - Theo's tweet + + + Theo's tweet - - - Johnson's tweet + + + Johnson's tweet @@ -142,5 +142,5 @@ on things that I can't be doing myself like adding support to the extension for ## Contribution -Help by upvoting or commenting on issues we need to be resolved [here](https://github.com/yoavbls/pretty-ts-errors/discussions/43) +Help by upvoting or commenting on issues we need to be resolved [here](https://github.com/CyberT33N/pretty-ts-errors/discussions/43) Any other contribution is welcome. Feel free to open any issue / PR you think. diff --git a/apps/vscode-extension/.vscodeignore b/apps/vscode-extension/.vscodeignore new file mode 100644 index 0000000..784f179 --- /dev/null +++ b/apps/vscode-extension/.vscodeignore @@ -0,0 +1,11 @@ +src/** +out/** +coverage/** +test/** +node_modules/** +.pnpm/** +scripts/** +project.json +tsconfig.json +*.tsbuildinfo +vitest.config.* diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json index 20afed8..a25608f 100644 --- a/apps/vscode-extension/package.json +++ b/apps/vscode-extension/package.json @@ -1,18 +1,19 @@ { "name": "pretty-ts-errors", - "displayName": "Pretty TypeScript Errors", - "publisher": "YoavBls", + "displayName": "Pretty TypeScript Errors [Secured]", + "type": "module", + "publisher": "CyberT33N", "description": "Make TypeScript errors prettier and more human-readable in VSCode", "version": "0.8.7", "icon": "assets/icon.png", "repository": { "type": "git", - "url": "https://github.com/yoavbls/pretty-ts-errors", + "url": "https://github.com/CyberT33N/pretty-ts-errors", "directory": "apps/vscode-extension" }, - "homepage": "https://github.com/yoavbls/pretty-ts-errors", + "homepage": "https://github.com/CyberT33N/pretty-ts-errors", "engines": { - "vscode": "^1.77.0" + "vscode": "^1.120.0" }, "extensionKind": [ "ui", @@ -44,14 +45,6 @@ "onLanguage:glimmer-ts" ], "main": "./dist/extension.js", - "browser": "./dist/extension.js", - "files": [ - "dist/**/*", - "assets/**/*", - "syntaxes/**/*", - "webview/**/*", - "LICENSE" - ], "contributes": { "viewsContainers": { "activitybar": [ @@ -124,42 +117,26 @@ } ] }, - "scripts": { - "vscode:prepublish": "cp ../../README.md README.md && npm run package", - "compile": "node scripts/build", - "watch": "npm run compile -- --watch", - "dev": "npm-run-all --parallel _dev:*", - "_dev:ext": "npm run watch", - "_dev:formatter": "npm run -w @pretty-ts-errors/formatter dev", - "_dev:vscode-formatter": "npm run -w @pretty-ts-errors/vscode-formatter dev", - "build": "vsce package", - "package": "node scripts/build -- --production", - "compile-tests": "tsc -p . --outDir out", - "watch-tests": "tsc -p . -w --outDir out", - "pretest": "npm run compile-tests && npm run compile && npm run lint", - "lint": "tsc -p . --noEmit", - "test": "node ./out/test/runTest.js", - "webview": "npx http-server ./webview -o -a localhost -p 8080" - }, "devDependencies": { - "@shikijs/types": "^3.13.0", - "@types/mocha": "^10.0.10", - "@types/node": "^16.11.68", - "@types/vscode": "^1.77.0", - "@types/vscode-webview": "^1.57.5", - "@vscode/codicons": "^0.0.41", - "@vscode/test-electron": "^2.5.2", - "esbuild": "^0.28.1", - "glob": "^13.0.6", - "mocha": "12.0.0-beta-10", - "npm-run-all": "^4.1.5" + "@shikijs/types": "catalog:", + "@types/mocha": "catalog:", + "@types/node": "catalog:", + "@types/vscode": "catalog:", + "@types/vscode-webview": "catalog:", + "@vscode/codicons": "catalog:", + "@vscode/vsce": "catalog:", + "@vscode/test-electron": "catalog:", + "esbuild": "catalog:", + "glob": "catalog:", + "mocha": "catalog:", + "yaml": "catalog:" }, "dependencies": { - "@pretty-ts-errors/formatter": "*", - "@pretty-ts-errors/utils": "*", - "@pretty-ts-errors/vscode-formatter": "*", - "shiki": "^3.13.0", - "vscode-languageclient": "^9.0.1", - "vscode-shiki-bridge": "^0.5.2" + "@pretty-ts-errors/formatter": "workspace:*", + "@pretty-ts-errors/utils": "workspace:*", + "@pretty-ts-errors/vscode-formatter": "workspace:*", + "shiki": "catalog:", + "vscode-languageclient": "catalog:", + "vscode-shiki-bridge": "catalog:" } } diff --git a/apps/vscode-extension/project.json b/apps/vscode-extension/project.json new file mode 100644 index 0000000..6d403cf --- /dev/null +++ b/apps/vscode-extension/project.json @@ -0,0 +1,123 @@ +{ + "name": "pretty-ts-errors", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "apps/vscode-extension/src", + "projectType": "application", + "tags": ["scope:apps", "type:application", "runtime:embedded"], + "targets": { + "build": { + "executor": "@nx/esbuild:esbuild", + "outputs": ["{workspaceRoot}/apps/vscode-extension/dist"], + "options": { + "main": "apps/vscode-extension/src/extension.ts", + "outputPath": "apps/vscode-extension/dist", + "tsConfig": "apps/vscode-extension/tsconfig.app.json", + "bundle": true, + "declaration": false, + "platform": "node", + "format": ["esm"], + "target": "esnext", + "external": ["vscode"], + "sourcemap": true, + "minify": false, + "skipTypeCheck": false, + "thirdParty": true, + "esbuildOptions": { + "inject": ["apps/vscode-extension/scripts/process-shim.js"] + } + }, + "configurations": { + "production": { + "sourcemap": false, + "minify": true, + "esbuildOptions": { + "inject": ["apps/vscode-extension/scripts/process-shim.js"], + "define": { + "process.env.NODE_ENV": "\"production\"" + } + } + } + } + }, + "dev": { + "executor": "@nx/esbuild:esbuild", + "cache": false, + "continuous": true, + "options": { + "main": "apps/vscode-extension/src/extension.ts", + "outputPath": "apps/vscode-extension/dist", + "tsConfig": "apps/vscode-extension/tsconfig.app.json", + "bundle": true, + "declaration": false, + "platform": "node", + "format": ["esm"], + "target": "esnext", + "external": ["vscode"], + "sourcemap": true, + "minify": false, + "watch": true, + "skipTypeCheck": false, + "thirdParty": true, + "esbuildOptions": { + "inject": ["apps/vscode-extension/scripts/process-shim.js"], + "define": { + "process.env.NODE_ENV": "\"development\"" + } + } + } + }, + "lint": { + "executor": "nx:run-commands", + "options": { + "cwd": "apps/vscode-extension", + "command": "pnpm exec tsc -p tsconfig.app.json --noEmit" + } + }, + "typecheck": { + "executor": "nx:run-commands", + "options": { + "cwd": "apps/vscode-extension", + "command": "pnpm exec tsc -p tsconfig.app.json --noEmit" + } + }, + "test": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "cwd": "apps/vscode-extension", + "command": "pnpm exec tsc -p tsconfig.test.json && node ./out/test/runTest.js" + } + }, + "compile-tests": { + "executor": "nx:run-commands", + "options": { + "cwd": "apps/vscode-extension", + "command": "pnpm exec tsc -p tsconfig.test.json" + } + }, + "watch-tests": { + "executor": "nx:run-commands", + "cache": false, + "continuous": true, + "options": { + "cwd": "apps/vscode-extension", + "command": "pnpm exec tsc -p tsconfig.test.json -w" + } + }, + "package": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec nx run pretty-ts-errors:typecheck && pnpm exec nx run pretty-ts-errors:build:production && node apps/vscode-extension/scripts/package-vsix.mjs" + } + }, + "webview": { + "executor": "nx:run-commands", + "cache": false, + "continuous": true, + "options": { + "cwd": "apps/vscode-extension", + "command": "pnpm exec http-server ./webview -o -a localhost -p 8080" + } + } + } +} diff --git a/apps/vscode-extension/scripts/build.js b/apps/vscode-extension/scripts/build.js deleted file mode 100644 index 26050bb..0000000 --- a/apps/vscode-extension/scripts/build.js +++ /dev/null @@ -1,91 +0,0 @@ -const process = require("node:process"); -const console = require("node:console"); -const fs = require("node:fs"); -const path = require("node:path"); -const production = process.argv.includes("--production"); -const watch = process.argv.includes("--watch"); - -/** - * @see https://code.visualstudio.com/api/working-with-extensions/bundling-extension#using-esbuild - */ -async function main() { - const ctx = await require("esbuild").context({ - entryPoints: { - extension: "./src/extension.ts", - }, - bundle: true, - outdir: "./dist", - external: ["vscode"], - format: "cjs", - inject: ["./scripts/process-shim.js"], - tsconfig: "./tsconfig.json", - define: production ? { "process.env.NODE_ENV": '"production"' } : undefined, - minify: production, - sourcemap: !production, - plugins: [workspacePackagesPlugin, esbuildProblemMatcherPlugin], - }); - if (watch) { - await ctx.watch(); - } else { - fs.rmSync("./dist", { recursive: true, force: true }); - await ctx.rebuild(); - await ctx.dispose(); - } -} - -/** - * @type {import('esbuild').Plugin} - */ -const esbuildProblemMatcherPlugin = { - name: "esbuild-problem-matcher", - setup(build) { - build.onStart(() => { - console.log("[watch] build started"); - }); - build.onEnd((result) => { - result.errors.forEach(({ text, location }) => { - console.error(`✘ [ERROR] ${text}`); - console.error( - ` ${location.file}:${location.line}:${location.column}:` - ); - }); - console.log("[watch] build finished"); - }); - }, -}; - -/** - * Resolve internal workspace packages to their source files so we bundle them in watch/debug. - * This makes changes in packages/* reflected immediately without separate watchers. - * @type {import('esbuild').Plugin} - */ -const workspacePackagesPlugin = { - name: "workspace-packages", - setup(build) { - const pkgRoot = path.resolve(__dirname, "../../../packages"); - /** @type {Record} */ - const alias = { - "@pretty-ts-errors/utils": path.join(pkgRoot, "utils/src/index.ts"), - "@pretty-ts-errors/formatter": path.join( - pkgRoot, - "formatter/src/index.ts" - ), - "@pretty-ts-errors/vscode-formatter": path.join( - pkgRoot, - "vscode-formatter/src/index.ts" - ), - }; - build.onResolve( - { filter: /^@pretty-ts-errors\/(utils|formatter|vscode-formatter)$/ }, - (args) => { - const target = alias[args.path]; - return target ? { path: target } : undefined; - } - ); - }, -}; - -main().catch((e) => { - console.error(e); - process.exit(1); -}); diff --git a/apps/vscode-extension/scripts/package-vsix.mjs b/apps/vscode-extension/scripts/package-vsix.mjs new file mode 100644 index 0000000..11fb07a --- /dev/null +++ b/apps/vscode-extension/scripts/package-vsix.mjs @@ -0,0 +1,172 @@ +import { spawnSync } from "node:child_process"; +import { constants as fsConstants } from "node:fs"; +import { access, cp, mkdtemp, mkdir, readFile, rm, symlink, writeFile } from "node:fs/promises"; +import { createRequire } from "node:module"; +import os from "node:os"; +import path from "node:path"; +import process from "node:process"; +import { fileURLToPath } from "node:url"; +import { parse as parseYaml } from "yaml"; + +const require = createRequire(import.meta.url); + +const scriptDir = path.dirname(fileURLToPath(import.meta.url)); +const appRoot = path.resolve(scriptDir, ".."); +const workspaceRoot = path.resolve(appRoot, "../.."); +const distDir = path.join(appRoot, "dist"); +const manifestPath = path.join(appRoot, "package.json"); +const workspacePolicyPath = path.join(workspaceRoot, "pnpm-workspace.yaml"); +const artifactsDir = path.join(workspaceRoot, "artifacts", "vsix"); + +async function pathExists(targetPath) { + try { + await access(targetPath, fsConstants.F_OK); + return true; + } catch { + return false; + } +} + +function materializeCatalogSpecifiers(dependencyMap, catalog) { + if (dependencyMap === undefined) { + return undefined; + } + + const materialized = {}; + + for (const [packageName, specifier] of Object.entries(dependencyMap)) { + if (specifier === "catalog:") { + const catalogVersion = catalog[packageName]; + if (typeof catalogVersion !== "string" && typeof catalogVersion !== "number") { + throw new Error( + `Missing exact catalog version for ${packageName} in pnpm-workspace.yaml` + ); + } + materialized[packageName] = String(catalogVersion); + continue; + } + + if (specifier.startsWith("workspace:")) { + continue; + } + + materialized[packageName] = specifier; + } + + return Object.keys(materialized).length > 0 ? materialized : undefined; +} + +async function copyIfPresent(sourcePath, destinationPath) { + if (await pathExists(sourcePath)) { + await cp(sourcePath, destinationPath, { recursive: true, force: true }); + } +} + +async function main() { + if (!(await pathExists(distDir))) { + throw new Error("Extension bundle is missing. Run the production build before packaging."); + } + + const manifest = JSON.parse(await readFile(manifestPath, "utf8")); + const workspacePolicy = parseYaml(await readFile(workspacePolicyPath, "utf8")); + const catalog = workspacePolicy.catalog ?? {}; + + const stagedManifest = structuredClone(manifest); + stagedManifest.dependencies = materializeCatalogSpecifiers( + manifest.dependencies, + catalog + ); + delete stagedManifest.devDependencies; + delete stagedManifest.browser; + + const stageDir = await mkdtemp( + path.join(os.tmpdir(), "pretty-ts-errors-vsix-stage-") + ); + + try { + await mkdir(artifactsDir, { recursive: true }); + + await cp(distDir, path.join(stageDir, "dist"), { + recursive: true, + force: true, + }); + + await copyIfPresent( + path.join(appRoot, "assets"), + path.join(stageDir, "assets") + ); + await copyIfPresent( + path.join(appRoot, "syntaxes"), + path.join(stageDir, "syntaxes") + ); + await copyIfPresent( + path.join(appRoot, "webview"), + path.join(stageDir, "webview") + ); + await copyIfPresent( + path.join(appRoot, ".vscodeignore"), + path.join(stageDir, ".vscodeignore") + ); + await copyIfPresent( + path.join(workspaceRoot, "README.md"), + path.join(stageDir, "README.md") + ); + await copyIfPresent( + path.join(workspaceRoot, "LICENSE"), + path.join(stageDir, "LICENSE") + ); + await copyIfPresent( + path.join(workspaceRoot, "CHANGELOG.md"), + path.join(stageDir, "CHANGELOG.md") + ); + + await writeFile( + path.join(stageDir, "package.json"), + `${JSON.stringify(stagedManifest, null, 2)}\n`, + "utf8" + ); + + const vscePackageRoot = path.dirname( + require.resolve("@vscode/vsce/package.json") + ); + const vsceDependencyRoot = path.resolve(vscePackageRoot, "..", ".."); + const vsceCliPath = require.resolve("@vscode/vsce/vsce"); + + await symlink( + vsceDependencyRoot, + path.join(stageDir, "node_modules"), + process.platform === "win32" ? "junction" : "dir" + ); + + const outputFile = path.join( + artifactsDir, + `${manifest.name}-${manifest.version}.vsix` + ); + + const result = spawnSync( + process.execPath, + [vsceCliPath, "package", "--no-dependencies", "--out", outputFile], + { + cwd: stageDir, + env: { + ...process.env, + NODE_PATH: vsceDependencyRoot, + }, + stdio: "inherit", + } + ); + + if (result.status !== 0) { + throw new Error( + `VSIX packaging failed with exit code ${result.status ?? "unknown"}` + ); + } + } finally { + await rm(stageDir, { recursive: true, force: true }); + } +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/apps/vscode-extension/src/diagnostics.ts b/apps/vscode-extension/src/diagnostics.ts index 023b957..8980f83 100644 --- a/apps/vscode-extension/src/diagnostics.ts +++ b/apps/vscode-extension/src/diagnostics.ts @@ -8,10 +8,6 @@ import { Uri, type Diagnostic, } from "vscode"; -import { - createConverter, - type Converter, -} from "vscode-languageclient/lib/common/codeConverter"; import { hoverProvider } from "./provider/hoverProvider"; import { formattedDiagnosticsStore, @@ -19,6 +15,7 @@ import { } from "./formattedDiagnosticsStore"; import { logger } from "./logger"; import { enabledCommands } from "./commands/enabledCommands"; +import { toLspDiagnostic } from "./lspDiagnostic"; /** * The list of diagnostic sources that pretty-ts-errors supports @@ -32,7 +29,6 @@ const supportedDiagnosticSources = [ ]; export function registerOnDidChangeDiagnostics(context: ExtensionContext) { - const converter = createConverter(); context.subscriptions.push( languages.onDidChangeDiagnostics(async (e) => { await logger.measure("onDidChangeDiagnostics", async () => { @@ -49,7 +45,7 @@ export function registerOnDidChangeDiagnostics(context: ExtensionContext) { const items: FormattedDiagnostic[] = await Promise.all( supportedDiagnostics.map((diagnostic) => - getFormattedDiagnostic(diagnostic, converter) + getFormattedDiagnostic(diagnostic) ) ); @@ -85,24 +81,22 @@ const CACHE_SIZE_MAX = 100; /** * A local cache that maps TS diagnostics as `string` to their formatted `MarkdownString` counter part. - * @see https://github.com/yoavbls/pretty-ts-errors/pull/62 + * @see https://github.com/CyberT33N/pretty-ts-errors/pull/62 * * One reason this cache is critical is because the TypeScript Language Features extension is very noisy and will constantly push all diagnostics for a file, * even if there were no actual changes. - * @see https://github.com/yoavbls/pretty-ts-errors/issues/139#issuecomment-3401279357 + * @see https://github.com/CyberT33N/pretty-ts-errors/issues/139#issuecomment-3401279357 * * TODO: create a proper LRU cache, to prevent exceeding the cache size being a bottleneck - * @see https://github.com/yoavbls/pretty-ts-errors/issues/104 + * @see https://github.com/CyberT33N/pretty-ts-errors/issues/104 */ const cache = new Map(); async function getFormattedDiagnostic( - diagnostic: Diagnostic, - converter: Converter + diagnostic: Diagnostic ): Promise { - // formatDiagnosticForHover converts message based on LSP Diagnostic type, not VSCode Diagnostic type, so it can be used in other IDEs. - // Here we convert VSCode Diagnostic to LSP Diagnostic to make formatDiagnosticForHover recognize it. - const lspDiagnostic = converter.asDiagnostic(diagnostic); + // The formatter consumes LSP diagnostics, so keep the VS Code -> LSP conversion as a local first-party boundary. + const lspDiagnostic = toLspDiagnostic(diagnostic); let formattedMessage = cache.get(diagnostic.message); if (!formattedMessage) { diff --git a/apps/vscode-extension/src/formattedDiagnosticsStore.ts b/apps/vscode-extension/src/formattedDiagnosticsStore.ts index fae5aa3..02e0f97 100644 --- a/apps/vscode-extension/src/formattedDiagnosticsStore.ts +++ b/apps/vscode-extension/src/formattedDiagnosticsStore.ts @@ -1,5 +1,5 @@ import { MarkdownString, Range, Uri } from "vscode"; -import type { Diagnostic } from "vscode-languageserver-types"; +import type { PrettyTsLspDiagnostic } from "./lspDiagnostic"; type StoreKey = Uri["fsPath"]; @@ -7,7 +7,7 @@ export interface FormattedDiagnostic { range: Range; contents: MarkdownString[]; /** Original LSP diagnostic for on-demand sidebar formatting */ - lspDiagnostic: Diagnostic; + lspDiagnostic: PrettyTsLspDiagnostic; } /** diff --git a/apps/vscode-extension/src/lspDiagnostic.ts b/apps/vscode-extension/src/lspDiagnostic.ts new file mode 100644 index 0000000..2907ee1 --- /dev/null +++ b/apps/vscode-extension/src/lspDiagnostic.ts @@ -0,0 +1,121 @@ +import { + DiagnosticSeverity, + DiagnosticTag, + Location, + type Diagnostic, + type DiagnosticRelatedInformation, + type Position, + type Range, +} from "vscode-languageclient"; +import { + Diagnostic as VsCodeDiagnostic, + DiagnosticRelatedInformation as VsCodeDiagnosticRelatedInformation, + DiagnosticSeverity as VsCodeDiagnosticSeverity, + DiagnosticTag as VsCodeDiagnosticTag, + type Position as VsCodePosition, + type Range as VsCodeRange, +} from "vscode"; + +function toLspPosition(position: VsCodePosition): Position { + return { + line: position.line, + character: position.character, + }; +} + +function toLspRange(range: VsCodeRange): Range { + return { + start: toLspPosition(range.start), + end: toLspPosition(range.end), + }; +} + +function toLspSeverity( + severity: VsCodeDiagnosticSeverity | undefined +): DiagnosticSeverity | undefined { + switch (severity) { + case VsCodeDiagnosticSeverity.Error: + return DiagnosticSeverity.Error; + case VsCodeDiagnosticSeverity.Warning: + return DiagnosticSeverity.Warning; + case VsCodeDiagnosticSeverity.Information: + return DiagnosticSeverity.Information; + case VsCodeDiagnosticSeverity.Hint: + return DiagnosticSeverity.Hint; + default: + return undefined; + } +} + +function toLspTag(tag: VsCodeDiagnosticTag): DiagnosticTag | undefined { + switch (tag) { + case VsCodeDiagnosticTag.Deprecated: + return DiagnosticTag.Deprecated; + case VsCodeDiagnosticTag.Unnecessary: + return DiagnosticTag.Unnecessary; + default: + return undefined; + } +} + +function toLspRelatedInformation( + relatedInformation: VsCodeDiagnosticRelatedInformation +): DiagnosticRelatedInformation { + return { + location: Location.create( + relatedInformation.location.uri.toString(), + toLspRange(relatedInformation.location.range) + ), + message: relatedInformation.message, + }; +} + +export interface PrettyTsLspDiagnostic extends Diagnostic { + message: string; +} + +export function toLspDiagnostic( + diagnostic: VsCodeDiagnostic +): PrettyTsLspDiagnostic { + const tags = (diagnostic.tags ?? []) + .map((tag) => toLspTag(tag)) + .filter((tag): tag is DiagnosticTag => tag !== undefined); + + const lspDiagnostic: PrettyTsLspDiagnostic = { + range: toLspRange(diagnostic.range), + message: diagnostic.message, + }; + + const severity = toLspSeverity(diagnostic.severity); + if (severity !== undefined) { + lspDiagnostic.severity = severity; + } + + if (diagnostic.source !== undefined) { + lspDiagnostic.source = diagnostic.source; + } + + if ( + typeof diagnostic.code === "string" || + typeof diagnostic.code === "number" + ) { + lspDiagnostic.code = diagnostic.code; + } else if (diagnostic.code !== undefined) { + lspDiagnostic.code = diagnostic.code.value; + lspDiagnostic.codeDescription = { + href: diagnostic.code.target.toString(), + }; + } + + if (tags.length > 0) { + lspDiagnostic.tags = tags; + } + + if (diagnostic.relatedInformation !== undefined) { + lspDiagnostic.relatedInformation = diagnostic.relatedInformation.map( + (item) => toLspRelatedInformation(item) + ); + } + + return lspDiagnostic; +} diff --git a/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts b/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts index 082a5c9..fab5d39 100644 --- a/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts +++ b/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts @@ -1,15 +1,16 @@ -import { d } from "@pretty-ts-errors/utils"; import { prettifyDiagnosticForHover } from "@pretty-ts-errors/vscode-formatter"; import { + Diagnostic, + DiagnosticSeverity, ExtensionContext, ExtensionMode, MarkdownString, languages, window, } from "vscode"; -import { createConverter } from "vscode-languageclient/lib/common/codeConverter"; import { formattedDiagnosticsStore } from "../formattedDiagnosticsStore"; import { enabledCommands } from "../commands/enabledCommands"; +import { toLspDiagnostic } from "../lspDiagnostic"; /** * Register an hover provider in debug only. @@ -20,7 +21,6 @@ export function registerSelectedTextHoverProvider(context: ExtensionContext) { return; } - const converter = createConverter(); context.subscriptions.push( languages.registerHoverProvider( { @@ -42,13 +42,15 @@ export function registerSelectedTextHoverProvider(context: ExtensionContext) { return null; } - const lspDiagnostic = converter.asDiagnostic({ - message, + const debugDiagnostic = new Diagnostic( range, - severity: 0, - source: "ts", - code: 1337, - }); + message, + DiagnosticSeverity.Error + ); + debugDiagnostic.source = "ts"; + debugDiagnostic.code = 1337; + + const lspDiagnostic = toLspDiagnostic(debugDiagnostic); const markdown = new MarkdownString( debugHoverHeader + (await prettifyDiagnosticForHover(lspDiagnostic)) @@ -74,12 +76,12 @@ export function registerSelectedTextHoverProvider(context: ExtensionContext) { ); } -const debugHoverHeader = d /*html*/ ` - - - Formatted selected text (debug only) - -
-
-

-`; +const debugHoverHeader = [ + '', + ' ', + " Formatted selected text (debug only)", + "", + "
", + "
", + "

", +].join("\n"); diff --git a/apps/vscode-extension/src/provider/webviewViewProvider.ts b/apps/vscode-extension/src/provider/webviewViewProvider.ts index 518614a..af62833 100644 --- a/apps/vscode-extension/src/provider/webviewViewProvider.ts +++ b/apps/vscode-extension/src/provider/webviewViewProvider.ts @@ -83,16 +83,24 @@ async function diagnosticToItem( ): Promise { const cacheKey = formattedDiagnostic.lspDiagnostic.message; let html = sidebarHtmlCache.get(cacheKey); - if (!html) { - html = await prettifyDiagnosticForSidebar( + if (html === undefined) { + const renderedHtml = await prettifyDiagnosticForSidebar( formattedDiagnostic.lspDiagnostic ); if (sidebarHtmlCache.size > SIDEBAR_CACHE_SIZE_MAX) { - const firstKey = sidebarHtmlCache.keys().next().value!; - sidebarHtmlCache.delete(firstKey); + const firstKey = sidebarHtmlCache.keys().next().value; + if (firstKey !== undefined) { + sidebarHtmlCache.delete(firstKey); + } } - sidebarHtmlCache.set(cacheKey, html); + sidebarHtmlCache.set(cacheKey, renderedHtml); + html = renderedHtml; + } + + if (html === undefined) { + throw new Error("Sidebar HTML rendering returned no content."); } + return { html, range: formattedDiagnostic.range, diff --git a/apps/vscode-extension/src/test/runTest.ts b/apps/vscode-extension/src/test/runTest.ts index 033881a..ce5c755 100644 --- a/apps/vscode-extension/src/test/runTest.ts +++ b/apps/vscode-extension/src/test/runTest.ts @@ -1,20 +1,24 @@ -import * as path from "path"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; import { runTests } from "@vscode/test-electron"; +const currentFilePath = fileURLToPath(import.meta.url); +const currentDirectory = path.dirname(currentFilePath); + async function main() { try { // The folder containing the Extension Manifest package.json // Passed to `--extensionDevelopmentPath` - const extensionDevelopmentPath = path.resolve(__dirname, "../../"); + const extensionDevelopmentPath = path.resolve(currentDirectory, "../../"); // The path to test runner // Passed to --extensionTestsPath - const extensionTestsPath = path.resolve(__dirname, "./suite/index"); + const extensionTestsPath = path.resolve(currentDirectory, "./suite/index.js"); // Download VS Code, unzip it and run the integration test await runTests({ - version: "1.77.0", + version: "stable", extensionDevelopmentPath, extensionTestsPath, launchArgs: ["--disable-extensions"], diff --git a/apps/vscode-extension/tsconfig.app.json b/apps/vscode-extension/tsconfig.app.json new file mode 100644 index 0000000..806147a --- /dev/null +++ b/apps/vscode-extension/tsconfig.app.json @@ -0,0 +1,23 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "Bundler", + "target": "ESNext", + "types": ["node"], + "noEmit": true + }, + "include": ["src/**/*.ts", "src/globals.d.ts"], + "exclude": ["src/test/**"], + "references": [ + { + "path": "../../packages/vscode-formatter/tsconfig.lib.json" + }, + { + "path": "../../packages/utils/tsconfig.lib.json" + }, + { + "path": "../../packages/formatter/tsconfig.lib.json" + } + ] +} diff --git a/apps/vscode-extension/tsconfig.json b/apps/vscode-extension/tsconfig.json index ca94e76..02c89dc 100644 --- a/apps/vscode-extension/tsconfig.json +++ b/apps/vscode-extension/tsconfig.json @@ -2,14 +2,22 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "module": "nodenext", - "target": "ES2022", + "target": "ESNext", "rootDir": "src", "outDir": "out", - "moduleResolution": "nodenext" + "moduleResolution": "nodenext", + "types": ["node"] }, "include": ["src/**/*.ts"], "references": [ - { "path": "../../packages/utils" }, - { "path": "../../packages/vscode-formatter" } + { + "path": "../../packages/vscode-formatter" + }, + { + "path": "../../packages/utils" + }, + { + "path": "../../packages/formatter" + } ] } diff --git a/apps/vscode-extension/tsconfig.test.json b/apps/vscode-extension/tsconfig.test.json new file mode 100644 index 0000000..9e50ead --- /dev/null +++ b/apps/vscode-extension/tsconfig.test.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "NodeNext", + "moduleResolution": "NodeNext", + "target": "ESNext", + "types": ["node", "mocha"], + "outDir": "out", + "rootDir": "src" + }, + "include": [ + "src/test/**/*.ts" + ] +} diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 4b8ea31..1199d13 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -3,7 +3,7 @@ This document explains how **pretty-ts-errors** is structured and how the VS Code extension works at runtime. > !NOTE -> Keep in mind that this document is kept minimal to avoid being out of sync with development. If critical information is missing, feel free to open a [discussion](https://github.com/yoavbls/pretty-ts-errors/discussions) or [PR](https://github.com/yoavbls/pretty-ts-errors/pulls). +> Keep in mind that this document is kept minimal to avoid being out of sync with development. If critical information is missing, feel free to open a [discussion](https://github.com/CyberT33N/pretty-ts-errors/discussions) or [PR](https://github.com/CyberT33N/pretty-ts-errors/pulls). ## `/` diff --git a/docs/hide-original-errors.md b/docs/hide-original-errors.md index 114e303..0b86e29 100644 --- a/docs/hide-original-errors.md +++ b/docs/hide-original-errors.md @@ -11,7 +11,7 @@ To hide the original errors, display only the prettified ones, and make type blo ### Hiding Original Errors Unfortunately, VSCode doesn't currently support formatted diagnostics. Once it does, we'll be able to convert the extension to a TypeScript LSP Plugin that replaces the original error with the prettified version. -For updates on this feature, follow [this issue](https://github.com/yoavbls/pretty-ts-errors/issues/3). +For updates on this feature, follow [this issue](https://github.com/CyberT33N/pretty-ts-errors/issues/3). ### Making Type Blocks Copyable diff --git a/nx.json b/nx.json new file mode 100644 index 0000000..380ef99 --- /dev/null +++ b/nx.json @@ -0,0 +1,66 @@ +{ + "$schema": "./node_modules/nx/schemas/nx-schema.json", + "defaultBase": "main", + "namedInputs": { + "sharedGlobals": [ + "{workspaceRoot}/eslint.config.mjs", + "{workspaceRoot}/pnpm-workspace.yaml", + "{workspaceRoot}/tsconfig.base.json", + "{workspaceRoot}/tsconfig.json" + ], + "default": ["{projectRoot}/**/*", "sharedGlobals"], + "production": [ + "default", + "!{projectRoot}/**/*.spec.ts", + "!{projectRoot}/**/*.test.ts", + "!{projectRoot}/test/**", + "!{projectRoot}/coverage/**", + "!{projectRoot}/vitest.config.*" + ] + }, + "plugins": [ + { + "plugin": "@nx/js/typescript", + "include": ["packages/**/*"], + "options": { + "typecheck": { + "targetName": "typecheck" + }, + "build": { + "targetName": "build", + "configName": "tsconfig.lib.json", + "buildDepsName": "build-deps", + "watchDepsName": "watch-deps" + } + } + } + ], + "targetDefaults": { + "build": { + "dependsOn": ["^build"], + "inputs": ["production", "^production"], + "cache": true + }, + "@nx/esbuild:esbuild": { + "cache": true, + "dependsOn": ["^build"], + "inputs": ["production", "^production"] + }, + "@nx/js:tsc": { + "cache": true, + "dependsOn": ["^build"], + "inputs": ["production", "^production"] + }, + "lint": { + "cache": true, + "inputs": ["default", "^production"] + }, + "test": { + "cache": false, + "inputs": ["default", "^production"] + }, + "dev": { + "cache": false + } + } +} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 7da85c8..0000000 --- a/package-lock.json +++ /dev/null @@ -1,7508 +0,0 @@ -{ - "name": "pretty-ts-errors-mono", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "pretty-ts-errors-mono", - "workspaces": [ - "packages/*", - "apps/*" - ], - "devDependencies": { - "@eslint/js": "^9.15.0", - "@types/node": "^20.19.21", - "eslint": "^9.15.0", - "globals": "^16.4.0", - "prettier": "^3.6.2", - "turbo": "^2.9.14", - "typescript": "^5.7.2", - "typescript-eslint": "^8.15.0" - }, - "engines": { - "node": ">=20" - } - }, - "apps/vscode-extension": { - "name": "pretty-ts-errors", - "version": "0.8.7", - "dependencies": { - "@pretty-ts-errors/formatter": "*", - "@pretty-ts-errors/utils": "*", - "@pretty-ts-errors/vscode-formatter": "*", - "shiki": "^3.13.0", - "vscode-languageclient": "^9.0.1", - "vscode-shiki-bridge": "^0.5.2" - }, - "devDependencies": { - "@shikijs/types": "^3.13.0", - "@types/mocha": "^10.0.10", - "@types/node": "^16.11.68", - "@types/vscode": "^1.77.0", - "@types/vscode-webview": "^1.57.5", - "@vscode/codicons": "^0.0.41", - "@vscode/test-electron": "^2.5.2", - "esbuild": "^0.28.1", - "glob": "^13.0.6", - "mocha": "12.0.0-beta-10", - "npm-run-all": "^4.1.5" - }, - "engines": { - "vscode": "^1.77.0" - } - }, - "apps/vscode-extension/node_modules/@types/node": { - "version": "16.18.126", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", - "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", - "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@emnapi/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", - "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.1", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", - "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", - "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", - "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.5" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", - "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.14.0", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.1", - "minimatch": "^3.1.5", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "9.39.4", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", - "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", - "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, - "node_modules/@oxc-project/types": { - "version": "0.95.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.95.0.tgz", - "integrity": "sha512-vACy7vhpMPhjEJhULNxrdR0D943TkA/MigMpJCHmBHvMXxRStRi/dPtTlfQ3uDwWSzRpT8z+7ImjZVf8JWBocQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Boshen" - } - }, - "node_modules/@pretty-ts-errors/formatter": { - "resolved": "packages/formatter", - "link": true - }, - "node_modules/@pretty-ts-errors/utils": { - "resolved": "packages/utils", - "link": true - }, - "node_modules/@pretty-ts-errors/vscode-formatter": { - "resolved": "packages/vscode-formatter", - "link": true - }, - "node_modules/@quansync/fs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@quansync/fs/-/fs-1.0.0.tgz", - "integrity": "sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "quansync": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - } - }, - "node_modules/@rolldown/binding-android-arm64": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-beta.45.tgz", - "integrity": "sha512-bfgKYhFiXJALeA/riil908+2vlyWGdwa7Ju5S+JgWZYdR4jtiPOGdM6WLfso1dojCh+4ZWeiTwPeV9IKQEX+4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-beta.45.tgz", - "integrity": "sha512-xjCv4CRVsSnnIxTuyH1RDJl5OEQ1c9JYOwfDAHddjJDxCw46ZX9q80+xq7Eok7KC4bRSZudMJllkvOKv0T9SeA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-beta.45.tgz", - "integrity": "sha512-ddcO9TD3D/CLUa/l8GO8LHzBOaZqWg5ClMy3jICoxwCuoz47h9dtqPsIeTiB6yR501LQTeDsjA4lIFd7u3Ljfw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-beta.45.tgz", - "integrity": "sha512-MBTWdrzW9w+UMYDUvnEuh0pQvLENkl2Sis15fHTfHVW7ClbGuez+RWopZudIDEGkpZXdeI4CkRXk+vdIIebrmg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-beta.45.tgz", - "integrity": "sha512-4YgoCFiki1HR6oSg+GxxfzfnVCesQxLF1LEnw9uXS/MpBmuog0EOO2rYfy69rWP4tFZL9IWp6KEfGZLrZ7aUog==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-beta.45.tgz", - "integrity": "sha512-LE1gjAwQRrbCOorJJ7LFr10s5vqYf5a00V5Ea9wXcT2+56n5YosJkcp8eQ12FxRBv2YX8dsdQJb+ZTtYJwb6XQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-beta.45.tgz", - "integrity": "sha512-tdy8ThO/fPp40B81v0YK3QC+KODOmzJzSUOO37DinQxzlTJ026gqUSOM8tzlVixRbQJltgVDCTYF8HNPRErQTA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.2.tgz", - "integrity": "sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.2.tgz", - "integrity": "sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-beta.45.tgz", - "integrity": "sha512-lS082ROBWdmOyVY/0YB3JmsiClaWoxvC+dA8/rbhyB9VLkvVEaihLEOr4CYmrMse151C4+S6hCw6oa1iewox7g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-beta.45.tgz", - "integrity": "sha512-Hi73aYY0cBkr1/SvNQqH8Cd+rSV6S9RB5izCv0ySBcRnd/Wfn5plguUoGYwBnhHgFbh6cPw9m2dUVBR6BG1gxA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-beta.45.tgz", - "integrity": "sha512-fljEqbO7RHHogNDxYtTzr+GNjlfOx21RUyGmF+NrkebZ8emYYiIqzPxsaMZuRx0rgZmVmliOzEp86/CQFDKhJQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-beta.45.tgz", - "integrity": "sha512-ZJDB7lkuZE9XUnWQSYrBObZxczut+8FZ5pdanm8nNS1DAo8zsrPuvGwn+U3fwU98WaiFsNrA4XHngesCGr8tEQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^1.0.7" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-beta.45.tgz", - "integrity": "sha512-zyzAjItHPUmxg6Z8SyRhLdXlJn3/D9KL5b9mObUrBHhWS/GwRH4665xCiFqeuktAhhWutqfc+rOV2LjK4VYQGQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-ia32-msvc": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.0-beta.45.tgz", - "integrity": "sha512-wODcGzlfxqS6D7BR0srkJk3drPwXYLu7jPHN27ce2c4PUnVVmJnp9mJzUQGT4LpmHmmVdMZ+P6hKvyTGBzc1CA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-beta.45.tgz", - "integrity": "sha512-wiU40G1nQo9rtfvF9jLbl79lUgjfaD/LTyUEw2Wg/gdF5OhjzpKMVugZQngO+RNdwYaNj+Fs+kWBWfp4VXPMHA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.45.tgz", - "integrity": "sha512-Le9ulGCrD8ggInzWw/k2J8QcbPz7eGIOWqfJ2L+1R0Opm7n6J37s2hiDWlh6LJN0Lk9L5sUzMvRHKW7UxBZsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@shikijs/core": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.23.0.tgz", - "integrity": "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.23.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.5" - } - }, - "node_modules/@shikijs/engine-javascript": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.23.0.tgz", - "integrity": "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.23.0", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.3.4" - } - }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", - "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.23.0", - "@shikijs/vscode-textmate": "^10.0.2" - } - }, - "node_modules/@shikijs/langs": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz", - "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.23.0" - } - }, - "node_modules/@shikijs/themes": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz", - "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.23.0" - } - }, - "node_modules/@shikijs/types": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz", - "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", - "license": "MIT" - }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@turbo/darwin-64": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/@turbo/darwin-64/-/darwin-64-2.9.14.tgz", - "integrity": "sha512-t7QiPflaEyBE4oayeZtSmu4mEfjgIrcNlNNl1z1dmIVPqEdtA7+CfTf8d7KXsOGPh6aNgWjKxyvQg9uGfDQF+A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@turbo/darwin-arm64": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/@turbo/darwin-arm64/-/darwin-arm64-2.9.14.tgz", - "integrity": "sha512-d23147mC9BsCPA9mJ0h/ubcpbRgcJBXbcG3+Vq7YLhjz3IXuvQsJ1UXH8f4MD76ZjJ4m/E4aRdJV+MW88CDfbw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@turbo/linux-64": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/@turbo/linux-64/-/linux-64-2.9.14.tgz", - "integrity": "sha512-P3ZKB5tuUDdDQWuAsACGUR1qv9W7BNWxdxqVJ0kZNuNNPRaVYTPPikLcp79+GiEcW3npsR+KyP38lnQiBc5aSA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@turbo/linux-arm64": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/@turbo/linux-arm64/-/linux-arm64-2.9.14.tgz", - "integrity": "sha512-ZRTlzcUMrrPv9ZuDzRF9n60Ym13bKeG9jDB8WjxyLhWNzV+AJQN+zdpIk3NJYf2zQsGUm1mNar2P0elRzLw25g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@turbo/windows-64": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/@turbo/windows-64/-/windows-64-2.9.14.tgz", - "integrity": "sha512-exanwN6sIduZwykYeiTQj8kCmOhazP5WOz3bvXMcYtjhL6Z3iRWLewKrXCBq0bqwSP3iBMb/AerRCnHI4lx46A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@turbo/windows-arm64": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/@turbo/windows-arm64/-/windows-arm64-2.9.14.tgz", - "integrity": "sha512-fVdCsnmYoKICsycbWuuGp6Jvi51/3G/UluFWuAUCvR8PIW5IJkAk5BM9UF8PSm0Q2IphWHFZjYEgjHsh3B9y/g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mocha": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", - "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.19.37", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.37.tgz", - "integrity": "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "license": "MIT" - }, - "node_modules/@types/vscode": { - "version": "1.110.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.110.0.tgz", - "integrity": "sha512-AGuxUEpU4F4mfuQjxPPaQVyuOMhs+VT/xRok1jiHVBubHK7lBRvCuOMZG0LKUwxncrPorJ5qq/uil3IdZBd5lA==", - "license": "MIT" - }, - "node_modules/@types/vscode-webview": { - "version": "1.57.5", - "resolved": "https://registry.npmjs.org/@types/vscode-webview/-/vscode-webview-1.57.5.tgz", - "integrity": "sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.0.tgz", - "integrity": "sha512-qeu4rTHR3/IaFORbD16gmjq9+rEs9fGKdX0kF6BKSfi+gCuG3RCKLlSBYzn/bGsY9Tj7KE/DAQStbp8AHJGHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.57.0", - "@typescript-eslint/type-utils": "8.57.0", - "@typescript-eslint/utils": "8.57.0", - "@typescript-eslint/visitor-keys": "8.57.0", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.57.0", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.0.tgz", - "integrity": "sha512-XZzOmihLIr8AD1b9hL9ccNMzEMWt/dE2u7NyTY9jJG6YNiNthaD5XtUHVF2uCXZ15ng+z2hT3MVuxnUYhq6k1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.57.0", - "@typescript-eslint/types": "8.57.0", - "@typescript-eslint/typescript-estree": "8.57.0", - "@typescript-eslint/visitor-keys": "8.57.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.0.tgz", - "integrity": "sha512-pR+dK0BlxCLxtWfaKQWtYr7MhKmzqZxuii+ZjuFlZlIGRZm22HnXFqa2eY+90MUz8/i80YJmzFGDUsi8dMOV5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.57.0", - "@typescript-eslint/types": "^8.57.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.0.tgz", - "integrity": "sha512-nvExQqAHF01lUM66MskSaZulpPL5pgy5hI5RfrxviLgzZVffB5yYzw27uK/ft8QnKXI2X0LBrHJFr1TaZtAibw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.57.0", - "@typescript-eslint/visitor-keys": "8.57.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.0.tgz", - "integrity": "sha512-LtXRihc5ytjJIQEH+xqjB0+YgsV4/tW35XKX3GTZHpWtcC8SPkT/d4tqdf1cKtesryHm2bgp6l555NYcT2NLvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.0.tgz", - "integrity": "sha512-yjgh7gmDcJ1+TcEg8x3uWQmn8ifvSupnPfjP21twPKrDP/pTHlEQgmKcitzF/rzPSmv7QjJ90vRpN4U+zoUjwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.57.0", - "@typescript-eslint/typescript-estree": "8.57.0", - "@typescript-eslint/utils": "8.57.0", - "debug": "^4.4.3", - "ts-api-utils": "^2.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.0.tgz", - "integrity": "sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.0.tgz", - "integrity": "sha512-m7faHcyVg0BT3VdYTlX8GdJEM7COexXxS6KqGopxdtkQRvBanK377QDHr4W/vIPAR+ah9+B/RclSW5ldVniO1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.57.0", - "@typescript-eslint/tsconfig-utils": "8.57.0", - "@typescript-eslint/types": "8.57.0", - "@typescript-eslint/visitor-keys": "8.57.0", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.0.tgz", - "integrity": "sha512-5iIHvpD3CZe06riAsbNxxreP+MuYgVUsV0n4bwLH//VJmgtt54sQeY2GszntJ4BjYCpMzrfVh2SBnUQTtys2lQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.57.0", - "@typescript-eslint/types": "8.57.0", - "@typescript-eslint/typescript-estree": "8.57.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.0.tgz", - "integrity": "sha512-zm6xx8UT/Xy2oSr2ZXD0pZo7Jx2XsCoID2IUh9YSTFRu7z+WdwYTRk6LhUftm1crwqbuoF6I8zAFeCMw0YjwDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.57.0", - "eslint-visitor-keys": "^5.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "license": "ISC" - }, - "node_modules/@vitest/coverage-v8": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.2.tgz", - "integrity": "sha512-sPK//PHO+kAkScb8XITeB1bf7fsk85Km7+rt4eeuRR3VS1/crD47cmV5wicisJmjNdfeokTZwjMk4Mj2d58Mgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^1.0.2", - "@vitest/utils": "4.1.2", - "ast-v8-to-istanbul": "^1.0.0", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.2.0", - "magicast": "^0.5.2", - "obug": "^2.1.1", - "std-env": "^4.0.0-rc.1", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@vitest/browser": "4.1.2", - "vitest": "4.1.2" - }, - "peerDependenciesMeta": { - "@vitest/browser": { - "optional": true - } - } - }, - "node_modules/@vitest/expect": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.2.tgz", - "integrity": "sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@standard-schema/spec": "^1.1.0", - "@types/chai": "^5.2.2", - "@vitest/spy": "4.1.2", - "@vitest/utils": "4.1.2", - "chai": "^6.2.2", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/pretty-format": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.2.tgz", - "integrity": "sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.2.tgz", - "integrity": "sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "4.1.2", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.2.tgz", - "integrity": "sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.1.2", - "@vitest/utils": "4.1.2", - "magic-string": "^0.30.21", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.2.tgz", - "integrity": "sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.2.tgz", - "integrity": "sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.1.2", - "convert-source-map": "^2.0.0", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vscode/codicons": { - "version": "0.0.41", - "resolved": "https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.41.tgz", - "integrity": "sha512-v6/8nx76zau3Joxjzi3eN/FVw+7jKBq4j7LTZY5FhFhq2g0OoFebZ3vRZbv/pUopGpbCnJJ4FOz+NzbjVsmoiw==", - "dev": true, - "license": "CC-BY-4.0" - }, - "node_modules/@vscode/test-electron": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.5.2.tgz", - "integrity": "sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "jszip": "^3.10.1", - "ora": "^8.1.0", - "semver": "^7.6.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", - "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/ast-kit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-2.2.0.tgz", - "integrity": "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "pathe": "^2.0.3" - }, - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - } - }, - "node_modules/ast-v8-to-istanbul": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.0.tgz", - "integrity": "sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.31", - "estree-walker": "^3.0.3", - "js-tokens": "^10.0.0" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/birpc": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz", - "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true, - "license": "ISC" - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chai": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", - "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/defu": { - "version": "6.1.7", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", - "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", - "dev": true - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "license": "MIT", - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/diff": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", - "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dts-resolver": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/dts-resolver/-/dts-resolver-2.1.3.tgz", - "integrity": "sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - }, - "peerDependencies": { - "oxc-resolver": ">=11.0.0" - }, - "peerDependenciesMeta": { - "oxc-resolver": { - "optional": true - } - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/empathic": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/empathic/-/empathic-2.0.0.tgz", - "integrity": "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", - "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", - "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.1", - "@esbuild/android-arm": "0.28.1", - "@esbuild/android-arm64": "0.28.1", - "@esbuild/android-x64": "0.28.1", - "@esbuild/darwin-arm64": "0.28.1", - "@esbuild/darwin-x64": "0.28.1", - "@esbuild/freebsd-arm64": "0.28.1", - "@esbuild/freebsd-x64": "0.28.1", - "@esbuild/linux-arm": "0.28.1", - "@esbuild/linux-arm64": "0.28.1", - "@esbuild/linux-ia32": "0.28.1", - "@esbuild/linux-loong64": "0.28.1", - "@esbuild/linux-mips64el": "0.28.1", - "@esbuild/linux-ppc64": "0.28.1", - "@esbuild/linux-riscv64": "0.28.1", - "@esbuild/linux-s390x": "0.28.1", - "@esbuild/linux-x64": "0.28.1", - "@esbuild/netbsd-arm64": "0.28.1", - "@esbuild/netbsd-x64": "0.28.1", - "@esbuild/openbsd-arm64": "0.28.1", - "@esbuild/openbsd-x64": "0.28.1", - "@esbuild/openharmony-arm64": "0.28.1", - "@esbuild/sunos-x64": "0.28.1", - "@esbuild/win32-arm64": "0.28.1", - "@esbuild/win32-ia32": "0.28.1", - "@esbuild/win32-x64": "0.28.1" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.39.4", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", - "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.2", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.5", - "@eslint/js": "9.39.4", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.14.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.5", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expect-type": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", - "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-plist": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/fast-plist/-/fast-plist-0.1.3.tgz", - "integrity": "sha512-d9cEfo/WcOezgPLAC/8t8wGb6YOD6JTCPMw2QcG2nAdFmyY+9rTUizCTaGjIZAloWENTEUMAPpkUAIJJJ0i96A==", - "license": "MIT" - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", - "dev": true - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", - "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.13.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", - "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hast-util-to-html": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", - "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/js-tokens": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", - "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "license": "MIT" - }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, - "license": "(MIT OR GPL-3.0-or-later)", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", - "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "license": "MIT", - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/magicast": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz", - "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "source-map-js": "^1.2.1" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", - "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mocha": { - "version": "12.0.0-beta-10", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-12.0.0-beta-10.tgz", - "integrity": "sha512-edlHS69tgkDTSQotUVP6KNtrIV/qQB/uwbxLHE8yFoD2htrbtFv21CyyNVUC9LvcHNeMwNeR2uxJYxYhWPKGTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browser-stdout": "^1.3.1", - "chokidar": "^5.0.0", - "debug": "^4.3.5", - "diff": "^8.0.3", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^13.0.0", - "he": "^1.2.0", - "is-path-inside": "^3.0.3", - "is-unicode-supported": "^0.1.0", - "js-yaml": "^4.1.0", - "minimatch": "^10.2.2", - "ms": "^2.1.3", - "picocolors": "^1.1.1", - "serialize-javascript": "^7.0.2", - "strip-json-comments": "^5.0.3", - "supports-color": "^8.1.1", - "workerpool": "^9.2.0", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/mocha/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/mocha/node_modules/chokidar": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", - "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^5.0.0" - }, - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/readdirp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", - "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/mocha/node_modules/strip-json-comments": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz", - "integrity": "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", - "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm-run-all/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/npm-run-all/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/npm-run-all/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/npm-run-all/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/npm-run-all/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obug": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", - "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/sxzz", - "https://opencollective.com/debug" - ], - "license": "MIT" - }, - "node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/oniguruma-parser": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", - "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", - "license": "MIT" - }, - "node_modules/oniguruma-to-es": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.4.tgz", - "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", - "license": "MIT", - "dependencies": { - "oniguruma-parser": "^0.12.1", - "regex": "^6.0.1", - "regex-recursion": "^6.0.2" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", - "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.3.0", - "cli-cursor": "^5.0.0", - "cli-spinners": "^2.9.2", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.0.0", - "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.2", - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/log-symbols": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", - "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.3.0", - "is-unicode-supported": "^1.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true, - "license": "(MIT AND Zlib)" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true, - "license": "MIT", - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.5.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", - "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.12", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-ts-errors": { - "resolved": "apps/vscode-extension", - "link": true - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/property-information": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", - "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/quansync": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/quansync/-/quansync-1.0.0.tgz", - "integrity": "sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/antfu" - }, - { - "type": "individual", - "url": "https://github.com/sponsors/sxzz" - } - ], - "license": "MIT" - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", - "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-recursion": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", - "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-utilities": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", - "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", - "license": "MIT" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "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, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rolldown": { - "version": "1.0.0-beta.45", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-beta.45.tgz", - "integrity": "sha512-iMmuD72XXLf26Tqrv1cryNYLX6NNPLhZ3AmNkSf8+xda0H+yijjGJ+wVT9UdBUHOpKzq9RjKtQKRCWoEKQQBZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oxc-project/types": "=0.95.0", - "@rolldown/pluginutils": "1.0.0-beta.45" - }, - "bin": { - "rolldown": "bin/cli.mjs" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.0.0-beta.45", - "@rolldown/binding-darwin-arm64": "1.0.0-beta.45", - "@rolldown/binding-darwin-x64": "1.0.0-beta.45", - "@rolldown/binding-freebsd-x64": "1.0.0-beta.45", - "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-beta.45", - "@rolldown/binding-linux-arm64-gnu": "1.0.0-beta.45", - "@rolldown/binding-linux-arm64-musl": "1.0.0-beta.45", - "@rolldown/binding-linux-x64-gnu": "1.0.0-beta.45", - "@rolldown/binding-linux-x64-musl": "1.0.0-beta.45", - "@rolldown/binding-openharmony-arm64": "1.0.0-beta.45", - "@rolldown/binding-wasm32-wasi": "1.0.0-beta.45", - "@rolldown/binding-win32-arm64-msvc": "1.0.0-beta.45", - "@rolldown/binding-win32-ia32-msvc": "1.0.0-beta.45", - "@rolldown/binding-win32-x64-msvc": "1.0.0-beta.45" - } - }, - "node_modules/rolldown-plugin-dts": { - "version": "0.17.8", - "resolved": "https://registry.npmjs.org/rolldown-plugin-dts/-/rolldown-plugin-dts-0.17.8.tgz", - "integrity": "sha512-76EEBlhF00yeY6M7VpMkWKI4r9WjuoMiOGey7j4D6zf3m0BR+ZrrY9hvSXdueJ3ljxSLq4DJBKFpX/X9+L7EKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/generator": "^7.28.5", - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", - "ast-kit": "^2.2.0", - "birpc": "^2.8.0", - "dts-resolver": "^2.1.3", - "get-tsconfig": "^4.13.0", - "magic-string": "^0.30.21", - "obug": "^2.0.0" - }, - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - }, - "peerDependencies": { - "@ts-macro/tsc": "^0.3.6", - "@typescript/native-preview": ">=7.0.0-dev.20250601.1", - "rolldown": "^1.0.0-beta.44", - "typescript": "^5.0.0", - "vue-tsc": "~3.1.0" - }, - "peerDependenciesMeta": { - "@ts-macro/tsc": { - "optional": true - }, - "@typescript/native-preview": { - "optional": true - }, - "typescript": { - "optional": true - }, - "vue-tsc": { - "optional": true - } - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/serialize-javascript": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", - "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", - "dev": true, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true, - "license": "MIT" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.4.tgz", - "integrity": "sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/shiki": { - "version": "3.23.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.23.0.tgz", - "integrity": "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "3.23.0", - "@shikijs/engine-javascript": "3.23.0", - "@shikijs/engine-oniguruma": "3.23.0", - "@shikijs/langs": "3.23.0", - "@shikijs/themes": "3.23.0", - "@shikijs/types": "3.23.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", - "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", - "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/stdin-discarder": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", - "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", - "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "license": "MIT", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", - "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", - "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyrainbow": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", - "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-dedent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "license": "MIT", - "engines": { - "node": ">=6.10" - } - }, - "node_modules/tsdown": { - "version": "0.15.12", - "resolved": "https://registry.npmjs.org/tsdown/-/tsdown-0.15.12.tgz", - "integrity": "sha512-c8VLlQm8/lFrOAg5VMVeN4NAbejZyVQkzd+ErjuaQgJFI/9MhR9ivr0H/CM7UlOF1+ELlF6YaI7sU/4itgGQ8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansis": "^4.2.0", - "cac": "^6.7.14", - "chokidar": "^4.0.3", - "debug": "^4.4.3", - "diff": "^8.0.2", - "empathic": "^2.0.0", - "hookable": "^5.5.3", - "rolldown": "1.0.0-beta.45", - "rolldown-plugin-dts": "^0.17.2", - "semver": "^7.7.3", - "tinyexec": "^1.0.1", - "tinyglobby": "^0.2.15", - "tree-kill": "^1.2.2", - "unconfig": "^7.3.3" - }, - "bin": { - "tsdown": "dist/run.mjs" - }, - "engines": { - "node": ">=20.19.0" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - }, - "peerDependencies": { - "@arethetypeswrong/core": "^0.18.1", - "publint": "^0.3.0", - "typescript": "^5.0.0", - "unplugin-lightningcss": "^0.4.0", - "unplugin-unused": "^0.5.0", - "unrun": "^0.2.1" - }, - "peerDependenciesMeta": { - "@arethetypeswrong/core": { - "optional": true - }, - "publint": { - "optional": true - }, - "typescript": { - "optional": true - }, - "unplugin-lightningcss": { - "optional": true - }, - "unplugin-unused": { - "optional": true - }, - "unrun": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD", - "optional": true - }, - "node_modules/turbo": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.9.14.tgz", - "integrity": "sha512-BQqXRr4UoWI3UPFrtznCLykYHxwxWh53iCB57x092jPMjIlW1wnm3N895g5irpiXmnxUhREBB0n6+y8BHhs4nw==", - "dev": true, - "bin": { - "turbo": "bin/turbo" - }, - "optionalDependencies": { - "@turbo/darwin-64": "2.9.14", - "@turbo/darwin-arm64": "2.9.14", - "@turbo/linux-64": "2.9.14", - "@turbo/linux-arm64": "2.9.14", - "@turbo/windows-64": "2.9.14", - "@turbo/windows-arm64": "2.9.14" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.0.tgz", - "integrity": "sha512-W8GcigEMEeB07xEZol8oJ26rigm3+bfPHxHvwbYUlu1fUDsGuQ7Hiskx5xGW/xM4USc9Ephe3jtv7ZYPQntHeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.57.0", - "@typescript-eslint/parser": "8.57.0", - "@typescript-eslint/typescript-estree": "8.57.0", - "@typescript-eslint/utils": "8.57.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unconfig": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/unconfig/-/unconfig-7.5.0.tgz", - "integrity": "sha512-oi8Qy2JV4D3UQ0PsopR28CzdQ3S/5A1zwsUwp/rosSbfhJ5z7b90bIyTwi/F7hCLD4SGcZVjDzd4XoUQcEanvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@quansync/fs": "^1.0.0", - "defu": "^6.1.4", - "jiti": "^2.6.1", - "quansync": "^1.0.0", - "unconfig-core": "7.5.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/unconfig-core": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/unconfig-core/-/unconfig-core-7.5.0.tgz", - "integrity": "sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@quansync/fs": "^1.0.0", - "quansync": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/unist-util-is": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", - "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", - "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", - "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", - "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vitest": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.2.tgz", - "integrity": "sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/expect": "4.1.2", - "@vitest/mocker": "4.1.2", - "@vitest/pretty-format": "4.1.2", - "@vitest/runner": "4.1.2", - "@vitest/snapshot": "4.1.2", - "@vitest/spy": "4.1.2", - "@vitest/utils": "4.1.2", - "es-module-lexer": "^2.0.0", - "expect-type": "^1.3.0", - "magic-string": "^0.30.21", - "obug": "^2.1.1", - "pathe": "^2.0.3", - "picomatch": "^4.0.3", - "std-env": "^4.0.0-rc.1", - "tinybench": "^2.9.0", - "tinyexec": "^1.0.2", - "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.1.0", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@opentelemetry/api": "^1.9.0", - "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.1.2", - "@vitest/browser-preview": "4.1.2", - "@vitest/browser-webdriverio": "4.1.2", - "@vitest/ui": "4.1.2", - "happy-dom": "*", - "jsdom": "*", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@opentelemetry/api": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser-playwright": { - "optional": true - }, - "@vitest/browser-preview": { - "optional": true - }, - "@vitest/browser-webdriverio": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - }, - "vite": { - "optional": false - } - } - }, - "node_modules/vitest/node_modules/@oxc-project/types": { - "version": "0.132.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.132.0.tgz", - "integrity": "sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Boshen" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-android-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.2.tgz", - "integrity": "sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.2.tgz", - "integrity": "sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-darwin-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.2.tgz", - "integrity": "sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.2.tgz", - "integrity": "sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.2.tgz", - "integrity": "sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.2.tgz", - "integrity": "sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.2.tgz", - "integrity": "sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.2.tgz", - "integrity": "sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.2.tgz", - "integrity": "sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.2.tgz", - "integrity": "sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.2.tgz", - "integrity": "sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.10.0", - "@emnapi/runtime": "1.10.0", - "@napi-rs/wasm-runtime": "^1.1.4" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.2.tgz", - "integrity": "sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.2.tgz", - "integrity": "sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/vitest/node_modules/@rolldown/pluginutils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", - "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", - "dev": true, - "license": "MIT" - }, - "node_modules/vitest/node_modules/@vitest/mocker": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.2.tgz", - "integrity": "sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "4.1.2", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.21" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/rolldown": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.2.tgz", - "integrity": "sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@oxc-project/types": "=0.132.0", - "@rolldown/pluginutils": "^1.0.0" - }, - "bin": { - "rolldown": "bin/cli.mjs" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.0.2", - "@rolldown/binding-darwin-arm64": "1.0.2", - "@rolldown/binding-darwin-x64": "1.0.2", - "@rolldown/binding-freebsd-x64": "1.0.2", - "@rolldown/binding-linux-arm-gnueabihf": "1.0.2", - "@rolldown/binding-linux-arm64-gnu": "1.0.2", - "@rolldown/binding-linux-arm64-musl": "1.0.2", - "@rolldown/binding-linux-ppc64-gnu": "1.0.2", - "@rolldown/binding-linux-s390x-gnu": "1.0.2", - "@rolldown/binding-linux-x64-gnu": "1.0.2", - "@rolldown/binding-linux-x64-musl": "1.0.2", - "@rolldown/binding-openharmony-arm64": "1.0.2", - "@rolldown/binding-wasm32-wasi": "1.0.2", - "@rolldown/binding-win32-arm64-msvc": "1.0.2", - "@rolldown/binding-win32-x64-msvc": "1.0.2" - } - }, - "node_modules/vitest/node_modules/vite": { - "version": "8.0.14", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.14.tgz", - "integrity": "sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "lightningcss": "^1.32.0", - "picomatch": "^4.0.4", - "postcss": "^8.5.15", - "rolldown": "1.0.2", - "tinyglobby": "^0.2.16" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.1.18", - "esbuild": "^0.27.0 || ^0.28.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "@vitejs/devtools": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageclient": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", - "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==", - "license": "MIT", - "dependencies": { - "minimatch": "^5.1.0", - "semver": "^7.3.7", - "vscode-languageserver-protocol": "3.17.5" - }, - "engines": { - "vscode": "^1.82.0" - } - }, - "node_modules/vscode-languageclient/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/vscode-languageclient/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" - } - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "license": "MIT" - }, - "node_modules/vscode-shiki-bridge": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/vscode-shiki-bridge/-/vscode-shiki-bridge-0.5.2.tgz", - "integrity": "sha512-/9YKUFJuNOMxpTFk0PYSSf+p+/jHktBOxMhDe1ueHvT1afhgopg1y5gKQax76gd03gYyb/kRVuiixnT5Utb58A==", - "license": "MIT", - "workspaces": [ - "example/*" - ], - "dependencies": { - "fast-plist": "^0.1.3", - "jsonc-parser": "^3.3.1" - }, - "peerDependencies": { - "@types/vscode": "^1.102.0", - "shiki": "^3.9.2" - } - }, - "node_modules/vscode-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", - "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", - "license": "MIT" - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", - "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workerpool": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", - "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "packages/formatter": { - "name": "@pretty-ts-errors/formatter", - "version": "0.1.8", - "license": "MIT", - "dependencies": { - "@pretty-ts-errors/utils": "*", - "prettier": "^3.6.2" - }, - "devDependencies": { - "@vitest/coverage-v8": "^4.1.2", - "tsdown": "^0.15.6", - "vitest": "^4.1.2" - } - }, - "packages/utils": { - "name": "@pretty-ts-errors/utils", - "dependencies": { - "ts-dedent": "^2.2.0" - }, - "devDependencies": {} - }, - "packages/vscode-formatter": { - "name": "@pretty-ts-errors/vscode-formatter", - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "@pretty-ts-errors/formatter": "*", - "@pretty-ts-errors/utils": "*", - "lz-string": "^1.5.0", - "vscode-languageserver-types": "^3.17.5", - "vscode-uri": "^3.1.0" - }, - "devDependencies": { - "tsdown": "^0.15.6", - "vitest": "^4.1.2" - } - } - } -} diff --git a/package.json b/package.json index 62fd631..7c922df 100644 --- a/package.json +++ b/package.json @@ -1,30 +1,29 @@ { + "name": "pretty-ts-errors-mono", "private": true, - "scripts": { - "build": "turbo run build", - "dev": "turbo run dev", - "lint": "turbo run lint", - "test": "turbo run test", - "format": "prettier --write \"**/*.{ts,tsx,js,mjs,cjs,json,md,yml,yaml,css,html}\"", - "format:check": "prettier --check \"**/*.{ts,tsx,js,mjs,cjs,json,md,yml,yaml,css,html}\"" - }, - "engines": { - "node": ">=20" + "packageManager": "pnpm@11.7.0", + "devEngines": { + "packageManager": { + "name": "pnpm", + "version": "11.7.0", + "onFail": "error" + }, + "runtime": { + "name": "node", + "version": "26.2.0", + "onFail": "error" + } }, "devDependencies": { - "@eslint/js": "^9.15.0", - "@types/node": "^20.19.21", - "eslint": "^9.15.0", - "globals": "^16.4.0", - "prettier": "^3.6.2", - "turbo": "^2.9.14", - "typescript": "^5.7.2", - "typescript-eslint": "^8.15.0" - }, - "name": "pretty-ts-errors-mono", - "packageManager": "npm@10.0.0", - "workspaces": [ - "packages/*", - "apps/*" - ] + "@nx/esbuild": "catalog:", + "@nx/js": "catalog:", + "@eslint/js": "catalog:", + "@types/node": "catalog:", + "eslint": "catalog:", + "globals": "catalog:", + "nx": "catalog:", + "prettier": "catalog:", + "typescript": "catalog:", + "typescript-eslint": "catalog:" + } } diff --git a/packages/error-translator/package.json b/packages/error-translator/package.json new file mode 100644 index 0000000..23d59ab --- /dev/null +++ b/packages/error-translator/package.json @@ -0,0 +1,23 @@ +{ + "name": "@pretty-ts-errors/error-translator", + "private": true, + "version": "0.1.0", + "type": "module", + "description": "Local plain-English translator for TypeScript diagnostics", + "files": [ + "dist/**" + ], + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "default": "./dist/index.js" + } + }, + "license": "MIT", + "devDependencies": { + "vitest": "catalog:" + } +} diff --git a/packages/error-translator/project.json b/packages/error-translator/project.json new file mode 100644 index 0000000..c2f7a1a --- /dev/null +++ b/packages/error-translator/project.json @@ -0,0 +1,55 @@ +{ + "name": "@pretty-ts-errors/error-translator", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/error-translator/src", + "projectType": "library", + "tags": ["scope:packages", "type:library"], + "targets": { + "refresh-diagnostics-db": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "cwd": "packages/error-translator", + "command": "node scripts/refreshTsErrorMessages.mjs" + } + }, + "bundle-data": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "cwd": "packages/error-translator", + "command": "node scripts/bundleErrors.mjs" + } + }, + "build": { + "executor": "@nx/js:tsc", + "dependsOn": ["bundle-data", "^build"], + "outputs": ["{workspaceRoot}/packages/error-translator/dist"], + "options": { + "main": "packages/error-translator/src/index.ts", + "outputPath": "packages/error-translator/dist", + "tsConfig": "packages/error-translator/tsconfig.lib.json", + "rootDir": "packages/error-translator/src", + "generatePackageJson": true, + "generateExportsField": true, + "clean": true, + "assets": ["packages/error-translator/src/generated/*.json"] + } + }, + "lint": { + "executor": "nx:run-commands", + "options": { + "cwd": "packages/error-translator", + "command": "pnpm exec tsc -p tsconfig.json --noEmit" + } + }, + "test": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "cwd": "packages/error-translator", + "command": "pnpm exec vitest run" + } + } + } +} diff --git a/packages/error-translator/scripts/bundleErrors.mjs b/packages/error-translator/scripts/bundleErrors.mjs new file mode 100644 index 0000000..25f9358 --- /dev/null +++ b/packages/error-translator/scripts/bundleErrors.mjs @@ -0,0 +1,55 @@ +import { mkdir, readdir, readFile, writeFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const scriptDir = path.dirname(fileURLToPath(import.meta.url)); +const packageRoot = path.resolve(scriptDir, ".."); +const errorsDir = path.join(packageRoot, "vendor", "matt-pocock", "errors"); +const outputDir = path.join(packageRoot, "src", "generated"); +const outputFile = path.join(outputDir, "bundleErrors.json"); + +function parseTranslationMarkdown(markdown, fileName) { + const match = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/u.exec(markdown); + + if (match === null) { + throw new Error(`Missing front matter in ${fileName}.`); + } + + const body = match[2]?.trim(); + if (body === undefined || body.length === 0) { + throw new Error(`Missing translation body in ${fileName}.`); + } + + return { body }; +} + +async function bundleErrors() { + const files = (await readdir(errorsDir)) + .filter((file) => file.endsWith(".md")) + .sort((left, right) => left.localeCompare(right, "en")); + + const json = {}; + + for (const fileName of files) { + const code = Number(path.parse(fileName).name); + if (!Number.isInteger(code)) { + throw new Error(`Cannot derive numeric diagnostic code from ${fileName}.`); + } + + const markdown = await readFile(path.join(errorsDir, fileName), "utf8"); + const { body } = parseTranslationMarkdown(markdown, fileName); + + json[String(code)] = { + body, + code, + }; + } + + await mkdir(outputDir, { recursive: true }); + await writeFile(outputFile, `${JSON.stringify(json, null, 2)}\n`, "utf8"); +} + +bundleErrors().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/packages/error-translator/scripts/refreshTsErrorMessages.mjs b/packages/error-translator/scripts/refreshTsErrorMessages.mjs new file mode 100644 index 0000000..86ea270 --- /dev/null +++ b/packages/error-translator/scripts/refreshTsErrorMessages.mjs @@ -0,0 +1,52 @@ +import { createRequire } from "node:module"; +import { mkdir, writeFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const require = createRequire(import.meta.url); +const ts = require("typescript"); + +const scriptDir = path.dirname(fileURLToPath(import.meta.url)); +const packageRoot = path.resolve(scriptDir, ".."); +const outputDir = path.join(packageRoot, "src", "generated"); +const outputFile = path.join(outputDir, "tsErrorMessages.json"); + +function getCategoryName(category) { + const categoryName = ts.DiagnosticCategory?.[category]; + return typeof categoryName === "string" ? categoryName : "Error"; +} + +function buildTsErrorMessageDb() { + const diagnostics = Object.values(ts.Diagnostics) + .filter((diagnostic) => { + return ( + typeof diagnostic === "object" && + diagnostic !== null && + typeof diagnostic.code === "number" && + typeof diagnostic.message === "string" + ); + }) + .sort((left, right) => left.code - right.code); + + const database = {}; + + for (const diagnostic of diagnostics) { + database[diagnostic.message] = { + category: getCategoryName(diagnostic.category), + code: diagnostic.code, + }; + } + + return database; +} + +async function main() { + await mkdir(outputDir, { recursive: true }); + const database = buildTsErrorMessageDb(); + await writeFile(outputFile, `${JSON.stringify(database, null, 2)}\n`, "utf8"); +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/packages/error-translator/src/generated/bundleErrors.json b/packages/error-translator/src/generated/bundleErrors.json new file mode 100644 index 0000000..1a8edd3 --- /dev/null +++ b/packages/error-translator/src/generated/bundleErrors.json @@ -0,0 +1,270 @@ +{ + "1002": { + "body": "You've started a string (via a single or double quote) but haven't ended it.", + "code": 1002 + }, + "1003": { + "body": "I was expecting a name but none was provided.", + "code": 1003 + }, + "1006": { + "body": "You've got a triple-slash reference inside a file that's referencing itself.", + "code": 1006 + }, + "1009": { + "body": "You've added a trailing comma when you're not supposed to add it.", + "code": 1009 + }, + "1014": { + "body": "A parameter in a function that starts with `...` must be the last one in the list.", + "code": 1014 + }, + "1015": { + "body": "You can use a question mark or an default value, but not both at once.", + "code": 1015 + }, + "1091": { + "body": "You can only create a single variable in a 'for...in' statement", + "code": 1091 + }, + "1109": { + "body": "I am expecting a code that resolves to a value.", + "code": 1109 + }, + "1117": { + "body": "You can't add the same property multiple times to an object.", + "code": 1117 + }, + "1155": { + "body": "A `const` must be given a value when it's declared.", + "code": 1155 + }, + "1163": { + "body": "The `yield` keyword can only be used inside a generator function", + "code": 1163 + }, + "1208": { + "body": "You have set the 'isolatedModules' flag. Therefore all implementation files must be modules (which means it has some form of import/export). Add an import, export, or an empty 'export {}' statement to make it a module.", + "code": 1208 + }, + "1240": { + "body": "You can't use a decorator on an expression, like an arrow function.", + "code": 1240 + }, + "1254": { + "body": "You can't use runtime code in a declaration file.", + "code": 1254 + }, + "1268": { + "body": "Objects in TypeScript (and JavaScript!) can only have strings, numbers or symbols as keys. [Template literal types](https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html) are a way of constructing strings.", + "code": 1268 + }, + "1313": { + "body": "An if statement shouldn't be empty", + "code": 1313 + }, + "1434": { + "body": "There's a syntax error in your code, so I can't tell exactly what's wrong.", + "code": 1434 + }, + "2304": { + "body": "I can't find the variable you're trying to access.", + "code": 2304 + }, + "2305": { + "body": "'{1}' is not one of the things exported from '{0}'.", + "code": 2305 + }, + "2307": { + "body": "This could be one of two things - either '{0}' doesn't exist on your file system, or I can't find any type declarations for it.", + "code": 2307 + }, + "2312": { + "body": "You might be trying to use an interface to extend a union type. This isn't possible.", + "code": 2312 + }, + "2314": { + "body": "It looks like '{0}' requires '{1}' type arguments, which means you need to pass them in via a generic.", + "code": 2314 + }, + "2322": { + "body": "I was expecting a type matching '{1}', but instead you passed '{0}'.", + "code": 2322 + }, + "2324": { + "body": "You haven't passed all the required properties to '{1}' - you've missed out '{0}'", + "code": 2324 + }, + "2326": { + "body": "Two similar types have a property '{0}' which is different, making them incompatible.", + "code": 2326 + }, + "2327": { + "body": "Property '{0}' in type '{2}' must exist.", + "code": 2327 + }, + "2339": { + "body": "You're trying to access '{0}' on an object that doesn't contain it. [Learn more](https://totaltypescript.com/concepts/property-does-not-exist-on-type).", + "code": 2339 + }, + "2344": { + "body": "You're trying to pass in '{0}' into a slot where I can see only '{1}' can be passed.", + "code": 2344 + }, + "2345": { + "body": "I was expecting '{1}', but you passed '{0}'.", + "code": 2345 + }, + "2349": { + "body": "I can't call this expression because I can't call it like a function.", + "code": 2349 + }, + "2352": { + "body": "You can't use 'as' to convert '{0}' into a '{1}' - they don't share enough in common.", + "code": 2352 + }, + "2353": { + "body": "You can't pass property '{0}' to type '{1}'.", + "code": 2353 + }, + "2355": { + "body": "You set the function return type but it is not returning anything.", + "code": 2355 + }, + "2365": { + "body": "You can't use '{0}' on the types '{1}' and '{2}'.", + "code": 2365 + }, + "2393": { + "body": "You've already declared a function with the same name.", + "code": 2393 + }, + "2414": { + "body": "You can't give a class the name of '{0}' because it's protected by TypeScript.", + "code": 2414 + }, + "2451": { + "body": "'{0}' has already been declared - you can't declare it again. [Learn more](https://www.totaltypescript.com/cannot-redeclare-block-scoped-variable).", + "code": 2451 + }, + "2488": { + "body": "Type '{0}' isn't iterable. To make it iterable, add a [`Symbol.iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator) key.", + "code": 2488 + }, + "2551": { + "body": "You're trying to access '{0}' on an object that doesn't contain it. Did you mean '{2}'?", + "code": 2551 + }, + "2552": { + "body": "You are trying to reference a function or variable which I can't find in the current scope.", + "code": 2552 + }, + "2554": { + "body": "The function you're trying to call needs {0} arguments, but you're passing {1}.", + "code": 2554 + }, + "2556": { + "body": "You're spreading arguments into a function. To do that, either the argument needs to be a tuple OR the function needs to accept a dynamic number of arguments.", + "code": 2556 + }, + "2571": { + "body": "I don't know what type this object is, so I've defaulted it to 'unknown'. [Learn more](https://www.totaltypescript.com/concepts/object-is-of-type-unknown).", + "code": 2571 + }, + "2590": { + "body": "You've created a union type that's too complex for me to handle! 🤯 I can only represent 100,000 combinations in the same union, and you've gone over that limit.", + "code": 2590 + }, + "2604": { + "body": "'{0}' cannot be used as a JSX component because it isn't a function.", + "code": 2604 + }, + "2614": { + "body": "'{1}' is not one of the things exported from '{0}'. Did you mean to import '{1}' from '{0}' instead?", + "code": 2614 + }, + "2686": { + "body": "You might not have configured `jsx` in your `tsconfig.json` correctly. [Learn more](https://www.totaltypescript.com/react-refers-to-a-umd-global).", + "code": 2686 + }, + "2722": { + "body": "This function might be undefined. You'll need to check it's defined before calling it.", + "code": 2722 + }, + "2739": { + "body": "'{0}' is missing some required properties from type '{1}': {2}.", + "code": 2739 + }, + "2741": { + "body": "You haven't passed all the required properties to '{2}' - '{1}' is missing the '{0}' property.", + "code": 2741 + }, + "2749": { + "body": "You're trying to use a JavaScript variable where you should be passing a type.", + "code": 2749 + }, + "2761": { + "body": "Type '{0}' is not a class.", + "code": 2761 + }, + "2775": { + "body": "You might be using an `asserts` keyword on an arrow function. If you are, change the function to use the `function` keyword.", + "code": 2775 + }, + "2783": { + "body": "'{0}' will be overwritten by the spread.", + "code": 2783 + }, + "5075": { + "body": "You're passing a type '{0}' into a slot which is too narrow. It could be as wide as anything assignable to '{2}'.", + "code": 5075 + }, + "6133": { + "body": "I noticed that '{0}' has been declared, but it's never used in the code.", + "code": 6133 + }, + "6142": { + "body": "You can't import `.jsx` or `.tsx` files until you set `jsx` in your `tsconfig.json`.", + "code": 6142 + }, + "6244": { + "body": "You can't use const enums when `isolatedModules` is enabled.", + "code": 6244 + }, + "7006": { + "body": "I don't know what type '{0}' is supposed to be, so I've defaulted it to '{1}'. Your `tsconfig.json` file says I should throw an error here. [Learn more](https://www.totaltypescript.com/tutorials/beginners-typescript/beginner-s-typescript-section/implicit-any-type-error).", + "code": 7006 + }, + "7026": { + "body": "`JSX.IntrinsicElements` has not been declared in the global scope. [Learn more](https://www.totaltypescript.com/what-is-jsx-intrinsicelements).", + "code": 7026 + }, + "7053": { + "body": "You can't use '{0}' to index into '{1}'. [This article](https://www.totaltypescript.com/concepts/type-string-cannot-be-used-to-index-type) might help.", + "code": 7053 + }, + "7057": { + "body": "I don't know enough about your generator function's return type to safely infer here.", + "code": 7057 + }, + "7061": { + "body": "You're trying to create a mapped type with both static and dynamic properties.", + "code": 7061 + }, + "8016": { + "body": "You can't use type assertions because this isn't a TypeScript file.", + "code": 8016 + }, + "17004": { + "body": "You can't use JSX yet because you haven't added `jsx` to your `tsconfig.json`. [Learn more](https://www.totaltypescript.com/cannot-use-jsx-unless-the-jsx-flag-is-provided).", + "code": 17004 + }, + "18004": { + "body": "You're trying to pass '{0}' as a key AND value to this object using a shorthand. You'll need to declare '{0}' as a variable first.", + "code": 18004 + }, + "95050": { + "body": "I've spotted a bit of code that will never be run.", + "code": 95050 + } +} diff --git a/packages/error-translator/src/generated/tsErrorMessages.json b/packages/error-translator/src/generated/tsErrorMessages.json new file mode 100644 index 0000000..126900a --- /dev/null +++ b/packages/error-translator/src/generated/tsErrorMessages.json @@ -0,0 +1,8522 @@ +{ + "Unterminated string literal.": { + "category": "Error", + "code": 1002 + }, + "Identifier expected.": { + "category": "Error", + "code": 1003 + }, + "'{0}' expected.": { + "category": "Error", + "code": 1005 + }, + "A file cannot have a reference to itself.": { + "category": "Error", + "code": 1006 + }, + "The parser expected to find a '{1}' to match the '{0}' token here.": { + "category": "Error", + "code": 1007 + }, + "Trailing comma not allowed.": { + "category": "Error", + "code": 1009 + }, + "'*/' expected.": { + "category": "Error", + "code": 1010 + }, + "An element access expression should take an argument.": { + "category": "Error", + "code": 1011 + }, + "Unexpected token.": { + "category": "Error", + "code": 1012 + }, + "A rest parameter or binding pattern may not have a trailing comma.": { + "category": "Error", + "code": 1013 + }, + "A rest parameter must be last in a parameter list.": { + "category": "Error", + "code": 1014 + }, + "Parameter cannot have question mark and initializer.": { + "category": "Error", + "code": 1015 + }, + "A required parameter cannot follow an optional parameter.": { + "category": "Error", + "code": 1016 + }, + "An index signature cannot have a rest parameter.": { + "category": "Error", + "code": 1017 + }, + "An index signature parameter cannot have an accessibility modifier.": { + "category": "Error", + "code": 1018 + }, + "An index signature parameter cannot have a question mark.": { + "category": "Error", + "code": 1019 + }, + "An index signature parameter cannot have an initializer.": { + "category": "Error", + "code": 1020 + }, + "An index signature must have a type annotation.": { + "category": "Error", + "code": 1021 + }, + "An index signature parameter must have a type annotation.": { + "category": "Error", + "code": 1022 + }, + "'readonly' modifier can only appear on a property declaration or index signature.": { + "category": "Error", + "code": 1024 + }, + "An index signature cannot have a trailing comma.": { + "category": "Error", + "code": 1025 + }, + "Accessibility modifier already seen.": { + "category": "Error", + "code": 1028 + }, + "'{0}' modifier must precede '{1}' modifier.": { + "category": "Error", + "code": 1029 + }, + "'{0}' modifier already seen.": { + "category": "Error", + "code": 1030 + }, + "'{0}' modifier cannot appear on class elements of this kind.": { + "category": "Error", + "code": 1031 + }, + "'super' must be followed by an argument list or member access.": { + "category": "Error", + "code": 1034 + }, + "Only ambient modules can use quoted names.": { + "category": "Error", + "code": 1035 + }, + "Statements are not allowed in ambient contexts.": { + "category": "Error", + "code": 1036 + }, + "A 'declare' modifier cannot be used in an already ambient context.": { + "category": "Error", + "code": 1038 + }, + "Initializers are not allowed in ambient contexts.": { + "category": "Error", + "code": 1039 + }, + "'{0}' modifier cannot be used in an ambient context.": { + "category": "Error", + "code": 1040 + }, + "'{0}' modifier cannot be used here.": { + "category": "Error", + "code": 1042 + }, + "'{0}' modifier cannot appear on a module or namespace element.": { + "category": "Error", + "code": 1044 + }, + "Top-level declarations in .d.ts files must start with either a 'declare' or 'export' modifier.": { + "category": "Error", + "code": 1046 + }, + "A rest parameter cannot be optional.": { + "category": "Error", + "code": 1047 + }, + "A rest parameter cannot have an initializer.": { + "category": "Error", + "code": 1048 + }, + "A 'set' accessor must have exactly one parameter.": { + "category": "Error", + "code": 1049 + }, + "A 'set' accessor cannot have an optional parameter.": { + "category": "Error", + "code": 1051 + }, + "A 'set' accessor parameter cannot have an initializer.": { + "category": "Error", + "code": 1052 + }, + "A 'set' accessor cannot have rest parameter.": { + "category": "Error", + "code": 1053 + }, + "A 'get' accessor cannot have parameters.": { + "category": "Error", + "code": 1054 + }, + "Type '{0}' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value.": { + "category": "Error", + "code": 1055 + }, + "Accessors are only available when targeting ECMAScript 5 and higher.": { + "category": "Error", + "code": 1056 + }, + "The return type of an async function must either be a valid promise or must not contain a callable 'then' member.": { + "category": "Error", + "code": 1058 + }, + "A promise must have a 'then' method.": { + "category": "Error", + "code": 1059 + }, + "The first parameter of the 'then' method of a promise must be a callback.": { + "category": "Error", + "code": 1060 + }, + "Enum member must have initializer.": { + "category": "Error", + "code": 1061 + }, + "Type is referenced directly or indirectly in the fulfillment callback of its own 'then' method.": { + "category": "Error", + "code": 1062 + }, + "An export assignment cannot be used in a namespace.": { + "category": "Error", + "code": 1063 + }, + "The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise<{0}>'?": { + "category": "Error", + "code": 1064 + }, + "The return type of an async function or method must be the global Promise type.": { + "category": "Error", + "code": 1065 + }, + "In ambient enum declarations member initializer must be constant expression.": { + "category": "Error", + "code": 1066 + }, + "Unexpected token. A constructor, method, accessor, or property was expected.": { + "category": "Error", + "code": 1068 + }, + "Unexpected token. A type parameter name was expected without curly braces.": { + "category": "Error", + "code": 1069 + }, + "'{0}' modifier cannot appear on a type member.": { + "category": "Error", + "code": 1070 + }, + "'{0}' modifier cannot appear on an index signature.": { + "category": "Error", + "code": 1071 + }, + "A '{0}' modifier cannot be used with an import declaration.": { + "category": "Error", + "code": 1079 + }, + "Invalid 'reference' directive syntax.": { + "category": "Error", + "code": 1084 + }, + "'{0}' modifier cannot appear on a constructor declaration.": { + "category": "Error", + "code": 1089 + }, + "'{0}' modifier cannot appear on a parameter.": { + "category": "Error", + "code": 1090 + }, + "Only a single variable declaration is allowed in a 'for...in' statement.": { + "category": "Error", + "code": 1091 + }, + "Type parameters cannot appear on a constructor declaration.": { + "category": "Error", + "code": 1092 + }, + "Type annotation cannot appear on a constructor declaration.": { + "category": "Error", + "code": 1093 + }, + "An accessor cannot have type parameters.": { + "category": "Error", + "code": 1094 + }, + "A 'set' accessor cannot have a return type annotation.": { + "category": "Error", + "code": 1095 + }, + "An index signature must have exactly one parameter.": { + "category": "Error", + "code": 1096 + }, + "'{0}' list cannot be empty.": { + "category": "Error", + "code": 1097 + }, + "Type parameter list cannot be empty.": { + "category": "Error", + "code": 1098 + }, + "Type argument list cannot be empty.": { + "category": "Error", + "code": 1099 + }, + "Invalid use of '{0}' in strict mode.": { + "category": "Error", + "code": 1100 + }, + "'with' statements are not allowed in strict mode.": { + "category": "Error", + "code": 1101 + }, + "'delete' cannot be called on an identifier in strict mode.": { + "category": "Error", + "code": 1102 + }, + "'for await' loops are only allowed within async functions and at the top levels of modules.": { + "category": "Error", + "code": 1103 + }, + "A 'continue' statement can only be used within an enclosing iteration statement.": { + "category": "Error", + "code": 1104 + }, + "A 'break' statement can only be used within an enclosing iteration or switch statement.": { + "category": "Error", + "code": 1105 + }, + "The left-hand side of a 'for...of' statement may not be 'async'.": { + "category": "Error", + "code": 1106 + }, + "Jump target cannot cross function boundary.": { + "category": "Error", + "code": 1107 + }, + "A 'return' statement can only be used within a function body.": { + "category": "Error", + "code": 1108 + }, + "Expression expected.": { + "category": "Error", + "code": 1109 + }, + "Type expected.": { + "category": "Error", + "code": 1110 + }, + "Private field '{0}' must be declared in an enclosing class.": { + "category": "Error", + "code": 1111 + }, + "A 'default' clause cannot appear more than once in a 'switch' statement.": { + "category": "Error", + "code": 1113 + }, + "Duplicate label '{0}'.": { + "category": "Error", + "code": 1114 + }, + "A 'continue' statement can only jump to a label of an enclosing iteration statement.": { + "category": "Error", + "code": 1115 + }, + "A 'break' statement can only jump to a label of an enclosing statement.": { + "category": "Error", + "code": 1116 + }, + "An object literal cannot have multiple properties with the same name.": { + "category": "Error", + "code": 1117 + }, + "An object literal cannot have multiple get/set accessors with the same name.": { + "category": "Error", + "code": 1118 + }, + "An object literal cannot have property and accessor with the same name.": { + "category": "Error", + "code": 1119 + }, + "An export assignment cannot have modifiers.": { + "category": "Error", + "code": 1120 + }, + "Octal literals are not allowed. Use the syntax '{0}'.": { + "category": "Error", + "code": 1121 + }, + "Variable declaration list cannot be empty.": { + "category": "Error", + "code": 1123 + }, + "Digit expected.": { + "category": "Error", + "code": 1124 + }, + "Hexadecimal digit expected.": { + "category": "Error", + "code": 1125 + }, + "Unexpected end of text.": { + "category": "Error", + "code": 1126 + }, + "Invalid character.": { + "category": "Error", + "code": 1127 + }, + "Declaration or statement expected.": { + "category": "Error", + "code": 1128 + }, + "Statement expected.": { + "category": "Error", + "code": 1129 + }, + "'case' or 'default' expected.": { + "category": "Error", + "code": 1130 + }, + "Property or signature expected.": { + "category": "Error", + "code": 1131 + }, + "Enum member expected.": { + "category": "Error", + "code": 1132 + }, + "Variable declaration expected.": { + "category": "Error", + "code": 1134 + }, + "Argument expression expected.": { + "category": "Error", + "code": 1135 + }, + "Property assignment expected.": { + "category": "Error", + "code": 1136 + }, + "Expression or comma expected.": { + "category": "Error", + "code": 1137 + }, + "Parameter declaration expected.": { + "category": "Error", + "code": 1138 + }, + "Type parameter declaration expected.": { + "category": "Error", + "code": 1139 + }, + "Type argument expected.": { + "category": "Error", + "code": 1140 + }, + "String literal expected.": { + "category": "Error", + "code": 1141 + }, + "Line break not permitted here.": { + "category": "Error", + "code": 1142 + }, + "'{' or ';' expected.": { + "category": "Error", + "code": 1144 + }, + "'{' or JSX element expected.": { + "category": "Error", + "code": 1145 + }, + "Declaration expected.": { + "category": "Error", + "code": 1146 + }, + "Import declarations in a namespace cannot reference a module.": { + "category": "Error", + "code": 1147 + }, + "Cannot use imports, exports, or module augmentations when '--module' is 'none'.": { + "category": "Error", + "code": 1148 + }, + "File name '{0}' differs from already included file name '{1}' only in casing.": { + "category": "Error", + "code": 1149 + }, + "'{0}' declarations must be initialized.": { + "category": "Error", + "code": 1155 + }, + "'{0}' declarations can only be declared inside a block.": { + "category": "Error", + "code": 1156 + }, + "Unterminated template literal.": { + "category": "Error", + "code": 1160 + }, + "Unterminated regular expression literal.": { + "category": "Error", + "code": 1161 + }, + "An object member cannot be declared optional.": { + "category": "Error", + "code": 1162 + }, + "A 'yield' expression is only allowed in a generator body.": { + "category": "Error", + "code": 1163 + }, + "Computed property names are not allowed in enums.": { + "category": "Error", + "code": 1164 + }, + "A computed property name in an ambient context must refer to an expression whose type is a literal type or a 'unique symbol' type.": { + "category": "Error", + "code": 1165 + }, + "A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type.": { + "category": "Error", + "code": 1166 + }, + "A computed property name in a method overload must refer to an expression whose type is a literal type or a 'unique symbol' type.": { + "category": "Error", + "code": 1168 + }, + "A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type.": { + "category": "Error", + "code": 1169 + }, + "A computed property name in a type literal must refer to an expression whose type is a literal type or a 'unique symbol' type.": { + "category": "Error", + "code": 1170 + }, + "A comma expression is not allowed in a computed property name.": { + "category": "Error", + "code": 1171 + }, + "'extends' clause already seen.": { + "category": "Error", + "code": 1172 + }, + "'extends' clause must precede 'implements' clause.": { + "category": "Error", + "code": 1173 + }, + "Classes can only extend a single class.": { + "category": "Error", + "code": 1174 + }, + "'implements' clause already seen.": { + "category": "Error", + "code": 1175 + }, + "Interface declaration cannot have 'implements' clause.": { + "category": "Error", + "code": 1176 + }, + "Binary digit expected.": { + "category": "Error", + "code": 1177 + }, + "Octal digit expected.": { + "category": "Error", + "code": 1178 + }, + "Unexpected token. '{' expected.": { + "category": "Error", + "code": 1179 + }, + "Property destructuring pattern expected.": { + "category": "Error", + "code": 1180 + }, + "Array element destructuring pattern expected.": { + "category": "Error", + "code": 1181 + }, + "A destructuring declaration must have an initializer.": { + "category": "Error", + "code": 1182 + }, + "An implementation cannot be declared in ambient contexts.": { + "category": "Error", + "code": 1183 + }, + "Modifiers cannot appear here.": { + "category": "Error", + "code": 1184 + }, + "Merge conflict marker encountered.": { + "category": "Error", + "code": 1185 + }, + "A rest element cannot have an initializer.": { + "category": "Error", + "code": 1186 + }, + "A parameter property may not be declared using a binding pattern.": { + "category": "Error", + "code": 1187 + }, + "Only a single variable declaration is allowed in a 'for...of' statement.": { + "category": "Error", + "code": 1188 + }, + "The variable declaration of a 'for...in' statement cannot have an initializer.": { + "category": "Error", + "code": 1189 + }, + "The variable declaration of a 'for...of' statement cannot have an initializer.": { + "category": "Error", + "code": 1190 + }, + "An import declaration cannot have modifiers.": { + "category": "Error", + "code": 1191 + }, + "Module '{0}' has no default export.": { + "category": "Error", + "code": 1192 + }, + "An export declaration cannot have modifiers.": { + "category": "Error", + "code": 1193 + }, + "Export declarations are not permitted in a namespace.": { + "category": "Error", + "code": 1194 + }, + "'export *' does not re-export a default.": { + "category": "Error", + "code": 1195 + }, + "Catch clause variable type annotation must be 'any' or 'unknown' if specified.": { + "category": "Error", + "code": 1196 + }, + "Catch clause variable cannot have an initializer.": { + "category": "Error", + "code": 1197 + }, + "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.": { + "category": "Error", + "code": 1198 + }, + "Unterminated Unicode escape sequence.": { + "category": "Error", + "code": 1199 + }, + "Line terminator not permitted before arrow.": { + "category": "Error", + "code": 1200 + }, + "Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"', 'import d from \"mod\"', or another module format instead.": { + "category": "Error", + "code": 1202 + }, + "Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead.": { + "category": "Error", + "code": 1203 + }, + "Re-exporting a type when '{0}' is enabled requires using 'export type'.": { + "category": "Error", + "code": 1205 + }, + "Decorators are not valid here.": { + "category": "Error", + "code": 1206 + }, + "Decorators cannot be applied to multiple get/set accessors of the same name.": { + "category": "Error", + "code": 1207 + }, + "Invalid optional chain from new expression. Did you mean to call '{0}()'?": { + "category": "Error", + "code": 1209 + }, + "Code contained in a class is evaluated in JavaScript's strict mode which does not allow this use of '{0}'. For more information, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode.": { + "category": "Error", + "code": 1210 + }, + "A class declaration without the 'default' modifier must have a name.": { + "category": "Error", + "code": 1211 + }, + "Identifier expected. '{0}' is a reserved word in strict mode.": { + "category": "Error", + "code": 1212 + }, + "Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode.": { + "category": "Error", + "code": 1213 + }, + "Identifier expected. '{0}' is a reserved word in strict mode. Modules are automatically in strict mode.": { + "category": "Error", + "code": 1214 + }, + "Invalid use of '{0}'. Modules are automatically in strict mode.": { + "category": "Error", + "code": 1215 + }, + "Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules.": { + "category": "Error", + "code": 1216 + }, + "Export assignment is not supported when '--module' flag is 'system'.": { + "category": "Error", + "code": 1218 + }, + "Generators are not allowed in an ambient context.": { + "category": "Error", + "code": 1221 + }, + "An overload signature cannot be declared as a generator.": { + "category": "Error", + "code": 1222 + }, + "'{0}' tag already specified.": { + "category": "Error", + "code": 1223 + }, + "Signature '{0}' must be a type predicate.": { + "category": "Error", + "code": 1224 + }, + "Cannot find parameter '{0}'.": { + "category": "Error", + "code": 1225 + }, + "Type predicate '{0}' is not assignable to '{1}'.": { + "category": "Error", + "code": 1226 + }, + "Parameter '{0}' is not in the same position as parameter '{1}'.": { + "category": "Error", + "code": 1227 + }, + "A type predicate is only allowed in return type position for functions and methods.": { + "category": "Error", + "code": 1228 + }, + "A type predicate cannot reference a rest parameter.": { + "category": "Error", + "code": 1229 + }, + "A type predicate cannot reference element '{0}' in a binding pattern.": { + "category": "Error", + "code": 1230 + }, + "An export assignment must be at the top level of a file or module declaration.": { + "category": "Error", + "code": 1231 + }, + "An import declaration can only be used at the top level of a namespace or module.": { + "category": "Error", + "code": 1232 + }, + "An export declaration can only be used at the top level of a namespace or module.": { + "category": "Error", + "code": 1233 + }, + "An ambient module declaration is only allowed at the top level in a file.": { + "category": "Error", + "code": 1234 + }, + "A namespace declaration is only allowed at the top level of a namespace or module.": { + "category": "Error", + "code": 1235 + }, + "The return type of a property decorator function must be either 'void' or 'any'.": { + "category": "Error", + "code": 1236 + }, + "The return type of a parameter decorator function must be either 'void' or 'any'.": { + "category": "Error", + "code": 1237 + }, + "Unable to resolve signature of class decorator when called as an expression.": { + "category": "Error", + "code": 1238 + }, + "Unable to resolve signature of parameter decorator when called as an expression.": { + "category": "Error", + "code": 1239 + }, + "Unable to resolve signature of property decorator when called as an expression.": { + "category": "Error", + "code": 1240 + }, + "Unable to resolve signature of method decorator when called as an expression.": { + "category": "Error", + "code": 1241 + }, + "'abstract' modifier can only appear on a class, method, or property declaration.": { + "category": "Error", + "code": 1242 + }, + "'{0}' modifier cannot be used with '{1}' modifier.": { + "category": "Error", + "code": 1243 + }, + "Abstract methods can only appear within an abstract class.": { + "category": "Error", + "code": 1244 + }, + "Method '{0}' cannot have an implementation because it is marked abstract.": { + "category": "Error", + "code": 1245 + }, + "An interface property cannot have an initializer.": { + "category": "Error", + "code": 1246 + }, + "A type literal property cannot have an initializer.": { + "category": "Error", + "code": 1247 + }, + "A class member cannot have the '{0}' keyword.": { + "category": "Error", + "code": 1248 + }, + "A decorator can only decorate a method implementation, not an overload.": { + "category": "Error", + "code": 1249 + }, + "Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'.": { + "category": "Error", + "code": 1250 + }, + "Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. Class definitions are automatically in strict mode.": { + "category": "Error", + "code": 1251 + }, + "Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. Modules are automatically in strict mode.": { + "category": "Error", + "code": 1252 + }, + "Abstract properties can only appear within an abstract class.": { + "category": "Error", + "code": 1253 + }, + "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.": { + "category": "Error", + "code": 1254 + }, + "A definite assignment assertion '!' is not permitted in this context.": { + "category": "Error", + "code": 1255 + }, + "A required element cannot follow an optional element.": { + "category": "Error", + "code": 1257 + }, + "A default export must be at the top level of a file or module declaration.": { + "category": "Error", + "code": 1258 + }, + "Module '{0}' can only be default-imported using the '{1}' flag": { + "category": "Error", + "code": 1259 + }, + "Keywords cannot contain escape characters.": { + "category": "Error", + "code": 1260 + }, + "Already included file name '{0}' differs from file name '{1}' only in casing.": { + "category": "Error", + "code": 1261 + }, + "Identifier expected. '{0}' is a reserved word at the top-level of a module.": { + "category": "Error", + "code": 1262 + }, + "Declarations with initializers cannot also have definite assignment assertions.": { + "category": "Error", + "code": 1263 + }, + "Declarations with definite assignment assertions must also have type annotations.": { + "category": "Error", + "code": 1264 + }, + "A rest element cannot follow another rest element.": { + "category": "Error", + "code": 1265 + }, + "An optional element cannot follow a rest element.": { + "category": "Error", + "code": 1266 + }, + "Property '{0}' cannot have an initializer because it is marked abstract.": { + "category": "Error", + "code": 1267 + }, + "An index signature parameter type must be 'string', 'number', 'symbol', or a template literal type.": { + "category": "Error", + "code": 1268 + }, + "Cannot use 'export import' on a type or type-only namespace when '{0}' is enabled.": { + "category": "Error", + "code": 1269 + }, + "Decorator function return type '{0}' is not assignable to type '{1}'.": { + "category": "Error", + "code": 1270 + }, + "Decorator function return type is '{0}' but is expected to be 'void' or 'any'.": { + "category": "Error", + "code": 1271 + }, + "A type referenced in a decorated signature must be imported with 'import type' or a namespace import when 'isolatedModules' and 'emitDecoratorMetadata' are enabled.": { + "category": "Error", + "code": 1272 + }, + "'{0}' modifier cannot appear on a type parameter": { + "category": "Error", + "code": 1273 + }, + "'{0}' modifier can only appear on a type parameter of a class, interface or type alias": { + "category": "Error", + "code": 1274 + }, + "'accessor' modifier can only appear on a property declaration.": { + "category": "Error", + "code": 1275 + }, + "An 'accessor' property cannot be declared optional.": { + "category": "Error", + "code": 1276 + }, + "'{0}' modifier can only appear on a type parameter of a function, method or class": { + "category": "Error", + "code": 1277 + }, + "The runtime will invoke the decorator with {1} arguments, but the decorator expects {0}.": { + "category": "Error", + "code": 1278 + }, + "The runtime will invoke the decorator with {1} arguments, but the decorator expects at least {0}.": { + "category": "Error", + "code": 1279 + }, + "Namespaces are not allowed in global script files when '{0}' is enabled. If this file is not intended to be a global script, set 'moduleDetection' to 'force' or add an empty 'export {}' statement.": { + "category": "Error", + "code": 1280 + }, + "Cannot access '{0}' from another file without qualification when '{1}' is enabled. Use '{2}' instead.": { + "category": "Error", + "code": 1281 + }, + "An 'export =' declaration must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type.": { + "category": "Error", + "code": 1282 + }, + "An 'export =' declaration must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration.": { + "category": "Error", + "code": 1283 + }, + "An 'export default' must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type.": { + "category": "Error", + "code": 1284 + }, + "An 'export default' must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration.": { + "category": "Error", + "code": 1285 + }, + "ECMAScript imports and exports cannot be written in a CommonJS file under 'verbatimModuleSyntax'.": { + "category": "Error", + "code": 1286 + }, + "A top-level 'export' modifier cannot be used on value declarations in a CommonJS module when 'verbatimModuleSyntax' is enabled.": { + "category": "Error", + "code": 1287 + }, + "An import alias cannot resolve to a type or type-only declaration when 'verbatimModuleSyntax' is enabled.": { + "category": "Error", + "code": 1288 + }, + "'{0}' resolves to a type-only declaration and must be marked type-only in this file before re-exporting when '{1}' is enabled. Consider using 'import type' where '{0}' is imported.": { + "category": "Error", + "code": 1289 + }, + "'{0}' resolves to a type-only declaration and must be marked type-only in this file before re-exporting when '{1}' is enabled. Consider using 'export type { {0} as default }'.": { + "category": "Error", + "code": 1290 + }, + "'{0}' resolves to a type and must be marked type-only in this file before re-exporting when '{1}' is enabled. Consider using 'import type' where '{0}' is imported.": { + "category": "Error", + "code": 1291 + }, + "'{0}' resolves to a type and must be marked type-only in this file before re-exporting when '{1}' is enabled. Consider using 'export type { {0} as default }'.": { + "category": "Error", + "code": 1292 + }, + "ECMAScript module syntax is not allowed in a CommonJS module when 'module' is set to 'preserve'.": { + "category": "Error", + "code": 1293 + }, + "This syntax is not allowed when 'erasableSyntaxOnly' is enabled.": { + "category": "Error", + "code": 1294 + }, + "ECMAScript imports and exports cannot be written in a CommonJS file under 'verbatimModuleSyntax'. Adjust the 'type' field in the nearest 'package.json' to make this file an ECMAScript module, or adjust your 'verbatimModuleSyntax', 'module', and 'moduleResolution' settings in TypeScript.": { + "category": "Error", + "code": 1295 + }, + "'with' statements are not allowed in an async function block.": { + "category": "Error", + "code": 1300 + }, + "'await' expressions are only allowed within async functions and at the top levels of modules.": { + "category": "Error", + "code": 1308 + }, + "The current file is a CommonJS module and cannot use 'await' at the top level.": { + "category": "Error", + "code": 1309 + }, + "Did you mean to use a ':'? An '=' can only follow a property name when the containing object literal is part of a destructuring pattern.": { + "category": "Error", + "code": 1312 + }, + "The body of an 'if' statement cannot be the empty statement.": { + "category": "Error", + "code": 1313 + }, + "Global module exports may only appear in module files.": { + "category": "Error", + "code": 1314 + }, + "Global module exports may only appear in declaration files.": { + "category": "Error", + "code": 1315 + }, + "Global module exports may only appear at top level.": { + "category": "Error", + "code": 1316 + }, + "A parameter property cannot be declared using a rest parameter.": { + "category": "Error", + "code": 1317 + }, + "An abstract accessor cannot have an implementation.": { + "category": "Error", + "code": 1318 + }, + "A default export can only be used in an ECMAScript-style module.": { + "category": "Error", + "code": 1319 + }, + "Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member.": { + "category": "Error", + "code": 1320 + }, + "Type of 'yield' operand in an async generator must either be a valid promise or must not contain a callable 'then' member.": { + "category": "Error", + "code": 1321 + }, + "Type of iterated elements of a 'yield*' operand must either be a valid promise or must not contain a callable 'then' member.": { + "category": "Error", + "code": 1322 + }, + "Dynamic imports are only supported when the '--module' flag is set to 'es2020', 'es2022', 'esnext', 'commonjs', 'amd', 'system', 'umd', 'node16', 'node18', 'node20', or 'nodenext'.": { + "category": "Error", + "code": 1323 + }, + "Dynamic imports only support a second argument when the '--module' option is set to 'esnext', 'node16', 'node18', 'node20', 'nodenext', or 'preserve'.": { + "category": "Error", + "code": 1324 + }, + "Argument of dynamic import cannot be spread element.": { + "category": "Error", + "code": 1325 + }, + "This use of 'import' is invalid. 'import()' calls can be written, but they must have parentheses and cannot have type arguments.": { + "category": "Error", + "code": 1326 + }, + "String literal with double quotes expected.": { + "category": "Error", + "code": 1327 + }, + "Property value can only be string literal, numeric literal, 'true', 'false', 'null', object literal or array literal.": { + "category": "Error", + "code": 1328 + }, + "'{0}' accepts too few arguments to be used as a decorator here. Did you mean to call it first and write '@{0}()'?": { + "category": "Error", + "code": 1329 + }, + "A property of an interface or type literal whose type is a 'unique symbol' type must be 'readonly'.": { + "category": "Error", + "code": 1330 + }, + "A property of a class whose type is a 'unique symbol' type must be both 'static' and 'readonly'.": { + "category": "Error", + "code": 1331 + }, + "A variable whose type is a 'unique symbol' type must be 'const'.": { + "category": "Error", + "code": 1332 + }, + "'unique symbol' types may not be used on a variable declaration with a binding name.": { + "category": "Error", + "code": 1333 + }, + "'unique symbol' types are only allowed on variables in a variable statement.": { + "category": "Error", + "code": 1334 + }, + "'unique symbol' types are not allowed here.": { + "category": "Error", + "code": 1335 + }, + "An index signature parameter type cannot be a literal type or generic type. Consider using a mapped object type instead.": { + "category": "Error", + "code": 1337 + }, + "'infer' declarations are only permitted in the 'extends' clause of a conditional type.": { + "category": "Error", + "code": 1338 + }, + "Module '{0}' does not refer to a value, but is used as a value here.": { + "category": "Error", + "code": 1339 + }, + "Module '{0}' does not refer to a type, but is used as a type here. Did you mean 'typeof import('{0}')'?": { + "category": "Error", + "code": 1340 + }, + "Class constructor may not be an accessor.": { + "category": "Error", + "code": 1341 + }, + "The 'import.meta' meta-property is only allowed when the '--module' option is 'es2020', 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', or 'nodenext'.": { + "category": "Error", + "code": 1343 + }, + "'A label is not allowed here.": { + "category": "Error", + "code": 1344 + }, + "An expression of type 'void' cannot be tested for truthiness.": { + "category": "Error", + "code": 1345 + }, + "This parameter is not allowed with 'use strict' directive.": { + "category": "Error", + "code": 1346 + }, + "'use strict' directive cannot be used with non-simple parameter list.": { + "category": "Error", + "code": 1347 + }, + "Non-simple parameter declared here.": { + "category": "Error", + "code": 1348 + }, + "'use strict' directive used here.": { + "category": "Error", + "code": 1349 + }, + "Print the final configuration instead of building.": { + "category": "Message", + "code": 1350 + }, + "An identifier or keyword cannot immediately follow a numeric literal.": { + "category": "Error", + "code": 1351 + }, + "A bigint literal cannot use exponential notation.": { + "category": "Error", + "code": 1352 + }, + "A bigint literal must be an integer.": { + "category": "Error", + "code": 1353 + }, + "'readonly' type modifier is only permitted on array and tuple literal types.": { + "category": "Error", + "code": 1354 + }, + "A 'const' assertion can only be applied to references to enum members, or string, number, boolean, array, or object literals.": { + "category": "Error", + "code": 1355 + }, + "Did you mean to mark this function as 'async'?": { + "category": "Error", + "code": 1356 + }, + "An enum member name must be followed by a ',', '=', or '}'.": { + "category": "Error", + "code": 1357 + }, + "Tagged template expressions are not permitted in an optional chain.": { + "category": "Error", + "code": 1358 + }, + "Identifier expected. '{0}' is a reserved word that cannot be used here.": { + "category": "Error", + "code": 1359 + }, + "Type '{0}' does not satisfy the expected type '{1}'.": { + "category": "Error", + "code": 1360 + }, + "'{0}' cannot be used as a value because it was imported using 'import type'.": { + "category": "Error", + "code": 1361 + }, + "'{0}' cannot be used as a value because it was exported using 'export type'.": { + "category": "Error", + "code": 1362 + }, + "A type-only import can specify a default import or named bindings, but not both.": { + "category": "Error", + "code": 1363 + }, + "Convert to type-only export": { + "category": "Message", + "code": 1364 + }, + "Convert all re-exported types to type-only exports": { + "category": "Message", + "code": 1365 + }, + "Split into two separate import declarations": { + "category": "Message", + "code": 1366 + }, + "Split all invalid type-only imports": { + "category": "Message", + "code": 1367 + }, + "Class constructor may not be a generator.": { + "category": "Error", + "code": 1368 + }, + "Did you mean '{0}'?": { + "category": "Message", + "code": 1369 + }, + "'await' expressions are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.": { + "category": "Error", + "code": 1375 + }, + "'{0}' was imported here.": { + "category": "Message", + "code": 1376 + }, + "'{0}' was exported here.": { + "category": "Message", + "code": 1377 + }, + "Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher.": { + "category": "Error", + "code": 1378 + }, + "An import alias cannot reference a declaration that was exported using 'export type'.": { + "category": "Error", + "code": 1379 + }, + "An import alias cannot reference a declaration that was imported using 'import type'.": { + "category": "Error", + "code": 1380 + }, + "Unexpected token. Did you mean `{'}'}` or `}`?": { + "category": "Error", + "code": 1381 + }, + "Unexpected token. Did you mean `{'>'}` or `>`?": { + "category": "Error", + "code": 1382 + }, + "Function type notation must be parenthesized when used in a union type.": { + "category": "Error", + "code": 1385 + }, + "Constructor type notation must be parenthesized when used in a union type.": { + "category": "Error", + "code": 1386 + }, + "Function type notation must be parenthesized when used in an intersection type.": { + "category": "Error", + "code": 1387 + }, + "Constructor type notation must be parenthesized when used in an intersection type.": { + "category": "Error", + "code": 1388 + }, + "'{0}' is not allowed as a variable declaration name.": { + "category": "Error", + "code": 1389 + }, + "'{0}' is not allowed as a parameter name.": { + "category": "Error", + "code": 1390 + }, + "An import alias cannot use 'import type'": { + "category": "Error", + "code": 1392 + }, + "Imported via {0} from file '{1}'": { + "category": "Message", + "code": 1393 + }, + "Imported via {0} from file '{1}' with packageId '{2}'": { + "category": "Message", + "code": 1394 + }, + "Imported via {0} from file '{1}' to import 'importHelpers' as specified in compilerOptions": { + "category": "Message", + "code": 1395 + }, + "Imported via {0} from file '{1}' with packageId '{2}' to import 'importHelpers' as specified in compilerOptions": { + "category": "Message", + "code": 1396 + }, + "Imported via {0} from file '{1}' to import 'jsx' and 'jsxs' factory functions": { + "category": "Message", + "code": 1397 + }, + "Imported via {0} from file '{1}' with packageId '{2}' to import 'jsx' and 'jsxs' factory functions": { + "category": "Message", + "code": 1398 + }, + "File is included via import here.": { + "category": "Message", + "code": 1399 + }, + "Referenced via '{0}' from file '{1}'": { + "category": "Message", + "code": 1400 + }, + "File is included via reference here.": { + "category": "Message", + "code": 1401 + }, + "Type library referenced via '{0}' from file '{1}'": { + "category": "Message", + "code": 1402 + }, + "Type library referenced via '{0}' from file '{1}' with packageId '{2}'": { + "category": "Message", + "code": 1403 + }, + "File is included via type library reference here.": { + "category": "Message", + "code": 1404 + }, + "Library referenced via '{0}' from file '{1}'": { + "category": "Message", + "code": 1405 + }, + "File is included via library reference here.": { + "category": "Message", + "code": 1406 + }, + "Matched by include pattern '{0}' in '{1}'": { + "category": "Message", + "code": 1407 + }, + "File is matched by include pattern specified here.": { + "category": "Message", + "code": 1408 + }, + "Part of 'files' list in tsconfig.json": { + "category": "Message", + "code": 1409 + }, + "File is matched by 'files' list specified here.": { + "category": "Message", + "code": 1410 + }, + "Output from referenced project '{0}' included because '{1}' specified": { + "category": "Message", + "code": 1411 + }, + "Output from referenced project '{0}' included because '--module' is specified as 'none'": { + "category": "Message", + "code": 1412 + }, + "File is output from referenced project specified here.": { + "category": "Message", + "code": 1413 + }, + "Source from referenced project '{0}' included because '{1}' specified": { + "category": "Message", + "code": 1414 + }, + "Source from referenced project '{0}' included because '--module' is specified as 'none'": { + "category": "Message", + "code": 1415 + }, + "File is source from referenced project specified here.": { + "category": "Message", + "code": 1416 + }, + "Entry point of type library '{0}' specified in compilerOptions": { + "category": "Message", + "code": 1417 + }, + "Entry point of type library '{0}' specified in compilerOptions with packageId '{1}'": { + "category": "Message", + "code": 1418 + }, + "File is entry point of type library specified here.": { + "category": "Message", + "code": 1419 + }, + "Entry point for implicit type library '{0}'": { + "category": "Message", + "code": 1420 + }, + "Entry point for implicit type library '{0}' with packageId '{1}'": { + "category": "Message", + "code": 1421 + }, + "Library '{0}' specified in compilerOptions": { + "category": "Message", + "code": 1422 + }, + "File is library specified here.": { + "category": "Message", + "code": 1423 + }, + "Default library": { + "category": "Message", + "code": 1424 + }, + "Default library for target '{0}'": { + "category": "Message", + "code": 1425 + }, + "File is default library for target specified here.": { + "category": "Message", + "code": 1426 + }, + "Root file specified for compilation": { + "category": "Message", + "code": 1427 + }, + "File is output of project reference source '{0}'": { + "category": "Message", + "code": 1428 + }, + "File redirects to file '{0}'": { + "category": "Message", + "code": 1429 + }, + "The file is in the program because:": { + "category": "Message", + "code": 1430 + }, + "'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.": { + "category": "Error", + "code": 1431 + }, + "Top-level 'for await' loops are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher.": { + "category": "Error", + "code": 1432 + }, + "Neither decorators nor modifiers may be applied to 'this' parameters.": { + "category": "Error", + "code": 1433 + }, + "Unexpected keyword or identifier.": { + "category": "Error", + "code": 1434 + }, + "Unknown keyword or identifier. Did you mean '{0}'?": { + "category": "Error", + "code": 1435 + }, + "Decorators must precede the name and all keywords of property declarations.": { + "category": "Error", + "code": 1436 + }, + "Namespace must be given a name.": { + "category": "Error", + "code": 1437 + }, + "Interface must be given a name.": { + "category": "Error", + "code": 1438 + }, + "Type alias must be given a name.": { + "category": "Error", + "code": 1439 + }, + "Variable declaration not allowed at this location.": { + "category": "Error", + "code": 1440 + }, + "Cannot start a function call in a type annotation.": { + "category": "Error", + "code": 1441 + }, + "Expected '=' for property initializer.": { + "category": "Error", + "code": 1442 + }, + "Module declaration names may only use ' or \" quoted strings.": { + "category": "Error", + "code": 1443 + }, + "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when '{1}' is enabled.": { + "category": "Error", + "code": 1448 + }, + "Preserve unused imported values in the JavaScript output that would otherwise be removed.": { + "category": "Message", + "code": 1449 + }, + "Dynamic imports can only accept a module specifier and an optional set of attributes as arguments": { + "category": "Message", + "code": 1450 + }, + "Private identifiers are only allowed in class bodies and may only be used as part of a class member declaration, property access, or on the left-hand-side of an 'in' expression": { + "category": "Error", + "code": 1451 + }, + "`resolution-mode` should be either `require` or `import`.": { + "category": "Error", + "code": 1453 + }, + "`resolution-mode` can only be set for type-only imports.": { + "category": "Error", + "code": 1454 + }, + "`resolution-mode` is the only valid key for type import assertions.": { + "category": "Error", + "code": 1455 + }, + "Type import assertions should have exactly one key - `resolution-mode` - with value `import` or `require`.": { + "category": "Error", + "code": 1456 + }, + "Matched by default include pattern '**/*'": { + "category": "Message", + "code": 1457 + }, + "File is ECMAScript module because '{0}' has field \"type\" with value \"module\"": { + "category": "Message", + "code": 1458 + }, + "File is CommonJS module because '{0}' has field \"type\" whose value is not \"module\"": { + "category": "Message", + "code": 1459 + }, + "File is CommonJS module because '{0}' does not have field \"type\"": { + "category": "Message", + "code": 1460 + }, + "File is CommonJS module because 'package.json' was not found": { + "category": "Message", + "code": 1461 + }, + "'resolution-mode' is the only valid key for type import attributes.": { + "category": "Error", + "code": 1463 + }, + "Type import attributes should have exactly one key - 'resolution-mode' - with value 'import' or 'require'.": { + "category": "Error", + "code": 1464 + }, + "The 'import.meta' meta-property is not allowed in files which will build into CommonJS output.": { + "category": "Error", + "code": 1470 + }, + "Module '{0}' cannot be imported using this construct. The specifier only resolves to an ES module, which cannot be imported with 'require'. Use an ECMAScript import instead.": { + "category": "Error", + "code": 1471 + }, + "'catch' or 'finally' expected.": { + "category": "Error", + "code": 1472 + }, + "An import declaration can only be used at the top level of a module.": { + "category": "Error", + "code": 1473 + }, + "An export declaration can only be used at the top level of a module.": { + "category": "Error", + "code": 1474 + }, + "Control what method is used to detect module-format JS files.": { + "category": "Message", + "code": 1475 + }, + "\"auto\": Treat files with imports, exports, import.meta, jsx (with jsx: react-jsx), or esm format (with module: node16+) as modules.": { + "category": "Message", + "code": 1476 + }, + "An instantiation expression cannot be followed by a property access.": { + "category": "Error", + "code": 1477 + }, + "Identifier or string literal expected.": { + "category": "Error", + "code": 1478 + }, + "The current file is a CommonJS module whose imports will produce 'require' calls; however, the referenced file is an ECMAScript module and cannot be imported with 'require'. Consider writing a dynamic 'import(\"{0}\")' call instead.": { + "category": "Error", + "code": 1479 + }, + "To convert this file to an ECMAScript module, change its file extension to '{0}' or create a local package.json file with `{ \"type\": \"module\" }`.": { + "category": "Message", + "code": 1480 + }, + "To convert this file to an ECMAScript module, change its file extension to '{0}', or add the field `\"type\": \"module\"` to '{1}'.": { + "category": "Message", + "code": 1481 + }, + "To convert this file to an ECMAScript module, add the field `\"type\": \"module\"` to '{0}'.": { + "category": "Message", + "code": 1482 + }, + "To convert this file to an ECMAScript module, create a local package.json file with `{ \"type\": \"module\" }`.": { + "category": "Message", + "code": 1483 + }, + "'{0}' is a type and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled.": { + "category": "Error", + "code": 1484 + }, + "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled.": { + "category": "Error", + "code": 1485 + }, + "Decorator used before 'export' here.": { + "category": "Error", + "code": 1486 + }, + "Octal escape sequences are not allowed. Use the syntax '{0}'.": { + "category": "Error", + "code": 1487 + }, + "Escape sequence '{0}' is not allowed.": { + "category": "Error", + "code": 1488 + }, + "Decimals with leading zeros are not allowed.": { + "category": "Error", + "code": 1489 + }, + "File appears to be binary.": { + "category": "Error", + "code": 1490 + }, + "'{0}' modifier cannot appear on a 'using' declaration.": { + "category": "Error", + "code": 1491 + }, + "'{0}' declarations may not have binding patterns.": { + "category": "Error", + "code": 1492 + }, + "The left-hand side of a 'for...in' statement cannot be a 'using' declaration.": { + "category": "Error", + "code": 1493 + }, + "The left-hand side of a 'for...in' statement cannot be an 'await using' declaration.": { + "category": "Error", + "code": 1494 + }, + "'{0}' modifier cannot appear on an 'await using' declaration.": { + "category": "Error", + "code": 1495 + }, + "Identifier, string literal, or number literal expected.": { + "category": "Error", + "code": 1496 + }, + "Expression must be enclosed in parentheses to be used as a decorator.": { + "category": "Error", + "code": 1497 + }, + "Invalid syntax in decorator.": { + "category": "Error", + "code": 1498 + }, + "Unknown regular expression flag.": { + "category": "Error", + "code": 1499 + }, + "Duplicate regular expression flag.": { + "category": "Error", + "code": 1500 + }, + "This regular expression flag is only available when targeting '{0}' or later.": { + "category": "Error", + "code": 1501 + }, + "The Unicode (u) flag and the Unicode Sets (v) flag cannot be set simultaneously.": { + "category": "Error", + "code": 1502 + }, + "Named capturing groups are only available when targeting 'ES2018' or later.": { + "category": "Error", + "code": 1503 + }, + "Subpattern flags must be present when there is a minus sign.": { + "category": "Error", + "code": 1504 + }, + "Incomplete quantifier. Digit expected.": { + "category": "Error", + "code": 1505 + }, + "Numbers out of order in quantifier.": { + "category": "Error", + "code": 1506 + }, + "There is nothing available for repetition.": { + "category": "Error", + "code": 1507 + }, + "Unexpected '{0}'. Did you mean to escape it with backslash?": { + "category": "Error", + "code": 1508 + }, + "This regular expression flag cannot be toggled within a subpattern.": { + "category": "Error", + "code": 1509 + }, + "'\\k' must be followed by a capturing group name enclosed in angle brackets.": { + "category": "Error", + "code": 1510 + }, + "'\\q' is only available inside character class.": { + "category": "Error", + "code": 1511 + }, + "'\\c' must be followed by an ASCII letter.": { + "category": "Error", + "code": 1512 + }, + "Undetermined character escape.": { + "category": "Error", + "code": 1513 + }, + "Expected a capturing group name.": { + "category": "Error", + "code": 1514 + }, + "Named capturing groups with the same name must be mutually exclusive to each other.": { + "category": "Error", + "code": 1515 + }, + "A character class range must not be bounded by another character class.": { + "category": "Error", + "code": 1516 + }, + "Range out of order in character class.": { + "category": "Error", + "code": 1517 + }, + "Anything that would possibly match more than a single character is invalid inside a negated character class.": { + "category": "Error", + "code": 1518 + }, + "Operators must not be mixed within a character class. Wrap it in a nested class instead.": { + "category": "Error", + "code": 1519 + }, + "Expected a class set operand.": { + "category": "Error", + "code": 1520 + }, + "'\\q' must be followed by string alternatives enclosed in braces.": { + "category": "Error", + "code": 1521 + }, + "A character class must not contain a reserved double punctuator. Did you mean to escape it with backslash?": { + "category": "Error", + "code": 1522 + }, + "Expected a Unicode property name.": { + "category": "Error", + "code": 1523 + }, + "Unknown Unicode property name.": { + "category": "Error", + "code": 1524 + }, + "Expected a Unicode property value.": { + "category": "Error", + "code": 1525 + }, + "Unknown Unicode property value.": { + "category": "Error", + "code": 1526 + }, + "Expected a Unicode property name or value.": { + "category": "Error", + "code": 1527 + }, + "Any Unicode property that would possibly match more than a single character is only available when the Unicode Sets (v) flag is set.": { + "category": "Error", + "code": 1528 + }, + "Unknown Unicode property name or value.": { + "category": "Error", + "code": 1529 + }, + "Unicode property value expressions are only available when the Unicode (u) flag or the Unicode Sets (v) flag is set.": { + "category": "Error", + "code": 1530 + }, + "'\\{0}' must be followed by a Unicode property value expression enclosed in braces.": { + "category": "Error", + "code": 1531 + }, + "There is no capturing group named '{0}' in this regular expression.": { + "category": "Error", + "code": 1532 + }, + "This backreference refers to a group that does not exist. There are only {0} capturing groups in this regular expression.": { + "category": "Error", + "code": 1533 + }, + "This backreference refers to a group that does not exist. There are no capturing groups in this regular expression.": { + "category": "Error", + "code": 1534 + }, + "This character cannot be escaped in a regular expression.": { + "category": "Error", + "code": 1535 + }, + "Octal escape sequences and backreferences are not allowed in a character class. If this was intended as an escape sequence, use the syntax '{0}' instead.": { + "category": "Error", + "code": 1536 + }, + "Decimal escape sequences and backreferences are not allowed in a character class.": { + "category": "Error", + "code": 1537 + }, + "Unicode escape sequences are only available when the Unicode (u) flag or the Unicode Sets (v) flag is set.": { + "category": "Error", + "code": 1538 + }, + "A 'bigint' literal cannot be used as a property name.": { + "category": "Error", + "code": 1539 + }, + "A 'namespace' declaration should not be declared using the 'module' keyword. Please use the 'namespace' keyword instead.": { + "category": "Error", + "code": 1540 + }, + "Type-only import of an ECMAScript module from a CommonJS module must have a 'resolution-mode' attribute.": { + "category": "Error", + "code": 1541 + }, + "Type import of an ECMAScript module from a CommonJS module must have a 'resolution-mode' attribute.": { + "category": "Error", + "code": 1542 + }, + "Importing a JSON file into an ECMAScript module requires a 'type: \"json\"' import attribute when 'module' is set to '{0}'.": { + "category": "Error", + "code": 1543 + }, + "Named imports from a JSON file into an ECMAScript module are not allowed when 'module' is set to '{0}'.": { + "category": "Error", + "code": 1544 + }, + "'using' declarations are not allowed in ambient contexts.": { + "category": "Error", + "code": 1545 + }, + "'await using' declarations are not allowed in ambient contexts.": { + "category": "Error", + "code": 1546 + }, + "'using' declarations are not allowed in 'case' or 'default' clauses unless contained within a block.": { + "category": "Error", + "code": 1547 + }, + "'await using' declarations are not allowed in 'case' or 'default' clauses unless contained within a block.": { + "category": "Error", + "code": 1548 + }, + "Ignore the tsconfig found and build with commandline options and files.": { + "category": "Message", + "code": 1549 + }, + "The types of '{0}' are incompatible between these types.": { + "category": "Error", + "code": 2200 + }, + "The types returned by '{0}' are incompatible between these types.": { + "category": "Error", + "code": 2201 + }, + "Call signature return types '{0}' and '{1}' are incompatible.": { + "category": "Error", + "code": 2202 + }, + "Construct signature return types '{0}' and '{1}' are incompatible.": { + "category": "Error", + "code": 2203 + }, + "Call signatures with no arguments have incompatible return types '{0}' and '{1}'.": { + "category": "Error", + "code": 2204 + }, + "Construct signatures with no arguments have incompatible return types '{0}' and '{1}'.": { + "category": "Error", + "code": 2205 + }, + "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.": { + "category": "Error", + "code": 2206 + }, + "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.": { + "category": "Error", + "code": 2207 + }, + "This type parameter might need an `extends {0}` constraint.": { + "category": "Error", + "code": 2208 + }, + "The project root is ambiguous, but is required to resolve export map entry '{0}' in file '{1}'. Supply the `rootDir` compiler option to disambiguate.": { + "category": "Error", + "code": 2209 + }, + "The project root is ambiguous, but is required to resolve import map entry '{0}' in file '{1}'. Supply the `rootDir` compiler option to disambiguate.": { + "category": "Error", + "code": 2210 + }, + "Add `extends` constraint.": { + "category": "Message", + "code": 2211 + }, + "Add `extends` constraint to all type parameters": { + "category": "Message", + "code": 2212 + }, + "Duplicate identifier '{0}'.": { + "category": "Error", + "code": 2300 + }, + "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor.": { + "category": "Error", + "code": 2301 + }, + "Static members cannot reference class type parameters.": { + "category": "Error", + "code": 2302 + }, + "Circular definition of import alias '{0}'.": { + "category": "Error", + "code": 2303 + }, + "Cannot find name '{0}'.": { + "category": "Error", + "code": 2304 + }, + "Module '{0}' has no exported member '{1}'.": { + "category": "Error", + "code": 2305 + }, + "File '{0}' is not a module.": { + "category": "Error", + "code": 2306 + }, + "Cannot find module '{0}' or its corresponding type declarations.": { + "category": "Error", + "code": 2307 + }, + "Module {0} has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity.": { + "category": "Error", + "code": 2308 + }, + "An export assignment cannot be used in a module with other exported elements.": { + "category": "Error", + "code": 2309 + }, + "Type '{0}' recursively references itself as a base type.": { + "category": "Error", + "code": 2310 + }, + "Cannot find name '{0}'. Did you mean to write this in an async function?": { + "category": "Error", + "code": 2311 + }, + "An interface can only extend an object type or intersection of object types with statically known members.": { + "category": "Error", + "code": 2312 + }, + "Type parameter '{0}' has a circular constraint.": { + "category": "Error", + "code": 2313 + }, + "Generic type '{0}' requires {1} type argument(s).": { + "category": "Error", + "code": 2314 + }, + "Type '{0}' is not generic.": { + "category": "Error", + "code": 2315 + }, + "Global type '{0}' must be a class or interface type.": { + "category": "Error", + "code": 2316 + }, + "Global type '{0}' must have {1} type parameter(s).": { + "category": "Error", + "code": 2317 + }, + "Cannot find global type '{0}'.": { + "category": "Error", + "code": 2318 + }, + "Named property '{0}' of types '{1}' and '{2}' are not identical.": { + "category": "Error", + "code": 2319 + }, + "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'.": { + "category": "Error", + "code": 2320 + }, + "Excessive stack depth comparing types '{0}' and '{1}'.": { + "category": "Error", + "code": 2321 + }, + "Type '{0}' is not assignable to type '{1}'.": { + "category": "Error", + "code": 2322 + }, + "Cannot redeclare exported variable '{0}'.": { + "category": "Error", + "code": 2323 + }, + "Property '{0}' is missing in type '{1}'.": { + "category": "Error", + "code": 2324 + }, + "Property '{0}' is private in type '{1}' but not in type '{2}'.": { + "category": "Error", + "code": 2325 + }, + "Types of property '{0}' are incompatible.": { + "category": "Error", + "code": 2326 + }, + "Property '{0}' is optional in type '{1}' but required in type '{2}'.": { + "category": "Error", + "code": 2327 + }, + "Types of parameters '{0}' and '{1}' are incompatible.": { + "category": "Error", + "code": 2328 + }, + "Index signature for type '{0}' is missing in type '{1}'.": { + "category": "Error", + "code": 2329 + }, + "'{0}' and '{1}' index signatures are incompatible.": { + "category": "Error", + "code": 2330 + }, + "'this' cannot be referenced in a module or namespace body.": { + "category": "Error", + "code": 2331 + }, + "'this' cannot be referenced in current location.": { + "category": "Error", + "code": 2332 + }, + "'this' cannot be referenced in a static property initializer.": { + "category": "Error", + "code": 2334 + }, + "'super' can only be referenced in a derived class.": { + "category": "Error", + "code": 2335 + }, + "'super' cannot be referenced in constructor arguments.": { + "category": "Error", + "code": 2336 + }, + "Super calls are not permitted outside constructors or in nested functions inside constructors.": { + "category": "Error", + "code": 2337 + }, + "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.": { + "category": "Error", + "code": 2338 + }, + "Property '{0}' does not exist on type '{1}'.": { + "category": "Error", + "code": 2339 + }, + "Only public and protected methods of the base class are accessible via the 'super' keyword.": { + "category": "Error", + "code": 2340 + }, + "Property '{0}' is private and only accessible within class '{1}'.": { + "category": "Error", + "code": 2341 + }, + "This syntax requires an imported helper named '{1}' which does not exist in '{0}'. Consider upgrading your version of '{0}'.": { + "category": "Error", + "code": 2343 + }, + "Type '{0}' does not satisfy the constraint '{1}'.": { + "category": "Error", + "code": 2344 + }, + "Argument of type '{0}' is not assignable to parameter of type '{1}'.": { + "category": "Error", + "code": 2345 + }, + "Call target does not contain any signatures.": { + "category": "Error", + "code": 2346 + }, + "Untyped function calls may not accept type arguments.": { + "category": "Error", + "code": 2347 + }, + "Value of type '{0}' is not callable. Did you mean to include 'new'?": { + "category": "Error", + "code": 2348 + }, + "This expression is not callable.": { + "category": "Error", + "code": 2349 + }, + "Only a void function can be called with the 'new' keyword.": { + "category": "Error", + "code": 2350 + }, + "This expression is not constructable.": { + "category": "Error", + "code": 2351 + }, + "Conversion of type '{0}' to type '{1}' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.": { + "category": "Error", + "code": 2352 + }, + "Object literal may only specify known properties, and '{0}' does not exist in type '{1}'.": { + "category": "Error", + "code": 2353 + }, + "This syntax requires an imported helper but module '{0}' cannot be found.": { + "category": "Error", + "code": 2354 + }, + "A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value.": { + "category": "Error", + "code": 2355 + }, + "An arithmetic operand must be of type 'any', 'number', 'bigint' or an enum type.": { + "category": "Error", + "code": 2356 + }, + "The operand of an increment or decrement operator must be a variable or a property access.": { + "category": "Error", + "code": 2357 + }, + "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter.": { + "category": "Error", + "code": 2358 + }, + "The right-hand side of an 'instanceof' expression must be either of type 'any', a class, function, or other type assignable to the 'Function' interface type, or an object type with a 'Symbol.hasInstance' method.": { + "category": "Error", + "code": 2359 + }, + "The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.": { + "category": "Error", + "code": 2362 + }, + "The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.": { + "category": "Error", + "code": 2363 + }, + "The left-hand side of an assignment expression must be a variable or a property access.": { + "category": "Error", + "code": 2364 + }, + "Operator '{0}' cannot be applied to types '{1}' and '{2}'.": { + "category": "Error", + "code": 2365 + }, + "Function lacks ending return statement and return type does not include 'undefined'.": { + "category": "Error", + "code": 2366 + }, + "This comparison appears to be unintentional because the types '{0}' and '{1}' have no overlap.": { + "category": "Error", + "code": 2367 + }, + "Type parameter name cannot be '{0}'.": { + "category": "Error", + "code": 2368 + }, + "A parameter property is only allowed in a constructor implementation.": { + "category": "Error", + "code": 2369 + }, + "A rest parameter must be of an array type.": { + "category": "Error", + "code": 2370 + }, + "A parameter initializer is only allowed in a function or constructor implementation.": { + "category": "Error", + "code": 2371 + }, + "Parameter '{0}' cannot reference itself.": { + "category": "Error", + "code": 2372 + }, + "Parameter '{0}' cannot reference identifier '{1}' declared after it.": { + "category": "Error", + "code": 2373 + }, + "Duplicate index signature for type '{0}'.": { + "category": "Error", + "code": 2374 + }, + "Type '{0}' is not assignable to type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties.": { + "category": "Error", + "code": 2375 + }, + "A 'super' call must be the first statement in the constructor to refer to 'super' or 'this' when a derived class contains initialized properties, parameter properties, or private identifiers.": { + "category": "Error", + "code": 2376 + }, + "Constructors for derived classes must contain a 'super' call.": { + "category": "Error", + "code": 2377 + }, + "A 'get' accessor must return a value.": { + "category": "Error", + "code": 2378 + }, + "Argument of type '{0}' is not assignable to parameter of type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties.": { + "category": "Error", + "code": 2379 + }, + "Overload signatures must all be exported or non-exported.": { + "category": "Error", + "code": 2383 + }, + "Overload signatures must all be ambient or non-ambient.": { + "category": "Error", + "code": 2384 + }, + "Overload signatures must all be public, private or protected.": { + "category": "Error", + "code": 2385 + }, + "Overload signatures must all be optional or required.": { + "category": "Error", + "code": 2386 + }, + "Function overload must be static.": { + "category": "Error", + "code": 2387 + }, + "Function overload must not be static.": { + "category": "Error", + "code": 2388 + }, + "Function implementation name must be '{0}'.": { + "category": "Error", + "code": 2389 + }, + "Constructor implementation is missing.": { + "category": "Error", + "code": 2390 + }, + "Function implementation is missing or not immediately following the declaration.": { + "category": "Error", + "code": 2391 + }, + "Multiple constructor implementations are not allowed.": { + "category": "Error", + "code": 2392 + }, + "Duplicate function implementation.": { + "category": "Error", + "code": 2393 + }, + "This overload signature is not compatible with its implementation signature.": { + "category": "Error", + "code": 2394 + }, + "Individual declarations in merged declaration '{0}' must be all exported or all local.": { + "category": "Error", + "code": 2395 + }, + "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters.": { + "category": "Error", + "code": 2396 + }, + "Declaration name conflicts with built-in global identifier '{0}'.": { + "category": "Error", + "code": 2397 + }, + "'constructor' cannot be used as a parameter property name.": { + "category": "Error", + "code": 2398 + }, + "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference.": { + "category": "Error", + "code": 2399 + }, + "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference.": { + "category": "Error", + "code": 2400 + }, + "A 'super' call must be a root-level statement within a constructor of a derived class that contains initialized properties, parameter properties, or private identifiers.": { + "category": "Error", + "code": 2401 + }, + "Expression resolves to '_super' that compiler uses to capture base class reference.": { + "category": "Error", + "code": 2402 + }, + "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'.": { + "category": "Error", + "code": 2403 + }, + "The left-hand side of a 'for...in' statement cannot use a type annotation.": { + "category": "Error", + "code": 2404 + }, + "The left-hand side of a 'for...in' statement must be of type 'string' or 'any'.": { + "category": "Error", + "code": 2405 + }, + "The left-hand side of a 'for...in' statement must be a variable or a property access.": { + "category": "Error", + "code": 2406 + }, + "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter, but here has type '{0}'.": { + "category": "Error", + "code": 2407 + }, + "Setters cannot return a value.": { + "category": "Error", + "code": 2408 + }, + "Return type of constructor signature must be assignable to the instance type of the class.": { + "category": "Error", + "code": 2409 + }, + "The 'with' statement is not supported. All symbols in a 'with' block will have type 'any'.": { + "category": "Error", + "code": 2410 + }, + "Property '{0}' of type '{1}' is not assignable to '{2}' index type '{3}'.": { + "category": "Error", + "code": 2411 + }, + "Type '{0}' is not assignable to type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the type of the target.": { + "category": "Error", + "code": 2412 + }, + "'{0}' index type '{1}' is not assignable to '{2}' index type '{3}'.": { + "category": "Error", + "code": 2413 + }, + "Class name cannot be '{0}'.": { + "category": "Error", + "code": 2414 + }, + "Class '{0}' incorrectly extends base class '{1}'.": { + "category": "Error", + "code": 2415 + }, + "Property '{0}' in type '{1}' is not assignable to the same property in base type '{2}'.": { + "category": "Error", + "code": 2416 + }, + "Class static side '{0}' incorrectly extends base class static side '{1}'.": { + "category": "Error", + "code": 2417 + }, + "Type of computed property's value is '{0}', which is not assignable to type '{1}'.": { + "category": "Error", + "code": 2418 + }, + "Types of construct signatures are incompatible.": { + "category": "Error", + "code": 2419 + }, + "Class '{0}' incorrectly implements interface '{1}'.": { + "category": "Error", + "code": 2420 + }, + "A class can only implement an object type or intersection of object types with statically known members.": { + "category": "Error", + "code": 2422 + }, + "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor.": { + "category": "Error", + "code": 2423 + }, + "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function.": { + "category": "Error", + "code": 2425 + }, + "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function.": { + "category": "Error", + "code": 2426 + }, + "Interface name cannot be '{0}'.": { + "category": "Error", + "code": 2427 + }, + "All declarations of '{0}' must have identical type parameters.": { + "category": "Error", + "code": 2428 + }, + "Interface '{0}' incorrectly extends interface '{1}'.": { + "category": "Error", + "code": 2430 + }, + "Enum name cannot be '{0}'.": { + "category": "Error", + "code": 2431 + }, + "In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element.": { + "category": "Error", + "code": 2432 + }, + "A namespace declaration cannot be in a different file from a class or function with which it is merged.": { + "category": "Error", + "code": 2433 + }, + "A namespace declaration cannot be located prior to a class or function with which it is merged.": { + "category": "Error", + "code": 2434 + }, + "Ambient modules cannot be nested in other modules or namespaces.": { + "category": "Error", + "code": 2435 + }, + "Ambient module declaration cannot specify relative module name.": { + "category": "Error", + "code": 2436 + }, + "Module '{0}' is hidden by a local declaration with the same name.": { + "category": "Error", + "code": 2437 + }, + "Import name cannot be '{0}'.": { + "category": "Error", + "code": 2438 + }, + "Import or export declaration in an ambient module declaration cannot reference module through relative module name.": { + "category": "Error", + "code": 2439 + }, + "Import declaration conflicts with local declaration of '{0}'.": { + "category": "Error", + "code": 2440 + }, + "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module.": { + "category": "Error", + "code": 2441 + }, + "Types have separate declarations of a private property '{0}'.": { + "category": "Error", + "code": 2442 + }, + "Property '{0}' is protected but type '{1}' is not a class derived from '{2}'.": { + "category": "Error", + "code": 2443 + }, + "Property '{0}' is protected in type '{1}' but public in type '{2}'.": { + "category": "Error", + "code": 2444 + }, + "Property '{0}' is protected and only accessible within class '{1}' and its subclasses.": { + "category": "Error", + "code": 2445 + }, + "Property '{0}' is protected and only accessible through an instance of class '{1}'. This is an instance of class '{2}'.": { + "category": "Error", + "code": 2446 + }, + "The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead.": { + "category": "Error", + "code": 2447 + }, + "Block-scoped variable '{0}' used before its declaration.": { + "category": "Error", + "code": 2448 + }, + "Class '{0}' used before its declaration.": { + "category": "Error", + "code": 2449 + }, + "Enum '{0}' used before its declaration.": { + "category": "Error", + "code": 2450 + }, + "Cannot redeclare block-scoped variable '{0}'.": { + "category": "Error", + "code": 2451 + }, + "An enum member cannot have a numeric name.": { + "category": "Error", + "code": 2452 + }, + "Variable '{0}' is used before being assigned.": { + "category": "Error", + "code": 2454 + }, + "Type alias '{0}' circularly references itself.": { + "category": "Error", + "code": 2456 + }, + "Type alias name cannot be '{0}'.": { + "category": "Error", + "code": 2457 + }, + "An AMD module cannot have multiple name assignments.": { + "category": "Error", + "code": 2458 + }, + "Module '{0}' declares '{1}' locally, but it is not exported.": { + "category": "Error", + "code": 2459 + }, + "Module '{0}' declares '{1}' locally, but it is exported as '{2}'.": { + "category": "Error", + "code": 2460 + }, + "Type '{0}' is not an array type.": { + "category": "Error", + "code": 2461 + }, + "A rest element must be last in a destructuring pattern.": { + "category": "Error", + "code": 2462 + }, + "A binding pattern parameter cannot be optional in an implementation signature.": { + "category": "Error", + "code": 2463 + }, + "A computed property name must be of type 'string', 'number', 'symbol', or 'any'.": { + "category": "Error", + "code": 2464 + }, + "'this' cannot be referenced in a computed property name.": { + "category": "Error", + "code": 2465 + }, + "'super' cannot be referenced in a computed property name.": { + "category": "Error", + "code": 2466 + }, + "A computed property name cannot reference a type parameter from its containing type.": { + "category": "Error", + "code": 2467 + }, + "Cannot find global value '{0}'.": { + "category": "Error", + "code": 2468 + }, + "The '{0}' operator cannot be applied to type 'symbol'.": { + "category": "Error", + "code": 2469 + }, + "Spread operator in 'new' expressions is only available when targeting ECMAScript 5 and higher.": { + "category": "Error", + "code": 2472 + }, + "Enum declarations must all be const or non-const.": { + "category": "Error", + "code": 2473 + }, + "const enum member initializers must be constant expressions.": { + "category": "Error", + "code": 2474 + }, + "'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment or type query.": { + "category": "Error", + "code": 2475 + }, + "A const enum member can only be accessed using a string literal.": { + "category": "Error", + "code": 2476 + }, + "'const' enum member initializer was evaluated to a non-finite value.": { + "category": "Error", + "code": 2477 + }, + "'const' enum member initializer was evaluated to disallowed value 'NaN'.": { + "category": "Error", + "code": 2478 + }, + "'let' is not allowed to be used as a name in 'let' or 'const' declarations.": { + "category": "Error", + "code": 2480 + }, + "Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'.": { + "category": "Error", + "code": 2481 + }, + "The left-hand side of a 'for...of' statement cannot use a type annotation.": { + "category": "Error", + "code": 2483 + }, + "Export declaration conflicts with exported declaration of '{0}'.": { + "category": "Error", + "code": 2484 + }, + "The left-hand side of a 'for...of' statement must be a variable or a property access.": { + "category": "Error", + "code": 2487 + }, + "Type '{0}' must have a '[Symbol.iterator]()' method that returns an iterator.": { + "category": "Error", + "code": 2488 + }, + "An iterator must have a 'next()' method.": { + "category": "Error", + "code": 2489 + }, + "The type returned by the '{0}()' method of an iterator must have a 'value' property.": { + "category": "Error", + "code": 2490 + }, + "The left-hand side of a 'for...in' statement cannot be a destructuring pattern.": { + "category": "Error", + "code": 2491 + }, + "Cannot redeclare identifier '{0}' in catch clause.": { + "category": "Error", + "code": 2492 + }, + "Tuple type '{0}' of length '{1}' has no element at index '{2}'.": { + "category": "Error", + "code": 2493 + }, + "Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher.": { + "category": "Error", + "code": 2494 + }, + "Type '{0}' is not an array type or a string type.": { + "category": "Error", + "code": 2495 + }, + "The 'arguments' object cannot be referenced in an arrow function in ES5. Consider using a standard function expression.": { + "category": "Error", + "code": 2496 + }, + "This module can only be referenced with ECMAScript imports/exports by turning on the '{0}' flag and referencing its default export.": { + "category": "Error", + "code": 2497 + }, + "Module '{0}' uses 'export =' and cannot be used with 'export *'.": { + "category": "Error", + "code": 2498 + }, + "An interface can only extend an identifier/qualified-name with optional type arguments.": { + "category": "Error", + "code": 2499 + }, + "A class can only implement an identifier/qualified-name with optional type arguments.": { + "category": "Error", + "code": 2500 + }, + "A rest element cannot contain a binding pattern.": { + "category": "Error", + "code": 2501 + }, + "'{0}' is referenced directly or indirectly in its own type annotation.": { + "category": "Error", + "code": 2502 + }, + "Cannot find namespace '{0}'.": { + "category": "Error", + "code": 2503 + }, + "Type '{0}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator.": { + "category": "Error", + "code": 2504 + }, + "A generator cannot have a 'void' type annotation.": { + "category": "Error", + "code": 2505 + }, + "'{0}' is referenced directly or indirectly in its own base expression.": { + "category": "Error", + "code": 2506 + }, + "Type '{0}' is not a constructor function type.": { + "category": "Error", + "code": 2507 + }, + "No base constructor has the specified number of type arguments.": { + "category": "Error", + "code": 2508 + }, + "Base constructor return type '{0}' is not an object type or intersection of object types with statically known members.": { + "category": "Error", + "code": 2509 + }, + "Base constructors must all have the same return type.": { + "category": "Error", + "code": 2510 + }, + "Cannot create an instance of an abstract class.": { + "category": "Error", + "code": 2511 + }, + "Overload signatures must all be abstract or non-abstract.": { + "category": "Error", + "code": 2512 + }, + "Abstract method '{0}' in class '{1}' cannot be accessed via super expression.": { + "category": "Error", + "code": 2513 + }, + "A tuple type cannot be indexed with a negative value.": { + "category": "Error", + "code": 2514 + }, + "Non-abstract class '{0}' does not implement inherited abstract member {1} from class '{2}'.": { + "category": "Error", + "code": 2515 + }, + "All declarations of an abstract method must be consecutive.": { + "category": "Error", + "code": 2516 + }, + "Cannot assign an abstract constructor type to a non-abstract constructor type.": { + "category": "Error", + "code": 2517 + }, + "A 'this'-based type guard is not compatible with a parameter-based type guard.": { + "category": "Error", + "code": 2518 + }, + "An async iterator must have a 'next()' method.": { + "category": "Error", + "code": 2519 + }, + "Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions.": { + "category": "Error", + "code": 2520 + }, + "The 'arguments' object cannot be referenced in an async function or method in ES5. Consider using a standard function or method.": { + "category": "Error", + "code": 2522 + }, + "'yield' expressions cannot be used in a parameter initializer.": { + "category": "Error", + "code": 2523 + }, + "'await' expressions cannot be used in a parameter initializer.": { + "category": "Error", + "code": 2524 + }, + "A 'this' type is available only in a non-static member of a class or interface.": { + "category": "Error", + "code": 2526 + }, + "The inferred type of '{0}' references an inaccessible '{1}' type. A type annotation is necessary.": { + "category": "Error", + "code": 2527 + }, + "A module cannot have multiple default exports.": { + "category": "Error", + "code": 2528 + }, + "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module containing async functions.": { + "category": "Error", + "code": 2529 + }, + "Property '{0}' is incompatible with index signature.": { + "category": "Error", + "code": 2530 + }, + "Object is possibly 'null'.": { + "category": "Error", + "code": 2531 + }, + "Object is possibly 'undefined'.": { + "category": "Error", + "code": 2532 + }, + "Object is possibly 'null' or 'undefined'.": { + "category": "Error", + "code": 2533 + }, + "A function returning 'never' cannot have a reachable end point.": { + "category": "Error", + "code": 2534 + }, + "Type '{0}' cannot be used to index type '{1}'.": { + "category": "Error", + "code": 2536 + }, + "Type '{0}' has no matching index signature for type '{1}'.": { + "category": "Error", + "code": 2537 + }, + "Type '{0}' cannot be used as an index type.": { + "category": "Error", + "code": 2538 + }, + "Cannot assign to '{0}' because it is not a variable.": { + "category": "Error", + "code": 2539 + }, + "Cannot assign to '{0}' because it is a read-only property.": { + "category": "Error", + "code": 2540 + }, + "Index signature in type '{0}' only permits reading.": { + "category": "Error", + "code": 2542 + }, + "Duplicate identifier '_newTarget'. Compiler uses variable declaration '_newTarget' to capture 'new.target' meta-property reference.": { + "category": "Error", + "code": 2543 + }, + "Expression resolves to variable declaration '_newTarget' that compiler uses to capture 'new.target' meta-property reference.": { + "category": "Error", + "code": 2544 + }, + "A mixin class must have a constructor with a single rest parameter of type 'any[]'.": { + "category": "Error", + "code": 2545 + }, + "The type returned by the '{0}()' method of an async iterator must be a promise for a type with a 'value' property.": { + "category": "Error", + "code": 2547 + }, + "Type '{0}' is not an array type or does not have a '[Symbol.iterator]()' method that returns an iterator.": { + "category": "Error", + "code": 2548 + }, + "Type '{0}' is not an array type or a string type or does not have a '[Symbol.iterator]()' method that returns an iterator.": { + "category": "Error", + "code": 2549 + }, + "Property '{0}' does not exist on type '{1}'. Do you need to change your target library? Try changing the 'lib' compiler option to '{2}' or later.": { + "category": "Error", + "code": 2550 + }, + "Property '{0}' does not exist on type '{1}'. Did you mean '{2}'?": { + "category": "Error", + "code": 2551 + }, + "Cannot find name '{0}'. Did you mean '{1}'?": { + "category": "Error", + "code": 2552 + }, + "Computed values are not permitted in an enum with string valued members.": { + "category": "Error", + "code": 2553 + }, + "Expected {0} arguments, but got {1}.": { + "category": "Error", + "code": 2554 + }, + "Expected at least {0} arguments, but got {1}.": { + "category": "Error", + "code": 2555 + }, + "A spread argument must either have a tuple type or be passed to a rest parameter.": { + "category": "Error", + "code": 2556 + }, + "Expected {0} type arguments, but got {1}.": { + "category": "Error", + "code": 2558 + }, + "Type '{0}' has no properties in common with type '{1}'.": { + "category": "Error", + "code": 2559 + }, + "Value of type '{0}' has no properties in common with type '{1}'. Did you mean to call it?": { + "category": "Error", + "code": 2560 + }, + "Object literal may only specify known properties, but '{0}' does not exist in type '{1}'. Did you mean to write '{2}'?": { + "category": "Error", + "code": 2561 + }, + "Base class expressions cannot reference class type parameters.": { + "category": "Error", + "code": 2562 + }, + "The containing function or module body is too large for control flow analysis.": { + "category": "Error", + "code": 2563 + }, + "Property '{0}' has no initializer and is not definitely assigned in the constructor.": { + "category": "Error", + "code": 2564 + }, + "Property '{0}' is used before being assigned.": { + "category": "Error", + "code": 2565 + }, + "A rest element cannot have a property name.": { + "category": "Error", + "code": 2566 + }, + "Enum declarations can only merge with namespace or other enum declarations.": { + "category": "Error", + "code": 2567 + }, + "Property '{0}' may not exist on type '{1}'. Did you mean '{2}'?": { + "category": "Error", + "code": 2568 + }, + "Could not find name '{0}'. Did you mean '{1}'?": { + "category": "Error", + "code": 2570 + }, + "Object is of type 'unknown'.": { + "category": "Error", + "code": 2571 + }, + "A rest element type must be an array type.": { + "category": "Error", + "code": 2574 + }, + "No overload expects {0} arguments, but overloads do exist that expect either {1} or {2} arguments.": { + "category": "Error", + "code": 2575 + }, + "Property '{0}' does not exist on type '{1}'. Did you mean to access the static member '{2}' instead?": { + "category": "Error", + "code": 2576 + }, + "Return type annotation circularly references itself.": { + "category": "Error", + "code": 2577 + }, + "Unused '@ts-expect-error' directive.": { + "category": "Error", + "code": 2578 + }, + "Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.": { + "category": "Error", + "code": 2580 + }, + "Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i --save-dev @types/jquery`.": { + "category": "Error", + "code": 2581 + }, + "Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i --save-dev @types/jest` or `npm i --save-dev @types/mocha`.": { + "category": "Error", + "code": 2582 + }, + "Cannot find name '{0}'. Do you need to change your target library? Try changing the 'lib' compiler option to '{1}' or later.": { + "category": "Error", + "code": 2583 + }, + "Cannot find name '{0}'. Do you need to change your target library? Try changing the 'lib' compiler option to include 'dom'.": { + "category": "Error", + "code": 2584 + }, + "'{0}' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the 'lib' compiler option to es2015 or later.": { + "category": "Error", + "code": 2585 + }, + "Cannot assign to '{0}' because it is a constant.": { + "category": "Error", + "code": 2588 + }, + "Type instantiation is excessively deep and possibly infinite.": { + "category": "Error", + "code": 2589 + }, + "Expression produces a union type that is too complex to represent.": { + "category": "Error", + "code": 2590 + }, + "Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node` and then add 'node' to the types field in your tsconfig.": { + "category": "Error", + "code": 2591 + }, + "Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i --save-dev @types/jquery` and then add 'jquery' to the types field in your tsconfig.": { + "category": "Error", + "code": 2592 + }, + "Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i --save-dev @types/jest` or `npm i --save-dev @types/mocha` and then add 'jest' or 'mocha' to the types field in your tsconfig.": { + "category": "Error", + "code": 2593 + }, + "This module is declared with 'export =', and can only be used with a default import when using the '{0}' flag.": { + "category": "Error", + "code": 2594 + }, + "'{0}' can only be imported by using a default import.": { + "category": "Error", + "code": 2595 + }, + "'{0}' can only be imported by turning on the 'esModuleInterop' flag and using a default import.": { + "category": "Error", + "code": 2596 + }, + "'{0}' can only be imported by using a 'require' call or by using a default import.": { + "category": "Error", + "code": 2597 + }, + "'{0}' can only be imported by using a 'require' call or by turning on the 'esModuleInterop' flag and using a default import.": { + "category": "Error", + "code": 2598 + }, + "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist.": { + "category": "Error", + "code": 2602 + }, + "Property '{0}' in type '{1}' is not assignable to type '{2}'.": { + "category": "Error", + "code": 2603 + }, + "JSX element type '{0}' does not have any construct or call signatures.": { + "category": "Error", + "code": 2604 + }, + "Property '{0}' of JSX spread attribute is not assignable to target property.": { + "category": "Error", + "code": 2606 + }, + "JSX element class does not support attributes because it does not have a '{0}' property.": { + "category": "Error", + "code": 2607 + }, + "The global type 'JSX.{0}' may not have more than one property.": { + "category": "Error", + "code": 2608 + }, + "JSX spread child must be an array type.": { + "category": "Error", + "code": 2609 + }, + "'{0}' is defined as an accessor in class '{1}', but is overridden here in '{2}' as an instance property.": { + "category": "Error", + "code": 2610 + }, + "'{0}' is defined as a property in class '{1}', but is overridden here in '{2}' as an accessor.": { + "category": "Error", + "code": 2611 + }, + "Property '{0}' will overwrite the base property in '{1}'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration.": { + "category": "Error", + "code": 2612 + }, + "Module '{0}' has no default export. Did you mean to use 'import { {1} } from {0}' instead?": { + "category": "Error", + "code": 2613 + }, + "Module '{0}' has no exported member '{1}'. Did you mean to use 'import {1} from {0}' instead?": { + "category": "Error", + "code": 2614 + }, + "Type of property '{0}' circularly references itself in mapped type '{1}'.": { + "category": "Error", + "code": 2615 + }, + "'{0}' can only be imported by using 'import {1} = require({2})' or a default import.": { + "category": "Error", + "code": 2616 + }, + "'{0}' can only be imported by using 'import {1} = require({2})' or by turning on the 'esModuleInterop' flag and using a default import.": { + "category": "Error", + "code": 2617 + }, + "Source has {0} element(s) but target requires {1}.": { + "category": "Error", + "code": 2618 + }, + "Source has {0} element(s) but target allows only {1}.": { + "category": "Error", + "code": 2619 + }, + "Target requires {0} element(s) but source may have fewer.": { + "category": "Error", + "code": 2620 + }, + "Target allows only {0} element(s) but source may have more.": { + "category": "Error", + "code": 2621 + }, + "Source provides no match for required element at position {0} in target.": { + "category": "Error", + "code": 2623 + }, + "Source provides no match for variadic element at position {0} in target.": { + "category": "Error", + "code": 2624 + }, + "Variadic element at position {0} in source does not match element at position {1} in target.": { + "category": "Error", + "code": 2625 + }, + "Type at position {0} in source is not compatible with type at position {1} in target.": { + "category": "Error", + "code": 2626 + }, + "Type at positions {0} through {1} in source is not compatible with type at position {2} in target.": { + "category": "Error", + "code": 2627 + }, + "Cannot assign to '{0}' because it is an enum.": { + "category": "Error", + "code": 2628 + }, + "Cannot assign to '{0}' because it is a class.": { + "category": "Error", + "code": 2629 + }, + "Cannot assign to '{0}' because it is a function.": { + "category": "Error", + "code": 2630 + }, + "Cannot assign to '{0}' because it is a namespace.": { + "category": "Error", + "code": 2631 + }, + "Cannot assign to '{0}' because it is an import.": { + "category": "Error", + "code": 2632 + }, + "JSX property access expressions cannot include JSX namespace names": { + "category": "Error", + "code": 2633 + }, + "'{0}' index signatures are incompatible.": { + "category": "Error", + "code": 2634 + }, + "Type '{0}' has no signatures for which the type argument list is applicable.": { + "category": "Error", + "code": 2635 + }, + "Type '{0}' is not assignable to type '{1}' as implied by variance annotation.": { + "category": "Error", + "code": 2636 + }, + "Variance annotations are only supported in type aliases for object, function, constructor, and mapped types.": { + "category": "Error", + "code": 2637 + }, + "Type '{0}' may represent a primitive value, which is not permitted as the right operand of the 'in' operator.": { + "category": "Error", + "code": 2638 + }, + "React components cannot include JSX namespace names": { + "category": "Error", + "code": 2639 + }, + "Cannot augment module '{0}' with value exports because it resolves to a non-module entity.": { + "category": "Error", + "code": 2649 + }, + "Non-abstract class expression is missing implementations for the following members of '{0}': {1} and {2} more.": { + "category": "Error", + "code": 2650 + }, + "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.": { + "category": "Error", + "code": 2651 + }, + "Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead.": { + "category": "Error", + "code": 2652 + }, + "Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'.": { + "category": "Error", + "code": 2653 + }, + "Non-abstract class '{0}' is missing implementations for the following members of '{1}': {2}.": { + "category": "Error", + "code": 2654 + }, + "Non-abstract class '{0}' is missing implementations for the following members of '{1}': {2} and {3} more.": { + "category": "Error", + "code": 2655 + }, + "Non-abstract class expression is missing implementations for the following members of '{0}': {1}.": { + "category": "Error", + "code": 2656 + }, + "JSX expressions must have one parent element.": { + "category": "Error", + "code": 2657 + }, + "Type '{0}' provides no match for the signature '{1}'.": { + "category": "Error", + "code": 2658 + }, + "'super' is only allowed in members of object literal expressions when option 'target' is 'ES2015' or higher.": { + "category": "Error", + "code": 2659 + }, + "'super' can only be referenced in members of derived classes or object literal expressions.": { + "category": "Error", + "code": 2660 + }, + "Cannot export '{0}'. Only local declarations can be exported from a module.": { + "category": "Error", + "code": 2661 + }, + "Cannot find name '{0}'. Did you mean the static member '{1}.{0}'?": { + "category": "Error", + "code": 2662 + }, + "Cannot find name '{0}'. Did you mean the instance member 'this.{0}'?": { + "category": "Error", + "code": 2663 + }, + "Invalid module name in augmentation, module '{0}' cannot be found.": { + "category": "Error", + "code": 2664 + }, + "Invalid module name in augmentation. Module '{0}' resolves to an untyped module at '{1}', which cannot be augmented.": { + "category": "Error", + "code": 2665 + }, + "Exports and export assignments are not permitted in module augmentations.": { + "category": "Error", + "code": 2666 + }, + "Imports are not permitted in module augmentations. Consider moving them to the enclosing external module.": { + "category": "Error", + "code": 2667 + }, + "'export' modifier cannot be applied to ambient modules and module augmentations since they are always visible.": { + "category": "Error", + "code": 2668 + }, + "Augmentations for the global scope can only be directly nested in external modules or ambient module declarations.": { + "category": "Error", + "code": 2669 + }, + "Augmentations for the global scope should have 'declare' modifier unless they appear in already ambient context.": { + "category": "Error", + "code": 2670 + }, + "Cannot augment module '{0}' because it resolves to a non-module entity.": { + "category": "Error", + "code": 2671 + }, + "Cannot assign a '{0}' constructor type to a '{1}' constructor type.": { + "category": "Error", + "code": 2672 + }, + "Constructor of class '{0}' is private and only accessible within the class declaration.": { + "category": "Error", + "code": 2673 + }, + "Constructor of class '{0}' is protected and only accessible within the class declaration.": { + "category": "Error", + "code": 2674 + }, + "Cannot extend a class '{0}'. Class constructor is marked as private.": { + "category": "Error", + "code": 2675 + }, + "Accessors must both be abstract or non-abstract.": { + "category": "Error", + "code": 2676 + }, + "A type predicate's type must be assignable to its parameter's type.": { + "category": "Error", + "code": 2677 + }, + "Type '{0}' is not comparable to type '{1}'.": { + "category": "Error", + "code": 2678 + }, + "A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'.": { + "category": "Error", + "code": 2679 + }, + "A '{0}' parameter must be the first parameter.": { + "category": "Error", + "code": 2680 + }, + "A constructor cannot have a 'this' parameter.": { + "category": "Error", + "code": 2681 + }, + "'this' implicitly has type 'any' because it does not have a type annotation.": { + "category": "Error", + "code": 2683 + }, + "The 'this' context of type '{0}' is not assignable to method's 'this' of type '{1}'.": { + "category": "Error", + "code": 2684 + }, + "The 'this' types of each signature are incompatible.": { + "category": "Error", + "code": 2685 + }, + "'{0}' refers to a UMD global, but the current file is a module. Consider adding an import instead.": { + "category": "Error", + "code": 2686 + }, + "All declarations of '{0}' must have identical modifiers.": { + "category": "Error", + "code": 2687 + }, + "Cannot find type definition file for '{0}'.": { + "category": "Error", + "code": 2688 + }, + "Cannot extend an interface '{0}'. Did you mean 'implements'?": { + "category": "Error", + "code": 2689 + }, + "'{0}' only refers to a type, but is being used as a value here. Did you mean to use '{1} in {0}'?": { + "category": "Error", + "code": 2690 + }, + "'{0}' is a primitive, but '{1}' is a wrapper object. Prefer using '{0}' when possible.": { + "category": "Error", + "code": 2692 + }, + "'{0}' only refers to a type, but is being used as a value here.": { + "category": "Error", + "code": 2693 + }, + "Namespace '{0}' has no exported member '{1}'.": { + "category": "Error", + "code": 2694 + }, + "Left side of comma operator is unused and has no side effects.": { + "category": "Error", + "code": 2695 + }, + "The 'Object' type is assignable to very few other types. Did you mean to use the 'any' type instead?": { + "category": "Error", + "code": 2696 + }, + "An async function or method must return a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your '--lib' option.": { + "category": "Error", + "code": 2697 + }, + "Spread types may only be created from object types.": { + "category": "Error", + "code": 2698 + }, + "Static property '{0}' conflicts with built-in property 'Function.{0}' of constructor function '{1}'.": { + "category": "Error", + "code": 2699 + }, + "Rest types may only be created from object types.": { + "category": "Error", + "code": 2700 + }, + "The target of an object rest assignment must be a variable or a property access.": { + "category": "Error", + "code": 2701 + }, + "'{0}' only refers to a type, but is being used as a namespace here.": { + "category": "Error", + "code": 2702 + }, + "The operand of a 'delete' operator must be a property reference.": { + "category": "Error", + "code": 2703 + }, + "The operand of a 'delete' operator cannot be a read-only property.": { + "category": "Error", + "code": 2704 + }, + "An async function or method in ES5 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option.": { + "category": "Error", + "code": 2705 + }, + "Required type parameters may not follow optional type parameters.": { + "category": "Error", + "code": 2706 + }, + "Generic type '{0}' requires between {1} and {2} type arguments.": { + "category": "Error", + "code": 2707 + }, + "Cannot use namespace '{0}' as a value.": { + "category": "Error", + "code": 2708 + }, + "Cannot use namespace '{0}' as a type.": { + "category": "Error", + "code": 2709 + }, + "'{0}' are specified twice. The attribute named '{0}' will be overwritten.": { + "category": "Error", + "code": 2710 + }, + "A dynamic import call returns a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your '--lib' option.": { + "category": "Error", + "code": 2711 + }, + "A dynamic import call in ES5 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option.": { + "category": "Error", + "code": 2712 + }, + "Cannot access '{0}.{1}' because '{0}' is a type, but not a namespace. Did you mean to retrieve the type of the property '{1}' in '{0}' with '{0}[\"{1}\"]'?": { + "category": "Error", + "code": 2713 + }, + "The expression of an export assignment must be an identifier or qualified name in an ambient context.": { + "category": "Error", + "code": 2714 + }, + "Abstract property '{0}' in class '{1}' cannot be accessed in the constructor.": { + "category": "Error", + "code": 2715 + }, + "Type parameter '{0}' has a circular default.": { + "category": "Error", + "code": 2716 + }, + "Subsequent property declarations must have the same type. Property '{0}' must be of type '{1}', but here has type '{2}'.": { + "category": "Error", + "code": 2717 + }, + "Duplicate property '{0}'.": { + "category": "Error", + "code": 2718 + }, + "Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.": { + "category": "Error", + "code": 2719 + }, + "Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?": { + "category": "Error", + "code": 2720 + }, + "Cannot invoke an object which is possibly 'null'.": { + "category": "Error", + "code": 2721 + }, + "Cannot invoke an object which is possibly 'undefined'.": { + "category": "Error", + "code": 2722 + }, + "Cannot invoke an object which is possibly 'null' or 'undefined'.": { + "category": "Error", + "code": 2723 + }, + "'{0}' has no exported member named '{1}'. Did you mean '{2}'?": { + "category": "Error", + "code": 2724 + }, + "Class name cannot be 'Object' when targeting ES5 and above with module {0}.": { + "category": "Error", + "code": 2725 + }, + "Cannot find lib definition for '{0}'.": { + "category": "Error", + "code": 2726 + }, + "Cannot find lib definition for '{0}'. Did you mean '{1}'?": { + "category": "Error", + "code": 2727 + }, + "'{0}' is declared here.": { + "category": "Message", + "code": 2728 + }, + "Property '{0}' is used before its initialization.": { + "category": "Error", + "code": 2729 + }, + "An arrow function cannot have a 'this' parameter.": { + "category": "Error", + "code": 2730 + }, + "Implicit conversion of a 'symbol' to a 'string' will fail at runtime. Consider wrapping this expression in 'String(...)'.": { + "category": "Error", + "code": 2731 + }, + "Cannot find module '{0}'. Consider using '--resolveJsonModule' to import module with '.json' extension.": { + "category": "Error", + "code": 2732 + }, + "Property '{0}' was also declared here.": { + "category": "Error", + "code": 2733 + }, + "Are you missing a semicolon?": { + "category": "Error", + "code": 2734 + }, + "Did you mean for '{0}' to be constrained to type 'new (...args: any[]) => {1}'?": { + "category": "Error", + "code": 2735 + }, + "Operator '{0}' cannot be applied to type '{1}'.": { + "category": "Error", + "code": 2736 + }, + "BigInt literals are not available when targeting lower than ES2020.": { + "category": "Error", + "code": 2737 + }, + "An outer value of 'this' is shadowed by this container.": { + "category": "Message", + "code": 2738 + }, + "Type '{0}' is missing the following properties from type '{1}': {2}": { + "category": "Error", + "code": 2739 + }, + "Type '{0}' is missing the following properties from type '{1}': {2}, and {3} more.": { + "category": "Error", + "code": 2740 + }, + "Property '{0}' is missing in type '{1}' but required in type '{2}'.": { + "category": "Error", + "code": 2741 + }, + "The inferred type of '{0}' cannot be named without a reference to '{1}'. This is likely not portable. A type annotation is necessary.": { + "category": "Error", + "code": 2742 + }, + "No overload expects {0} type arguments, but overloads do exist that expect either {1} or {2} type arguments.": { + "category": "Error", + "code": 2743 + }, + "Type parameter defaults can only reference previously declared type parameters.": { + "category": "Error", + "code": 2744 + }, + "This JSX tag's '{0}' prop expects type '{1}' which requires multiple children, but only a single child was provided.": { + "category": "Error", + "code": 2745 + }, + "This JSX tag's '{0}' prop expects a single child of type '{1}', but multiple children were provided.": { + "category": "Error", + "code": 2746 + }, + "'{0}' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of '{1}' is '{2}'.": { + "category": "Error", + "code": 2747 + }, + "Cannot access ambient const enums when '{0}' is enabled.": { + "category": "Error", + "code": 2748 + }, + "'{0}' refers to a value, but is being used as a type here. Did you mean 'typeof {0}'?": { + "category": "Error", + "code": 2749 + }, + "The implementation signature is declared here.": { + "category": "Error", + "code": 2750 + }, + "Circularity originates in type at this location.": { + "category": "Error", + "code": 2751 + }, + "The first export default is here.": { + "category": "Error", + "code": 2752 + }, + "Another export default is here.": { + "category": "Error", + "code": 2753 + }, + "'super' may not use type arguments.": { + "category": "Error", + "code": 2754 + }, + "No constituent of type '{0}' is callable.": { + "category": "Error", + "code": 2755 + }, + "Not all constituents of type '{0}' are callable.": { + "category": "Error", + "code": 2756 + }, + "Type '{0}' has no call signatures.": { + "category": "Error", + "code": 2757 + }, + "Each member of the union type '{0}' has signatures, but none of those signatures are compatible with each other.": { + "category": "Error", + "code": 2758 + }, + "No constituent of type '{0}' is constructable.": { + "category": "Error", + "code": 2759 + }, + "Not all constituents of type '{0}' are constructable.": { + "category": "Error", + "code": 2760 + }, + "Type '{0}' has no construct signatures.": { + "category": "Error", + "code": 2761 + }, + "Each member of the union type '{0}' has construct signatures, but none of those signatures are compatible with each other.": { + "category": "Error", + "code": 2762 + }, + "Cannot iterate value because the 'next' method of its iterator expects type '{1}', but for-of will always send '{0}'.": { + "category": "Error", + "code": 2763 + }, + "Cannot iterate value because the 'next' method of its iterator expects type '{1}', but array spread will always send '{0}'.": { + "category": "Error", + "code": 2764 + }, + "Cannot iterate value because the 'next' method of its iterator expects type '{1}', but array destructuring will always send '{0}'.": { + "category": "Error", + "code": 2765 + }, + "Cannot delegate iteration to value because the 'next' method of its iterator expects type '{1}', but the containing generator will always send '{0}'.": { + "category": "Error", + "code": 2766 + }, + "The '{0}' property of an iterator must be a method.": { + "category": "Error", + "code": 2767 + }, + "The '{0}' property of an async iterator must be a method.": { + "category": "Error", + "code": 2768 + }, + "No overload matches this call.": { + "category": "Error", + "code": 2769 + }, + "The last overload gave the following error.": { + "category": "Error", + "code": 2770 + }, + "The last overload is declared here.": { + "category": "Error", + "code": 2771 + }, + "Overload {0} of {1}, '{2}', gave the following error.": { + "category": "Error", + "code": 2772 + }, + "Did you forget to use 'await'?": { + "category": "Error", + "code": 2773 + }, + "This condition will always return true since this function is always defined. Did you mean to call it instead?": { + "category": "Error", + "code": 2774 + }, + "Assertions require every name in the call target to be declared with an explicit type annotation.": { + "category": "Error", + "code": 2775 + }, + "Assertions require the call target to be an identifier or qualified name.": { + "category": "Error", + "code": 2776 + }, + "The operand of an increment or decrement operator may not be an optional property access.": { + "category": "Error", + "code": 2777 + }, + "The target of an object rest assignment may not be an optional property access.": { + "category": "Error", + "code": 2778 + }, + "The left-hand side of an assignment expression may not be an optional property access.": { + "category": "Error", + "code": 2779 + }, + "The left-hand side of a 'for...in' statement may not be an optional property access.": { + "category": "Error", + "code": 2780 + }, + "The left-hand side of a 'for...of' statement may not be an optional property access.": { + "category": "Error", + "code": 2781 + }, + "'{0}' needs an explicit type annotation.": { + "category": "Message", + "code": 2782 + }, + "'{0}' is specified more than once, so this usage will be overwritten.": { + "category": "Error", + "code": 2783 + }, + "'get' and 'set' accessors cannot declare 'this' parameters.": { + "category": "Error", + "code": 2784 + }, + "This spread always overwrites this property.": { + "category": "Error", + "code": 2785 + }, + "'{0}' cannot be used as a JSX component.": { + "category": "Error", + "code": 2786 + }, + "Its return type '{0}' is not a valid JSX element.": { + "category": "Error", + "code": 2787 + }, + "Its instance type '{0}' is not a valid JSX element.": { + "category": "Error", + "code": 2788 + }, + "Its element type '{0}' is not a valid JSX element.": { + "category": "Error", + "code": 2789 + }, + "The operand of a 'delete' operator must be optional.": { + "category": "Error", + "code": 2790 + }, + "Exponentiation cannot be performed on 'bigint' values unless the 'target' option is set to 'es2016' or later.": { + "category": "Error", + "code": 2791 + }, + "Cannot find module '{0}'. Did you mean to set the 'moduleResolution' option to 'nodenext', or to add aliases to the 'paths' option?": { + "category": "Error", + "code": 2792 + }, + "The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible.": { + "category": "Error", + "code": 2793 + }, + "Expected {0} arguments, but got {1}. Did you forget to include 'void' in your type argument to 'Promise'?": { + "category": "Error", + "code": 2794 + }, + "The 'intrinsic' keyword can only be used to declare compiler provided intrinsic types.": { + "category": "Error", + "code": 2795 + }, + "It is likely that you are missing a comma to separate these two template expressions. They form a tagged template expression which cannot be invoked.": { + "category": "Error", + "code": 2796 + }, + "A mixin class that extends from a type variable containing an abstract construct signature must also be declared 'abstract'.": { + "category": "Error", + "code": 2797 + }, + "The declaration was marked as deprecated here.": { + "category": "Error", + "code": 2798 + }, + "Type produces a tuple type that is too large to represent.": { + "category": "Error", + "code": 2799 + }, + "Expression produces a tuple type that is too large to represent.": { + "category": "Error", + "code": 2800 + }, + "This condition will always return true since this '{0}' is always defined.": { + "category": "Error", + "code": 2801 + }, + "Type '{0}' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher.": { + "category": "Error", + "code": 2802 + }, + "Cannot assign to private method '{0}'. Private methods are not writable.": { + "category": "Error", + "code": 2803 + }, + "Duplicate identifier '{0}'. Static and instance elements cannot share the same private name.": { + "category": "Error", + "code": 2804 + }, + "Private accessor was defined without a getter.": { + "category": "Error", + "code": 2806 + }, + "This syntax requires an imported helper named '{1}' with {2} parameters, which is not compatible with the one in '{0}'. Consider upgrading your version of '{0}'.": { + "category": "Error", + "code": 2807 + }, + "A get accessor must be at least as accessible as the setter": { + "category": "Error", + "code": 2808 + }, + "Declaration or statement expected. This '=' follows a block of statements, so if you intended to write a destructuring assignment, you might need to wrap the whole assignment in parentheses.": { + "category": "Error", + "code": 2809 + }, + "Expected 1 argument, but got 0. 'new Promise()' needs a JSDoc hint to produce a 'resolve' that can be called without arguments.": { + "category": "Error", + "code": 2810 + }, + "Initializer for property '{0}'": { + "category": "Error", + "code": 2811 + }, + "Property '{0}' does not exist on type '{1}'. Try changing the 'lib' compiler option to include 'dom'.": { + "category": "Error", + "code": 2812 + }, + "Class declaration cannot implement overload list for '{0}'.": { + "category": "Error", + "code": 2813 + }, + "Function with bodies can only merge with classes that are ambient.": { + "category": "Error", + "code": 2814 + }, + "'arguments' cannot be referenced in property initializers or class static initialization blocks.": { + "category": "Error", + "code": 2815 + }, + "Cannot use 'this' in a static property initializer of a decorated class.": { + "category": "Error", + "code": 2816 + }, + "Property '{0}' has no initializer and is not definitely assigned in a class static block.": { + "category": "Error", + "code": 2817 + }, + "Duplicate identifier '{0}'. Compiler reserves name '{1}' when emitting 'super' references in static initializers.": { + "category": "Error", + "code": 2818 + }, + "Namespace name cannot be '{0}'.": { + "category": "Error", + "code": 2819 + }, + "Type '{0}' is not assignable to type '{1}'. Did you mean '{2}'?": { + "category": "Error", + "code": 2820 + }, + "Import assertions are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'.": { + "category": "Error", + "code": 2821 + }, + "Import assertions cannot be used with type-only imports or exports.": { + "category": "Error", + "code": 2822 + }, + "Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'.": { + "category": "Error", + "code": 2823 + }, + "Cannot find namespace '{0}'. Did you mean '{1}'?": { + "category": "Error", + "code": 2833 + }, + "Relative import paths need explicit file extensions in ECMAScript imports when '--moduleResolution' is 'node16' or 'nodenext'. Consider adding an extension to the import path.": { + "category": "Error", + "code": 2834 + }, + "Relative import paths need explicit file extensions in ECMAScript imports when '--moduleResolution' is 'node16' or 'nodenext'. Did you mean '{0}'?": { + "category": "Error", + "code": 2835 + }, + "Import assertions are not allowed on statements that compile to CommonJS 'require' calls.": { + "category": "Error", + "code": 2836 + }, + "Import assertion values must be string literal expressions.": { + "category": "Error", + "code": 2837 + }, + "All declarations of '{0}' must have identical constraints.": { + "category": "Error", + "code": 2838 + }, + "This condition will always return '{0}' since JavaScript compares objects by reference, not value.": { + "category": "Error", + "code": 2839 + }, + "An interface cannot extend a primitive type like '{0}'. It can only extend other named object types.": { + "category": "Error", + "code": 2840 + }, + "'{0}' is an unused renaming of '{1}'. Did you intend to use it as a type annotation?": { + "category": "Error", + "code": 2842 + }, + "We can only write a type for '{0}' by adding a type for the entire parameter here.": { + "category": "Error", + "code": 2843 + }, + "Type of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor.": { + "category": "Error", + "code": 2844 + }, + "This condition will always return '{0}'.": { + "category": "Error", + "code": 2845 + }, + "A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file '{0}' instead?": { + "category": "Error", + "code": 2846 + }, + "The right-hand side of an 'instanceof' expression must not be an instantiation expression.": { + "category": "Error", + "code": 2848 + }, + "Target signature provides too few arguments. Expected {0} or more, but got {1}.": { + "category": "Error", + "code": 2849 + }, + "The initializer of a 'using' declaration must be either an object with a '[Symbol.dispose]()' method, or be 'null' or 'undefined'.": { + "category": "Error", + "code": 2850 + }, + "The initializer of an 'await using' declaration must be either an object with a '[Symbol.asyncDispose]()' or '[Symbol.dispose]()' method, or be 'null' or 'undefined'.": { + "category": "Error", + "code": 2851 + }, + "'await using' statements are only allowed within async functions and at the top levels of modules.": { + "category": "Error", + "code": 2852 + }, + "'await using' statements are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.": { + "category": "Error", + "code": 2853 + }, + "Top-level 'await using' statements are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher.": { + "category": "Error", + "code": 2854 + }, + "Class field '{0}' defined by the parent class is not accessible in the child class via super.": { + "category": "Error", + "code": 2855 + }, + "Import attributes are not allowed on statements that compile to CommonJS 'require' calls.": { + "category": "Error", + "code": 2856 + }, + "Import attributes cannot be used with type-only imports or exports.": { + "category": "Error", + "code": 2857 + }, + "Import attribute values must be string literal expressions.": { + "category": "Error", + "code": 2858 + }, + "Excessive complexity comparing types '{0}' and '{1}'.": { + "category": "Error", + "code": 2859 + }, + "The left-hand side of an 'instanceof' expression must be assignable to the first argument of the right-hand side's '[Symbol.hasInstance]' method.": { + "category": "Error", + "code": 2860 + }, + "An object's '[Symbol.hasInstance]' method must return a boolean value for it to be used on the right-hand side of an 'instanceof' expression.": { + "category": "Error", + "code": 2861 + }, + "Type '{0}' is generic and can only be indexed for reading.": { + "category": "Error", + "code": 2862 + }, + "A class cannot extend a primitive type like '{0}'. Classes can only extend constructable values.": { + "category": "Error", + "code": 2863 + }, + "A class cannot implement a primitive type like '{0}'. It can only implement other named object types.": { + "category": "Error", + "code": 2864 + }, + "Import '{0}' conflicts with local value, so must be declared with a type-only import when 'isolatedModules' is enabled.": { + "category": "Error", + "code": 2865 + }, + "Import '{0}' conflicts with global value used in this file, so must be declared with a type-only import when 'isolatedModules' is enabled.": { + "category": "Error", + "code": 2866 + }, + "Cannot find name '{0}'. Do you need to install type definitions for Bun? Try `npm i --save-dev @types/bun`.": { + "category": "Error", + "code": 2867 + }, + "Cannot find name '{0}'. Do you need to install type definitions for Bun? Try `npm i --save-dev @types/bun` and then add 'bun' to the types field in your tsconfig.": { + "category": "Error", + "code": 2868 + }, + "Right operand of ?? is unreachable because the left operand is never nullish.": { + "category": "Error", + "code": 2869 + }, + "This binary expression is never nullish. Are you missing parentheses?": { + "category": "Error", + "code": 2870 + }, + "This expression is always nullish.": { + "category": "Error", + "code": 2871 + }, + "This kind of expression is always truthy.": { + "category": "Error", + "code": 2872 + }, + "This kind of expression is always falsy.": { + "category": "Error", + "code": 2873 + }, + "This JSX tag requires '{0}' to be in scope, but it could not be found.": { + "category": "Error", + "code": 2874 + }, + "This JSX tag requires the module path '{0}' to exist, but none could be found. Make sure you have types for the appropriate package installed.": { + "category": "Error", + "code": 2875 + }, + "This relative import path is unsafe to rewrite because it looks like a file name, but actually resolves to \"{0}\".": { + "category": "Error", + "code": 2876 + }, + "This import uses a '{0}' extension to resolve to an input TypeScript file, but will not be rewritten during emit because it is not a relative path.": { + "category": "Error", + "code": 2877 + }, + "This import path is unsafe to rewrite because it resolves to another project, and the relative path between the projects' output files is not the same as the relative path between its input files.": { + "category": "Error", + "code": 2878 + }, + "Using JSX fragments requires fragment factory '{0}' to be in scope, but it could not be found.": { + "category": "Error", + "code": 2879 + }, + "Import assertions have been replaced by import attributes. Use 'with' instead of 'assert'.": { + "category": "Error", + "code": 2880 + }, + "This expression is never nullish.": { + "category": "Error", + "code": 2881 + }, + "Cannot find module or type declarations for side-effect import of '{0}'.": { + "category": "Error", + "code": 2882 + }, + "The inferred type of '{0}' cannot be named without a reference to '{2}' from '{1}'. This is likely not portable. A type annotation is necessary.": { + "category": "Error", + "code": 2883 + }, + "Import declaration '{0}' is using private name '{1}'.": { + "category": "Error", + "code": 4000 + }, + "Type parameter '{0}' of exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4002 + }, + "Type parameter '{0}' of exported interface has or is using private name '{1}'.": { + "category": "Error", + "code": 4004 + }, + "Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'.": { + "category": "Error", + "code": 4006 + }, + "Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'.": { + "category": "Error", + "code": 4008 + }, + "Type parameter '{0}' of public static method from exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4010 + }, + "Type parameter '{0}' of public method from exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4012 + }, + "Type parameter '{0}' of method from exported interface has or is using private name '{1}'.": { + "category": "Error", + "code": 4014 + }, + "Type parameter '{0}' of exported function has or is using private name '{1}'.": { + "category": "Error", + "code": 4016 + }, + "Implements clause of exported class '{0}' has or is using private name '{1}'.": { + "category": "Error", + "code": 4019 + }, + "'extends' clause of exported class '{0}' has or is using private name '{1}'.": { + "category": "Error", + "code": 4020 + }, + "'extends' clause of exported class has or is using private name '{0}'.": { + "category": "Error", + "code": 4021 + }, + "'extends' clause of exported interface '{0}' has or is using private name '{1}'.": { + "category": "Error", + "code": 4022 + }, + "Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named.": { + "category": "Error", + "code": 4023 + }, + "Exported variable '{0}' has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4024 + }, + "Exported variable '{0}' has or is using private name '{1}'.": { + "category": "Error", + "code": 4025 + }, + "Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.": { + "category": "Error", + "code": 4026 + }, + "Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4027 + }, + "Public static property '{0}' of exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4028 + }, + "Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.": { + "category": "Error", + "code": 4029 + }, + "Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4030 + }, + "Public property '{0}' of exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4031 + }, + "Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4032 + }, + "Property '{0}' of exported interface has or is using private name '{1}'.": { + "category": "Error", + "code": 4033 + }, + "Parameter type of public static setter '{0}' from exported class has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4034 + }, + "Parameter type of public static setter '{0}' from exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4035 + }, + "Parameter type of public setter '{0}' from exported class has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4036 + }, + "Parameter type of public setter '{0}' from exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4037 + }, + "Return type of public static getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named.": { + "category": "Error", + "code": 4038 + }, + "Return type of public static getter '{0}' from exported class has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4039 + }, + "Return type of public static getter '{0}' from exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4040 + }, + "Return type of public getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named.": { + "category": "Error", + "code": 4041 + }, + "Return type of public getter '{0}' from exported class has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4042 + }, + "Return type of public getter '{0}' from exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4043 + }, + "Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'.": { + "category": "Error", + "code": 4044 + }, + "Return type of constructor signature from exported interface has or is using private name '{0}'.": { + "category": "Error", + "code": 4045 + }, + "Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'.": { + "category": "Error", + "code": 4046 + }, + "Return type of call signature from exported interface has or is using private name '{0}'.": { + "category": "Error", + "code": 4047 + }, + "Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'.": { + "category": "Error", + "code": 4048 + }, + "Return type of index signature from exported interface has or is using private name '{0}'.": { + "category": "Error", + "code": 4049 + }, + "Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named.": { + "category": "Error", + "code": 4050 + }, + "Return type of public static method from exported class has or is using name '{0}' from private module '{1}'.": { + "category": "Error", + "code": 4051 + }, + "Return type of public static method from exported class has or is using private name '{0}'.": { + "category": "Error", + "code": 4052 + }, + "Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named.": { + "category": "Error", + "code": 4053 + }, + "Return type of public method from exported class has or is using name '{0}' from private module '{1}'.": { + "category": "Error", + "code": 4054 + }, + "Return type of public method from exported class has or is using private name '{0}'.": { + "category": "Error", + "code": 4055 + }, + "Return type of method from exported interface has or is using name '{0}' from private module '{1}'.": { + "category": "Error", + "code": 4056 + }, + "Return type of method from exported interface has or is using private name '{0}'.": { + "category": "Error", + "code": 4057 + }, + "Return type of exported function has or is using name '{0}' from external module {1} but cannot be named.": { + "category": "Error", + "code": 4058 + }, + "Return type of exported function has or is using name '{0}' from private module '{1}'.": { + "category": "Error", + "code": 4059 + }, + "Return type of exported function has or is using private name '{0}'.": { + "category": "Error", + "code": 4060 + }, + "Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named.": { + "category": "Error", + "code": 4061 + }, + "Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4062 + }, + "Parameter '{0}' of constructor from exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4063 + }, + "Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4064 + }, + "Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'.": { + "category": "Error", + "code": 4065 + }, + "Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4066 + }, + "Parameter '{0}' of call signature from exported interface has or is using private name '{1}'.": { + "category": "Error", + "code": 4067 + }, + "Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named.": { + "category": "Error", + "code": 4068 + }, + "Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4069 + }, + "Parameter '{0}' of public static method from exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4070 + }, + "Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named.": { + "category": "Error", + "code": 4071 + }, + "Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4072 + }, + "Parameter '{0}' of public method from exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4073 + }, + "Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4074 + }, + "Parameter '{0}' of method from exported interface has or is using private name '{1}'.": { + "category": "Error", + "code": 4075 + }, + "Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named.": { + "category": "Error", + "code": 4076 + }, + "Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4077 + }, + "Parameter '{0}' of exported function has or is using private name '{1}'.": { + "category": "Error", + "code": 4078 + }, + "Exported type alias '{0}' has or is using private name '{1}'.": { + "category": "Error", + "code": 4081 + }, + "Default export of the module has or is using private name '{0}'.": { + "category": "Error", + "code": 4082 + }, + "Type parameter '{0}' of exported type alias has or is using private name '{1}'.": { + "category": "Error", + "code": 4083 + }, + "Exported type alias '{0}' has or is using private name '{1}' from module {2}.": { + "category": "Error", + "code": 4084 + }, + "Extends clause for inferred type '{0}' has or is using private name '{1}'.": { + "category": "Error", + "code": 4085 + }, + "Parameter '{0}' of index signature from exported interface has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4091 + }, + "Parameter '{0}' of index signature from exported interface has or is using private name '{1}'.": { + "category": "Error", + "code": 4092 + }, + "Property '{0}' of exported anonymous class type may not be private or protected.": { + "category": "Error", + "code": 4094 + }, + "Public static method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.": { + "category": "Error", + "code": 4095 + }, + "Public static method '{0}' of exported class has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4096 + }, + "Public static method '{0}' of exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4097 + }, + "Public method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.": { + "category": "Error", + "code": 4098 + }, + "Public method '{0}' of exported class has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4099 + }, + "Public method '{0}' of exported class has or is using private name '{1}'.": { + "category": "Error", + "code": 4100 + }, + "Method '{0}' of exported interface has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4101 + }, + "Method '{0}' of exported interface has or is using private name '{1}'.": { + "category": "Error", + "code": 4102 + }, + "Type parameter '{0}' of exported mapped object type is using private name '{1}'.": { + "category": "Error", + "code": 4103 + }, + "The type '{0}' is 'readonly' and cannot be assigned to the mutable type '{1}'.": { + "category": "Error", + "code": 4104 + }, + "Private or protected member '{0}' cannot be accessed on a type parameter.": { + "category": "Error", + "code": 4105 + }, + "Parameter '{0}' of accessor has or is using private name '{1}'.": { + "category": "Error", + "code": 4106 + }, + "Parameter '{0}' of accessor has or is using name '{1}' from private module '{2}'.": { + "category": "Error", + "code": 4107 + }, + "Parameter '{0}' of accessor has or is using name '{1}' from external module '{2}' but cannot be named.": { + "category": "Error", + "code": 4108 + }, + "Type arguments for '{0}' circularly reference themselves.": { + "category": "Error", + "code": 4109 + }, + "Tuple type arguments circularly reference themselves.": { + "category": "Error", + "code": 4110 + }, + "Property '{0}' comes from an index signature, so it must be accessed with ['{0}'].": { + "category": "Error", + "code": 4111 + }, + "This member cannot have an 'override' modifier because its containing class '{0}' does not extend another class.": { + "category": "Error", + "code": 4112 + }, + "This member cannot have an 'override' modifier because it is not declared in the base class '{0}'.": { + "category": "Error", + "code": 4113 + }, + "This member must have an 'override' modifier because it overrides a member in the base class '{0}'.": { + "category": "Error", + "code": 4114 + }, + "This parameter property must have an 'override' modifier because it overrides a member in base class '{0}'.": { + "category": "Error", + "code": 4115 + }, + "This member must have an 'override' modifier because it overrides an abstract method that is declared in the base class '{0}'.": { + "category": "Error", + "code": 4116 + }, + "This member cannot have an 'override' modifier because it is not declared in the base class '{0}'. Did you mean '{1}'?": { + "category": "Error", + "code": 4117 + }, + "The type of this node cannot be serialized because its property '{0}' cannot be serialized.": { + "category": "Error", + "code": 4118 + }, + "This member must have a JSDoc comment with an '@override' tag because it overrides a member in the base class '{0}'.": { + "category": "Error", + "code": 4119 + }, + "This parameter property must have a JSDoc comment with an '@override' tag because it overrides a member in the base class '{0}'.": { + "category": "Error", + "code": 4120 + }, + "This member cannot have a JSDoc comment with an '@override' tag because its containing class '{0}' does not extend another class.": { + "category": "Error", + "code": 4121 + }, + "This member cannot have a JSDoc comment with an '@override' tag because it is not declared in the base class '{0}'.": { + "category": "Error", + "code": 4122 + }, + "This member cannot have a JSDoc comment with an 'override' tag because it is not declared in the base class '{0}'. Did you mean '{1}'?": { + "category": "Error", + "code": 4123 + }, + "Compiler option '{0}' of value '{1}' is unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'.": { + "category": "Error", + "code": 4124 + }, + "Each declaration of '{0}.{1}' differs in its value, where '{2}' was expected but '{3}' was given.": { + "category": "Error", + "code": 4125 + }, + "One value of '{0}.{1}' is the string '{2}', and the other is assumed to be an unknown numeric value.": { + "category": "Error", + "code": 4126 + }, + "This member cannot have an 'override' modifier because its name is dynamic.": { + "category": "Error", + "code": 4127 + }, + "This member cannot have a JSDoc comment with an '@override' tag because its name is dynamic.": { + "category": "Error", + "code": 4128 + }, + "The current host does not support the '{0}' option.": { + "category": "Error", + "code": 5001 + }, + "Cannot find the common subdirectory path for the input files.": { + "category": "Error", + "code": 5009 + }, + "File specification cannot end in a recursive directory wildcard ('**'): '{0}'.": { + "category": "Error", + "code": 5010 + }, + "The common source directory of '{0}' is '{1}'. The 'rootDir' setting must be explicitly set to this or another path to adjust your output's file layout.": { + "category": "Error", + "code": 5011 + }, + "Cannot read file '{0}': {1}.": { + "category": "Error", + "code": 5012 + }, + "Unknown compiler option '{0}'.": { + "category": "Error", + "code": 5023 + }, + "Compiler option '{0}' requires a value of type {1}.": { + "category": "Error", + "code": 5024 + }, + "Unknown compiler option '{0}'. Did you mean '{1}'?": { + "category": "Error", + "code": 5025 + }, + "Could not write file '{0}': {1}.": { + "category": "Error", + "code": 5033 + }, + "Option 'project' cannot be mixed with source files on a command line.": { + "category": "Error", + "code": 5042 + }, + "Option 'isolatedModules' can only be used when either option '--module' is provided or option 'target' is 'ES2015' or higher.": { + "category": "Error", + "code": 5047 + }, + "Option '{0} can only be used when either option '--inlineSourceMap' or option '--sourceMap' is provided.": { + "category": "Error", + "code": 5051 + }, + "Option '{0}' cannot be specified without specifying option '{1}'.": { + "category": "Error", + "code": 5052 + }, + "Option '{0}' cannot be specified with option '{1}'.": { + "category": "Error", + "code": 5053 + }, + "A 'tsconfig.json' file is already defined at: '{0}'.": { + "category": "Error", + "code": 5054 + }, + "Cannot write file '{0}' because it would overwrite input file.": { + "category": "Error", + "code": 5055 + }, + "Cannot write file '{0}' because it would be overwritten by multiple input files.": { + "category": "Error", + "code": 5056 + }, + "Cannot find a tsconfig.json file at the specified directory: '{0}'.": { + "category": "Error", + "code": 5057 + }, + "The specified path does not exist: '{0}'.": { + "category": "Error", + "code": 5058 + }, + "Invalid value for '--reactNamespace'. '{0}' is not a valid identifier.": { + "category": "Error", + "code": 5059 + }, + "Pattern '{0}' can have at most one '*' character.": { + "category": "Error", + "code": 5061 + }, + "Substitution '{0}' in pattern '{1}' can have at most one '*' character.": { + "category": "Error", + "code": 5062 + }, + "Substitutions for pattern '{0}' should be an array.": { + "category": "Error", + "code": 5063 + }, + "Substitution '{0}' for pattern '{1}' has incorrect type, expected 'string', got '{2}'.": { + "category": "Error", + "code": 5064 + }, + "File specification cannot contain a parent directory ('..') that appears after a recursive directory wildcard ('**'): '{0}'.": { + "category": "Error", + "code": 5065 + }, + "Substitutions for pattern '{0}' shouldn't be an empty array.": { + "category": "Error", + "code": 5066 + }, + "Invalid value for 'jsxFactory'. '{0}' is not a valid identifier or qualified-name.": { + "category": "Error", + "code": 5067 + }, + "Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.": { + "category": "Error", + "code": 5068 + }, + "Option '{0}' cannot be specified without specifying option '{1}' or option '{2}'.": { + "category": "Error", + "code": 5069 + }, + "Option '--resolveJsonModule' cannot be specified when 'moduleResolution' is set to 'classic'.": { + "category": "Error", + "code": 5070 + }, + "Option '--resolveJsonModule' cannot be specified when 'module' is set to 'none', 'system', or 'umd'.": { + "category": "Error", + "code": 5071 + }, + "Unknown build option '{0}'.": { + "category": "Error", + "code": 5072 + }, + "Build option '{0}' requires a value of type {1}.": { + "category": "Error", + "code": 5073 + }, + "Option '--incremental' can only be specified using tsconfig, emitting to single file or when option '--tsBuildInfoFile' is specified.": { + "category": "Error", + "code": 5074 + }, + "'{0}' is assignable to the constraint of type '{1}', but '{1}' could be instantiated with a different subtype of constraint '{2}'.": { + "category": "Error", + "code": 5075 + }, + "'{0}' and '{1}' operations cannot be mixed without parentheses.": { + "category": "Error", + "code": 5076 + }, + "Unknown build option '{0}'. Did you mean '{1}'?": { + "category": "Error", + "code": 5077 + }, + "Unknown watch option '{0}'.": { + "category": "Error", + "code": 5078 + }, + "Unknown watch option '{0}'. Did you mean '{1}'?": { + "category": "Error", + "code": 5079 + }, + "Watch option '{0}' requires a value of type {1}.": { + "category": "Error", + "code": 5080 + }, + "Cannot find a tsconfig.json file at the current directory: {0}.": { + "category": "Error", + "code": 5081 + }, + "'{0}' could be instantiated with an arbitrary type which could be unrelated to '{1}'.": { + "category": "Error", + "code": 5082 + }, + "Cannot read file '{0}'.": { + "category": "Error", + "code": 5083 + }, + "A tuple member cannot be both optional and rest.": { + "category": "Error", + "code": 5085 + }, + "A labeled tuple element is declared as optional with a question mark after the name and before the colon, rather than after the type.": { + "category": "Error", + "code": 5086 + }, + "A labeled tuple element is declared as rest with a '...' before the name, rather than before the type.": { + "category": "Error", + "code": 5087 + }, + "The inferred type of '{0}' references a type with a cyclic structure which cannot be trivially serialized. A type annotation is necessary.": { + "category": "Error", + "code": 5088 + }, + "Option '{0}' cannot be specified when option 'jsx' is '{1}'.": { + "category": "Error", + "code": 5089 + }, + "Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?": { + "category": "Error", + "code": 5090 + }, + "Option 'preserveConstEnums' cannot be disabled when '{0}' is enabled.": { + "category": "Error", + "code": 5091 + }, + "The root value of a '{0}' file must be an object.": { + "category": "Error", + "code": 5092 + }, + "Compiler option '--{0}' may only be used with '--build'.": { + "category": "Error", + "code": 5093 + }, + "Compiler option '--{0}' may not be used with '--build'.": { + "category": "Error", + "code": 5094 + }, + "Option '{0}' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.": { + "category": "Error", + "code": 5095 + }, + "Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set.": { + "category": "Error", + "code": 5096 + }, + "An import path can only end with a '{0}' extension when 'allowImportingTsExtensions' is enabled.": { + "category": "Error", + "code": 5097 + }, + "Option '{0}' can only be used when 'moduleResolution' is set to 'node16', 'nodenext', or 'bundler'.": { + "category": "Error", + "code": 5098 + }, + "Option '{0}' is deprecated and will stop functioning in TypeScript {1}. Specify compilerOption '\"ignoreDeprecations\": \"{2}\"' to silence this error.": { + "category": "Error", + "code": 5101 + }, + "Option '{0}' has been removed. Please remove it from your configuration.": { + "category": "Error", + "code": 5102 + }, + "Invalid value for '--ignoreDeprecations'.": { + "category": "Error", + "code": 5103 + }, + "Option '{0}' is redundant and cannot be specified with option '{1}'.": { + "category": "Error", + "code": 5104 + }, + "Option 'verbatimModuleSyntax' cannot be used when 'module' is set to 'UMD', 'AMD', or 'System'.": { + "category": "Error", + "code": 5105 + }, + "Use '{0}' instead.": { + "category": "Message", + "code": 5106 + }, + "Option '{0}={1}' is deprecated and will stop functioning in TypeScript {2}. Specify compilerOption '\"ignoreDeprecations\": \"{3}\"' to silence this error.": { + "category": "Error", + "code": 5107 + }, + "Option '{0}={1}' has been removed. Please remove it from your configuration.": { + "category": "Error", + "code": 5108 + }, + "Option 'moduleResolution' must be set to '{0}' (or left unspecified) when option 'module' is set to '{1}'.": { + "category": "Error", + "code": 5109 + }, + "Option 'module' must be set to '{0}' when option 'moduleResolution' is set to '{1}'.": { + "category": "Error", + "code": 5110 + }, + "Visit https://aka.ms/ts6 for migration information.": { + "category": "Message", + "code": 5111 + }, + "tsconfig.json is present but will not be loaded if files are specified on commandline. Use '--ignoreConfig' to skip this error.": { + "category": "Error", + "code": 5112 + }, + "Generates a sourcemap for each corresponding '.d.ts' file.": { + "category": "Message", + "code": 6000 + }, + "Concatenate and emit output to single file.": { + "category": "Message", + "code": 6001 + }, + "Generates corresponding '.d.ts' file.": { + "category": "Message", + "code": 6002 + }, + "Specify the location where debugger should locate TypeScript files instead of source locations.": { + "category": "Message", + "code": 6004 + }, + "Watch input files.": { + "category": "Message", + "code": 6005 + }, + "Redirect output structure to the directory.": { + "category": "Message", + "code": 6006 + }, + "Do not erase const enum declarations in generated code.": { + "category": "Message", + "code": 6007 + }, + "Do not emit outputs if any errors were reported.": { + "category": "Message", + "code": 6008 + }, + "Do not emit comments to output.": { + "category": "Message", + "code": 6009 + }, + "Do not emit outputs.": { + "category": "Message", + "code": 6010 + }, + "Allow default imports from modules with no default export. This does not affect code emit, just typechecking.": { + "category": "Message", + "code": 6011 + }, + "Skip type checking of declaration files.": { + "category": "Message", + "code": 6012 + }, + "Do not resolve the real path of symlinks.": { + "category": "Message", + "code": 6013 + }, + "Only emit '.d.ts' declaration files.": { + "category": "Message", + "code": 6014 + }, + "Specify ECMAScript target version.": { + "category": "Message", + "code": 6015 + }, + "Specify module code generation.": { + "category": "Message", + "code": 6016 + }, + "Print this message.": { + "category": "Message", + "code": 6017 + }, + "Print the compiler's version.": { + "category": "Message", + "code": 6019 + }, + "Compile the project given the path to its configuration file, or to a folder with a 'tsconfig.json'.": { + "category": "Message", + "code": 6020 + }, + "Syntax: {0}": { + "category": "Message", + "code": 6023 + }, + "options": { + "category": "Message", + "code": 6024 + }, + "file": { + "category": "Message", + "code": 6025 + }, + "Examples: {0}": { + "category": "Message", + "code": 6026 + }, + "Options:": { + "category": "Message", + "code": 6027 + }, + "Version {0}": { + "category": "Message", + "code": 6029 + }, + "Insert command line options and files from a file.": { + "category": "Message", + "code": 6030 + }, + "Starting compilation in watch mode...": { + "category": "Message", + "code": 6031 + }, + "File change detected. Starting incremental compilation...": { + "category": "Message", + "code": 6032 + }, + "KIND": { + "category": "Message", + "code": 6034 + }, + "FILE": { + "category": "Message", + "code": 6035 + }, + "VERSION": { + "category": "Message", + "code": 6036 + }, + "LOCATION": { + "category": "Message", + "code": 6037 + }, + "DIRECTORY": { + "category": "Message", + "code": 6038 + }, + "STRATEGY": { + "category": "Message", + "code": 6039 + }, + "FILE OR DIRECTORY": { + "category": "Message", + "code": 6040 + }, + "Errors Files": { + "category": "Message", + "code": 6041 + }, + "Generates corresponding '.map' file.": { + "category": "Message", + "code": 6043 + }, + "Compiler option '{0}' expects an argument.": { + "category": "Error", + "code": 6044 + }, + "Unterminated quoted string in response file '{0}'.": { + "category": "Error", + "code": 6045 + }, + "Argument for '{0}' option must be: {1}.": { + "category": "Error", + "code": 6046 + }, + "Locale must be of the form or -. For example '{0}' or '{1}'.": { + "category": "Error", + "code": 6048 + }, + "Unable to open file '{0}'.": { + "category": "Error", + "code": 6050 + }, + "Corrupted locale file {0}.": { + "category": "Error", + "code": 6051 + }, + "Raise error on expressions and declarations with an implied 'any' type.": { + "category": "Message", + "code": 6052 + }, + "File '{0}' not found.": { + "category": "Error", + "code": 6053 + }, + "File '{0}' has an unsupported extension. The only supported extensions are {1}.": { + "category": "Error", + "code": 6054 + }, + "Suppress noImplicitAny errors for indexing objects lacking index signatures.": { + "category": "Message", + "code": 6055 + }, + "Do not emit declarations for code that has an '@internal' annotation.": { + "category": "Message", + "code": 6056 + }, + "Specify the root directory of input files. Use to control the output directory structure with --outDir.": { + "category": "Message", + "code": 6058 + }, + "File '{0}' is not under 'rootDir' '{1}'. 'rootDir' is expected to contain all source files.": { + "category": "Error", + "code": 6059 + }, + "Specify the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix).": { + "category": "Message", + "code": 6060 + }, + "NEWLINE": { + "category": "Message", + "code": 6061 + }, + "Option '{0}' can only be specified in 'tsconfig.json' file or set to 'null' on command line.": { + "category": "Error", + "code": 6064 + }, + "Enables experimental support for ES7 decorators.": { + "category": "Message", + "code": 6065 + }, + "Enables experimental support for emitting type metadata for decorators.": { + "category": "Message", + "code": 6066 + }, + "Initializes a TypeScript project and creates a tsconfig.json file.": { + "category": "Message", + "code": 6070 + }, + "Successfully created a tsconfig.json file.": { + "category": "Message", + "code": 6071 + }, + "Suppress excess property checks for object literals.": { + "category": "Message", + "code": 6072 + }, + "Stylize errors and messages using color and context (experimental).": { + "category": "Message", + "code": 6073 + }, + "Do not report errors on unused labels.": { + "category": "Message", + "code": 6074 + }, + "Report error when not all code paths in function return a value.": { + "category": "Message", + "code": 6075 + }, + "Report errors for fallthrough cases in switch statement.": { + "category": "Message", + "code": 6076 + }, + "Do not report errors on unreachable code.": { + "category": "Message", + "code": 6077 + }, + "Disallow inconsistently-cased references to the same file.": { + "category": "Message", + "code": 6078 + }, + "Specify library files to be included in the compilation.": { + "category": "Message", + "code": 6079 + }, + "Specify JSX code generation.": { + "category": "Message", + "code": 6080 + }, + "Only 'amd' and 'system' modules are supported alongside --{0}.": { + "category": "Error", + "code": 6082 + }, + "Base directory to resolve non-absolute module names.": { + "category": "Message", + "code": 6083 + }, + "[Deprecated] Use '--jsxFactory' instead. Specify the object invoked for createElement when targeting 'react' JSX emit": { + "category": "Message", + "code": 6084 + }, + "Enable tracing of the name resolution process.": { + "category": "Message", + "code": 6085 + }, + "======== Resolving module '{0}' from '{1}'. ========": { + "category": "Message", + "code": 6086 + }, + "Explicitly specified module resolution kind: '{0}'.": { + "category": "Message", + "code": 6087 + }, + "Module resolution kind is not specified, using '{0}'.": { + "category": "Message", + "code": 6088 + }, + "======== Module name '{0}' was successfully resolved to '{1}'. ========": { + "category": "Message", + "code": 6089 + }, + "======== Module name '{0}' was not resolved. ========": { + "category": "Message", + "code": 6090 + }, + "'paths' option is specified, looking for a pattern to match module name '{0}'.": { + "category": "Message", + "code": 6091 + }, + "Module name '{0}', matched pattern '{1}'.": { + "category": "Message", + "code": 6092 + }, + "Trying substitution '{0}', candidate module location: '{1}'.": { + "category": "Message", + "code": 6093 + }, + "Resolving module name '{0}' relative to base url '{1}' - '{2}'.": { + "category": "Message", + "code": 6094 + }, + "Loading module as file / folder, candidate module location '{0}', target file types: {1}.": { + "category": "Message", + "code": 6095 + }, + "File '{0}' does not exist.": { + "category": "Message", + "code": 6096 + }, + "File '{0}' exists - use it as a name resolution result.": { + "category": "Message", + "code": 6097 + }, + "Loading module '{0}' from 'node_modules' folder, target file types: {1}.": { + "category": "Message", + "code": 6098 + }, + "Found 'package.json' at '{0}'.": { + "category": "Message", + "code": 6099 + }, + "'package.json' does not have a '{0}' field.": { + "category": "Message", + "code": 6100 + }, + "'package.json' has '{0}' field '{1}' that references '{2}'.": { + "category": "Message", + "code": 6101 + }, + "Allow javascript files to be compiled.": { + "category": "Message", + "code": 6102 + }, + "Checking if '{0}' is the longest matching prefix for '{1}' - '{2}'.": { + "category": "Message", + "code": 6104 + }, + "Expected type of '{0}' field in 'package.json' to be '{1}', got '{2}'.": { + "category": "Message", + "code": 6105 + }, + "'baseUrl' option is set to '{0}', using this value to resolve non-relative module name '{1}'.": { + "category": "Message", + "code": 6106 + }, + "'rootDirs' option is set, using it to resolve relative module name '{0}'.": { + "category": "Message", + "code": 6107 + }, + "Longest matching prefix for '{0}' is '{1}'.": { + "category": "Message", + "code": 6108 + }, + "Loading '{0}' from the root dir '{1}', candidate location '{2}'.": { + "category": "Message", + "code": 6109 + }, + "Trying other entries in 'rootDirs'.": { + "category": "Message", + "code": 6110 + }, + "Module resolution using 'rootDirs' has failed.": { + "category": "Message", + "code": 6111 + }, + "Do not emit 'use strict' directives in module output.": { + "category": "Message", + "code": 6112 + }, + "Enable strict null checks.": { + "category": "Message", + "code": 6113 + }, + "Unknown option 'excludes'. Did you mean 'exclude'?": { + "category": "Error", + "code": 6114 + }, + "Raise error on 'this' expressions with an implied 'any' type.": { + "category": "Message", + "code": 6115 + }, + "======== Resolving type reference directive '{0}', containing file '{1}', root directory '{2}'. ========": { + "category": "Message", + "code": 6116 + }, + "======== Type reference directive '{0}' was successfully resolved to '{1}', primary: {2}. ========": { + "category": "Message", + "code": 6119 + }, + "======== Type reference directive '{0}' was not resolved. ========": { + "category": "Message", + "code": 6120 + }, + "Resolving with primary search path '{0}'.": { + "category": "Message", + "code": 6121 + }, + "Root directory cannot be determined, skipping primary search paths.": { + "category": "Message", + "code": 6122 + }, + "======== Resolving type reference directive '{0}', containing file '{1}', root directory not set. ========": { + "category": "Message", + "code": 6123 + }, + "Type declaration files to be included in compilation.": { + "category": "Message", + "code": 6124 + }, + "Looking up in 'node_modules' folder, initial location '{0}'.": { + "category": "Message", + "code": 6125 + }, + "Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder.": { + "category": "Message", + "code": 6126 + }, + "======== Resolving type reference directive '{0}', containing file not set, root directory '{1}'. ========": { + "category": "Message", + "code": 6127 + }, + "======== Resolving type reference directive '{0}', containing file not set, root directory not set. ========": { + "category": "Message", + "code": 6128 + }, + "Resolving real path for '{0}', result '{1}'.": { + "category": "Message", + "code": 6130 + }, + "Cannot compile modules using option '{0}' unless the '--module' flag is 'amd' or 'system'.": { + "category": "Error", + "code": 6131 + }, + "File name '{0}' has a '{1}' extension - stripping it.": { + "category": "Message", + "code": 6132 + }, + "'{0}' is declared but its value is never read.": { + "category": "Error", + "code": 6133 + }, + "Report errors on unused locals.": { + "category": "Message", + "code": 6134 + }, + "Report errors on unused parameters.": { + "category": "Message", + "code": 6135 + }, + "The maximum dependency depth to search under node_modules and load JavaScript files.": { + "category": "Message", + "code": 6136 + }, + "Cannot import type declaration files. Consider importing '{0}' instead of '{1}'.": { + "category": "Error", + "code": 6137 + }, + "Property '{0}' is declared but its value is never read.": { + "category": "Error", + "code": 6138 + }, + "Import emit helpers from 'tslib'.": { + "category": "Message", + "code": 6139 + }, + "Auto discovery for typings is enabled in project '{0}'. Running extra resolution pass for module '{1}' using cache location '{2}'.": { + "category": "Error", + "code": 6140 + }, + "Parse in strict mode and emit \"use strict\" for each source file.": { + "category": "Message", + "code": 6141 + }, + "Module '{0}' was resolved to '{1}', but '--jsx' is not set.": { + "category": "Error", + "code": 6142 + }, + "Module '{0}' was resolved as locally declared ambient module in file '{1}'.": { + "category": "Message", + "code": 6144 + }, + "Specify the JSX factory function to use when targeting 'react' JSX emit, e.g. 'React.createElement' or 'h'.": { + "category": "Message", + "code": 6146 + }, + "Resolution for module '{0}' was found in cache from location '{1}'.": { + "category": "Message", + "code": 6147 + }, + "Directory '{0}' does not exist, skipping all lookups in it.": { + "category": "Message", + "code": 6148 + }, + "Show diagnostic information.": { + "category": "Message", + "code": 6149 + }, + "Show verbose diagnostic information.": { + "category": "Message", + "code": 6150 + }, + "Emit a single file with source maps instead of having a separate file.": { + "category": "Message", + "code": 6151 + }, + "Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set.": { + "category": "Message", + "code": 6152 + }, + "Transpile each file as a separate module (similar to 'ts.transpileModule').": { + "category": "Message", + "code": 6153 + }, + "Print names of generated files part of the compilation.": { + "category": "Message", + "code": 6154 + }, + "Print names of files part of the compilation.": { + "category": "Message", + "code": 6155 + }, + "The locale used when displaying messages to the user (e.g. 'en-us')": { + "category": "Message", + "code": 6156 + }, + "Do not generate custom helper functions like '__extends' in compiled output.": { + "category": "Message", + "code": 6157 + }, + "Do not include the default library file (lib.d.ts).": { + "category": "Message", + "code": 6158 + }, + "Do not add triple-slash references or imported modules to the list of compiled files.": { + "category": "Message", + "code": 6159 + }, + "[Deprecated] Use '--skipLibCheck' instead. Skip type checking of default library declaration files.": { + "category": "Message", + "code": 6160 + }, + "List of folders to include type definitions from.": { + "category": "Message", + "code": 6161 + }, + "Disable size limitations on JavaScript projects.": { + "category": "Message", + "code": 6162 + }, + "The character set of the input files.": { + "category": "Message", + "code": 6163 + }, + "Skipping module '{0}' that looks like an absolute URI, target file types: {1}.": { + "category": "Message", + "code": 6164 + }, + "Do not truncate error messages.": { + "category": "Message", + "code": 6165 + }, + "Output directory for generated declaration files.": { + "category": "Message", + "code": 6166 + }, + "A series of entries which re-map imports to lookup locations relative to the 'baseUrl'.": { + "category": "Message", + "code": 6167 + }, + "List of root folders whose combined content represents the structure of the project at runtime.": { + "category": "Message", + "code": 6168 + }, + "Show all compiler options.": { + "category": "Message", + "code": 6169 + }, + "[Deprecated] Use '--outFile' instead. Concatenate and emit output to single file": { + "category": "Message", + "code": 6170 + }, + "Command-line Options": { + "category": "Message", + "code": 6171 + }, + "Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5'.": { + "category": "Message", + "code": 6179 + }, + "Enable all strict type-checking options.": { + "category": "Message", + "code": 6180 + }, + "Scoped package detected, looking in '{0}'": { + "category": "Message", + "code": 6182 + }, + "Reusing resolution of module '{0}' from '{1}' of old program, it was successfully resolved to '{2}'.": { + "category": "Message", + "code": 6183 + }, + "Reusing resolution of module '{0}' from '{1}' of old program, it was successfully resolved to '{2}' with Package ID '{3}'.": { + "category": "Message", + "code": 6184 + }, + "Enable strict checking of function types.": { + "category": "Message", + "code": 6186 + }, + "Enable strict checking of property initialization in classes.": { + "category": "Message", + "code": 6187 + }, + "Numeric separators are not allowed here.": { + "category": "Error", + "code": 6188 + }, + "Multiple consecutive numeric separators are not permitted.": { + "category": "Error", + "code": 6189 + }, + "Whether to keep outdated console output in watch mode instead of clearing the screen.": { + "category": "Message", + "code": 6191 + }, + "All imports in import declaration are unused.": { + "category": "Error", + "code": 6192 + }, + "Found 1 error. Watching for file changes.": { + "category": "Message", + "code": 6193 + }, + "Found {0} errors. Watching for file changes.": { + "category": "Message", + "code": 6194 + }, + "Resolve 'keyof' to string valued property names only (no numbers or symbols).": { + "category": "Message", + "code": 6195 + }, + "'{0}' is declared but never used.": { + "category": "Error", + "code": 6196 + }, + "Include modules imported with '.json' extension": { + "category": "Message", + "code": 6197 + }, + "All destructured elements are unused.": { + "category": "Error", + "code": 6198 + }, + "All variables are unused.": { + "category": "Error", + "code": 6199 + }, + "Definitions of the following identifiers conflict with those in another file: {0}": { + "category": "Error", + "code": 6200 + }, + "Conflicts are in this file.": { + "category": "Message", + "code": 6201 + }, + "Project references may not form a circular graph. Cycle detected: {0}": { + "category": "Error", + "code": 6202 + }, + "'{0}' was also declared here.": { + "category": "Message", + "code": 6203 + }, + "and here.": { + "category": "Message", + "code": 6204 + }, + "All type parameters are unused.": { + "category": "Error", + "code": 6205 + }, + "'package.json' has a 'typesVersions' field with version-specific path mappings.": { + "category": "Message", + "code": 6206 + }, + "'package.json' does not have a 'typesVersions' entry that matches version '{0}'.": { + "category": "Message", + "code": 6207 + }, + "'package.json' has a 'typesVersions' entry '{0}' that matches compiler version '{1}', looking for a pattern to match module name '{2}'.": { + "category": "Message", + "code": 6208 + }, + "'package.json' has a 'typesVersions' entry '{0}' that is not a valid semver range.": { + "category": "Message", + "code": 6209 + }, + "An argument for '{0}' was not provided.": { + "category": "Message", + "code": 6210 + }, + "An argument matching this binding pattern was not provided.": { + "category": "Message", + "code": 6211 + }, + "Did you mean to call this expression?": { + "category": "Message", + "code": 6212 + }, + "Did you mean to use 'new' with this expression?": { + "category": "Message", + "code": 6213 + }, + "Enable strict 'bind', 'call', and 'apply' methods on functions.": { + "category": "Message", + "code": 6214 + }, + "Using compiler options of project reference redirect '{0}'.": { + "category": "Message", + "code": 6215 + }, + "Found 1 error.": { + "category": "Message", + "code": 6216 + }, + "Found {0} errors.": { + "category": "Message", + "code": 6217 + }, + "======== Module name '{0}' was successfully resolved to '{1}' with Package ID '{2}'. ========": { + "category": "Message", + "code": 6218 + }, + "======== Type reference directive '{0}' was successfully resolved to '{1}' with Package ID '{2}', primary: {3}. ========": { + "category": "Message", + "code": 6219 + }, + "'package.json' had a falsy '{0}' field.": { + "category": "Message", + "code": 6220 + }, + "Disable use of source files instead of declaration files from referenced projects.": { + "category": "Message", + "code": 6221 + }, + "Emit class fields with Define instead of Set.": { + "category": "Message", + "code": 6222 + }, + "Generates a CPU profile.": { + "category": "Message", + "code": 6223 + }, + "Disable solution searching for this project.": { + "category": "Message", + "code": 6224 + }, + "Specify strategy for watching file: 'FixedPollingInterval' (default), 'PriorityPollingInterval', 'DynamicPriorityPolling', 'FixedChunkSizePolling', 'UseFsEvents', 'UseFsEventsOnParentDirectory'.": { + "category": "Message", + "code": 6225 + }, + "Specify strategy for watching directory on platforms that don't support recursive watching natively: 'UseFsEvents' (default), 'FixedPollingInterval', 'DynamicPriorityPolling', 'FixedChunkSizePolling'.": { + "category": "Message", + "code": 6226 + }, + "Specify strategy for creating a polling watch when it fails to create using file system events: 'FixedInterval' (default), 'PriorityInterval', 'DynamicPriority', 'FixedChunkSize'.": { + "category": "Message", + "code": 6227 + }, + "Tag '{0}' expects at least '{1}' arguments, but the JSX factory '{2}' provides at most '{3}'.": { + "category": "Error", + "code": 6229 + }, + "Option '{0}' can only be specified in 'tsconfig.json' file or set to 'false' or 'null' on command line.": { + "category": "Error", + "code": 6230 + }, + "Could not resolve the path '{0}' with the extensions: {1}.": { + "category": "Error", + "code": 6231 + }, + "Declaration augments declaration in another file. This cannot be serialized.": { + "category": "Error", + "code": 6232 + }, + "This is the declaration being augmented. Consider moving the augmenting declaration into the same file.": { + "category": "Error", + "code": 6233 + }, + "This expression is not callable because it is a 'get' accessor. Did you mean to use it without '()'?": { + "category": "Error", + "code": 6234 + }, + "Disable loading referenced projects.": { + "category": "Message", + "code": 6235 + }, + "Arguments for the rest parameter '{0}' were not provided.": { + "category": "Error", + "code": 6236 + }, + "Generates an event trace and a list of types.": { + "category": "Message", + "code": 6237 + }, + "Specify the module specifier to be used to import the 'jsx' and 'jsxs' factory functions from. eg, react": { + "category": "Error", + "code": 6238 + }, + "File '{0}' exists according to earlier cached lookups.": { + "category": "Message", + "code": 6239 + }, + "File '{0}' does not exist according to earlier cached lookups.": { + "category": "Message", + "code": 6240 + }, + "Resolution for type reference directive '{0}' was found in cache from location '{1}'.": { + "category": "Message", + "code": 6241 + }, + "======== Resolving type reference directive '{0}', containing file '{1}'. ========": { + "category": "Message", + "code": 6242 + }, + "Interpret optional property types as written, rather than adding 'undefined'.": { + "category": "Message", + "code": 6243 + }, + "Modules": { + "category": "Message", + "code": 6244 + }, + "File Management": { + "category": "Message", + "code": 6245 + }, + "Emit": { + "category": "Message", + "code": 6246 + }, + "JavaScript Support": { + "category": "Message", + "code": 6247 + }, + "Type Checking": { + "category": "Message", + "code": 6248 + }, + "Editor Support": { + "category": "Message", + "code": 6249 + }, + "Watch and Build Modes": { + "category": "Message", + "code": 6250 + }, + "Compiler Diagnostics": { + "category": "Message", + "code": 6251 + }, + "Interop Constraints": { + "category": "Message", + "code": 6252 + }, + "Backwards Compatibility": { + "category": "Message", + "code": 6253 + }, + "Language and Environment": { + "category": "Message", + "code": 6254 + }, + "Projects": { + "category": "Message", + "code": 6255 + }, + "Output Formatting": { + "category": "Message", + "code": 6256 + }, + "Completeness": { + "category": "Message", + "code": 6257 + }, + "'{0}' should be set inside the 'compilerOptions' object of the config json file": { + "category": "Error", + "code": 6258 + }, + "Found 1 error in {0}": { + "category": "Message", + "code": 6259 + }, + "Found {0} errors in the same file, starting at: {1}": { + "category": "Message", + "code": 6260 + }, + "Found {0} errors in {1} files.": { + "category": "Message", + "code": 6261 + }, + "File name '{0}' has a '{1}' extension - looking up '{2}' instead.": { + "category": "Message", + "code": 6262 + }, + "Module '{0}' was resolved to '{1}', but '--allowArbitraryExtensions' is not set.": { + "category": "Error", + "code": 6263 + }, + "Enable importing files with any extension, provided a declaration file is present.": { + "category": "Message", + "code": 6264 + }, + "Resolving type reference directive for program that specifies custom typeRoots, skipping lookup in 'node_modules' folder.": { + "category": "Message", + "code": 6265 + }, + "Option '{0}' can only be specified on command line.": { + "category": "Error", + "code": 6266 + }, + "Directory '{0}' has no containing package.json scope. Imports will not resolve.": { + "category": "Message", + "code": 6270 + }, + "Import specifier '{0}' does not exist in package.json scope at path '{1}'.": { + "category": "Message", + "code": 6271 + }, + "Invalid import specifier '{0}' has no possible resolutions.": { + "category": "Message", + "code": 6272 + }, + "package.json scope '{0}' has no imports defined.": { + "category": "Message", + "code": 6273 + }, + "package.json scope '{0}' explicitly maps specifier '{1}' to null.": { + "category": "Message", + "code": 6274 + }, + "package.json scope '{0}' has invalid type for target of specifier '{1}'": { + "category": "Message", + "code": 6275 + }, + "Export specifier '{0}' does not exist in package.json scope at path '{1}'.": { + "category": "Message", + "code": 6276 + }, + "Resolution of non-relative name failed; trying with modern Node resolution features disabled to see if npm library needs configuration update.": { + "category": "Message", + "code": 6277 + }, + "There are types at '{0}', but this result could not be resolved when respecting package.json \"exports\". The '{1}' library may need to update its package.json or typings.": { + "category": "Message", + "code": 6278 + }, + "Resolution of non-relative name failed; trying with '--moduleResolution bundler' to see if project may need configuration update.": { + "category": "Message", + "code": 6279 + }, + "There are types at '{0}', but this result could not be resolved under your current 'moduleResolution' setting. Consider updating to 'node16', 'nodenext', or 'bundler'.": { + "category": "Message", + "code": 6280 + }, + "'package.json' has a 'peerDependencies' field.": { + "category": "Message", + "code": 6281 + }, + "Found peerDependency '{0}' with '{1}' version.": { + "category": "Message", + "code": 6282 + }, + "Failed to find peerDependency '{0}'.": { + "category": "Message", + "code": 6283 + }, + "File Layout": { + "category": "Message", + "code": 6284 + }, + "Environment Settings": { + "category": "Message", + "code": 6285 + }, + "See also https://aka.ms/tsconfig/module": { + "category": "Message", + "code": 6286 + }, + "For nodejs:": { + "category": "Message", + "code": 6287 + }, + "and npm install -D @types/node": { + "category": "Message", + "code": 6290 + }, + "Other Outputs": { + "category": "Message", + "code": 6291 + }, + "Stricter Typechecking Options": { + "category": "Message", + "code": 6292 + }, + "Style Options": { + "category": "Message", + "code": 6293 + }, + "Recommended Options": { + "category": "Message", + "code": 6294 + }, + "Enable project compilation": { + "category": "Message", + "code": 6302 + }, + "Composite projects may not disable declaration emit.": { + "category": "Error", + "code": 6304 + }, + "Output file '{0}' has not been built from source file '{1}'.": { + "category": "Error", + "code": 6305 + }, + "Referenced project '{0}' must have setting \"composite\": true.": { + "category": "Error", + "code": 6306 + }, + "File '{0}' is not listed within the file list of project '{1}'. Projects must list all files or use an 'include' pattern.": { + "category": "Error", + "code": 6307 + }, + "Referenced project '{0}' may not disable emit.": { + "category": "Error", + "code": 6310 + }, + "Project '{0}' is out of date because output '{1}' is older than input '{2}'": { + "category": "Message", + "code": 6350 + }, + "Project '{0}' is up to date because newest input '{1}' is older than output '{2}'": { + "category": "Message", + "code": 6351 + }, + "Project '{0}' is out of date because output file '{1}' does not exist": { + "category": "Message", + "code": 6352 + }, + "Project '{0}' is out of date because its dependency '{1}' is out of date": { + "category": "Message", + "code": 6353 + }, + "Project '{0}' is up to date with .d.ts files from its dependencies": { + "category": "Message", + "code": 6354 + }, + "Projects in this build: {0}": { + "category": "Message", + "code": 6355 + }, + "A non-dry build would delete the following files: {0}": { + "category": "Message", + "code": 6356 + }, + "A non-dry build would build project '{0}'": { + "category": "Message", + "code": 6357 + }, + "Building project '{0}'...": { + "category": "Message", + "code": 6358 + }, + "Updating output timestamps of project '{0}'...": { + "category": "Message", + "code": 6359 + }, + "Project '{0}' is up to date": { + "category": "Message", + "code": 6361 + }, + "Skipping build of project '{0}' because its dependency '{1}' has errors": { + "category": "Message", + "code": 6362 + }, + "Project '{0}' can't be built because its dependency '{1}' has errors": { + "category": "Message", + "code": 6363 + }, + "Build one or more projects and their dependencies, if out of date": { + "category": "Message", + "code": 6364 + }, + "Delete the outputs of all projects.": { + "category": "Message", + "code": 6365 + }, + "Show what would be built (or deleted, if specified with '--clean')": { + "category": "Message", + "code": 6367 + }, + "Option '--build' must be the first command line argument.": { + "category": "Error", + "code": 6369 + }, + "Options '{0}' and '{1}' cannot be combined.": { + "category": "Error", + "code": 6370 + }, + "Updating unchanged output timestamps of project '{0}'...": { + "category": "Message", + "code": 6371 + }, + "A non-dry build would update timestamps for output of project '{0}'": { + "category": "Message", + "code": 6374 + }, + "Cannot write file '{0}' because it will overwrite '.tsbuildinfo' file generated by referenced project '{1}'": { + "category": "Error", + "code": 6377 + }, + "Composite projects may not disable incremental compilation.": { + "category": "Error", + "code": 6379 + }, + "Specify file to store incremental compilation information": { + "category": "Message", + "code": 6380 + }, + "Project '{0}' is out of date because output for it was generated with version '{1}' that differs with current version '{2}'": { + "category": "Message", + "code": 6381 + }, + "Skipping build of project '{0}' because its dependency '{1}' was not built": { + "category": "Message", + "code": 6382 + }, + "Project '{0}' can't be built because its dependency '{1}' was not built": { + "category": "Message", + "code": 6383 + }, + "Have recompiles in '--incremental' and '--watch' assume that changes within a file will only affect files directly depending on it.": { + "category": "Message", + "code": 6384 + }, + "'{0}' is deprecated.": { + "category": "Suggestion", + "code": 6385 + }, + "Performance timings for '--diagnostics' or '--extendedDiagnostics' are not available in this session. A native implementation of the Web Performance API could not be found.": { + "category": "Message", + "code": 6386 + }, + "The signature '{0}' of '{1}' is deprecated.": { + "category": "Suggestion", + "code": 6387 + }, + "Project '{0}' is being forcibly rebuilt": { + "category": "Message", + "code": 6388 + }, + "Reusing resolution of module '{0}' from '{1}' of old program, it was not resolved.": { + "category": "Message", + "code": 6389 + }, + "Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was successfully resolved to '{2}'.": { + "category": "Message", + "code": 6390 + }, + "Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was successfully resolved to '{2}' with Package ID '{3}'.": { + "category": "Message", + "code": 6391 + }, + "Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was not resolved.": { + "category": "Message", + "code": 6392 + }, + "Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}'.": { + "category": "Message", + "code": 6393 + }, + "Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}' with Package ID '{4}'.": { + "category": "Message", + "code": 6394 + }, + "Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was not resolved.": { + "category": "Message", + "code": 6395 + }, + "Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}'.": { + "category": "Message", + "code": 6396 + }, + "Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}' with Package ID '{4}'.": { + "category": "Message", + "code": 6397 + }, + "Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was not resolved.": { + "category": "Message", + "code": 6398 + }, + "Project '{0}' is out of date because buildinfo file '{1}' indicates that some of the changes were not emitted": { + "category": "Message", + "code": 6399 + }, + "Project '{0}' is up to date but needs to update timestamps of output files that are older than input files": { + "category": "Message", + "code": 6400 + }, + "Project '{0}' is out of date because there was error reading file '{1}'": { + "category": "Message", + "code": 6401 + }, + "Resolving in {0} mode with conditions {1}.": { + "category": "Message", + "code": 6402 + }, + "Matched '{0}' condition '{1}'.": { + "category": "Message", + "code": 6403 + }, + "Using '{0}' subpath '{1}' with target '{2}'.": { + "category": "Message", + "code": 6404 + }, + "Saw non-matching condition '{0}'.": { + "category": "Message", + "code": 6405 + }, + "Project '{0}' is out of date because buildinfo file '{1}' indicates there is change in compilerOptions": { + "category": "Message", + "code": 6406 + }, + "Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set.": { + "category": "Message", + "code": 6407 + }, + "Use the package.json 'exports' field when resolving package imports.": { + "category": "Message", + "code": 6408 + }, + "Use the package.json 'imports' field when resolving imports.": { + "category": "Message", + "code": 6409 + }, + "Conditions to set in addition to the resolver-specific defaults when resolving imports.": { + "category": "Message", + "code": 6410 + }, + "`true` when 'moduleResolution' is 'node16', 'nodenext', or 'bundler'; otherwise `false`.": { + "category": "Message", + "code": 6411 + }, + "Project '{0}' is out of date because buildinfo file '{1}' indicates that file '{2}' was root file of compilation but not any more.": { + "category": "Message", + "code": 6412 + }, + "Entering conditional exports.": { + "category": "Message", + "code": 6413 + }, + "Resolved under condition '{0}'.": { + "category": "Message", + "code": 6414 + }, + "Failed to resolve under condition '{0}'.": { + "category": "Message", + "code": 6415 + }, + "Exiting conditional exports.": { + "category": "Message", + "code": 6416 + }, + "Searching all ancestor node_modules directories for preferred extensions: {0}.": { + "category": "Message", + "code": 6417 + }, + "Searching all ancestor node_modules directories for fallback extensions: {0}.": { + "category": "Message", + "code": 6418 + }, + "Project '{0}' is out of date because buildinfo file '{1}' indicates that program needs to report errors.": { + "category": "Message", + "code": 6419 + }, + "Project '{0}' is out of date because {1}.": { + "category": "Message", + "code": 6420 + }, + "Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files.": { + "category": "Message", + "code": 6421 + }, + "The expected type comes from property '{0}' which is declared here on type '{1}'": { + "category": "Message", + "code": 6500 + }, + "The expected type comes from this index signature.": { + "category": "Message", + "code": 6501 + }, + "The expected type comes from the return type of this signature.": { + "category": "Message", + "code": 6502 + }, + "Print names of files that are part of the compilation and then stop processing.": { + "category": "Message", + "code": 6503 + }, + "File '{0}' is a JavaScript file. Did you mean to enable the 'allowJs' option?": { + "category": "Error", + "code": 6504 + }, + "Print names of files and the reason they are part of the compilation.": { + "category": "Message", + "code": 6505 + }, + "Consider adding a 'declare' modifier to this class.": { + "category": "Message", + "code": 6506 + }, + "Allow JavaScript files to be a part of your program. Use the 'checkJs' option to get errors from these files.": { + "category": "Message", + "code": 6600 + }, + "Allow 'import x from y' when a module doesn't have a default export.": { + "category": "Message", + "code": 6601 + }, + "Allow accessing UMD globals from modules.": { + "category": "Message", + "code": 6602 + }, + "Disable error reporting for unreachable code.": { + "category": "Message", + "code": 6603 + }, + "Disable error reporting for unused labels.": { + "category": "Message", + "code": 6604 + }, + "Ensure 'use strict' is always emitted.": { + "category": "Message", + "code": 6605 + }, + "Have recompiles in projects that use 'incremental' and 'watch' mode assume that changes within a file will only affect files directly depending on it.": { + "category": "Message", + "code": 6606 + }, + "Specify the base directory to resolve non-relative module names.": { + "category": "Message", + "code": 6607 + }, + "No longer supported. In early versions, manually set the text encoding for reading files.": { + "category": "Message", + "code": 6608 + }, + "Enable error reporting in type-checked JavaScript files.": { + "category": "Message", + "code": 6609 + }, + "Enable constraints that allow a TypeScript project to be used with project references.": { + "category": "Message", + "code": 6611 + }, + "Generate .d.ts files from TypeScript and JavaScript files in your project.": { + "category": "Message", + "code": 6612 + }, + "Specify the output directory for generated declaration files.": { + "category": "Message", + "code": 6613 + }, + "Create sourcemaps for d.ts files.": { + "category": "Message", + "code": 6614 + }, + "Output compiler performance information after building.": { + "category": "Message", + "code": 6615 + }, + "Disables inference for type acquisition by looking at filenames in a project.": { + "category": "Message", + "code": 6616 + }, + "Reduce the number of projects loaded automatically by TypeScript.": { + "category": "Message", + "code": 6617 + }, + "Remove the 20mb cap on total source code size for JavaScript files in the TypeScript language server.": { + "category": "Message", + "code": 6618 + }, + "Opt a project out of multi-project reference checking when editing.": { + "category": "Message", + "code": 6619 + }, + "Disable preferring source files instead of declaration files when referencing composite projects.": { + "category": "Message", + "code": 6620 + }, + "Emit more compliant, but verbose and less performant JavaScript for iteration.": { + "category": "Message", + "code": 6621 + }, + "Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files.": { + "category": "Message", + "code": 6622 + }, + "Only output d.ts files and not JavaScript files.": { + "category": "Message", + "code": 6623 + }, + "Emit design-type metadata for decorated declarations in source files.": { + "category": "Message", + "code": 6624 + }, + "Disable the type acquisition for JavaScript projects": { + "category": "Message", + "code": 6625 + }, + "Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility.": { + "category": "Message", + "code": 6626 + }, + "Filters results from the `include` option.": { + "category": "Message", + "code": 6627 + }, + "Remove a list of directories from the watch process.": { + "category": "Message", + "code": 6628 + }, + "Remove a list of files from the watch mode's processing.": { + "category": "Message", + "code": 6629 + }, + "Enable experimental support for legacy experimental decorators.": { + "category": "Message", + "code": 6630 + }, + "Print files read during the compilation including why it was included.": { + "category": "Message", + "code": 6631 + }, + "Output more detailed compiler performance information after building.": { + "category": "Message", + "code": 6632 + }, + "Specify one or more path or node module references to base configuration files from which settings are inherited.": { + "category": "Message", + "code": 6633 + }, + "Specify what approach the watcher should use if the system runs out of native file watchers.": { + "category": "Message", + "code": 6634 + }, + "Include a list of files. This does not support glob patterns, as opposed to `include`.": { + "category": "Message", + "code": 6635 + }, + "Build all projects, including those that appear to be up to date.": { + "category": "Message", + "code": 6636 + }, + "Ensure that casing is correct in imports.": { + "category": "Message", + "code": 6637 + }, + "Emit a v8 CPU profile of the compiler run for debugging.": { + "category": "Message", + "code": 6638 + }, + "Allow importing helper functions from tslib once per project, instead of including them per-file.": { + "category": "Message", + "code": 6639 + }, + "Skip building downstream projects on error in upstream project.": { + "category": "Message", + "code": 6640 + }, + "Specify a list of glob patterns that match files to be included in compilation.": { + "category": "Message", + "code": 6641 + }, + "Save .tsbuildinfo files to allow for incremental compilation of projects.": { + "category": "Message", + "code": 6642 + }, + "Include sourcemap files inside the emitted JavaScript.": { + "category": "Message", + "code": 6643 + }, + "Include source code in the sourcemaps inside the emitted JavaScript.": { + "category": "Message", + "code": 6644 + }, + "Ensure that each file can be safely transpiled without relying on other imports.": { + "category": "Message", + "code": 6645 + }, + "Specify what JSX code is generated.": { + "category": "Message", + "code": 6646 + }, + "Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'.": { + "category": "Message", + "code": 6647 + }, + "Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'.": { + "category": "Message", + "code": 6648 + }, + "Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'.": { + "category": "Message", + "code": 6649 + }, + "Make keyof only return strings instead of string, numbers or symbols. Legacy option.": { + "category": "Message", + "code": 6650 + }, + "Specify a set of bundled library declaration files that describe the target runtime environment.": { + "category": "Message", + "code": 6651 + }, + "Print the names of emitted files after a compilation.": { + "category": "Message", + "code": 6652 + }, + "Print all of the files read during the compilation.": { + "category": "Message", + "code": 6653 + }, + "Set the language of the messaging from TypeScript. This does not affect emit.": { + "category": "Message", + "code": 6654 + }, + "Specify the location where debugger should locate map files instead of generated locations.": { + "category": "Message", + "code": 6655 + }, + "Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'.": { + "category": "Message", + "code": 6656 + }, + "Specify what module code is generated.": { + "category": "Message", + "code": 6657 + }, + "Specify how TypeScript looks up a file from a given module specifier.": { + "category": "Message", + "code": 6658 + }, + "Set the newline character for emitting files.": { + "category": "Message", + "code": 6659 + }, + "Disable emitting files from a compilation.": { + "category": "Message", + "code": 6660 + }, + "Disable generating custom helper functions like '__extends' in compiled output.": { + "category": "Message", + "code": 6661 + }, + "Disable emitting files if any type checking errors are reported.": { + "category": "Message", + "code": 6662 + }, + "Disable truncating types in error messages.": { + "category": "Message", + "code": 6663 + }, + "Enable error reporting for fallthrough cases in switch statements.": { + "category": "Message", + "code": 6664 + }, + "Enable error reporting for expressions and declarations with an implied 'any' type.": { + "category": "Message", + "code": 6665 + }, + "Ensure overriding members in derived classes are marked with an override modifier.": { + "category": "Message", + "code": 6666 + }, + "Enable error reporting for codepaths that do not explicitly return in a function.": { + "category": "Message", + "code": 6667 + }, + "Enable error reporting when 'this' is given the type 'any'.": { + "category": "Message", + "code": 6668 + }, + "Disable adding 'use strict' directives in emitted JavaScript files.": { + "category": "Message", + "code": 6669 + }, + "Disable including any library files, including the default lib.d.ts.": { + "category": "Message", + "code": 6670 + }, + "Enforces using indexed accessors for keys declared using an indexed type.": { + "category": "Message", + "code": 6671 + }, + "Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project.": { + "category": "Message", + "code": 6672 + }, + "Disable strict checking of generic signatures in function types.": { + "category": "Message", + "code": 6673 + }, + "Add 'undefined' to a type when accessed using an index.": { + "category": "Message", + "code": 6674 + }, + "Enable error reporting when local variables aren't read.": { + "category": "Message", + "code": 6675 + }, + "Raise an error when a function parameter isn't read.": { + "category": "Message", + "code": 6676 + }, + "Deprecated setting. Use 'outFile' instead.": { + "category": "Message", + "code": 6677 + }, + "Specify an output folder for all emitted files.": { + "category": "Message", + "code": 6678 + }, + "Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output.": { + "category": "Message", + "code": 6679 + }, + "Specify a set of entries that re-map imports to additional lookup locations.": { + "category": "Message", + "code": 6680 + }, + "Specify a list of language service plugins to include.": { + "category": "Message", + "code": 6681 + }, + "Disable erasing 'const enum' declarations in generated code.": { + "category": "Message", + "code": 6682 + }, + "Disable resolving symlinks to their realpath. This correlates to the same flag in node.": { + "category": "Message", + "code": 6683 + }, + "Disable wiping the console in watch mode.": { + "category": "Message", + "code": 6684 + }, + "Enable color and formatting in TypeScript's output to make compiler errors easier to read.": { + "category": "Message", + "code": 6685 + }, + "Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit.": { + "category": "Message", + "code": 6686 + }, + "Specify an array of objects that specify paths for projects. Used in project references.": { + "category": "Message", + "code": 6687 + }, + "Disable emitting comments.": { + "category": "Message", + "code": 6688 + }, + "Enable importing .json files.": { + "category": "Message", + "code": 6689 + }, + "Specify the root folder within your source files.": { + "category": "Message", + "code": 6690 + }, + "Allow multiple folders to be treated as one when resolving modules.": { + "category": "Message", + "code": 6691 + }, + "Skip type checking .d.ts files that are included with TypeScript.": { + "category": "Message", + "code": 6692 + }, + "Skip type checking all .d.ts files.": { + "category": "Message", + "code": 6693 + }, + "Create source map files for emitted JavaScript files.": { + "category": "Message", + "code": 6694 + }, + "Specify the root path for debuggers to find the reference source code.": { + "category": "Message", + "code": 6695 + }, + "Check that the arguments for 'bind', 'call', and 'apply' methods match the original function.": { + "category": "Message", + "code": 6697 + }, + "When assigning functions, check to ensure parameters and the return values are subtype-compatible.": { + "category": "Message", + "code": 6698 + }, + "When type checking, take into account 'null' and 'undefined'.": { + "category": "Message", + "code": 6699 + }, + "Check for class properties that are declared but not set in the constructor.": { + "category": "Message", + "code": 6700 + }, + "Disable emitting declarations that have '@internal' in their JSDoc comments.": { + "category": "Message", + "code": 6701 + }, + "Disable reporting of excess property errors during the creation of object literals.": { + "category": "Message", + "code": 6702 + }, + "Suppress 'noImplicitAny' errors when indexing objects that lack index signatures.": { + "category": "Message", + "code": 6703 + }, + "Synchronously call callbacks and update the state of directory watchers on platforms that don`t support recursive watching natively.": { + "category": "Message", + "code": 6704 + }, + "Set the JavaScript language version for emitted JavaScript and include compatible library declarations.": { + "category": "Message", + "code": 6705 + }, + "Log paths used during the 'moduleResolution' process.": { + "category": "Message", + "code": 6706 + }, + "Specify the path to .tsbuildinfo incremental compilation file.": { + "category": "Message", + "code": 6707 + }, + "Specify options for automatic acquisition of declaration files.": { + "category": "Message", + "code": 6709 + }, + "Specify multiple folders that act like './node_modules/@types'.": { + "category": "Message", + "code": 6710 + }, + "Specify type package names to be included without being referenced in a source file.": { + "category": "Message", + "code": 6711 + }, + "Emit ECMAScript-standard-compliant class fields.": { + "category": "Message", + "code": 6712 + }, + "Enable verbose logging.": { + "category": "Message", + "code": 6713 + }, + "Specify how directories are watched on systems that lack recursive file-watching functionality.": { + "category": "Message", + "code": 6714 + }, + "Specify how the TypeScript watch mode works.": { + "category": "Message", + "code": 6715 + }, + "Require undeclared properties from index signatures to use element accesses.": { + "category": "Message", + "code": 6717 + }, + "Specify emit/checking behavior for imports that are only used for types.": { + "category": "Message", + "code": 6718 + }, + "Require sufficient annotation on exports so other tools can trivially generate declaration files.": { + "category": "Message", + "code": 6719 + }, + "Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'.": { + "category": "Message", + "code": 6720 + }, + "Do not allow runtime constructs that are not part of ECMAScript.": { + "category": "Message", + "code": 6721 + }, + "Default catch clause variables as 'unknown' instead of 'any'.": { + "category": "Message", + "code": 6803 + }, + "Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting.": { + "category": "Message", + "code": 6804 + }, + "Disable full type checking (only critical parse and emit errors will be reported).": { + "category": "Message", + "code": 6805 + }, + "Check side effect imports.": { + "category": "Message", + "code": 6806 + }, + "This operation can be simplified. This shift is identical to `{0} {1} {2}`.": { + "category": "Error", + "code": 6807 + }, + "Enable lib replacement.": { + "category": "Message", + "code": 6808 + }, + "Ensure types are ordered stably and deterministically across compilations.": { + "category": "Message", + "code": 6809 + }, + "one of:": { + "category": "Message", + "code": 6900 + }, + "one or more:": { + "category": "Message", + "code": 6901 + }, + "type:": { + "category": "Message", + "code": 6902 + }, + "default:": { + "category": "Message", + "code": 6903 + }, + "`true`, unless `strict` is `false`": { + "category": "Message", + "code": 6905 + }, + "`false`, unless `composite` is set": { + "category": "Message", + "code": 6906 + }, + "`[\"node_modules\", \"bower_components\", \"jspm_packages\"]`, plus the value of `outDir` if one is specified.": { + "category": "Message", + "code": 6907 + }, + "`[]` if `files` is specified, otherwise `[\"**/*\"]`": { + "category": "Message", + "code": 6908 + }, + "`true` if `composite`, `false` otherwise": { + "category": "Message", + "code": 6909 + }, + "Computed from the list of input files": { + "category": "Message", + "code": 6911 + }, + "Platform specific": { + "category": "Message", + "code": 6912 + }, + "You can learn about all of the compiler options at {0}": { + "category": "Message", + "code": 6913 + }, + "Including --watch, -w will start watching the current project for the file changes. Once set, you can config watch mode with:": { + "category": "Message", + "code": 6914 + }, + "Using --build, -b will make tsc behave more like a build orchestrator than a compiler. This is used to trigger building composite projects which you can learn more about at {0}": { + "category": "Message", + "code": 6915 + }, + "COMMON COMMANDS": { + "category": "Message", + "code": 6916 + }, + "ALL COMPILER OPTIONS": { + "category": "Message", + "code": 6917 + }, + "WATCH OPTIONS": { + "category": "Message", + "code": 6918 + }, + "BUILD OPTIONS": { + "category": "Message", + "code": 6919 + }, + "COMMON COMPILER OPTIONS": { + "category": "Message", + "code": 6920 + }, + "COMMAND LINE FLAGS": { + "category": "Message", + "code": 6921 + }, + "tsc: The TypeScript Compiler": { + "category": "Message", + "code": 6922 + }, + "Compiles the current project (tsconfig.json in the working directory.)": { + "category": "Message", + "code": 6923 + }, + "Ignoring tsconfig.json, compiles the specified files with default compiler options.": { + "category": "Message", + "code": 6924 + }, + "Build a composite project in the working directory.": { + "category": "Message", + "code": 6925 + }, + "Creates a tsconfig.json with the recommended settings in the working directory.": { + "category": "Message", + "code": 6926 + }, + "Compiles the TypeScript project located at the specified path.": { + "category": "Message", + "code": 6927 + }, + "An expanded version of this information, showing all possible compiler options": { + "category": "Message", + "code": 6928 + }, + "Compiles the current project, with additional settings.": { + "category": "Message", + "code": 6929 + }, + "`true` for ES2022 and above, including ESNext.": { + "category": "Message", + "code": 6930 + }, + "List of file name suffixes to search when resolving a module.": { + "category": "Error", + "code": 6931 + }, + "`false`, unless `checkJs` is set": { + "category": "Message", + "code": 6932 + }, + "Variable '{0}' implicitly has an '{1}' type.": { + "category": "Error", + "code": 7005 + }, + "Parameter '{0}' implicitly has an '{1}' type.": { + "category": "Error", + "code": 7006 + }, + "Member '{0}' implicitly has an '{1}' type.": { + "category": "Error", + "code": 7008 + }, + "'new' expression, whose target lacks a construct signature, implicitly has an 'any' type.": { + "category": "Error", + "code": 7009 + }, + "'{0}', which lacks return-type annotation, implicitly has an '{1}' return type.": { + "category": "Error", + "code": 7010 + }, + "Function expression, which lacks return-type annotation, implicitly has an '{0}' return type.": { + "category": "Error", + "code": 7011 + }, + "This overload implicitly returns the type '{0}' because it lacks a return type annotation.": { + "category": "Error", + "code": 7012 + }, + "Construct signature, which lacks return-type annotation, implicitly has an 'any' return type.": { + "category": "Error", + "code": 7013 + }, + "Function type, which lacks return-type annotation, implicitly has an '{0}' return type.": { + "category": "Error", + "code": 7014 + }, + "Element implicitly has an 'any' type because index expression is not of type 'number'.": { + "category": "Error", + "code": 7015 + }, + "Could not find a declaration file for module '{0}'. '{1}' implicitly has an 'any' type.": { + "category": "Error", + "code": 7016 + }, + "Element implicitly has an 'any' type because type '{0}' has no index signature.": { + "category": "Error", + "code": 7017 + }, + "Object literal's property '{0}' implicitly has an '{1}' type.": { + "category": "Error", + "code": 7018 + }, + "Rest parameter '{0}' implicitly has an 'any[]' type.": { + "category": "Error", + "code": 7019 + }, + "Call signature, which lacks return-type annotation, implicitly has an 'any' return type.": { + "category": "Error", + "code": 7020 + }, + "'{0}' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.": { + "category": "Error", + "code": 7022 + }, + "'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.": { + "category": "Error", + "code": 7023 + }, + "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.": { + "category": "Error", + "code": 7024 + }, + "Generator implicitly has yield type '{0}'. Consider supplying a return type annotation.": { + "category": "Error", + "code": 7025 + }, + "JSX element implicitly has type 'any' because no interface 'JSX.{0}' exists.": { + "category": "Error", + "code": 7026 + }, + "Unreachable code detected.": { + "category": "Error", + "code": 7027 + }, + "Unused label.": { + "category": "Error", + "code": 7028 + }, + "Fallthrough case in switch.": { + "category": "Error", + "code": 7029 + }, + "Not all code paths return a value.": { + "category": "Error", + "code": 7030 + }, + "Binding element '{0}' implicitly has an '{1}' type.": { + "category": "Error", + "code": 7031 + }, + "Property '{0}' implicitly has type 'any', because its set accessor lacks a parameter type annotation.": { + "category": "Error", + "code": 7032 + }, + "Property '{0}' implicitly has type 'any', because its get accessor lacks a return type annotation.": { + "category": "Error", + "code": 7033 + }, + "Variable '{0}' implicitly has type '{1}' in some locations where its type cannot be determined.": { + "category": "Error", + "code": 7034 + }, + "Try `npm i --save-dev @types/{1}` if it exists or add a new declaration (.d.ts) file containing `declare module '{0}';`": { + "category": "Error", + "code": 7035 + }, + "Dynamic import's specifier must be of type 'string', but here has type '{0}'.": { + "category": "Error", + "code": 7036 + }, + "Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'.": { + "category": "Message", + "code": 7037 + }, + "Type originates at this import. A namespace-style import cannot be called or constructed, and will cause a failure at runtime. Consider using a default import or import require here instead.": { + "category": "Message", + "code": 7038 + }, + "Mapped object type implicitly has an 'any' template type.": { + "category": "Error", + "code": 7039 + }, + "If the '{0}' package actually exposes this module, consider sending a pull request to amend 'https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/{1}'": { + "category": "Error", + "code": 7040 + }, + "The containing arrow function captures the global value of 'this'.": { + "category": "Error", + "code": 7041 + }, + "Module '{0}' was resolved to '{1}', but '--resolveJsonModule' is not used.": { + "category": "Error", + "code": 7042 + }, + "Variable '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.": { + "category": "Suggestion", + "code": 7043 + }, + "Parameter '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.": { + "category": "Suggestion", + "code": 7044 + }, + "Member '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.": { + "category": "Suggestion", + "code": 7045 + }, + "Variable '{0}' implicitly has type '{1}' in some locations, but a better type may be inferred from usage.": { + "category": "Suggestion", + "code": 7046 + }, + "Rest parameter '{0}' implicitly has an 'any[]' type, but a better type may be inferred from usage.": { + "category": "Suggestion", + "code": 7047 + }, + "Property '{0}' implicitly has type 'any', but a better type for its get accessor may be inferred from usage.": { + "category": "Suggestion", + "code": 7048 + }, + "Property '{0}' implicitly has type 'any', but a better type for its set accessor may be inferred from usage.": { + "category": "Suggestion", + "code": 7049 + }, + "'{0}' implicitly has an '{1}' return type, but a better type may be inferred from usage.": { + "category": "Suggestion", + "code": 7050 + }, + "Parameter has a name but no type. Did you mean '{0}: {1}'?": { + "category": "Error", + "code": 7051 + }, + "Element implicitly has an 'any' type because type '{0}' has no index signature. Did you mean to call '{1}'?": { + "category": "Error", + "code": 7052 + }, + "Element implicitly has an 'any' type because expression of type '{0}' can't be used to index type '{1}'.": { + "category": "Error", + "code": 7053 + }, + "No index signature with a parameter of type '{0}' was found on type '{1}'.": { + "category": "Error", + "code": 7054 + }, + "'{0}', which lacks return-type annotation, implicitly has an '{1}' yield type.": { + "category": "Error", + "code": 7055 + }, + "The inferred type of this node exceeds the maximum length the compiler will serialize. An explicit type annotation is needed.": { + "category": "Error", + "code": 7056 + }, + "'yield' expression implicitly results in an 'any' type because its containing generator lacks a return-type annotation.": { + "category": "Error", + "code": 7057 + }, + "If the '{0}' package actually exposes this module, try adding a new declaration (.d.ts) file containing `declare module '{1}';`": { + "category": "Error", + "code": 7058 + }, + "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.": { + "category": "Error", + "code": 7059 + }, + "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma or explicit constraint.": { + "category": "Error", + "code": 7060 + }, + "A mapped type may not declare properties or methods.": { + "category": "Error", + "code": 7061 + }, + "You cannot rename this element.": { + "category": "Error", + "code": 8000 + }, + "You cannot rename elements that are defined in the standard TypeScript library.": { + "category": "Error", + "code": 8001 + }, + "'import ... =' can only be used in TypeScript files.": { + "category": "Error", + "code": 8002 + }, + "'export =' can only be used in TypeScript files.": { + "category": "Error", + "code": 8003 + }, + "Type parameter declarations can only be used in TypeScript files.": { + "category": "Error", + "code": 8004 + }, + "'implements' clauses can only be used in TypeScript files.": { + "category": "Error", + "code": 8005 + }, + "'{0}' declarations can only be used in TypeScript files.": { + "category": "Error", + "code": 8006 + }, + "Type aliases can only be used in TypeScript files.": { + "category": "Error", + "code": 8008 + }, + "The '{0}' modifier can only be used in TypeScript files.": { + "category": "Error", + "code": 8009 + }, + "Type annotations can only be used in TypeScript files.": { + "category": "Error", + "code": 8010 + }, + "Type arguments can only be used in TypeScript files.": { + "category": "Error", + "code": 8011 + }, + "Parameter modifiers can only be used in TypeScript files.": { + "category": "Error", + "code": 8012 + }, + "Non-null assertions can only be used in TypeScript files.": { + "category": "Error", + "code": 8013 + }, + "Type assertion expressions can only be used in TypeScript files.": { + "category": "Error", + "code": 8016 + }, + "Signature declarations can only be used in TypeScript files.": { + "category": "Error", + "code": 8017 + }, + "Report errors in .js files.": { + "category": "Message", + "code": 8019 + }, + "JSDoc types can only be used inside documentation comments.": { + "category": "Error", + "code": 8020 + }, + "JSDoc '@typedef' tag should either have a type annotation or be followed by '@property' or '@member' tags.": { + "category": "Error", + "code": 8021 + }, + "JSDoc '@{0}' is not attached to a class.": { + "category": "Error", + "code": 8022 + }, + "JSDoc '@{0} {1}' does not match the 'extends {2}' clause.": { + "category": "Error", + "code": 8023 + }, + "JSDoc '@param' tag has name '{0}', but there is no parameter with that name.": { + "category": "Error", + "code": 8024 + }, + "Class declarations cannot have more than one '@augments' or '@extends' tag.": { + "category": "Error", + "code": 8025 + }, + "Expected {0} type arguments; provide these with an '@extends' tag.": { + "category": "Error", + "code": 8026 + }, + "Expected {0}-{1} type arguments; provide these with an '@extends' tag.": { + "category": "Error", + "code": 8027 + }, + "JSDoc '...' may only appear in the last parameter of a signature.": { + "category": "Error", + "code": 8028 + }, + "JSDoc '@param' tag has name '{0}', but there is no parameter with that name. It would match 'arguments' if it had an array type.": { + "category": "Error", + "code": 8029 + }, + "The type of a function declaration must match the function's signature.": { + "category": "Error", + "code": 8030 + }, + "You cannot rename a module via a global import.": { + "category": "Error", + "code": 8031 + }, + "Qualified name '{0}' is not allowed without a leading '@param {object} {1}'.": { + "category": "Error", + "code": 8032 + }, + "A JSDoc '@typedef' comment may not contain multiple '@type' tags.": { + "category": "Error", + "code": 8033 + }, + "The tag was first specified here.": { + "category": "Error", + "code": 8034 + }, + "You cannot rename elements that are defined in a 'node_modules' folder.": { + "category": "Error", + "code": 8035 + }, + "You cannot rename elements that are defined in another 'node_modules' folder.": { + "category": "Error", + "code": 8036 + }, + "Type satisfaction expressions can only be used in TypeScript files.": { + "category": "Error", + "code": 8037 + }, + "Decorators may not appear after 'export' or 'export default' if they also appear before 'export'.": { + "category": "Error", + "code": 8038 + }, + "A JSDoc '@template' tag may not follow a '@typedef', '@callback', or '@overload' tag": { + "category": "Error", + "code": 8039 + }, + "Declaration emit for this file requires using private name '{0}'. An explicit type annotation may unblock declaration emit.": { + "category": "Error", + "code": 9005 + }, + "Declaration emit for this file requires using private name '{0}' from module '{1}'. An explicit type annotation may unblock declaration emit.": { + "category": "Error", + "code": 9006 + }, + "Function must have an explicit return type annotation with --isolatedDeclarations.": { + "category": "Error", + "code": 9007 + }, + "Method must have an explicit return type annotation with --isolatedDeclarations.": { + "category": "Error", + "code": 9008 + }, + "At least one accessor must have an explicit type annotation with --isolatedDeclarations.": { + "category": "Error", + "code": 9009 + }, + "Variable must have an explicit type annotation with --isolatedDeclarations.": { + "category": "Error", + "code": 9010 + }, + "Parameter must have an explicit type annotation with --isolatedDeclarations.": { + "category": "Error", + "code": 9011 + }, + "Property must have an explicit type annotation with --isolatedDeclarations.": { + "category": "Error", + "code": 9012 + }, + "Expression type can't be inferred with --isolatedDeclarations.": { + "category": "Error", + "code": 9013 + }, + "Computed properties must be number or string literals, variables or dotted expressions with --isolatedDeclarations.": { + "category": "Error", + "code": 9014 + }, + "Objects that contain spread assignments can't be inferred with --isolatedDeclarations.": { + "category": "Error", + "code": 9015 + }, + "Objects that contain shorthand properties can't be inferred with --isolatedDeclarations.": { + "category": "Error", + "code": 9016 + }, + "Only const arrays can be inferred with --isolatedDeclarations.": { + "category": "Error", + "code": 9017 + }, + "Arrays with spread elements can't inferred with --isolatedDeclarations.": { + "category": "Error", + "code": 9018 + }, + "Binding elements can't be exported directly with --isolatedDeclarations.": { + "category": "Error", + "code": 9019 + }, + "Enum member initializers must be computable without references to external symbols with --isolatedDeclarations.": { + "category": "Error", + "code": 9020 + }, + "Extends clause can't contain an expression with --isolatedDeclarations.": { + "category": "Error", + "code": 9021 + }, + "Inference from class expressions is not supported with --isolatedDeclarations.": { + "category": "Error", + "code": 9022 + }, + "Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function.": { + "category": "Error", + "code": 9023 + }, + "Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations.": { + "category": "Error", + "code": 9025 + }, + "Declaration emit for this file requires preserving this import for augmentations. This is not supported with --isolatedDeclarations.": { + "category": "Error", + "code": 9026 + }, + "Add a type annotation to the variable {0}.": { + "category": "Error", + "code": 9027 + }, + "Add a type annotation to the parameter {0}.": { + "category": "Error", + "code": 9028 + }, + "Add a type annotation to the property {0}.": { + "category": "Error", + "code": 9029 + }, + "Add a return type to the function expression.": { + "category": "Error", + "code": 9030 + }, + "Add a return type to the function declaration.": { + "category": "Error", + "code": 9031 + }, + "Add a return type to the get accessor declaration.": { + "category": "Error", + "code": 9032 + }, + "Add a type to parameter of the set accessor declaration.": { + "category": "Error", + "code": 9033 + }, + "Add a return type to the method": { + "category": "Error", + "code": 9034 + }, + "Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit.": { + "category": "Error", + "code": 9035 + }, + "Move the expression in default export to a variable and add a type annotation to it.": { + "category": "Error", + "code": 9036 + }, + "Default exports can't be inferred with --isolatedDeclarations.": { + "category": "Error", + "code": 9037 + }, + "Computed property names on class or object literals cannot be inferred with --isolatedDeclarations.": { + "category": "Error", + "code": 9038 + }, + "Type containing private name '{0}' can't be used with --isolatedDeclarations.": { + "category": "Error", + "code": 9039 + }, + "JSX attributes must only be assigned a non-empty 'expression'.": { + "category": "Error", + "code": 17000 + }, + "JSX elements cannot have multiple attributes with the same name.": { + "category": "Error", + "code": 17001 + }, + "Expected corresponding JSX closing tag for '{0}'.": { + "category": "Error", + "code": 17002 + }, + "Cannot use JSX unless the '--jsx' flag is provided.": { + "category": "Error", + "code": 17004 + }, + "A constructor cannot contain a 'super' call when its class extends 'null'.": { + "category": "Error", + "code": 17005 + }, + "An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses.": { + "category": "Error", + "code": 17006 + }, + "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses.": { + "category": "Error", + "code": 17007 + }, + "JSX element '{0}' has no corresponding closing tag.": { + "category": "Error", + "code": 17008 + }, + "'super' must be called before accessing 'this' in the constructor of a derived class.": { + "category": "Error", + "code": 17009 + }, + "Unknown type acquisition option '{0}'.": { + "category": "Error", + "code": 17010 + }, + "'super' must be called before accessing a property of 'super' in the constructor of a derived class.": { + "category": "Error", + "code": 17011 + }, + "'{0}' is not a valid meta-property for keyword '{1}'. Did you mean '{2}'?": { + "category": "Error", + "code": 17012 + }, + "Meta-property '{0}' is only allowed in the body of a function declaration, function expression, or constructor.": { + "category": "Error", + "code": 17013 + }, + "JSX fragment has no corresponding closing tag.": { + "category": "Error", + "code": 17014 + }, + "Expected corresponding closing tag for JSX fragment.": { + "category": "Error", + "code": 17015 + }, + "The 'jsxFragmentFactory' compiler option must be provided to use JSX fragments with the 'jsxFactory' compiler option.": { + "category": "Error", + "code": 17016 + }, + "An @jsxFrag pragma is required when using an @jsx pragma with JSX fragments.": { + "category": "Error", + "code": 17017 + }, + "Unknown type acquisition option '{0}'. Did you mean '{1}'?": { + "category": "Error", + "code": 17018 + }, + "'{0}' at the end of a type is not valid TypeScript syntax. Did you mean to write '{1}'?": { + "category": "Error", + "code": 17019 + }, + "'{0}' at the start of a type is not valid TypeScript syntax. Did you mean to write '{1}'?": { + "category": "Error", + "code": 17020 + }, + "Unicode escape sequence cannot appear here.": { + "category": "Error", + "code": 17021 + }, + "Circularity detected while resolving configuration: {0}": { + "category": "Error", + "code": 18000 + }, + "The 'files' list in config file '{0}' is empty.": { + "category": "Error", + "code": 18002 + }, + "No inputs were found in config file '{0}'. Specified 'include' paths were '{1}' and 'exclude' paths were '{2}'.": { + "category": "Error", + "code": 18003 + }, + "No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer.": { + "category": "Error", + "code": 18004 + }, + "Classes may not have a field named 'constructor'.": { + "category": "Error", + "code": 18006 + }, + "JSX expressions may not use the comma operator. Did you mean to write an array?": { + "category": "Error", + "code": 18007 + }, + "Private identifiers cannot be used as parameters.": { + "category": "Error", + "code": 18009 + }, + "An accessibility modifier cannot be used with a private identifier.": { + "category": "Error", + "code": 18010 + }, + "The operand of a 'delete' operator cannot be a private identifier.": { + "category": "Error", + "code": 18011 + }, + "'#constructor' is a reserved word.": { + "category": "Error", + "code": 18012 + }, + "Property '{0}' is not accessible outside class '{1}' because it has a private identifier.": { + "category": "Error", + "code": 18013 + }, + "The property '{0}' cannot be accessed on type '{1}' within this class because it is shadowed by another private identifier with the same spelling.": { + "category": "Error", + "code": 18014 + }, + "Property '{0}' in type '{1}' refers to a different member that cannot be accessed from within type '{2}'.": { + "category": "Error", + "code": 18015 + }, + "Private identifiers are not allowed outside class bodies.": { + "category": "Error", + "code": 18016 + }, + "The shadowing declaration of '{0}' is defined here": { + "category": "Error", + "code": 18017 + }, + "The declaration of '{0}' that you probably intended to use is defined here": { + "category": "Error", + "code": 18018 + }, + "'{0}' modifier cannot be used with a private identifier.": { + "category": "Error", + "code": 18019 + }, + "An enum member cannot be named with a private identifier.": { + "category": "Error", + "code": 18024 + }, + "'#!' can only be used at the start of a file.": { + "category": "Error", + "code": 18026 + }, + "Compiler reserves name '{0}' when emitting private identifier downlevel.": { + "category": "Error", + "code": 18027 + }, + "Private identifiers are only available when targeting ECMAScript 2015 and higher.": { + "category": "Error", + "code": 18028 + }, + "Private identifiers are not allowed in variable declarations.": { + "category": "Error", + "code": 18029 + }, + "An optional chain cannot contain private identifiers.": { + "category": "Error", + "code": 18030 + }, + "The intersection '{0}' was reduced to 'never' because property '{1}' has conflicting types in some constituents.": { + "category": "Error", + "code": 18031 + }, + "The intersection '{0}' was reduced to 'never' because property '{1}' exists in multiple constituents and is private in some.": { + "category": "Error", + "code": 18032 + }, + "Type '{0}' is not assignable to type '{1}' as required for computed enum member values.": { + "category": "Error", + "code": 18033 + }, + "Specify the JSX fragment factory function to use when targeting 'react' JSX emit with 'jsxFactory' compiler option is specified, e.g. 'Fragment'.": { + "category": "Message", + "code": 18034 + }, + "Invalid value for 'jsxFragmentFactory'. '{0}' is not a valid identifier or qualified-name.": { + "category": "Error", + "code": 18035 + }, + "Class decorators can't be used with static private identifier. Consider removing the experimental decorator.": { + "category": "Error", + "code": 18036 + }, + "'await' expression cannot be used inside a class static block.": { + "category": "Error", + "code": 18037 + }, + "'for await' loops cannot be used inside a class static block.": { + "category": "Error", + "code": 18038 + }, + "Invalid use of '{0}'. It cannot be used inside a class static block.": { + "category": "Error", + "code": 18039 + }, + "A 'return' statement cannot be used inside a class static block.": { + "category": "Error", + "code": 18041 + }, + "'{0}' is a type and cannot be imported in JavaScript files. Use '{1}' in a JSDoc type annotation.": { + "category": "Error", + "code": 18042 + }, + "Types cannot appear in export declarations in JavaScript files.": { + "category": "Error", + "code": 18043 + }, + "'{0}' is automatically exported here.": { + "category": "Message", + "code": 18044 + }, + "Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher.": { + "category": "Error", + "code": 18045 + }, + "'{0}' is of type 'unknown'.": { + "category": "Error", + "code": 18046 + }, + "'{0}' is possibly 'null'.": { + "category": "Error", + "code": 18047 + }, + "'{0}' is possibly 'undefined'.": { + "category": "Error", + "code": 18048 + }, + "'{0}' is possibly 'null' or 'undefined'.": { + "category": "Error", + "code": 18049 + }, + "The value '{0}' cannot be used here.": { + "category": "Error", + "code": 18050 + }, + "Compiler option '{0}' cannot be given an empty string.": { + "category": "Error", + "code": 18051 + }, + "Its type '{0}' is not a valid JSX element type.": { + "category": "Error", + "code": 18053 + }, + "'await using' statements cannot be used inside a class static block.": { + "category": "Error", + "code": 18054 + }, + "'{0}' has a string type, but must have syntactically recognizable string syntax when 'isolatedModules' is enabled.": { + "category": "Error", + "code": 18055 + }, + "Enum member following a non-literal numeric member must have an initializer when 'isolatedModules' is enabled.": { + "category": "Error", + "code": 18056 + }, + "String literal import and export names are not supported when the '--module' flag is set to 'es2015' or 'es2020'.": { + "category": "Error", + "code": 18057 + }, + "Default imports are not allowed in a deferred import.": { + "category": "Error", + "code": 18058 + }, + "Named imports are not allowed in a deferred import.": { + "category": "Error", + "code": 18059 + }, + "Deferred imports are only supported when the '--module' flag is set to 'esnext' or 'preserve'.": { + "category": "Error", + "code": 18060 + }, + "'{0}' is not a valid meta-property for keyword 'import'. Did you mean 'meta' or 'defer'?": { + "category": "Error", + "code": 18061 + }, + "`nodenext` if `module` is `nodenext`; `node16` if `module` is `node16` or `node18`; otherwise, `bundler`.": { + "category": "Message", + "code": 69010 + }, + "File is a CommonJS module; it may be converted to an ES module.": { + "category": "Suggestion", + "code": 80001 + }, + "This constructor function may be converted to a class declaration.": { + "category": "Suggestion", + "code": 80002 + }, + "Import may be converted to a default import.": { + "category": "Suggestion", + "code": 80003 + }, + "JSDoc types may be moved to TypeScript types.": { + "category": "Suggestion", + "code": 80004 + }, + "'require' call may be converted to an import.": { + "category": "Suggestion", + "code": 80005 + }, + "This may be converted to an async function.": { + "category": "Suggestion", + "code": 80006 + }, + "'await' has no effect on the type of this expression.": { + "category": "Suggestion", + "code": 80007 + }, + "Numeric literals with absolute values equal to 2^53 or greater are too large to be represented accurately as integers.": { + "category": "Suggestion", + "code": 80008 + }, + "JSDoc typedef may be converted to TypeScript type.": { + "category": "Suggestion", + "code": 80009 + }, + "JSDoc typedefs may be converted to TypeScript types.": { + "category": "Suggestion", + "code": 80010 + }, + "Add missing 'super()' call": { + "category": "Message", + "code": 90001 + }, + "Make 'super()' call the first statement in the constructor": { + "category": "Message", + "code": 90002 + }, + "Change 'extends' to 'implements'": { + "category": "Message", + "code": 90003 + }, + "Remove unused declaration for: '{0}'": { + "category": "Message", + "code": 90004 + }, + "Remove import from '{0}'": { + "category": "Message", + "code": 90005 + }, + "Implement interface '{0}'": { + "category": "Message", + "code": 90006 + }, + "Implement inherited abstract class": { + "category": "Message", + "code": 90007 + }, + "Add '{0}.' to unresolved variable": { + "category": "Message", + "code": 90008 + }, + "Remove variable statement": { + "category": "Message", + "code": 90010 + }, + "Remove template tag": { + "category": "Message", + "code": 90011 + }, + "Remove type parameters": { + "category": "Message", + "code": 90012 + }, + "Import '{0}' from \"{1}\"": { + "category": "Message", + "code": 90013 + }, + "Change '{0}' to '{1}'": { + "category": "Message", + "code": 90014 + }, + "Declare property '{0}'": { + "category": "Message", + "code": 90016 + }, + "Add index signature for property '{0}'": { + "category": "Message", + "code": 90017 + }, + "Disable checking for this file": { + "category": "Message", + "code": 90018 + }, + "Ignore this error message": { + "category": "Message", + "code": 90019 + }, + "Initialize property '{0}' in the constructor": { + "category": "Message", + "code": 90020 + }, + "Initialize static property '{0}'": { + "category": "Message", + "code": 90021 + }, + "Change spelling to '{0}'": { + "category": "Message", + "code": 90022 + }, + "Declare method '{0}'": { + "category": "Message", + "code": 90023 + }, + "Declare static method '{0}'": { + "category": "Message", + "code": 90024 + }, + "Prefix '{0}' with an underscore": { + "category": "Message", + "code": 90025 + }, + "Rewrite as the indexed access type '{0}'": { + "category": "Message", + "code": 90026 + }, + "Declare static property '{0}'": { + "category": "Message", + "code": 90027 + }, + "Call decorator expression": { + "category": "Message", + "code": 90028 + }, + "Add async modifier to containing function": { + "category": "Message", + "code": 90029 + }, + "Replace 'infer {0}' with 'unknown'": { + "category": "Message", + "code": 90030 + }, + "Replace all unused 'infer' with 'unknown'": { + "category": "Message", + "code": 90031 + }, + "Add parameter name": { + "category": "Message", + "code": 90034 + }, + "Declare private property '{0}'": { + "category": "Message", + "code": 90035 + }, + "Replace '{0}' with 'Promise<{1}>'": { + "category": "Message", + "code": 90036 + }, + "Fix all incorrect return type of an async functions": { + "category": "Message", + "code": 90037 + }, + "Declare private method '{0}'": { + "category": "Message", + "code": 90038 + }, + "Remove unused destructuring declaration": { + "category": "Message", + "code": 90039 + }, + "Remove unused declarations for: '{0}'": { + "category": "Message", + "code": 90041 + }, + "Declare a private field named '{0}'.": { + "category": "Message", + "code": 90053 + }, + "Includes imports of types referenced by '{0}'": { + "category": "Message", + "code": 90054 + }, + "Remove 'type' from import declaration from \"{0}\"": { + "category": "Message", + "code": 90055 + }, + "Remove 'type' from import of '{0}' from \"{1}\"": { + "category": "Message", + "code": 90056 + }, + "Add import from \"{0}\"": { + "category": "Message", + "code": 90057 + }, + "Update import from \"{0}\"": { + "category": "Message", + "code": 90058 + }, + "Export '{0}' from module '{1}'": { + "category": "Message", + "code": 90059 + }, + "Export all referenced locals": { + "category": "Message", + "code": 90060 + }, + "Update modifiers of '{0}'": { + "category": "Message", + "code": 90061 + }, + "Add annotation of type '{0}'": { + "category": "Message", + "code": 90062 + }, + "Add return type '{0}'": { + "category": "Message", + "code": 90063 + }, + "Extract base class to variable": { + "category": "Message", + "code": 90064 + }, + "Extract default export to variable": { + "category": "Message", + "code": 90065 + }, + "Extract binding expressions to variable": { + "category": "Message", + "code": 90066 + }, + "Add all missing type annotations": { + "category": "Message", + "code": 90067 + }, + "Add satisfies and an inline type assertion with '{0}'": { + "category": "Message", + "code": 90068 + }, + "Extract to variable and replace with '{0} as typeof {0}'": { + "category": "Message", + "code": 90069 + }, + "Mark array literal as const": { + "category": "Message", + "code": 90070 + }, + "Annotate types of properties expando function in a namespace": { + "category": "Message", + "code": 90071 + }, + "Convert function to an ES2015 class": { + "category": "Message", + "code": 95001 + }, + "Convert '{0}' to '{1} in {0}'": { + "category": "Message", + "code": 95003 + }, + "Extract to {0} in {1}": { + "category": "Message", + "code": 95004 + }, + "Extract function": { + "category": "Message", + "code": 95005 + }, + "Extract constant": { + "category": "Message", + "code": 95006 + }, + "Extract to {0} in enclosing scope": { + "category": "Message", + "code": 95007 + }, + "Extract to {0} in {1} scope": { + "category": "Message", + "code": 95008 + }, + "Annotate with type from JSDoc": { + "category": "Message", + "code": 95009 + }, + "Infer type of '{0}' from usage": { + "category": "Message", + "code": 95011 + }, + "Infer parameter types from usage": { + "category": "Message", + "code": 95012 + }, + "Convert to default import": { + "category": "Message", + "code": 95013 + }, + "Install '{0}'": { + "category": "Message", + "code": 95014 + }, + "Replace import with '{0}'.": { + "category": "Message", + "code": 95015 + }, + "Use synthetic 'default' member.": { + "category": "Message", + "code": 95016 + }, + "Convert to ES module": { + "category": "Message", + "code": 95017 + }, + "Add 'undefined' type to property '{0}'": { + "category": "Message", + "code": 95018 + }, + "Add initializer to property '{0}'": { + "category": "Message", + "code": 95019 + }, + "Add definite assignment assertion to property '{0}'": { + "category": "Message", + "code": 95020 + }, + "Convert all type literals to mapped type": { + "category": "Message", + "code": 95021 + }, + "Add all missing members": { + "category": "Message", + "code": 95022 + }, + "Infer all types from usage": { + "category": "Message", + "code": 95023 + }, + "Delete all unused declarations": { + "category": "Message", + "code": 95024 + }, + "Prefix all unused declarations with '_' where possible": { + "category": "Message", + "code": 95025 + }, + "Fix all detected spelling errors": { + "category": "Message", + "code": 95026 + }, + "Add initializers to all uninitialized properties": { + "category": "Message", + "code": 95027 + }, + "Add definite assignment assertions to all uninitialized properties": { + "category": "Message", + "code": 95028 + }, + "Add undefined type to all uninitialized properties": { + "category": "Message", + "code": 95029 + }, + "Change all jsdoc-style types to TypeScript": { + "category": "Message", + "code": 95030 + }, + "Change all jsdoc-style types to TypeScript (and add '| undefined' to nullable types)": { + "category": "Message", + "code": 95031 + }, + "Implement all unimplemented interfaces": { + "category": "Message", + "code": 95032 + }, + "Install all missing types packages": { + "category": "Message", + "code": 95033 + }, + "Rewrite all as indexed access types": { + "category": "Message", + "code": 95034 + }, + "Convert all to default imports": { + "category": "Message", + "code": 95035 + }, + "Make all 'super()' calls the first statement in their constructor": { + "category": "Message", + "code": 95036 + }, + "Add qualifier to all unresolved variables matching a member name": { + "category": "Message", + "code": 95037 + }, + "Change all extended interfaces to 'implements'": { + "category": "Message", + "code": 95038 + }, + "Add all missing super calls": { + "category": "Message", + "code": 95039 + }, + "Implement all inherited abstract classes": { + "category": "Message", + "code": 95040 + }, + "Add all missing 'async' modifiers": { + "category": "Message", + "code": 95041 + }, + "Add '@ts-ignore' to all error messages": { + "category": "Message", + "code": 95042 + }, + "Annotate everything with types from JSDoc": { + "category": "Message", + "code": 95043 + }, + "Add '()' to all uncalled decorators": { + "category": "Message", + "code": 95044 + }, + "Convert all constructor functions to classes": { + "category": "Message", + "code": 95045 + }, + "Generate 'get' and 'set' accessors": { + "category": "Message", + "code": 95046 + }, + "Convert 'require' to 'import'": { + "category": "Message", + "code": 95047 + }, + "Convert all 'require' to 'import'": { + "category": "Message", + "code": 95048 + }, + "Move to a new file": { + "category": "Message", + "code": 95049 + }, + "Remove unreachable code": { + "category": "Message", + "code": 95050 + }, + "Remove all unreachable code": { + "category": "Message", + "code": 95051 + }, + "Add missing 'typeof'": { + "category": "Message", + "code": 95052 + }, + "Remove unused label": { + "category": "Message", + "code": 95053 + }, + "Remove all unused labels": { + "category": "Message", + "code": 95054 + }, + "Convert '{0}' to mapped object type": { + "category": "Message", + "code": 95055 + }, + "Convert namespace import to named imports": { + "category": "Message", + "code": 95056 + }, + "Convert named imports to namespace import": { + "category": "Message", + "code": 95057 + }, + "Add or remove braces in an arrow function": { + "category": "Message", + "code": 95058 + }, + "Add braces to arrow function": { + "category": "Message", + "code": 95059 + }, + "Remove braces from arrow function": { + "category": "Message", + "code": 95060 + }, + "Convert default export to named export": { + "category": "Message", + "code": 95061 + }, + "Convert named export to default export": { + "category": "Message", + "code": 95062 + }, + "Add missing enum member '{0}'": { + "category": "Message", + "code": 95063 + }, + "Add all missing imports": { + "category": "Message", + "code": 95064 + }, + "Convert to async function": { + "category": "Message", + "code": 95065 + }, + "Convert all to async functions": { + "category": "Message", + "code": 95066 + }, + "Add missing call parentheses": { + "category": "Message", + "code": 95067 + }, + "Add all missing call parentheses": { + "category": "Message", + "code": 95068 + }, + "Add 'unknown' conversion for non-overlapping types": { + "category": "Message", + "code": 95069 + }, + "Add 'unknown' to all conversions of non-overlapping types": { + "category": "Message", + "code": 95070 + }, + "Add missing 'new' operator to call": { + "category": "Message", + "code": 95071 + }, + "Add missing 'new' operator to all calls": { + "category": "Message", + "code": 95072 + }, + "Add names to all parameters without names": { + "category": "Message", + "code": 95073 + }, + "Enable the 'experimentalDecorators' option in your configuration file": { + "category": "Message", + "code": 95074 + }, + "Convert parameters to destructured object": { + "category": "Message", + "code": 95075 + }, + "Extract type": { + "category": "Message", + "code": 95077 + }, + "Extract to type alias": { + "category": "Message", + "code": 95078 + }, + "Extract to typedef": { + "category": "Message", + "code": 95079 + }, + "Infer 'this' type of '{0}' from usage": { + "category": "Message", + "code": 95080 + }, + "Add 'const' to unresolved variable": { + "category": "Message", + "code": 95081 + }, + "Add 'const' to all unresolved variables": { + "category": "Message", + "code": 95082 + }, + "Add 'await'": { + "category": "Message", + "code": 95083 + }, + "Add 'await' to initializer for '{0}'": { + "category": "Message", + "code": 95084 + }, + "Fix all expressions possibly missing 'await'": { + "category": "Message", + "code": 95085 + }, + "Remove unnecessary 'await'": { + "category": "Message", + "code": 95086 + }, + "Remove all unnecessary uses of 'await'": { + "category": "Message", + "code": 95087 + }, + "Enable the '--jsx' flag in your configuration file": { + "category": "Message", + "code": 95088 + }, + "Add 'await' to initializers": { + "category": "Message", + "code": 95089 + }, + "Extract to interface": { + "category": "Message", + "code": 95090 + }, + "Convert to a bigint numeric literal": { + "category": "Message", + "code": 95091 + }, + "Convert all to bigint numeric literals": { + "category": "Message", + "code": 95092 + }, + "Convert 'const' to 'let'": { + "category": "Message", + "code": 95093 + }, + "Prefix with 'declare'": { + "category": "Message", + "code": 95094 + }, + "Prefix all incorrect property declarations with 'declare'": { + "category": "Message", + "code": 95095 + }, + "Convert to template string": { + "category": "Message", + "code": 95096 + }, + "Add 'export {}' to make this file into a module": { + "category": "Message", + "code": 95097 + }, + "Set the 'target' option in your configuration file to '{0}'": { + "category": "Message", + "code": 95098 + }, + "Set the 'module' option in your configuration file to '{0}'": { + "category": "Message", + "code": 95099 + }, + "Convert invalid character to its html entity code": { + "category": "Message", + "code": 95100 + }, + "Convert all invalid characters to HTML entity code": { + "category": "Message", + "code": 95101 + }, + "Convert all 'const' to 'let'": { + "category": "Message", + "code": 95102 + }, + "Convert function expression '{0}' to arrow function": { + "category": "Message", + "code": 95105 + }, + "Convert function declaration '{0}' to arrow function": { + "category": "Message", + "code": 95106 + }, + "Fix all implicit-'this' errors": { + "category": "Message", + "code": 95107 + }, + "Wrap invalid character in an expression container": { + "category": "Message", + "code": 95108 + }, + "Wrap all invalid characters in an expression container": { + "category": "Message", + "code": 95109 + }, + "Visit https://aka.ms/tsconfig to read more about this file": { + "category": "Message", + "code": 95110 + }, + "Add a return statement": { + "category": "Message", + "code": 95111 + }, + "Remove braces from arrow function body": { + "category": "Message", + "code": 95112 + }, + "Wrap the following body with parentheses which should be an object literal": { + "category": "Message", + "code": 95113 + }, + "Add all missing return statement": { + "category": "Message", + "code": 95114 + }, + "Remove braces from all arrow function bodies with relevant issues": { + "category": "Message", + "code": 95115 + }, + "Wrap all object literal with parentheses": { + "category": "Message", + "code": 95116 + }, + "Move labeled tuple element modifiers to labels": { + "category": "Message", + "code": 95117 + }, + "Convert overload list to single signature": { + "category": "Message", + "code": 95118 + }, + "Generate 'get' and 'set' accessors for all overriding properties": { + "category": "Message", + "code": 95119 + }, + "Wrap in JSX fragment": { + "category": "Message", + "code": 95120 + }, + "Wrap all unparented JSX in JSX fragment": { + "category": "Message", + "code": 95121 + }, + "Convert arrow function or function expression": { + "category": "Message", + "code": 95122 + }, + "Convert to anonymous function": { + "category": "Message", + "code": 95123 + }, + "Convert to named function": { + "category": "Message", + "code": 95124 + }, + "Convert to arrow function": { + "category": "Message", + "code": 95125 + }, + "Remove parentheses": { + "category": "Message", + "code": 95126 + }, + "Could not find a containing arrow function": { + "category": "Message", + "code": 95127 + }, + "Containing function is not an arrow function": { + "category": "Message", + "code": 95128 + }, + "Could not find export statement": { + "category": "Message", + "code": 95129 + }, + "This file already has a default export": { + "category": "Message", + "code": 95130 + }, + "Could not find import clause": { + "category": "Message", + "code": 95131 + }, + "Could not find namespace import or named imports": { + "category": "Message", + "code": 95132 + }, + "Selection is not a valid type node": { + "category": "Message", + "code": 95133 + }, + "No type could be extracted from this type node": { + "category": "Message", + "code": 95134 + }, + "Could not find property for which to generate accessor": { + "category": "Message", + "code": 95135 + }, + "Name is not valid": { + "category": "Message", + "code": 95136 + }, + "Can only convert property with modifier": { + "category": "Message", + "code": 95137 + }, + "Switch each misused '{0}' to '{1}'": { + "category": "Message", + "code": 95138 + }, + "Convert to optional chain expression": { + "category": "Message", + "code": 95139 + }, + "Could not find convertible access expression": { + "category": "Message", + "code": 95140 + }, + "Could not find matching access expressions": { + "category": "Message", + "code": 95141 + }, + "Can only convert logical AND access chains": { + "category": "Message", + "code": 95142 + }, + "Add 'void' to Promise resolved without a value": { + "category": "Message", + "code": 95143 + }, + "Add 'void' to all Promises resolved without a value": { + "category": "Message", + "code": 95144 + }, + "Use element access for '{0}'": { + "category": "Message", + "code": 95145 + }, + "Use element access for all undeclared properties.": { + "category": "Message", + "code": 95146 + }, + "Delete all unused imports": { + "category": "Message", + "code": 95147 + }, + "Infer function return type": { + "category": "Message", + "code": 95148 + }, + "Return type must be inferred from a function": { + "category": "Message", + "code": 95149 + }, + "Could not determine function return type": { + "category": "Message", + "code": 95150 + }, + "Could not convert to arrow function": { + "category": "Message", + "code": 95151 + }, + "Could not convert to named function": { + "category": "Message", + "code": 95152 + }, + "Could not convert to anonymous function": { + "category": "Message", + "code": 95153 + }, + "Can only convert string concatenations and string literals": { + "category": "Message", + "code": 95154 + }, + "Selection is not a valid statement or statements": { + "category": "Message", + "code": 95155 + }, + "Add missing function declaration '{0}'": { + "category": "Message", + "code": 95156 + }, + "Add all missing function declarations": { + "category": "Message", + "code": 95157 + }, + "Method not implemented.": { + "category": "Message", + "code": 95158 + }, + "Function not implemented.": { + "category": "Message", + "code": 95159 + }, + "Add 'override' modifier": { + "category": "Message", + "code": 95160 + }, + "Remove 'override' modifier": { + "category": "Message", + "code": 95161 + }, + "Add all missing 'override' modifiers": { + "category": "Message", + "code": 95162 + }, + "Remove all unnecessary 'override' modifiers": { + "category": "Message", + "code": 95163 + }, + "Can only convert named export": { + "category": "Message", + "code": 95164 + }, + "Add missing properties": { + "category": "Message", + "code": 95165 + }, + "Add all missing properties": { + "category": "Message", + "code": 95166 + }, + "Add missing attributes": { + "category": "Message", + "code": 95167 + }, + "Add all missing attributes": { + "category": "Message", + "code": 95168 + }, + "Add 'undefined' to optional property type": { + "category": "Message", + "code": 95169 + }, + "Convert named imports to default import": { + "category": "Message", + "code": 95170 + }, + "Delete unused '@param' tag '{0}'": { + "category": "Message", + "code": 95171 + }, + "Delete all unused '@param' tags": { + "category": "Message", + "code": 95172 + }, + "Rename '@param' tag name '{0}' to '{1}'": { + "category": "Message", + "code": 95173 + }, + "Use `{0}`.": { + "category": "Message", + "code": 95174 + }, + "Use `Number.isNaN` in all conditions.": { + "category": "Message", + "code": 95175 + }, + "Convert typedef to TypeScript type.": { + "category": "Message", + "code": 95176 + }, + "Convert all typedef to TypeScript types.": { + "category": "Message", + "code": 95177 + }, + "Move to file": { + "category": "Message", + "code": 95178 + }, + "Cannot move to file, selected file is invalid": { + "category": "Message", + "code": 95179 + }, + "Use 'import type'": { + "category": "Message", + "code": 95180 + }, + "Use 'type {0}'": { + "category": "Message", + "code": 95181 + }, + "Fix all with type-only imports": { + "category": "Message", + "code": 95182 + }, + "Cannot move statements to the selected file": { + "category": "Message", + "code": 95183 + }, + "Inline variable": { + "category": "Message", + "code": 95184 + }, + "Could not find variable to inline.": { + "category": "Message", + "code": 95185 + }, + "Variables with multiple declarations cannot be inlined.": { + "category": "Message", + "code": 95186 + }, + "Add missing comma for object member completion '{0}'.": { + "category": "Message", + "code": 95187 + }, + "Add missing parameter to '{0}'": { + "category": "Message", + "code": 95188 + }, + "Add missing parameters to '{0}'": { + "category": "Message", + "code": 95189 + }, + "Add all missing parameters": { + "category": "Message", + "code": 95190 + }, + "Add optional parameter to '{0}'": { + "category": "Message", + "code": 95191 + }, + "Add optional parameters to '{0}'": { + "category": "Message", + "code": 95192 + }, + "Add all optional parameters": { + "category": "Message", + "code": 95193 + }, + "Wrap in parentheses": { + "category": "Message", + "code": 95194 + }, + "Wrap all invalid decorator expressions in parentheses": { + "category": "Message", + "code": 95195 + }, + "Add 'resolution-mode' import attribute": { + "category": "Message", + "code": 95196 + }, + "Add 'resolution-mode' import attribute to all type-only imports that need it": { + "category": "Message", + "code": 95197 + } +} diff --git a/packages/error-translator/src/getImprovedMessage.ts b/packages/error-translator/src/getImprovedMessage.ts new file mode 100644 index 0000000..d9a1528 --- /dev/null +++ b/packages/error-translator/src/getImprovedMessage.ts @@ -0,0 +1,15 @@ +// The runtime package consumes pre-generated JSON, so the body filler must remain +// pure and must not depend on filesystem access or markdown parsing. +export function fillBodyWithItems( + body: string, + items: readonly (string | number)[], +) { + items.forEach((item, index) => { + const bodyRegex = new RegExp(`'?\\{${index}\\}'?`, "g"); + body = body.replace(bodyRegex, `\`${String(item)}\``); + }); + + return { + body, + }; +} diff --git a/packages/error-translator/src/index.ts b/packages/error-translator/src/index.ts new file mode 100644 index 0000000..1cc5f37 --- /dev/null +++ b/packages/error-translator/src/index.ts @@ -0,0 +1,12 @@ +export { fillBodyWithItems } from "./getImprovedMessage"; +export { + parseErrors, + parseErrorsWithDb, + type ParsedDiagnosticMessage, + type ParsedDiagnosticMatch, +} from "./parseErrors"; +export { + hasTranslation, + translateDiagnosticMessage, + type PlainEnglishTranslation, +} from "./translateDiagnosticMessage"; diff --git a/packages/error-translator/src/parseErrors.ts b/packages/error-translator/src/parseErrors.ts new file mode 100644 index 0000000..eed9ede --- /dev/null +++ b/packages/error-translator/src/parseErrors.ts @@ -0,0 +1,186 @@ +import tsErrorMessages from "./generated/tsErrorMessages.json"; + +type TsErrorMessageDb = Record; + +interface TSDiagnosticMatcher { + regexGlobal: RegExp; + regexLocal: RegExp; + parameters: string[]; +} + +const DiagnosticHashMap = new Map(); + +const escapeRegex = /[.*+?^${}()|[\]\\]/g; + +function escapeRegExp(str: string) { + return str.replace(escapeRegex, "\\$&"); +} + +const parameterRegex = /{(\d)}/g; +const escapedParameterRegex = /\\\{(\d)\\\}/g; + +function isTsErrorMessageDb(value: unknown): value is TsErrorMessageDb { + if (typeof value !== "object" || value === null) { + return false; + } + + return Object.values(value).every((entry) => { + return ( + typeof entry === "object" && + entry !== null && + "code" in entry && + typeof entry.code === "number" + ); + }); +} + +function ensureTsErrorMessageDb(value: unknown): TsErrorMessageDb { + if (!isTsErrorMessageDb(value)) { + throw new Error("TypeScript diagnostic matcher database has an invalid shape."); + } + + return value; +} + +const tsErrorMessageDb = ensureTsErrorMessageDb(tsErrorMessages); + +function getDiagnosticMatcher(text: string): TSDiagnosticMatcher { + const existing = DiagnosticHashMap.get(text); + + if (existing) return existing; + + const regexSource = escapeRegExp(text).replace(escapedParameterRegex, "(.+)"); + const regexLocal = new RegExp(regexSource); + const regexGlobal = new RegExp(regexSource, "g"); + const parameters = text.match(parameterRegex) ?? []; + + const diagnosticMatcher = { + regexGlobal, + regexLocal, + parameters, + }; + + DiagnosticHashMap.set(text, diagnosticMatcher); + + return diagnosticMatcher; +} + +function associateMatchedParameters( + parameters: string[], + matchedParams: string[], +): (string | number)[] { + const params: Record = Object.create(null); + + for (let i = 0; i < matchedParams.length; i++) { + const parameter = parameters[i]; + if (parameter !== undefined && !(parameter in params)) { + params[parameter] = matchedParams[i] ?? ""; + } + } + + return Object.values(params); +} + +interface ParseInfo { + rawError: string; + startIndex: number; + endIndex: number; + items: (string | number)[]; +} + +export interface ParsedDiagnosticMatch { + code: number; + error: string; + parseInfo: ParseInfo; +} + +export type ParsedDiagnosticMessage = ParsedDiagnosticMatch[]; + +export function parseErrorsWithDb( + db: TsErrorMessageDb, + message: string, +): ParsedDiagnosticMessage { + const errorMessageByKey: Record = {}; + + const keys = Object.keys(db); + + keys.forEach((newError) => { + const dbEntry = db[newError]; + if (dbEntry === undefined) { + return; + } + + const { regexGlobal, regexLocal, parameters } = getDiagnosticMatcher(newError); + const matches = message.match(regexGlobal); + + if (matches === null) { + return; + } + + let searchOffset = 0; + + for (const matchElem of matches) { + const startIndex = message.indexOf(matchElem, searchOffset); + if (startIndex === -1) { + continue; + } + const endIndex = startIndex + matchElem.length; + const key = `${startIndex}_${endIndex}`; + searchOffset = endIndex; + + const items = associateMatchedParameters( + parameters, + matchElem.match(regexLocal)?.slice(1) ?? [], + ); + + const errorObj: ParsedDiagnosticMatch = { + code: dbEntry.code, + error: newError, + parseInfo: { + rawError: matchElem, + startIndex, + endIndex, + items, + }, + }; + + if (errorMessageByKey[key]) { + const existingRule = errorMessageByKey[key]; + + errorMessageByKey[key] = + newError.length > existingRule.error.length ? errorObj : existingRule; + } else { + errorMessageByKey[key] = errorObj; + } + } + }); + + const sortedMatches = Object.values(errorMessageByKey).sort((left, right) => { + if (left.parseInfo.startIndex !== right.parseInfo.startIndex) { + return left.parseInfo.startIndex - right.parseInfo.startIndex; + } + + return right.parseInfo.endIndex - left.parseInfo.endIndex; + }); + + const filteredMatches: ParsedDiagnosticMatch[] = []; + + for (const candidate of sortedMatches) { + const isContainedByAcceptedMatch = filteredMatches.some((accepted) => { + return ( + candidate.parseInfo.startIndex >= accepted.parseInfo.startIndex && + candidate.parseInfo.endIndex <= accepted.parseInfo.endIndex + ); + }); + + if (!isContainedByAcceptedMatch) { + filteredMatches.push(candidate); + } + } + + return filteredMatches; +} + +export function parseErrors(message: string): ParsedDiagnosticMessage { + return parseErrorsWithDb(tsErrorMessageDb, message); +} diff --git a/packages/error-translator/src/translateDiagnosticMessage.ts b/packages/error-translator/src/translateDiagnosticMessage.ts new file mode 100644 index 0000000..d58bbc4 --- /dev/null +++ b/packages/error-translator/src/translateDiagnosticMessage.ts @@ -0,0 +1,59 @@ +import bundleErrors from "./generated/bundleErrors.json"; +import { fillBodyWithItems } from "./getImprovedMessage"; +import { parseErrors } from "./parseErrors"; + +type TranslationBundle = Record; + +function isTranslationBundle(value: unknown): value is TranslationBundle { + if (typeof value !== "object" || value === null) { + return false; + } + + return Object.values(value).every((entry) => { + return ( + typeof entry === "object" && + entry !== null && + "body" in entry && + typeof entry.body === "string" && + "code" in entry && + typeof entry.code === "number" + ); + }); +} + +function ensureTranslationBundle(value: unknown): TranslationBundle { + if (!isTranslationBundle(value)) { + throw new Error("Plain-English translation bundle has an invalid shape."); + } + + return value; +} + +const translationBundle = ensureTranslationBundle(bundleErrors); + +export interface PlainEnglishTranslation { + code: number; + rawError: string; + body: string | null; +} + +export function hasTranslation(code: number): boolean { + return translationBundle[String(code)] !== undefined; +} + +export function translateDiagnosticMessage( + message: string, +): PlainEnglishTranslation[] { + return parseErrors(message).map((error) => { + const translation = translationBundle[String(error.code)]; + + return { + code: error.code, + rawError: error.parseInfo.rawError, + body: + translation === undefined + ? null + : fillBodyWithItems(translation.body, error.parseInfo.items).body, + }; + }); +} diff --git a/packages/error-translator/test/engine.test.ts b/packages/error-translator/test/engine.test.ts new file mode 100644 index 0000000..211ffcf --- /dev/null +++ b/packages/error-translator/test/engine.test.ts @@ -0,0 +1,189 @@ +import { describe, expect, it } from "vitest"; +import { fillBodyWithItems } from "../src/getImprovedMessage"; +import { + parseErrors, + parseErrorsWithDb, +} from "../src/parseErrors"; +import { translateDiagnosticMessage } from "../src/translateDiagnosticMessage"; + +describe("parseErrors", () => { + it("Should catch multiple of the same error", () => { + const errors = parseErrors( + `Types of property 'URL_NAVIGATION' are incompatible. + Types of property 'actions' are incompatible.`, + ); + + expect(errors).toHaveLength(2); + }); + + it("should match diagnostic variadic arguments for quoted types and arbitrary (non-quoted) values", () => { + const input = ` + Generic type 'T' requires between 5 and 10 type arguments. + Type 'B' is missing the following properties from type 'A': two, three + 'T' refers to a value, but is being used as a type here. Did you mean 'typeof T'? + `; + const errors = parseErrors(input); + + expect(errors).toMatchInlineSnapshot(` + [ + { + "code": 2707, + "error": "Generic type '{0}' requires between {1} and {2} type arguments.", + "parseInfo": { + "endIndex": 65, + "items": [ + "T", + "5", + "10", + ], + "rawError": "Generic type 'T' requires between 5 and 10 type arguments.", + "startIndex": 7, + }, + }, + { + "code": 2739, + "error": "Type '{0}' is missing the following properties from type '{1}': {2}", + "parseInfo": { + "endIndex": 142, + "items": [ + "B", + "A", + "two, three", + ], + "rawError": "Type 'B' is missing the following properties from type 'A': two, three", + "startIndex": 72, + }, + }, + { + "code": 2749, + "error": "'{0}' refers to a value, but is being used as a type here. Did you mean 'typeof {0}'?", + "parseInfo": { + "endIndex": 230, + "items": [ + "T", + ], + "rawError": "'T' refers to a value, but is being used as a type here. Did you mean 'typeof T'?", + "startIndex": 149, + }, + }, + ] + `); + }); + + it("Should handle multiple params of ALL the same value", () => { + const result = parseErrorsWithDb( + { + [`'{0}', '{1}', '{2}'`]: { + code: 1, + }, + }, + `'A', 'A', 'A'`, + ); + expect(result[0].parseInfo.items).toEqual(['A', 'A', 'A']); + }); + + it("Should handle multiple params of SOME the same value", () => { + const result = parseErrorsWithDb( + { + [`'{0}', '{1}', '{2}'`]: { + code: 1, + }, + }, + `'A', 'A', 'B'`, + ); + expect(result[0].parseInfo.items).toEqual(['A', 'A', 'B']); + }); + + it("Should handle non-quoted params", () => { + const result = parseErrorsWithDb( + { + [`Imported via {0} from file '{1}'`]: { + code: 1, + }, + }, + `Imported via A from file 'B'`, + ); + + expect(result[0].parseInfo.items).toEqual(['A', 'B']); + }); + + it.skip("Should handle params in the incorrect order", () => { + const result = parseErrorsWithDb( + { + [`{2}, {0}, {1}`]: { + code: 1, + }, + }, + `C, A, B`, + ); + + expect(result[0].parseInfo.items).toEqual(['A', 'B', 'C']); + }); + + it("Should handle params specified multiple times", () => { + const result = parseErrorsWithDb( + { + [`{0}, {1}, {1}, {2}`]: { + code: 1, + }, + }, + `A, B, B, C`, + ); + + expect(result[0].parseInfo.items).toEqual(['A', 'B', 'C']); + }); + + describe("When two sections match, but one is longer", () => { + it("Should choose the longer one", () => { + const result = parseErrorsWithDb( + { + [`{0}, {1}, {2}`]: { + code: 1, + }, + [`{0}, {1}, {2}, {3}`]: { + code: 1, + }, + }, + `A, B, C, D`, + ); + + expect(result).toHaveLength(1); + expect(result[0].parseInfo.items).toEqual(['A', 'B', 'C', 'D']); + }); + }); + + it("Should handle cases where there are no params", () => { + const result = parseErrorsWithDb( + { + [`Hello!`]: { + code: 1, + }, + }, + `Hello!`, + ); + + expect(result[0].parseInfo.items).toEqual([]); + }); +}); + +describe("fillBodyWithItems", () => { + it("Should handle {0} AND '{1}' cases in excerpt", () => { + const result = fillBodyWithItems(`{0} and '{1}'`, ["A", "B"]); + + expect(result.body).toEqual("`A` and `B`"); + }); +}); + +describe("translateDiagnosticMessage", () => { + it("Should return a local plain-English translation when one exists", () => { + const [translation] = translateDiagnosticMessage( + "Type 'A' is not assignable to type 'B'.", + ); + + expect(translation).toEqual({ + code: 2322, + rawError: "Type 'A' is not assignable to type 'B'.", + body: "I was expecting a type matching `B`, but instead you passed `A`.", + }); + }); +}); diff --git a/packages/error-translator/tsconfig.json b/packages/error-translator/tsconfig.json new file mode 100644 index 0000000..65a8a07 --- /dev/null +++ b/packages/error-translator/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "noEmit": false, + "outDir": "dist", + "rootDir": "src", + "composite": true, + "declaration": true, + "declarationMap": true + }, + "include": ["src/**/*", "src/generated/**/*.json"] +} diff --git a/packages/error-translator/tsconfig.lib.json b/packages/error-translator/tsconfig.lib.json new file mode 100644 index 0000000..da93d65 --- /dev/null +++ b/packages/error-translator/tsconfig.lib.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": false + }, + "include": ["src/**/*", "src/generated/**/*.json"] +} diff --git a/packages/error-translator/vendor/matt-pocock/errors/1002.md b/packages/error-translator/vendor/matt-pocock/errors/1002.md new file mode 100644 index 0000000..c579425 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1002.md @@ -0,0 +1,5 @@ +--- +original: 'Unterminated string literal.' +--- + +You've started a string (via a single or double quote) but haven't ended it. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1003.md b/packages/error-translator/vendor/matt-pocock/errors/1003.md new file mode 100644 index 0000000..9fc4892 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1003.md @@ -0,0 +1,5 @@ +--- +original: 'Identifier expected.' +--- + +I was expecting a name but none was provided. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1006.md b/packages/error-translator/vendor/matt-pocock/errors/1006.md new file mode 100644 index 0000000..70043d4 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1006.md @@ -0,0 +1,5 @@ +--- +original: 'A file cannot have a reference to itself.' +--- + +You've got a triple-slash reference inside a file that's referencing itself. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1009.md b/packages/error-translator/vendor/matt-pocock/errors/1009.md new file mode 100644 index 0000000..013842c --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1009.md @@ -0,0 +1,5 @@ +--- +original: 'Trailing comma not allowed.' +--- + +You've added a trailing comma when you're not supposed to add it. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1014.md b/packages/error-translator/vendor/matt-pocock/errors/1014.md new file mode 100644 index 0000000..d49376a --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1014.md @@ -0,0 +1,5 @@ +--- +original: 'A rest parameter must be last in a parameter list.' +--- + +A parameter in a function that starts with `...` must be the last one in the list. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1015.md b/packages/error-translator/vendor/matt-pocock/errors/1015.md new file mode 100644 index 0000000..f4783f0 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1015.md @@ -0,0 +1,5 @@ +--- +original: 'Parameter cannot have question mark and initializer.' +--- + +You can use a question mark or an default value, but not both at once. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1091.md b/packages/error-translator/vendor/matt-pocock/errors/1091.md new file mode 100644 index 0000000..da1fc7b --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1091.md @@ -0,0 +1,5 @@ +--- +original: "Only a single variable declaration is allowed in a 'for...in' statement." +--- + +You can only create a single variable in a 'for...in' statement diff --git a/packages/error-translator/vendor/matt-pocock/errors/1109.md b/packages/error-translator/vendor/matt-pocock/errors/1109.md new file mode 100644 index 0000000..f65f173 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1109.md @@ -0,0 +1,5 @@ +--- +original: 'Expression expected.' +--- + +I am expecting a code that resolves to a value. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1117.md b/packages/error-translator/vendor/matt-pocock/errors/1117.md new file mode 100644 index 0000000..20144b8 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1117.md @@ -0,0 +1,5 @@ +--- +original: 'An object literal cannot have multiple properties with the same name.' +--- + +You can't add the same property multiple times to an object. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1155.md b/packages/error-translator/vendor/matt-pocock/errors/1155.md new file mode 100644 index 0000000..5a035c0 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1155.md @@ -0,0 +1,5 @@ +--- +original: "'const' declarations must be initialized." +--- + +A `const` must be given a value when it's declared. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1163.md b/packages/error-translator/vendor/matt-pocock/errors/1163.md new file mode 100644 index 0000000..1c6bf75 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1163.md @@ -0,0 +1,5 @@ +--- +original: "A 'yield' expression is only allowed in a generator body." +--- + +The `yield` keyword can only be used inside a generator function diff --git a/packages/error-translator/vendor/matt-pocock/errors/1208.md b/packages/error-translator/vendor/matt-pocock/errors/1208.md new file mode 100644 index 0000000..234ed14 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1208.md @@ -0,0 +1,5 @@ +--- +original: "'{0}' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module." +--- + +You have set the 'isolatedModules' flag. Therefore all implementation files must be modules (which means it has some form of import/export). Add an import, export, or an empty 'export {}' statement to make it a module. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1240.md b/packages/error-translator/vendor/matt-pocock/errors/1240.md new file mode 100644 index 0000000..80a5dad --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1240.md @@ -0,0 +1,5 @@ +--- +original: 'Unable to resolve signature of property decorator when called as an expression.' +--- + +You can't use a decorator on an expression, like an arrow function. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1254.md b/packages/error-translator/vendor/matt-pocock/errors/1254.md new file mode 100644 index 0000000..bf508e3 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1254.md @@ -0,0 +1,5 @@ +--- +original: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference." +--- + +You can't use runtime code in a declaration file. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1268.md b/packages/error-translator/vendor/matt-pocock/errors/1268.md new file mode 100644 index 0000000..d4e1493 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1268.md @@ -0,0 +1,5 @@ +--- +original: "An index signature parameter type must be 'string', 'number', 'symbol', or a template literal type." +--- + +Objects in TypeScript (and JavaScript!) can only have strings, numbers or symbols as keys. [Template literal types](https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html) are a way of constructing strings. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1313.md b/packages/error-translator/vendor/matt-pocock/errors/1313.md new file mode 100644 index 0000000..56bf834 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1313.md @@ -0,0 +1,5 @@ +--- +original: "The body of an 'if' statement cannot be the empty statement." +--- + +An if statement shouldn't be empty diff --git a/packages/error-translator/vendor/matt-pocock/errors/1434.md b/packages/error-translator/vendor/matt-pocock/errors/1434.md new file mode 100644 index 0000000..03df76c --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/1434.md @@ -0,0 +1,5 @@ +--- +original: 'Unexpected keyword or identifier.' +--- + +There's a syntax error in your code, so I can't tell exactly what's wrong. diff --git a/packages/error-translator/vendor/matt-pocock/errors/17004.md b/packages/error-translator/vendor/matt-pocock/errors/17004.md new file mode 100644 index 0000000..5460eb9 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/17004.md @@ -0,0 +1,5 @@ +--- +original: "Cannot use JSX unless the '--jsx' flag is provided." +--- + +You can't use JSX yet because you haven't added `jsx` to your `tsconfig.json`. [Learn more](https://www.totaltypescript.com/cannot-use-jsx-unless-the-jsx-flag-is-provided). diff --git a/packages/error-translator/vendor/matt-pocock/errors/18004.md b/packages/error-translator/vendor/matt-pocock/errors/18004.md new file mode 100644 index 0000000..9cc8a55 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/18004.md @@ -0,0 +1,5 @@ +--- +original: "No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer." +--- + +You're trying to pass '{0}' as a key AND value to this object using a shorthand. You'll need to declare '{0}' as a variable first. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2304.md b/packages/error-translator/vendor/matt-pocock/errors/2304.md new file mode 100644 index 0000000..46d168e --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2304.md @@ -0,0 +1,5 @@ +--- +original: "Cannot find name '{0}'." +--- + +I can't find the variable you're trying to access. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2305.md b/packages/error-translator/vendor/matt-pocock/errors/2305.md new file mode 100644 index 0000000..e64edd1 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2305.md @@ -0,0 +1,5 @@ +--- +original: "Module '{0}' has no exported member '{1}'." +--- + +'{1}' is not one of the things exported from '{0}'. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2307.md b/packages/error-translator/vendor/matt-pocock/errors/2307.md new file mode 100644 index 0000000..2b5a028 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2307.md @@ -0,0 +1,5 @@ +--- +original: "Cannot find module '{0}' or its corresponding type declarations." +--- + +This could be one of two things - either '{0}' doesn't exist on your file system, or I can't find any type declarations for it. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2312.md b/packages/error-translator/vendor/matt-pocock/errors/2312.md new file mode 100644 index 0000000..009915a --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2312.md @@ -0,0 +1,5 @@ +--- +original: 'An interface can only extend an object type or intersection of object types with statically known members.' +--- + +You might be trying to use an interface to extend a union type. This isn't possible. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2314.md b/packages/error-translator/vendor/matt-pocock/errors/2314.md new file mode 100644 index 0000000..fc56e3a --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2314.md @@ -0,0 +1,5 @@ +--- +original: "Generic type '{0}' requires {1} type argument(s)." +--- + +It looks like '{0}' requires '{1}' type arguments, which means you need to pass them in via a generic. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2322.md b/packages/error-translator/vendor/matt-pocock/errors/2322.md new file mode 100644 index 0000000..73aa84d --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2322.md @@ -0,0 +1,5 @@ +--- +original: "Type '{0}' is not assignable to type '{1}'." +--- + +I was expecting a type matching '{1}', but instead you passed '{0}'. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2324.md b/packages/error-translator/vendor/matt-pocock/errors/2324.md new file mode 100644 index 0000000..4bd2166 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2324.md @@ -0,0 +1,5 @@ +--- +original: "Property '{0}' is missing in type '{1}'." +--- + +You haven't passed all the required properties to '{1}' - you've missed out '{0}' diff --git a/packages/error-translator/vendor/matt-pocock/errors/2326.md b/packages/error-translator/vendor/matt-pocock/errors/2326.md new file mode 100644 index 0000000..65bf49c --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2326.md @@ -0,0 +1,5 @@ +--- +original: "Types of property '{0}' are incompatible." +--- + +Two similar types have a property '{0}' which is different, making them incompatible. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2327.md b/packages/error-translator/vendor/matt-pocock/errors/2327.md new file mode 100644 index 0000000..7119e02 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2327.md @@ -0,0 +1,5 @@ +--- +original: "Property '{0}' is optional in type '{1}' but required in type '{2}'." +--- + +Property '{0}' in type '{2}' must exist. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2339.md b/packages/error-translator/vendor/matt-pocock/errors/2339.md new file mode 100644 index 0000000..f7e38b6 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2339.md @@ -0,0 +1,5 @@ +--- +original: "Property '{0}' does not exist on type '{1}'." +--- + +You're trying to access '{0}' on an object that doesn't contain it. [Learn more](https://totaltypescript.com/concepts/property-does-not-exist-on-type). diff --git a/packages/error-translator/vendor/matt-pocock/errors/2344.md b/packages/error-translator/vendor/matt-pocock/errors/2344.md new file mode 100644 index 0000000..4318e12 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2344.md @@ -0,0 +1,5 @@ +--- +original: "Type '{0}' does not satisfy the constraint '{1}'." +--- + +You're trying to pass in '{0}' into a slot where I can see only '{1}' can be passed. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2345.md b/packages/error-translator/vendor/matt-pocock/errors/2345.md new file mode 100644 index 0000000..d58e063 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2345.md @@ -0,0 +1,5 @@ +--- +original: "Argument of type '{0}' is not assignable to parameter of type '{1}'." +--- + +I was expecting '{1}', but you passed '{0}'. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2349.md b/packages/error-translator/vendor/matt-pocock/errors/2349.md new file mode 100644 index 0000000..dcc53b9 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2349.md @@ -0,0 +1,5 @@ +--- +original: 'This expression is not callable.' +--- + +I can't call this expression because I can't call it like a function. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2352.md b/packages/error-translator/vendor/matt-pocock/errors/2352.md new file mode 100644 index 0000000..5f69d81 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2352.md @@ -0,0 +1,5 @@ +--- +original: "Conversion of type '{0}' to type '{1}' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first." +--- + +You can't use 'as' to convert '{0}' into a '{1}' - they don't share enough in common. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2353.md b/packages/error-translator/vendor/matt-pocock/errors/2353.md new file mode 100644 index 0000000..a43ca84 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2353.md @@ -0,0 +1,5 @@ +--- +original: "Object literal may only specify known properties, and '{0}' does not exist in type '{1}'." +--- + +You can't pass property '{0}' to type '{1}'. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2355.md b/packages/error-translator/vendor/matt-pocock/errors/2355.md new file mode 100644 index 0000000..9215e72 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2355.md @@ -0,0 +1,5 @@ +--- +original: "A function whose declared type is neither 'void' nor 'any' must return a value." +--- + +You set the function return type but it is not returning anything. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2365.md b/packages/error-translator/vendor/matt-pocock/errors/2365.md new file mode 100644 index 0000000..54743d3 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2365.md @@ -0,0 +1,5 @@ +--- +original: "Operator '{0}' cannot be applied to types '{1}' and '{2}'." +--- + +You can't use '{0}' on the types '{1}' and '{2}'. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2393.md b/packages/error-translator/vendor/matt-pocock/errors/2393.md new file mode 100644 index 0000000..65b5627 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2393.md @@ -0,0 +1,5 @@ +--- +original: 'Duplicate function implementation.' +--- + +You've already declared a function with the same name. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2414.md b/packages/error-translator/vendor/matt-pocock/errors/2414.md new file mode 100644 index 0000000..807cc1f --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2414.md @@ -0,0 +1,5 @@ +--- +original: "Class name cannot be '{0}'" +--- + +You can't give a class the name of '{0}' because it's protected by TypeScript. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2451.md b/packages/error-translator/vendor/matt-pocock/errors/2451.md new file mode 100644 index 0000000..9bfa811 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2451.md @@ -0,0 +1,5 @@ +--- +original: "Cannot redeclare block-scoped variable '{0}'." +--- + +'{0}' has already been declared - you can't declare it again. [Learn more](https://www.totaltypescript.com/cannot-redeclare-block-scoped-variable). diff --git a/packages/error-translator/vendor/matt-pocock/errors/2488.md b/packages/error-translator/vendor/matt-pocock/errors/2488.md new file mode 100644 index 0000000..cb4d2c1 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2488.md @@ -0,0 +1,5 @@ +--- +original: "Type '{0}' must have a '[Symbol.iterator]()' method that returns an iterator." +--- + +Type '{0}' isn't iterable. To make it iterable, add a [`Symbol.iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator) key. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2551.md b/packages/error-translator/vendor/matt-pocock/errors/2551.md new file mode 100644 index 0000000..86d5d56 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2551.md @@ -0,0 +1,5 @@ +--- +original: "Property '{0}' does not exist on type '{1}'. Did you mean '{2}'?" +--- + +You're trying to access '{0}' on an object that doesn't contain it. Did you mean '{2}'? diff --git a/packages/error-translator/vendor/matt-pocock/errors/2552.md b/packages/error-translator/vendor/matt-pocock/errors/2552.md new file mode 100644 index 0000000..b31d91b --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2552.md @@ -0,0 +1,5 @@ +--- +original: "Cannot find name '{0}'. Did you mean '{1}'?" +--- + +You are trying to reference a function or variable which I can't find in the current scope. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2554.md b/packages/error-translator/vendor/matt-pocock/errors/2554.md new file mode 100644 index 0000000..f3b64da --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2554.md @@ -0,0 +1,5 @@ +--- +original: 'Expected {0} arguments, but got {1}.' +--- + +The function you're trying to call needs {0} arguments, but you're passing {1}. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2556.md b/packages/error-translator/vendor/matt-pocock/errors/2556.md new file mode 100644 index 0000000..f19df11 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2556.md @@ -0,0 +1,5 @@ +--- +original: 'A spread argument must either have a tuple type or be passed to a rest parameter.' +--- + +You're spreading arguments into a function. To do that, either the argument needs to be a tuple OR the function needs to accept a dynamic number of arguments. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2571.md b/packages/error-translator/vendor/matt-pocock/errors/2571.md new file mode 100644 index 0000000..9a84f74 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2571.md @@ -0,0 +1,5 @@ +--- +original: "Object is of type 'unknown'." +--- + +I don't know what type this object is, so I've defaulted it to 'unknown'. [Learn more](https://www.totaltypescript.com/concepts/object-is-of-type-unknown). diff --git a/packages/error-translator/vendor/matt-pocock/errors/2590.md b/packages/error-translator/vendor/matt-pocock/errors/2590.md new file mode 100644 index 0000000..b3ffbb4 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2590.md @@ -0,0 +1,5 @@ +--- +original: 'undefined' +--- + +You've created a union type that's too complex for me to handle! 🤯 I can only represent 100,000 combinations in the same union, and you've gone over that limit. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2604.md b/packages/error-translator/vendor/matt-pocock/errors/2604.md new file mode 100644 index 0000000..02a84ca --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2604.md @@ -0,0 +1,5 @@ +--- +original: "JSX element type '{0}' does not have any construct or call signatures." +--- + +'{0}' cannot be used as a JSX component because it isn't a function. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2614.md b/packages/error-translator/vendor/matt-pocock/errors/2614.md new file mode 100644 index 0000000..557c154 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2614.md @@ -0,0 +1,5 @@ +--- +original: "Module '{0}' has no exported member '{1}'. Did you mean to use 'import {1} from {0}' instead?" +--- + +'{1}' is not one of the things exported from '{0}'. Did you mean to import '{1}' from '{0}' instead? diff --git a/packages/error-translator/vendor/matt-pocock/errors/2686.md b/packages/error-translator/vendor/matt-pocock/errors/2686.md new file mode 100644 index 0000000..0ee1e87 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2686.md @@ -0,0 +1,5 @@ +--- +original: "'{0}' refers to a UMD global, but the current file is a module. Consider adding an import instead." +--- + +You might not have configured `jsx` in your `tsconfig.json` correctly. [Learn more](https://www.totaltypescript.com/react-refers-to-a-umd-global). diff --git a/packages/error-translator/vendor/matt-pocock/errors/2722.md b/packages/error-translator/vendor/matt-pocock/errors/2722.md new file mode 100644 index 0000000..ef3287e --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2722.md @@ -0,0 +1,5 @@ +--- +original: "Cannot invoke an object which is possibly 'undefined'." +--- + +This function might be undefined. You'll need to check it's defined before calling it. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2739.md b/packages/error-translator/vendor/matt-pocock/errors/2739.md new file mode 100644 index 0000000..0497cb1 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2739.md @@ -0,0 +1,5 @@ +--- +original: "Type '{0}' is missing the following properties from type '{1}': {2}" +--- + +'{0}' is missing some required properties from type '{1}': {2}. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2741.md b/packages/error-translator/vendor/matt-pocock/errors/2741.md new file mode 100644 index 0000000..874b509 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2741.md @@ -0,0 +1,5 @@ +--- +original: "Property '{0}' is missing in type '{1}' but required in type '{2}'." +--- + +You haven't passed all the required properties to '{2}' - '{1}' is missing the '{0}' property. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2749.md b/packages/error-translator/vendor/matt-pocock/errors/2749.md new file mode 100644 index 0000000..21ea6e6 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2749.md @@ -0,0 +1,5 @@ +--- +original: "'{0}' refers to a value, but is being used as a type here. Did you mean 'typeof {0}'?" +--- + +You're trying to use a JavaScript variable where you should be passing a type. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2761.md b/packages/error-translator/vendor/matt-pocock/errors/2761.md new file mode 100644 index 0000000..62c29db --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2761.md @@ -0,0 +1,5 @@ +--- +original: "Type '{0}' has no construct signatures." +--- + +Type '{0}' is not a class. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2775.md b/packages/error-translator/vendor/matt-pocock/errors/2775.md new file mode 100644 index 0000000..b079f25 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2775.md @@ -0,0 +1,5 @@ +--- +original: 'Assertions require every name in the call target to be declared with an explicit type annotation.' +--- + +You might be using an `asserts` keyword on an arrow function. If you are, change the function to use the `function` keyword. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2783.md b/packages/error-translator/vendor/matt-pocock/errors/2783.md new file mode 100644 index 0000000..5dcc392 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/2783.md @@ -0,0 +1,5 @@ +--- +original: "'{0}' is specified more than once, so this usage will be overwritten." +--- + +'{0}' will be overwritten by the spread. diff --git a/packages/error-translator/vendor/matt-pocock/errors/5075.md b/packages/error-translator/vendor/matt-pocock/errors/5075.md new file mode 100644 index 0000000..3b83e39 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/5075.md @@ -0,0 +1,5 @@ +--- +original: "'{0}' is assignable to the constraint of type '{1}', but '{1}' could be instantiated with a different subtype of constraint '{2}'." +--- + +You're passing a type '{0}' into a slot which is too narrow. It could be as wide as anything assignable to '{2}'. diff --git a/packages/error-translator/vendor/matt-pocock/errors/6133.md b/packages/error-translator/vendor/matt-pocock/errors/6133.md new file mode 100644 index 0000000..0f74dd1 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/6133.md @@ -0,0 +1,5 @@ +--- +original: "'{0}' is declared but its value is never read." +--- + +I noticed that '{0}' has been declared, but it's never used in the code. diff --git a/packages/error-translator/vendor/matt-pocock/errors/6142.md b/packages/error-translator/vendor/matt-pocock/errors/6142.md new file mode 100644 index 0000000..02f907c --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/6142.md @@ -0,0 +1,5 @@ +--- +original: "Module '{0}' was resolved to '{1}', but '--jsx' is not set." +--- + +You can't import `.jsx` or `.tsx` files until you set `jsx` in your `tsconfig.json`. diff --git a/packages/error-translator/vendor/matt-pocock/errors/6244.md b/packages/error-translator/vendor/matt-pocock/errors/6244.md new file mode 100644 index 0000000..c7613ee --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/6244.md @@ -0,0 +1,5 @@ +--- +original: "Cannot access ambient const enums when 'isolatedModules' is enabled." +--- + +You can't use const enums when `isolatedModules` is enabled. diff --git a/packages/error-translator/vendor/matt-pocock/errors/7006.md b/packages/error-translator/vendor/matt-pocock/errors/7006.md new file mode 100644 index 0000000..c7859b0 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/7006.md @@ -0,0 +1,5 @@ +--- +original: "Parameter '{0}' implicitly has an '{1}' type." +--- + +I don't know what type '{0}' is supposed to be, so I've defaulted it to '{1}'. Your `tsconfig.json` file says I should throw an error here. [Learn more](https://www.totaltypescript.com/tutorials/beginners-typescript/beginner-s-typescript-section/implicit-any-type-error). diff --git a/packages/error-translator/vendor/matt-pocock/errors/7026.md b/packages/error-translator/vendor/matt-pocock/errors/7026.md new file mode 100644 index 0000000..5bb2029 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/7026.md @@ -0,0 +1,5 @@ +--- +original: "JSX element implicitly has type 'any' because no interface 'JSX.{0}' exists." +--- + +`JSX.IntrinsicElements` has not been declared in the global scope. [Learn more](https://www.totaltypescript.com/what-is-jsx-intrinsicelements). diff --git a/packages/error-translator/vendor/matt-pocock/errors/7053.md b/packages/error-translator/vendor/matt-pocock/errors/7053.md new file mode 100644 index 0000000..f7c28d7 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/7053.md @@ -0,0 +1,5 @@ +--- +original: "Element implicitly has an 'any' type because expression of type '{0}' can't be used to index type '{1}'." +--- + +You can't use '{0}' to index into '{1}'. [This article](https://www.totaltypescript.com/concepts/type-string-cannot-be-used-to-index-type) might help. diff --git a/packages/error-translator/vendor/matt-pocock/errors/7057.md b/packages/error-translator/vendor/matt-pocock/errors/7057.md new file mode 100644 index 0000000..75aaf72 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/7057.md @@ -0,0 +1,5 @@ +--- +original: "'yield' expression implicitly results in an 'any' type because its containing generator lacks a return-type annotation." +--- + +I don't know enough about your generator function's return type to safely infer here. diff --git a/packages/error-translator/vendor/matt-pocock/errors/7061.md b/packages/error-translator/vendor/matt-pocock/errors/7061.md new file mode 100644 index 0000000..008024a --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/7061.md @@ -0,0 +1,5 @@ +--- +original: 'A mapped type may not declare properties or methods.' +--- + +You're trying to create a mapped type with both static and dynamic properties. diff --git a/packages/error-translator/vendor/matt-pocock/errors/8016.md b/packages/error-translator/vendor/matt-pocock/errors/8016.md new file mode 100644 index 0000000..346f01d --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/8016.md @@ -0,0 +1,5 @@ +--- +original: 'Type assertion expressions can only be used in TypeScript files.' +--- + +You can't use type assertions because this isn't a TypeScript file. diff --git a/packages/error-translator/vendor/matt-pocock/errors/95050.md b/packages/error-translator/vendor/matt-pocock/errors/95050.md new file mode 100644 index 0000000..aceb511 --- /dev/null +++ b/packages/error-translator/vendor/matt-pocock/errors/95050.md @@ -0,0 +1,5 @@ +--- +original: 'Remove unreachable code' +--- + +I've spotted a bit of code that will never be run. diff --git a/packages/formatter/README.md b/packages/formatter/README.md index d7a0d0f..0c86309 100644 --- a/packages/formatter/README.md +++ b/packages/formatter/README.md @@ -1,6 +1,6 @@ # Pretty TypeScript Error formatter -The formatting package of [pretty-ts-errors](https://github.com/yoavbls/pretty-ts-errors) +The formatting package of [pretty-ts-errors](https://github.com/CyberT33N/pretty-ts-errors) # Usage diff --git a/packages/formatter/package.json b/packages/formatter/package.json index 043e2b5..aefd94d 100644 --- a/packages/formatter/package.json +++ b/packages/formatter/package.json @@ -1,6 +1,7 @@ { "name": "@pretty-ts-errors/formatter", "version": "0.1.8", + "type": "module", "description": "Pretty TypeScript Errors Formatter", "files": [ "src/**", @@ -8,36 +9,33 @@ ], "main": "./dist/index.js", "types": "./dist/index.d.ts", - "scripts": { - "build": "tsdown src/index.ts --format cjs,esm --dts", - "dev": "tsdown src/index.ts --format cjs,esm --dts --watch", - "lint": "tsc -p . --noEmit", - "test": "vitest run", - "test:watch": "vitest", - "test:coverage": "vitest run --coverage", - "publish": "npm run build && npm publish --access public" + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "default": "./dist/index.js" + } }, "repository": { "type": "git", - "url": "git+https://github.com/yoavbls/pretty-ts-errors.git" + "url": "git+https://github.com/CyberT33N/pretty-ts-errors.git" }, "keywords": [ "typescript", "errors" ], - "author": "yoavbls", + "author": "CyberT33N", "license": "MIT", "bugs": { - "url": "https://github.com/yoavbls/pretty-ts-errors/issues" + "url": "https://github.com/CyberT33N/pretty-ts-errors/issues" }, - "homepage": "https://github.com/yoavbls/pretty-ts-errors#readme", + "homepage": "https://github.com/CyberT33N/pretty-ts-errors#readme", "devDependencies": { - "@vitest/coverage-v8": "^4.1.2", - "tsdown": "^0.15.6", - "vitest": "^4.1.2" + "@vitest/coverage-v8": "catalog:", + "vitest": "catalog:" }, "dependencies": { - "@pretty-ts-errors/utils": "*", - "prettier": "^3.6.2" + "@pretty-ts-errors/utils": "workspace:*", + "prettier": "catalog:" } } diff --git a/packages/formatter/project.json b/packages/formatter/project.json new file mode 100644 index 0000000..4c38474 --- /dev/null +++ b/packages/formatter/project.json @@ -0,0 +1,77 @@ +{ + "name": "@pretty-ts-errors/formatter", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/formatter/src", + "projectType": "library", + "tags": ["scope:packages", "type:library"], + "targets": { + "build": { + "executor": "@nx/js:tsc", + "outputs": ["{workspaceRoot}/packages/formatter/dist"], + "options": { + "main": "packages/formatter/src/index.ts", + "outputPath": "packages/formatter/dist", + "tsConfig": "packages/formatter/tsconfig.lib.json", + "rootDir": "packages/formatter/src", + "generatePackageJson": true, + "generateExportsField": true, + "clean": true + } + }, + "dev": { + "executor": "@nx/js:tsc", + "cache": false, + "continuous": true, + "options": { + "main": "packages/formatter/src/index.ts", + "outputPath": "packages/formatter/dist", + "tsConfig": "packages/formatter/tsconfig.lib.json", + "rootDir": "packages/formatter/src", + "generatePackageJson": true, + "generateExportsField": true, + "clean": false, + "watch": true + } + }, + "lint": { + "executor": "nx:run-commands", + "options": { + "cwd": "packages/formatter", + "command": "pnpm exec tsc -p tsconfig.json --noEmit" + } + }, + "test": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "cwd": "packages/formatter", + "command": "pnpm exec vitest run" + } + }, + "test:watch": { + "executor": "nx:run-commands", + "cache": false, + "continuous": true, + "options": { + "cwd": "packages/formatter", + "command": "pnpm exec vitest" + } + }, + "test:coverage": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "cwd": "packages/formatter", + "command": "pnpm exec vitest run --coverage" + } + }, + "publish": { + "executor": "nx:run-commands", + "dependsOn": ["build"], + "options": { + "cwd": "packages/formatter", + "command": "pnpm publish --access public" + } + } + } +} diff --git a/packages/formatter/src/addMissingParentheses.ts b/packages/formatter/src/addMissingParentheses.ts index fc65a00..7b292c8 100644 --- a/packages/formatter/src/addMissingParentheses.ts +++ b/packages/formatter/src/addMissingParentheses.ts @@ -1,4 +1,4 @@ -import { has, invert, objectKeys } from "@pretty-ts-errors/utils"; +import { has } from "@pretty-ts-errors/utils"; const parentheses = { "(": ")", @@ -6,11 +6,18 @@ const parentheses = { "[": "]", } as const; -const openParentheses = objectKeys(parentheses); -const closeParentheses = Object.values(parentheses); +type OpenParenthesis = keyof typeof parentheses; + +const openParentheses = ["(", "{", "["] as const; +const closeParentheses = [")", "}", "]"] as const; +const invertedParentheses = { + ")": "(", + "}": "{", + "]": "[", +} as const; export function addMissingParentheses(type: string): string { - const openStack: (typeof openParentheses)[number][] = []; + const openStack: OpenParenthesis[] = []; const missingClosingChars: string[] = []; for (const char of type) { @@ -20,7 +27,7 @@ export function addMissingParentheses(type: string): string { const lastOpen = openStack[openStack.length - 1]; if (lastOpen === undefined || parentheses[lastOpen] !== char) { // Add the correct opening character before the current closing character - openStack.push(invert(parentheses)[char]); + openStack.push(invertedParentheses[char]); } else { openStack.pop(); } @@ -29,9 +36,11 @@ export function addMissingParentheses(type: string): string { // Add the missing closing characters at the end of the string while (openStack.length > 0) { - const openChar = openStack.pop()!; - const closingChar = parentheses[openChar]; - missingClosingChars.push(closingChar); + const openChar = openStack.pop(); + if (openChar !== undefined) { + const closingChar = parentheses[openChar]; + missingClosingChars.push(closingChar); + } } let validType = type; diff --git a/packages/formatter/test/errorMessageMocks.ts b/packages/formatter/test/errorMessageMocks.ts index a58a271..40f8702 100644 --- a/packages/formatter/test/errorMessageMocks.ts +++ b/packages/formatter/test/errorMessageMocks.ts @@ -15,7 +15,7 @@ Type '{ person: { 'first-name': string; }; }' is not assignable to type 'string' `; /** - * Formatting error from this issue: https://github.com/yoavbls/pretty-ts-errors/issues/20 + * Formatting error from this issue: https://github.com/CyberT33N/pretty-ts-errors/issues/20 */ export const errorWithMethodsWordInIt = d` The 'this' context of type 'ElementHandle' is not assignable to method's 'this' of type 'ElementHandle'. diff --git a/packages/formatter/tsconfig.lib.json b/packages/formatter/tsconfig.lib.json new file mode 100644 index 0000000..60c647c --- /dev/null +++ b/packages/formatter/tsconfig.lib.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": false + }, + "include": ["src/**/*"], + "references": [ + { + "path": "../utils/tsconfig.lib.json" + } + ] +} diff --git a/packages/utils/package.json b/packages/utils/package.json index f83004b..6ad6941 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,16 +1,22 @@ { "private": true, "name": "@pretty-ts-errors/utils", + "version": "0.1.0", + "type": "module", "files": [ "dist/**" ], "main": "dist/index.js", "types": "dist/index.d.ts", - "scripts": { - "build": "tsc -p ." + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "default": "./dist/index.js" + } }, "devDependencies": {}, "dependencies": { - "ts-dedent": "^2.2.0" + "ts-dedent": "catalog:" } } diff --git a/packages/utils/project.json b/packages/utils/project.json new file mode 100644 index 0000000..59bf35b --- /dev/null +++ b/packages/utils/project.json @@ -0,0 +1,44 @@ +{ + "name": "@pretty-ts-errors/utils", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/utils/src", + "projectType": "library", + "tags": ["scope:packages", "type:library"], + "targets": { + "build": { + "executor": "@nx/js:tsc", + "outputs": ["{workspaceRoot}/packages/utils/dist"], + "options": { + "main": "packages/utils/src/index.ts", + "outputPath": "packages/utils/dist", + "tsConfig": "packages/utils/tsconfig.lib.json", + "rootDir": "packages/utils/src", + "generatePackageJson": true, + "generateExportsField": true, + "clean": true + } + }, + "dev": { + "executor": "@nx/js:tsc", + "cache": false, + "continuous": true, + "options": { + "main": "packages/utils/src/index.ts", + "outputPath": "packages/utils/dist", + "tsConfig": "packages/utils/tsconfig.lib.json", + "rootDir": "packages/utils/src", + "generatePackageJson": true, + "generateExportsField": true, + "clean": false, + "watch": true + } + }, + "lint": { + "executor": "nx:run-commands", + "options": { + "cwd": "packages/utils", + "command": "pnpm exec tsc -p tsconfig.json --noEmit" + } + } + } +} diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index c2eb13f..ecd5e75 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -1,11 +1,5 @@ import dedent from "ts-dedent"; -export function objectKeys>( - obj: T -): (keyof T & string)[] { - return Object.keys(obj) as (keyof T & string)[]; -} - export function invert>( obj: T ): Partial<{ @@ -33,7 +27,9 @@ export const d = dedent; * Check if an array contains a string. * Type guard the string if it does. */ -export const has = ( - array: unknown[], +export function has( + array: readonly T[], item: string -): item is Extract<(typeof array)[number], string> => array.includes(item); +): item is T { + return array.some((value) => value === item); +} diff --git a/packages/utils/tsconfig.lib.json b/packages/utils/tsconfig.lib.json new file mode 100644 index 0000000..8869140 --- /dev/null +++ b/packages/utils/tsconfig.lib.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": false + }, + "include": ["src/**/*"] +} diff --git a/packages/vscode-formatter/package.json b/packages/vscode-formatter/package.json index acfb152..d470e05 100644 --- a/packages/vscode-formatter/package.json +++ b/packages/vscode-formatter/package.json @@ -1,6 +1,7 @@ { "name": "@pretty-ts-errors/vscode-formatter", "version": "0.1.0", + "type": "module", "description": "Pretty TypeScript Errors Formatter for VSCode hovers", "files": [ "src/**", @@ -8,38 +9,35 @@ ], "main": "./dist/index.js", "types": "./dist/index.d.ts", - "scripts": { - "build": "tsdown src/index.ts --format cjs,esm --dts", - "dev": "tsdown src/index.ts --format cjs,esm --dts --watch", - "lint": "tsc -p . --noEmit", - "test": "vitest run", - "test:watch": "vitest", - "test:coverage": "vitest run --coverage", - "publish": "npm run build && npm publish --access public" + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "default": "./dist/index.js" + } }, "repository": { "type": "git", - "url": "git+https://github.com/yoavbls/pretty-ts-errors.git" + "url": "git+https://github.com/CyberT33N/pretty-ts-errors.git" }, "keywords": [ "typescript", "errors" ], - "author": "yoavbls", + "author": "CyberT33N", "license": "MIT", "bugs": { - "url": "https://github.com/yoavbls/pretty-ts-errors/issues" + "url": "https://github.com/CyberT33N/pretty-ts-errors/issues" }, - "homepage": "https://github.com/yoavbls/pretty-ts-errors#readme", + "homepage": "https://github.com/CyberT33N/pretty-ts-errors#readme", "devDependencies": { - "tsdown": "^0.15.6", - "vitest": "^4.1.2" + "vitest": "catalog:" }, "dependencies": { - "@pretty-ts-errors/formatter": "*", - "@pretty-ts-errors/utils": "*", - "lz-string": "^1.5.0", - "vscode-languageserver-types": "^3.17.5", - "vscode-uri": "^3.1.0" + "@pretty-ts-errors/error-translator": "workspace:*", + "@pretty-ts-errors/formatter": "workspace:*", + "@pretty-ts-errors/utils": "workspace:*", + "vscode-languageserver-types": "catalog:", + "vscode-uri": "catalog:" } } diff --git a/packages/vscode-formatter/project.json b/packages/vscode-formatter/project.json new file mode 100644 index 0000000..a276d67 --- /dev/null +++ b/packages/vscode-formatter/project.json @@ -0,0 +1,77 @@ +{ + "name": "@pretty-ts-errors/vscode-formatter", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/vscode-formatter/src", + "projectType": "library", + "tags": ["scope:packages", "type:library"], + "targets": { + "build": { + "executor": "@nx/js:tsc", + "outputs": ["{workspaceRoot}/packages/vscode-formatter/dist"], + "options": { + "main": "packages/vscode-formatter/src/index.ts", + "outputPath": "packages/vscode-formatter/dist", + "tsConfig": "packages/vscode-formatter/tsconfig.lib.json", + "rootDir": "packages/vscode-formatter/src", + "generatePackageJson": true, + "generateExportsField": true, + "clean": true + } + }, + "dev": { + "executor": "@nx/js:tsc", + "cache": false, + "continuous": true, + "options": { + "main": "packages/vscode-formatter/src/index.ts", + "outputPath": "packages/vscode-formatter/dist", + "tsConfig": "packages/vscode-formatter/tsconfig.lib.json", + "rootDir": "packages/vscode-formatter/src", + "generatePackageJson": true, + "generateExportsField": true, + "clean": false, + "watch": true + } + }, + "lint": { + "executor": "nx:run-commands", + "options": { + "cwd": "packages/vscode-formatter", + "command": "pnpm exec tsc -p tsconfig.json --noEmit" + } + }, + "test": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "cwd": "packages/vscode-formatter", + "command": "pnpm exec vitest run" + } + }, + "test:watch": { + "executor": "nx:run-commands", + "cache": false, + "continuous": true, + "options": { + "cwd": "packages/vscode-formatter", + "command": "pnpm exec vitest" + } + }, + "test:coverage": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "cwd": "packages/vscode-formatter", + "command": "pnpm exec vitest run --coverage" + } + }, + "publish": { + "executor": "nx:run-commands", + "dependsOn": ["build"], + "options": { + "cwd": "packages/vscode-formatter", + "command": "pnpm publish --access public" + } + } + } +} diff --git a/packages/vscode-formatter/src/components/actions.ts b/packages/vscode-formatter/src/components/actions.ts index fe713bc..960328f 100644 --- a/packages/vscode-formatter/src/components/actions.ts +++ b/packages/vscode-formatter/src/components/actions.ts @@ -1,4 +1,3 @@ -import { compressToEncodedURIComponent } from "lz-string"; import { Diagnostic, Range } from "vscode-languageserver-types"; import { d } from "@pretty-ts-errors/utils"; @@ -41,12 +40,3 @@ export const copyErrorLink = (message: Diagnostic["message"]) => { `; }; - -export const errorMessageTranslationLink = (message: Diagnostic["message"]) => { - const encodedMessage = compressToEncodedURIComponent(message); - return d /*html*/ ` - - - - `; -}; diff --git a/packages/vscode-formatter/src/format/prettifyDiagnosticForSidebar.ts b/packages/vscode-formatter/src/format/prettifyDiagnosticForSidebar.ts index c384d2b..b476f99 100644 --- a/packages/vscode-formatter/src/format/prettifyDiagnosticForSidebar.ts +++ b/packages/vscode-formatter/src/format/prettifyDiagnosticForSidebar.ts @@ -1,17 +1,18 @@ import { createErrorMessagePrettifier } from "@pretty-ts-errors/formatter"; +import { translateDiagnosticMessage } from "@pretty-ts-errors/error-translator"; import { Diagnostic } from "vscode-languageserver-types"; import { htmlCodeBlock } from "../components/htmlCodeBlock"; import { divider, pinErrorLink, copyErrorLink, - errorMessageTranslationLink, errorCodeExplanationLink, } from "../components/actions"; import { errorTitle } from "../components/errorTitle"; import { d } from "@pretty-ts-errors/utils"; import { embedSymbolLinks } from "./embedSymbolLinks"; import { identSentences } from "./identSentences"; +import { renderPlainEnglishTranslations } from "./renderPlainEnglishTranslations"; const prettifyErrorMessageForSidebar = createErrorMessagePrettifier(htmlCodeBlock); @@ -27,17 +28,19 @@ export async function prettifyDiagnosticForSidebar( const identedSentences = identSentences(newDiagnostic.message); const prettifiedMessage = await prettifyErrorMessageForSidebar(identedSentences); + const translations = translateDiagnosticMessage(diagnostic.message); + const renderedTranslations = renderPlainEnglishTranslations(translations); return d /*html*/ ` ${errorTitle( newDiagnostic.code, d`${pinErrorLink(newDiagnostic.range, diagnostic.message)} ${divider} ${copyErrorLink(newDiagnostic.message)} ${divider} - ${errorMessageTranslationLink(newDiagnostic.message)} ${divider} ${errorCodeExplanationLink(newDiagnostic.code)}` )}
${prettifiedMessage}
+ ${renderedTranslations} `; } diff --git a/packages/vscode-formatter/src/format/renderPlainEnglishTranslations.ts b/packages/vscode-formatter/src/format/renderPlainEnglishTranslations.ts new file mode 100644 index 0000000..a6bb236 --- /dev/null +++ b/packages/vscode-formatter/src/format/renderPlainEnglishTranslations.ts @@ -0,0 +1,94 @@ +import type { PlainEnglishTranslation } from "@pretty-ts-errors/error-translator"; +import { d } from "@pretty-ts-errors/utils"; + +function escapeHtml(value: string): string { + return value + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """) + .replaceAll("'", "'"); +} + +function escapeAttribute(value: string): string { + return escapeHtml(value); +} + +function renderInlineMarkdown(text: string): string { + const linkPlaceholders: string[] = []; + const codePlaceholders: string[] = []; + + const withLinks = text.replace( + /\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)/gu, + (_match, label: string, url: string) => { + const placeholder = `__PTE_LINK_${linkPlaceholders.length}__`; + linkPlaceholders.push( + `${escapeHtml(label)}`, + ); + return placeholder; + }, + ); + + const withCode = withLinks.replace(/`([^`]+)`/gu, (_match, code: string) => { + const placeholder = `__PTE_CODE_${codePlaceholders.length}__`; + codePlaceholders.push(`${escapeHtml(code)}`); + return placeholder; + }); + + let rendered = escapeHtml(withCode); + + linkPlaceholders.forEach((html, index) => { + rendered = rendered.replace(`__PTE_LINK_${index}__`, html); + }); + + codePlaceholders.forEach((html, index) => { + rendered = rendered.replace(`__PTE_CODE_${index}__`, html); + }); + + return rendered; +} + +function renderTranslationBody(body: string): string { + return body + .split(/\r?\n\r?\n/u) + .map((paragraph) => { + const renderedParagraph = renderInlineMarkdown(paragraph).replaceAll( + /\r?\n/gu, + "
", + ); + return `

${renderedParagraph}

`; + }) + .join(""); +} + +export function renderPlainEnglishTranslations( + translations: readonly PlainEnglishTranslation[], +): string { + if (translations.length === 0) { + return ""; + } + + const cards = translations + .map((translation) => { + const body = + translation.body === null + ? `

No local plain-English translation is available for TS${translation.code} yet.

` + : renderTranslationBody(translation.body); + + return d /*html*/ ` +
+
Plain English · TS${translation.code}
+
+ ${body} +
+
+ `; + }) + .join(""); + + return d /*html*/ ` +
+ ${cards} +
+ `; +} diff --git a/packages/vscode-formatter/tsconfig.json b/packages/vscode-formatter/tsconfig.json index 06afded..45f6ade 100644 --- a/packages/vscode-formatter/tsconfig.json +++ b/packages/vscode-formatter/tsconfig.json @@ -10,6 +10,9 @@ }, "include": ["src/**/*"], "references": [ + { + "path": "../error-translator" + }, { "path": "../formatter" }, diff --git a/packages/vscode-formatter/tsconfig.lib.json b/packages/vscode-formatter/tsconfig.lib.json new file mode 100644 index 0000000..861a41a --- /dev/null +++ b/packages/vscode-formatter/tsconfig.lib.json @@ -0,0 +1,18 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": false + }, + "include": ["src/**/*"], + "references": [ + { + "path": "../utils/tsconfig.lib.json" + }, + { + "path": "../formatter/tsconfig.lib.json" + }, + { + "path": "../error-translator/tsconfig.lib.json" + } + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..718de68 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,7669 @@ +--- +lockfileVersion: '9.0' + +importers: + + .: + configDependencies: {} + packageManagerDependencies: + '@pnpm/exe': + specifier: 11.7.0 + version: 11.7.0 + pnpm: + specifier: 11.7.0 + version: 11.7.0 + +packages: + + '@pnpm/exe@11.7.0': + resolution: {integrity: sha512-3CujpSSp2PIDE0pwu7mWSdjhdDqaZa7OppVooECWWaNEoA/z66s9FZts1MhDO+2yq1XER4gBHh84DVbFN/r1rA==} + hasBin: true + + '@pnpm/linux-arm64@11.7.0': + resolution: {integrity: sha512-ANTX2SlMO+d2y/4bYQhHCwHPX7gSSADJ5+pMUIiDFzIsybnFFaJdZboaFfq9NOxCbETcnDxqZ95Rz3+NHx1JIw==} + cpu: [arm64] + os: [linux] + + '@pnpm/linux-x64@11.7.0': + resolution: {integrity: sha512-fr75tqixXoS8cnA81HQIomjOGEPnsOsd3xCDL5pMNY5raOXbKurtgRV+RjATvjxlJxSLIVFKegABlxAiB7q72A==} + cpu: [x64] + os: [linux] + + '@pnpm/linuxstatic-arm64@11.7.0': + resolution: {integrity: sha512-Q++pgzvXkGeqnVRl26/uqmpMGdttQus0rGyL3XIfYGLCi8ZfajYUaCKdZID2MH7+CNOuugWDdFDup3r7BR7Rfg==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@pnpm/linuxstatic-x64@11.7.0': + resolution: {integrity: sha512-z1+exW6ocU/rmOvJnmU3FUBJYaryCUqFoaXN6KZW5BqTj7BPJb7HJcAyXRlirNZMJlEiUY5rXbfStGPQJhGsVA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@pnpm/macos-arm64@11.7.0': + resolution: {integrity: sha512-gD34/k3JT5oab4BYaqrUor3e4VdwXvkfLNlEI+lvDtX1MHT+2Nauc9p9NsQnpn1zE8blQEflzbF8wAUQ6Dmvkw==} + cpu: [arm64] + os: [darwin] + + '@pnpm/win-arm64@11.7.0': + resolution: {integrity: sha512-hRTcDmm2j7KoRwbqNo0rUAu9A1kVJN98Eob7H09U0uPJbEMax85JGOmERkT3Lf6HjVJuFNBvfaJ3OTI3HmlVGg==} + cpu: [arm64] + os: [win32] + + '@pnpm/win-x64@11.7.0': + resolution: {integrity: sha512-r/1NuKY7Z+6ZXVIzVrUEMj6TTEBdR63geV4Rlm8HKEhgQTdxyIsJoqV3FJGqoyzbRaScObqAwRfMaK9dskPddQ==} + cpu: [x64] + os: [win32] + + '@reflink/reflink-darwin-arm64@0.1.19': + resolution: {integrity: sha512-ruy44Lpepdk1FqDz38vExBY/PVUsjxZA+chd9wozjUH9JjuDT/HEaQYA6wYN9mf041l0yLVar6BCZuWABJvHSA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@reflink/reflink-darwin-x64@0.1.19': + resolution: {integrity: sha512-By85MSWrMZa+c26TcnAy8SDk0sTUkYlNnwknSchkhHpGXOtjNDUOxJE9oByBnGbeuIE1PiQsxDG3Ud+IVV9yuA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@reflink/reflink-linux-arm64-gnu@0.1.19': + resolution: {integrity: sha512-7P+er8+rP9iNeN+bfmccM4hTAaLP6PQJPKWSA4iSk2bNvo6KU6RyPgYeHxXmzNKzPVRcypZQTpFgstHam6maVg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@reflink/reflink-linux-arm64-musl@0.1.19': + resolution: {integrity: sha512-37iO/Dp6m5DDaC2sf3zPtx/hl9FV3Xze4xoYidrxxS9bgP3S8ALroxRK6xBG/1TtfXKTvolvp+IjrUU6ujIGmA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@reflink/reflink-linux-x64-gnu@0.1.19': + resolution: {integrity: sha512-jbI8jvuYCaA3MVUdu8vLoLAFqC+iNMpiSuLbxlAgg7x3K5bsS8nOpTRnkLF7vISJ+rVR8W+7ThXlXlUQ93ulkw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@reflink/reflink-linux-x64-musl@0.1.19': + resolution: {integrity: sha512-e9FBWDe+lv7QKAwtKOt6A2W/fyy/aEEfr0g6j/hWzvQcrzHCsz07BNQYlNOjTfeytrtLU7k449H1PI95jA4OjQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@reflink/reflink-win32-arm64-msvc@0.1.19': + resolution: {integrity: sha512-09PxnVIQcd+UOn4WAW73WU6PXL7DwGS6wPlkMhMg2zlHHG65F3vHepOw06HFCq+N42qkaNAc8AKIabWvtk6cIQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@reflink/reflink-win32-x64-msvc@0.1.19': + resolution: {integrity: sha512-E//yT4ni2SyhwP8JRjVGWr3cbnhWDiPLgnQ66qqaanjjnMiu3O/2tjCPQXlcGc/DEYofpDc9fvhv6tALQsMV9w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@reflink/reflink@0.1.19': + resolution: {integrity: sha512-DmCG8GzysnCZ15bres3N5AHCmwBwYgp0As6xjhQ47rAUTUXxJiK+lLUxaGsX3hd/30qUpVElh05PbGuxRPgJwA==} + engines: {node: '>= 10'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + pnpm@11.7.0: + resolution: {integrity: sha512-GcyFLBIMcSV2DyRD7mvgyltA+fUFmN4aCaHxd1A+AQ5Xwjx3ZG4B52HeWb+HT7IqM5jDOrlpH8E+uUa28PTWIA==} + engines: {node: '>=22.13'} + hasBin: true + +snapshots: + + '@pnpm/exe@11.7.0': + dependencies: + '@reflink/reflink': 0.1.19 + detect-libc: 2.1.2 + optionalDependencies: + '@pnpm/linux-arm64': 11.7.0 + '@pnpm/linux-x64': 11.7.0 + '@pnpm/linuxstatic-arm64': 11.7.0 + '@pnpm/linuxstatic-x64': 11.7.0 + '@pnpm/macos-arm64': 11.7.0 + '@pnpm/win-arm64': 11.7.0 + '@pnpm/win-x64': 11.7.0 + + '@pnpm/linux-arm64@11.7.0': + optional: true + + '@pnpm/linux-x64@11.7.0': + optional: true + + '@pnpm/linuxstatic-arm64@11.7.0': + optional: true + + '@pnpm/linuxstatic-x64@11.7.0': + optional: true + + '@pnpm/macos-arm64@11.7.0': + optional: true + + '@pnpm/win-arm64@11.7.0': + optional: true + + '@pnpm/win-x64@11.7.0': + optional: true + + '@reflink/reflink-darwin-arm64@0.1.19': + optional: true + + '@reflink/reflink-darwin-x64@0.1.19': + optional: true + + '@reflink/reflink-linux-arm64-gnu@0.1.19': + optional: true + + '@reflink/reflink-linux-arm64-musl@0.1.19': + optional: true + + '@reflink/reflink-linux-x64-gnu@0.1.19': + optional: true + + '@reflink/reflink-linux-x64-musl@0.1.19': + optional: true + + '@reflink/reflink-win32-arm64-msvc@0.1.19': + optional: true + + '@reflink/reflink-win32-x64-msvc@0.1.19': + optional: true + + '@reflink/reflink@0.1.19': + optionalDependencies: + '@reflink/reflink-darwin-arm64': 0.1.19 + '@reflink/reflink-darwin-x64': 0.1.19 + '@reflink/reflink-linux-arm64-gnu': 0.1.19 + '@reflink/reflink-linux-arm64-musl': 0.1.19 + '@reflink/reflink-linux-x64-gnu': 0.1.19 + '@reflink/reflink-linux-x64-musl': 0.1.19 + '@reflink/reflink-win32-arm64-msvc': 0.1.19 + '@reflink/reflink-win32-x64-msvc': 0.1.19 + + detect-libc@2.1.2: {} + + pnpm@11.7.0: {} + +--- +lockfileVersion: '9.0' + +settings: + autoInstallPeers: false + excludeLinksFromLockfile: false + +catalogs: + default: + '@eslint/js': + specifier: 10.0.1 + version: 10.0.1 + '@nx/esbuild': + specifier: 23.0.0 + version: 23.0.0 + '@nx/js': + specifier: 23.0.0 + version: 23.0.0 + '@shikijs/types': + specifier: 3.13.0 + version: 3.13.0 + '@types/mocha': + specifier: 10.0.10 + version: 10.0.10 + '@types/node': + specifier: 25.9.3 + version: 25.9.3 + '@types/vscode': + specifier: 1.120.0 + version: 1.120.0 + '@types/vscode-webview': + specifier: 1.57.5 + version: 1.57.5 + '@vitest/coverage-v8': + specifier: 4.1.2 + version: 4.1.2 + '@vscode/codicons': + specifier: 0.0.41 + version: 0.0.41 + '@vscode/test-electron': + specifier: 3.0.0 + version: 3.0.0 + '@vscode/vsce': + specifier: 3.9.2 + version: 3.9.2 + esbuild: + specifier: 0.28.1 + version: 0.28.1 + eslint: + specifier: 10.5.0 + version: 10.5.0 + glob: + specifier: 13.0.6 + version: 13.0.6 + globals: + specifier: 16.4.0 + version: 16.4.0 + mocha: + specifier: 12.0.0-beta-10 + version: 12.0.0-beta-10 + nx: + specifier: 23.0.0 + version: 23.0.0 + prettier: + specifier: 3.6.2 + version: 3.6.2 + shiki: + specifier: 3.13.0 + version: 3.13.0 + ts-dedent: + specifier: 2.2.0 + version: 2.2.0 + typescript: + specifier: 6.0.3 + version: 6.0.3 + typescript-eslint: + specifier: 8.61.1 + version: 8.61.1 + vitest: + specifier: 4.1.2 + version: 4.1.2 + vscode-languageclient: + specifier: 10.0.0 + version: 10.0.0 + vscode-languageserver-types: + specifier: 3.17.5 + version: 3.17.5 + vscode-shiki-bridge: + specifier: 0.5.2 + version: 0.5.2 + vscode-uri: + specifier: 3.1.0 + version: 3.1.0 + yaml: + specifier: 2.9.0 + version: 2.9.0 + +overrides: + parse-semver@1.1.1>semver: 5.7.1 + +importers: + + .: + devDependencies: + '@eslint/js': + specifier: 'catalog:' + version: 10.0.1(eslint@10.5.0(supports-color@8.1.1)) + '@nx/esbuild': + specifier: 'catalog:' + version: 23.0.0(esbuild@0.28.1)(nx@23.0.0) + '@nx/js': + specifier: 'catalog:' + version: 23.0.0(nx@23.0.0) + '@types/node': + specifier: 'catalog:' + version: 25.9.3 + eslint: + specifier: 'catalog:' + version: 10.5.0(supports-color@8.1.1) + globals: + specifier: 'catalog:' + version: 16.4.0 + nx: + specifier: 'catalog:' + version: 23.0.0 + prettier: + specifier: 'catalog:' + version: 3.6.2 + typescript: + specifier: 'catalog:' + version: 6.0.3 + typescript-eslint: + specifier: 'catalog:' + version: 8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + + apps/vscode-extension: + dependencies: + '@pretty-ts-errors/formatter': + specifier: workspace:* + version: link:../../packages/formatter + '@pretty-ts-errors/utils': + specifier: workspace:* + version: link:../../packages/utils + '@pretty-ts-errors/vscode-formatter': + specifier: workspace:* + version: link:../../packages/vscode-formatter + shiki: + specifier: 'catalog:' + version: 3.13.0 + vscode-languageclient: + specifier: 'catalog:' + version: 10.0.0 + vscode-shiki-bridge: + specifier: 'catalog:' + version: 0.5.2(@types/vscode@1.120.0)(shiki@3.13.0) + devDependencies: + '@shikijs/types': + specifier: 'catalog:' + version: 3.13.0 + '@types/mocha': + specifier: 'catalog:' + version: 10.0.10 + '@types/node': + specifier: 'catalog:' + version: 25.9.3 + '@types/vscode': + specifier: 'catalog:' + version: 1.120.0 + '@types/vscode-webview': + specifier: 'catalog:' + version: 1.57.5 + '@vscode/codicons': + specifier: 'catalog:' + version: 0.0.41 + '@vscode/test-electron': + specifier: 'catalog:' + version: 3.0.0 + '@vscode/vsce': + specifier: 'catalog:' + version: 3.9.2(supports-color@8.1.1) + esbuild: + specifier: 'catalog:' + version: 0.28.1 + glob: + specifier: 'catalog:' + version: 13.0.6 + mocha: + specifier: 'catalog:' + version: 12.0.0-beta-10 + yaml: + specifier: 'catalog:' + version: 2.9.0 + + packages/error-translator: + devDependencies: + vitest: + specifier: 'catalog:' + version: 4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) + + packages/formatter: + dependencies: + '@pretty-ts-errors/utils': + specifier: workspace:* + version: link:../utils + prettier: + specifier: 'catalog:' + version: 3.6.2 + devDependencies: + '@vitest/coverage-v8': + specifier: 'catalog:' + version: 4.1.2(vitest@4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0)) + vitest: + specifier: 'catalog:' + version: 4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) + + packages/utils: + dependencies: + ts-dedent: + specifier: 'catalog:' + version: 2.2.0 + + packages/vscode-formatter: + dependencies: + '@pretty-ts-errors/error-translator': + specifier: workspace:* + version: link:../error-translator + '@pretty-ts-errors/formatter': + specifier: workspace:* + version: link:../formatter + '@pretty-ts-errors/utils': + specifier: workspace:* + version: link:../utils + vscode-languageserver-types: + specifier: 'catalog:' + version: 3.17.5 + vscode-uri: + specifier: 'catalog:' + version: 3.1.0 + devDependencies: + vitest: + specifier: 'catalog:' + version: 4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) + +packages: + + '@azu/format-text@1.0.2': + resolution: {integrity: sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==, tarball: https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz} + + '@azu/style-format@1.0.1': + resolution: {integrity: sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==, tarball: https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz} + + '@azure/abort-controller@2.1.2': + resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==, tarball: https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz} + engines: {node: '>=18.0.0'} + + '@azure/core-auth@1.10.1': + resolution: {integrity: sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==, tarball: https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz} + engines: {node: '>=20.0.0'} + + '@azure/core-client@1.10.2': + resolution: {integrity: sha512-1D2LpsU7y9xrqKjdIbsB7PlrRePw0xsVV8p+AKTlzITrWmscajryfJCdDJB/oGwvDI5HmRo04eMMADB67uwAwQ==, tarball: https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.2.tgz} + engines: {node: '>=20.0.0'} + + '@azure/core-rest-pipeline@1.24.0': + resolution: {integrity: sha512-PpLsoDQ3AMmKZ0VU+0GrmqMxgp/sExjlVm4R+nLWngeoEGAzOIPVifaxKGU5gMv+nWELUoHfvrolWD+ZS/nFJg==, tarball: https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.24.0.tgz} + engines: {node: '>=20.0.0'} + + '@azure/core-tracing@1.3.1': + resolution: {integrity: sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==, tarball: https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz} + engines: {node: '>=20.0.0'} + + '@azure/core-util@1.13.1': + resolution: {integrity: sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==, tarball: https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz} + engines: {node: '>=20.0.0'} + + '@azure/identity@4.13.1': + resolution: {integrity: sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==, tarball: https://registry.npmjs.org/@azure/identity/-/identity-4.13.1.tgz} + engines: {node: '>=20.0.0'} + + '@azure/logger@1.3.0': + resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==, tarball: https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz} + engines: {node: '>=20.0.0'} + + '@azure/msal-browser@5.13.0': + resolution: {integrity: sha512-Ea23x0U8XNFY+qJ9T44zO2BbY+AHdb+WdjmYnx36OhJ/KO+PGU5pmsNHf1DCElYX+6wyVRJz1HFeCPC/cHbRug==, tarball: https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.13.0.tgz} + engines: {node: '>=0.8.0'} + + '@azure/msal-common@16.8.0': + resolution: {integrity: sha512-5S4RHOcInL2Nu2U217tDZbWGI6StMfcWCrA7TWvWdJmXQ+cYrrIqr84AsN62fGh2MDBysiBJPt6CfWceJfloEA==, tarball: https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.8.0.tgz} + engines: {node: '>=0.8.0'} + + '@azure/msal-node@5.2.4': + resolution: {integrity: sha512-rpBUg9dA8UpC2WiFt3KeDKVQmmmVrfxdRnW+F1ebgou/jX/0tAvYuonaq5RUo8OaqzOrj4x/HaI8DmY56RXZ2Q==, tarball: https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.2.4.tgz} + engines: {node: '>=20'} + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==, tarball: https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==, tarball: https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==, tarball: https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.7': + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==, tarball: https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.29.7': + resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==, tarball: https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==, tarball: https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.29.7': + resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==, tarball: https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.29.7': + resolution: {integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==, tarball: https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.8': + resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==, tarball: https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==, tarball: https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.29.7': + resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==, tarball: https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==, tarball: https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==, tarball: https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.29.7': + resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==, tarball: https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==, tarball: https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.29.7': + resolution: {integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==, tarball: https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.29.7': + resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==, tarball: https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==, tarball: https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==, tarball: https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==, tarball: https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==, tarball: https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.29.7': + resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==, tarball: https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==, tarball: https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==, tarball: https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7': + resolution: {integrity: sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==, tarball: https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7': + resolution: {integrity: sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==, tarball: https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7': + resolution: {integrity: sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==, tarball: https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7': + resolution: {integrity: sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==, tarball: https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7': + resolution: {integrity: sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==, tarball: https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7': + resolution: {integrity: sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==, tarball: https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-decorators@7.29.7': + resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==, tarball: https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==, tarball: https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.29.7': + resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==, tarball: https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.29.7': + resolution: {integrity: sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==, tarball: https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.29.7': + resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==, tarball: https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.29.7': + resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==, tarball: https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.29.7': + resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==, tarball: https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==, tarball: https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.29.7': + resolution: {integrity: sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.29.7': + resolution: {integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.29.7': + resolution: {integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==, tarball: https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.29.7': + resolution: {integrity: sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.29.7': + resolution: {integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.29.7': + resolution: {integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.29.7': + resolution: {integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==, tarball: https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.29.7': + resolution: {integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==, tarball: https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.29.7': + resolution: {integrity: sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.29.7': + resolution: {integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.29.7': + resolution: {integrity: sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.29.7': + resolution: {integrity: sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7': + resolution: {integrity: sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.29.7': + resolution: {integrity: sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-explicit-resource-management@7.29.7': + resolution: {integrity: sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==, tarball: https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.29.7': + resolution: {integrity: sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.29.7': + resolution: {integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.29.7': + resolution: {integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.29.7': + resolution: {integrity: sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.29.7': + resolution: {integrity: sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.29.7': + resolution: {integrity: sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==, tarball: https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.29.7': + resolution: {integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==, tarball: https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.29.7': + resolution: {integrity: sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.29.7': + resolution: {integrity: sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==, tarball: https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.29.7': + resolution: {integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.29.7': + resolution: {integrity: sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.29.7': + resolution: {integrity: sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7': + resolution: {integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.29.7': + resolution: {integrity: sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==, tarball: https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7': + resolution: {integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.29.7': + resolution: {integrity: sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==, tarball: https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.29.7': + resolution: {integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==, tarball: https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.29.7': + resolution: {integrity: sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.29.7': + resolution: {integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==, tarball: https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.29.7': + resolution: {integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.29.7': + resolution: {integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==, tarball: https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.29.7': + resolution: {integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==, tarball: https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.29.7': + resolution: {integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.29.7': + resolution: {integrity: sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.29.7': + resolution: {integrity: sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==, tarball: https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.29.7': + resolution: {integrity: sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.29.7': + resolution: {integrity: sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.29.7': + resolution: {integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==, tarball: https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.29.7': + resolution: {integrity: sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.29.7': + resolution: {integrity: sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.29.7': + resolution: {integrity: sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.29.7': + resolution: {integrity: sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.29.7': + resolution: {integrity: sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==, tarball: https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.29.7': + resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==, tarball: https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.29.7': + resolution: {integrity: sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.29.7': + resolution: {integrity: sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==, tarball: https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.29.7': + resolution: {integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.29.7': + resolution: {integrity: sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.29.7': + resolution: {integrity: sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==, tarball: https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==, tarball: https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-typescript@7.29.7': + resolution: {integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==, tarball: https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==, tarball: https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==, tarball: https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.7': + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==, tarball: https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==, tarball: https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@1.0.2': + resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==, tarball: https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz} + engines: {node: '>=18'} + + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==, tarball: https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz} + + '@emnapi/core@1.4.5': + resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==, tarball: https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz} + + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==, tarball: https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz} + + '@emnapi/runtime@1.4.5': + resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==, tarball: https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz} + + '@emnapi/wasi-threads@1.0.4': + resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==, tarball: https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==, tarball: https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz} + + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==, tarball: https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==, tarball: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==, tarball: https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==, tarball: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, tarball: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.23.5': + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==, tarball: https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/config-helpers@0.6.0': + resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==, tarball: https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==, tarball: https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==, tarball: https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==, tarball: https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/plugin-kit@0.7.2': + resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==, tarball: https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==, tarball: https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==, tarball: https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==, tarball: https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, tarball: https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==, tarball: https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz} + engines: {node: '>=18.18'} + + '@jest/diff-sequences@30.0.1': + resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==, tarball: https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, tarball: https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, tarball: https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, tarball: https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, tarball: https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, tarball: https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz} + + '@napi-rs/wasm-runtime@0.2.4': + resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==, tarball: https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz} + + '@napi-rs/wasm-runtime@1.1.5': + resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==, tarball: https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.5.tgz} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, tarball: https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, tarball: https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, tarball: https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz} + engines: {node: '>= 8'} + + '@nx/devkit@23.0.0': + resolution: {integrity: sha512-AYZWLcgYVQJjhhYwoKWFiu0u4jlrfMM64zarRbpQ7vwXWSJXCMQ2j2w9c5vzTnH3SeWigyyEYRo9xulfNESJ8w==, tarball: https://registry.npmjs.org/@nx/devkit/-/devkit-23.0.0.tgz} + peerDependencies: + nx: '>= 22 <= 24 || ^23.0.0-0' + + '@nx/esbuild@23.0.0': + resolution: {integrity: sha512-Du9++ffUggQBxukyGmNhGknUWodUCNbEJ2Exik+7VfHMAOysSwBxOrY23B7Tt9WkHUhoSfsRGHT+8ERTqDBANA==, tarball: https://registry.npmjs.org/@nx/esbuild/-/esbuild-23.0.0.tgz} + peerDependencies: + esbuild: '>=0.19.2 <1.0.0' + peerDependenciesMeta: + esbuild: + optional: true + + '@nx/js@23.0.0': + resolution: {integrity: sha512-sngYY03gScPmJFtJ2WGBB1zFyWGgQIWCrNoytJZnJbjjPxw5X5pFxdx7t8z7vXcFNz83CQiT7f8HSnUHDR+/XA==, tarball: https://registry.npmjs.org/@nx/js/-/js-23.0.0.tgz} + peerDependencies: + '@swc/cli': '>=0.6.0 <0.9.0' + verdaccio: ^6.0.5 + peerDependenciesMeta: + '@swc/cli': + optional: true + verdaccio: + optional: true + + '@nx/nx-darwin-arm64@23.0.0': + resolution: {integrity: sha512-c/rXP3LYXJLC1F+9KDrWE+n1nkDnTEfHnA1KAK3A/CSk8EfgY0RhekcdbGISrHqgbccdVTBRTNUeTdwD+w23Xw==, tarball: https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-23.0.0.tgz} + cpu: [arm64] + os: [darwin] + + '@nx/nx-darwin-x64@23.0.0': + resolution: {integrity: sha512-fb1+s0dASz/a+0Ex3Qdw6Y1NssMZ58f8SyQtnr+c7ITM8Yi5njWfNVZMk1tAnAv7CSFvUvltaYekS88GMQ/8lQ==, tarball: https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-23.0.0.tgz} + cpu: [x64] + os: [darwin] + + '@nx/nx-freebsd-x64@23.0.0': + resolution: {integrity: sha512-HYawS59K5IyNu28/0i0ectTAPlyBwPO0vhxw9UMGZ9ni6Yz3WvwPFTGZrWaEVAjGe3pQlQEVVBOr5/0Uw0Sw9A==, tarball: https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-23.0.0.tgz} + cpu: [x64] + os: [freebsd] + + '@nx/nx-linux-arm-gnueabihf@23.0.0': + resolution: {integrity: sha512-GSPVEUKL/PUuKCubNcH+QtOJ+4+VFHSpKDMTFFjizTh//d4SunC+DE6vvwRt5bCervohCW2B7BicQc6IP2V51g==, tarball: https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-23.0.0.tgz} + cpu: [arm] + os: [linux] + + '@nx/nx-linux-arm64-gnu@23.0.0': + resolution: {integrity: sha512-MkpI1SU+OxJ86SL5XcNJLKXsvnxzDwq4uh7Wbehcs62IWXtyGeuxHo1jYGrobYSV8v9f0Aafp3c2GxSxdZX/9Q==, tarball: https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-23.0.0.tgz} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@nx/nx-linux-arm64-musl@23.0.0': + resolution: {integrity: sha512-yASOY5MpsuzHKSF4xRyoVCIWv65GDlVs9VxZ+aZIfw5R9XbPgiaHaHRGlLBAm0j7WFw7wBCOB3WOxBK+wjC3dQ==, tarball: https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-23.0.0.tgz} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@nx/nx-linux-x64-gnu@23.0.0': + resolution: {integrity: sha512-HvDP11Ub00C7kAMC7NvX+sbV8wM5j+OjLQalys0wlyqZ+7SL9OulQv/cyMCEHZSKW8YPt4326G0+omulZDwIGg==, tarball: https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-23.0.0.tgz} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@nx/nx-linux-x64-musl@23.0.0': + resolution: {integrity: sha512-t1pSyBrxQ0Dly9VzB8WZXhVQMk044P8AyMRRiZ+NOs1pK4eRqVlmJmwJQw3ZfZZYUhA7B02PV8DHOjactctdag==, tarball: https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-23.0.0.tgz} + cpu: [x64] + os: [linux] + libc: [musl] + + '@nx/nx-win32-arm64-msvc@23.0.0': + resolution: {integrity: sha512-IKTwZZgejzyUZChQjGss2cCSi2rR0J3FnpyQkjt9I4fFYTNd4YCNs5njovrBjQtVLpi/vv3e96fl3ccjbzIUpA==, tarball: https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-23.0.0.tgz} + cpu: [arm64] + os: [win32] + + '@nx/nx-win32-x64-msvc@23.0.0': + resolution: {integrity: sha512-2LSdp8U5gDaXtXbGLiKRdQM0f4yNCaraCpQrz27yjlQbyrULyCiaB00NPBL2JlhH9eQahx/QRyizhkMQ0hzVBA==, tarball: https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-23.0.0.tgz} + cpu: [x64] + os: [win32] + + '@nx/workspace@23.0.0': + resolution: {integrity: sha512-h+Lx5AzLsbnrzv3F3vfqUFmQQginLV/+M/4L2NOwEKeMYNJ4QYDTtgvn0fnJv+qGMWZ4HDScvDNCxVTz8vrhvw==, tarball: https://registry.npmjs.org/@nx/workspace/-/workspace-23.0.0.tgz} + + '@oxc-project/types@0.133.0': + resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==, tarball: https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz} + + '@rolldown/binding-android-arm64@1.0.3': + resolution: {integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==, tarball: https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.3': + resolution: {integrity: sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==, tarball: https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.3': + resolution: {integrity: sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==, tarball: https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.3': + resolution: {integrity: sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==, tarball: https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.3': + resolution: {integrity: sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.3': + resolution: {integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.0.3': + resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.3': + resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.3': + resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.0.3': + resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.0.3': + resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.0.3': + resolution: {integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==, tarball: https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.3': + resolution: {integrity: sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==, tarball: https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.3': + resolution: {integrity: sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==, tarball: https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.3': + resolution: {integrity: sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==, tarball: https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==, tarball: https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz} + + '@secretlint/config-creator@10.2.2': + resolution: {integrity: sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==, tarball: https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz} + engines: {node: '>=20.0.0'} + + '@secretlint/config-loader@10.2.2': + resolution: {integrity: sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==, tarball: https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz} + engines: {node: '>=20.0.0'} + + '@secretlint/core@10.2.2': + resolution: {integrity: sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==, tarball: https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz} + engines: {node: '>=20.0.0'} + + '@secretlint/formatter@10.2.2': + resolution: {integrity: sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==, tarball: https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz} + engines: {node: '>=20.0.0'} + + '@secretlint/node@10.2.2': + resolution: {integrity: sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==, tarball: https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz} + engines: {node: '>=20.0.0'} + + '@secretlint/profiler@10.2.2': + resolution: {integrity: sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==, tarball: https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz} + + '@secretlint/resolver@10.2.2': + resolution: {integrity: sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==, tarball: https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz} + + '@secretlint/secretlint-formatter-sarif@10.2.2': + resolution: {integrity: sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==, tarball: https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz} + + '@secretlint/secretlint-rule-no-dotenv@10.2.2': + resolution: {integrity: sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==, tarball: https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz} + engines: {node: '>=20.0.0'} + + '@secretlint/secretlint-rule-preset-recommend@10.2.2': + resolution: {integrity: sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==, tarball: https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz} + engines: {node: '>=20.0.0'} + + '@secretlint/source-creator@10.2.2': + resolution: {integrity: sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==, tarball: https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz} + engines: {node: '>=20.0.0'} + + '@secretlint/types@10.2.2': + resolution: {integrity: sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==, tarball: https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz} + engines: {node: '>=20.0.0'} + + '@shikijs/core@3.13.0': + resolution: {integrity: sha512-3P8rGsg2Eh2qIHekwuQjzWhKI4jV97PhvYjYUzGqjvJfqdQPz+nMlfWahU24GZAyW1FxFI1sYjyhfh5CoLmIUA==, tarball: https://registry.npmjs.org/@shikijs/core/-/core-3.13.0.tgz} + + '@shikijs/engine-javascript@3.13.0': + resolution: {integrity: sha512-Ty7xv32XCp8u0eQt8rItpMs6rU9Ki6LJ1dQOW3V/56PKDcpvfHPnYFbsx5FFUP2Yim34m/UkazidamMNVR4vKg==, tarball: https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.13.0.tgz} + + '@shikijs/engine-oniguruma@3.13.0': + resolution: {integrity: sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==, tarball: https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.13.0.tgz} + + '@shikijs/langs@3.13.0': + resolution: {integrity: sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==, tarball: https://registry.npmjs.org/@shikijs/langs/-/langs-3.13.0.tgz} + + '@shikijs/themes@3.13.0': + resolution: {integrity: sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==, tarball: https://registry.npmjs.org/@shikijs/themes/-/themes-3.13.0.tgz} + + '@shikijs/types@3.13.0': + resolution: {integrity: sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==, tarball: https://registry.npmjs.org/@shikijs/types/-/types-3.13.0.tgz} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==, tarball: https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==, tarball: https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz} + engines: {node: '>=18'} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==, tarball: https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz} + + '@textlint/ast-node-types@15.7.1': + resolution: {integrity: sha512-Wii5UgUKFEh9Uv6wbq1zr4/Kf+dtjiUuzPrrXzKp8H+ifkvKNzi23V4Nz+6wVyHQn5T28AFuc8VH8OtzvGYecA==, tarball: https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.7.1.tgz} + + '@textlint/linter-formatter@15.7.1': + resolution: {integrity: sha512-TdwZ/debWYFD05K3CcoHtwvnCrza29wZxD+BjDTk/V5N7iRqkK1dTTHSD4A8AIgROLiDkHJmIKQbasbmsg8AvA==, tarball: https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.7.1.tgz} + + '@textlint/module-interop@15.7.1': + resolution: {integrity: sha512-Jg+sQW2L/cRJypk59wtcMUVVpt8vmit5ZMT3gUnFwevP3A6Qp1HfOtUy9ObT4hBX3lOSGT/ekcCDxR1pL7uH1g==, tarball: https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.7.1.tgz} + + '@textlint/resolver@15.7.1': + resolution: {integrity: sha512-8XnO0pgF6mXnm41VvWmBbEIdGPhiCUt31uLZkOis1ECeg/1SoUcIT6Mx/F0e1rukq8l0UlOSeY9a31CsvRMK0g==, tarball: https://registry.npmjs.org/@textlint/resolver/-/resolver-15.7.1.tgz} + + '@textlint/types@15.7.1': + resolution: {integrity: sha512-Vye/GmFNBTgVzZFtIFJTmLB+s2A7oIADxNG6r9UhfPuY+Czv0z5G3xeyFZZudPlfxURsKUyPIU5XsjOFqVp33A==, tarball: https://registry.npmjs.org/@textlint/types/-/types-15.7.1.tgz} + + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==, tarball: https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz} + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==, tarball: https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==, tarball: https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==, tarball: https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz} + + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==, tarball: https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==, tarball: https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==, tarball: https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, tarball: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==, tarball: https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz} + + '@types/mocha@10.0.10': + resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==, tarball: https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz} + + '@types/node@25.9.3': + resolution: {integrity: sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==, tarball: https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==, tarball: https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==, tarball: https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz} + + '@types/sarif@2.1.7': + resolution: {integrity: sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==, tarball: https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==, tarball: https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz} + + '@types/vscode-webview@1.57.5': + resolution: {integrity: sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==, tarball: https://registry.npmjs.org/@types/vscode-webview/-/vscode-webview-1.57.5.tgz} + + '@types/vscode@1.120.0': + resolution: {integrity: sha512-feaT4Rst+FkTch5zz/ZbNCxoIvo55YU80Be2kiL7OJcod4+CUYf2lUBPdIJzozNnSEMq1VRTGrWEcCGFB3fBmA==, tarball: https://registry.npmjs.org/@types/vscode/-/vscode-1.120.0.tgz} + + '@typescript-eslint/eslint-plugin@8.61.1': + resolution: {integrity: sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==, tarball: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.61.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.61.1': + resolution: {integrity: sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==, tarball: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.61.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.61.1': + resolution: {integrity: sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==, tarball: https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.61.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@8.61.1': + resolution: {integrity: sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==, tarball: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.61.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.61.1': + resolution: {integrity: sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==, tarball: https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.61.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.61.1': + resolution: {integrity: sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==, tarball: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.61.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/types@8.61.1': + resolution: {integrity: sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==, tarball: https://registry.npmjs.org/@typescript-eslint/types/-/types-8.61.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.61.1': + resolution: {integrity: sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==, tarball: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.61.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.61.1': + resolution: {integrity: sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==, tarball: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.61.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@8.61.1': + resolution: {integrity: sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==, tarball: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.61.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typespec/ts-http-runtime@0.3.6': + resolution: {integrity: sha512-jIXhD0eWQ1JA6ln/5Dltyx22UxWNrw0hZmhy2rlv6m6KgF7kplHx3g0fzi09lNmTJQRR91OlemYp3xFnvDK9og==, tarball: https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.6.tgz} + engines: {node: '>=20.0.0'} + + '@ungap/structured-clone@1.3.1': + resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==, tarball: https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz} + + '@vitest/coverage-v8@4.1.2': + resolution: {integrity: sha512-sPK//PHO+kAkScb8XITeB1bf7fsk85Km7+rt4eeuRR3VS1/crD47cmV5wicisJmjNdfeokTZwjMk4Mj2d58Mgg==, tarball: https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.2.tgz} + peerDependencies: + '@vitest/browser': 4.1.2 + vitest: 4.1.2 + peerDependenciesMeta: + '@vitest/browser': + optional: true + + '@vitest/expect@4.1.2': + resolution: {integrity: sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==, tarball: https://registry.npmjs.org/@vitest/expect/-/expect-4.1.2.tgz} + + '@vitest/mocker@4.1.2': + resolution: {integrity: sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==, tarball: https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.2.tgz} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.2': + resolution: {integrity: sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==, tarball: https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.2.tgz} + + '@vitest/runner@4.1.2': + resolution: {integrity: sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==, tarball: https://registry.npmjs.org/@vitest/runner/-/runner-4.1.2.tgz} + + '@vitest/snapshot@4.1.2': + resolution: {integrity: sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==, tarball: https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.2.tgz} + + '@vitest/spy@4.1.2': + resolution: {integrity: sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==, tarball: https://registry.npmjs.org/@vitest/spy/-/spy-4.1.2.tgz} + + '@vitest/utils@4.1.2': + resolution: {integrity: sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==, tarball: https://registry.npmjs.org/@vitest/utils/-/utils-4.1.2.tgz} + + '@vscode/codicons@0.0.41': + resolution: {integrity: sha512-v6/8nx76zau3Joxjzi3eN/FVw+7jKBq4j7LTZY5FhFhq2g0OoFebZ3vRZbv/pUopGpbCnJJ4FOz+NzbjVsmoiw==, tarball: https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.41.tgz} + + '@vscode/test-electron@3.0.0': + resolution: {integrity: sha512-TY5mC7aAjxSLDXsyjhrG8cJHgc/HLdiE5lvtW7hABYQrY24Qwozzr5UoO3HiuAM4Hzz4b7K/eZlwrCILj94CcA==, tarball: https://registry.npmjs.org/@vscode/test-electron/-/test-electron-3.0.0.tgz} + engines: {node: '>=22'} + + '@vscode/vsce-sign-alpine-arm64@2.0.6': + resolution: {integrity: sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz} + cpu: [arm64] + os: [alpine] + + '@vscode/vsce-sign-alpine-x64@2.0.6': + resolution: {integrity: sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz} + cpu: [x64] + os: [alpine] + + '@vscode/vsce-sign-darwin-arm64@2.0.6': + resolution: {integrity: sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz} + cpu: [arm64] + os: [darwin] + + '@vscode/vsce-sign-darwin-x64@2.0.6': + resolution: {integrity: sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz} + cpu: [x64] + os: [darwin] + + '@vscode/vsce-sign-linux-arm64@2.0.6': + resolution: {integrity: sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz} + cpu: [arm64] + os: [linux] + + '@vscode/vsce-sign-linux-arm@2.0.6': + resolution: {integrity: sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz} + cpu: [arm] + os: [linux] + + '@vscode/vsce-sign-linux-x64@2.0.6': + resolution: {integrity: sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz} + cpu: [x64] + os: [linux] + + '@vscode/vsce-sign-win32-arm64@2.0.6': + resolution: {integrity: sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz} + cpu: [arm64] + os: [win32] + + '@vscode/vsce-sign-win32-x64@2.0.6': + resolution: {integrity: sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz} + cpu: [x64] + os: [win32] + + '@vscode/vsce-sign@2.0.9': + resolution: {integrity: sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==, tarball: https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.9.tgz} + + '@vscode/vsce@3.9.2': + resolution: {integrity: sha512-XSxMosEEDO6vLxELAHVkwmhC0qe0ijZni2jB9Rcs8kQsW4lhTDQ/wMzmwFs/buotAWSnpmUp/dRWD2ufG3UYKA==, tarball: https://registry.npmjs.org/@vscode/vsce/-/vsce-3.9.2.tgz} + engines: {node: '>= 20'} + hasBin: true + + '@yarnpkg/lockfile@1.1.0': + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==, tarball: https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz} + + '@zkochan/js-yaml@0.0.7': + resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==, tarball: https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz} + hasBin: true + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, tarball: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.17.0: + resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==, tarball: https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz} + engines: {node: '>=0.4.0'} + hasBin: true + + address@2.0.3: + resolution: {integrity: sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA==, tarball: https://registry.npmjs.org/address/-/address-2.0.3.tgz} + engines: {node: '>= 16.0.0'} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==, tarball: https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz} + engines: {node: '>= 14'} + + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==, tarball: https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz} + + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==, tarball: https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, tarball: https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz} + engines: {node: '>=6'} + + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==, tarball: https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==, tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, tarball: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==, tarball: https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz} + engines: {node: '>=12'} + + ast-v8-to-istanbul@1.0.4: + resolution: {integrity: sha512-0bC0/4bTSrnwdhU3IsZDwEdojvuPrSg59OYZfKsLRtJZ0u8VBx9DebfqqG8bRdCC0I7vjgxmPi41P0lpkhJHtA==, tarball: https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.4.tgz} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, tarball: https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz} + engines: {node: '>=8'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, tarball: https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz} + + axios@1.16.0: + resolution: {integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==, tarball: https://registry.npmjs.org/axios/-/axios-1.16.0.tgz} + + azure-devops-node-api@12.5.0: + resolution: {integrity: sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==, tarball: https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz} + + babel-plugin-const-enum@1.2.0: + resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==, tarball: https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz} + peerDependencies: + '@babel/core': ^7.0.0-0 + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==, tarball: https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-polyfill-corejs2@0.4.17: + resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==, tarball: https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.13.0: + resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==, tarball: https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.14.2: + resolution: {integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==, tarball: https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.8: + resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==, tarball: https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-transform-typescript-metadata@0.3.2: + resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==, tarball: https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz} + + balanced-match@4.0.3: + resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==, tarball: https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz} + engines: {node: 20 || >=22} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, tarball: https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz} + + baseline-browser-mapping@2.10.37: + resolution: {integrity: sha512-girxaJ7WZssDOFhzCGZTDKoTa1gk6A1TbflaYTpykLJ4UU9Fz9kx1aREM8JCuoVHbL8X8T/mJg7w2oYSq72Oig==, tarball: https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.37.tgz} + engines: {node: '>=6.0.0'} + hasBin: true + + binaryextensions@6.11.0: + resolution: {integrity: sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==, tarball: https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz} + engines: {node: '>=4'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, tarball: https://registry.npmjs.org/bl/-/bl-4.1.0.tgz} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, tarball: https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz} + + boundary@2.0.0: + resolution: {integrity: sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==, tarball: https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz} + + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==, tarball: https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz} + engines: {node: 18 || 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, tarball: https://registry.npmjs.org/braces/-/braces-3.0.3.tgz} + engines: {node: '>=8'} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==, tarball: https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz} + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==, tarball: https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==, tarball: https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==, tarball: https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, tarball: https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, tarball: https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==, tarball: https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz} + engines: {node: '>=18'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, tarball: https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==, tarball: https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, tarball: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, tarball: https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001799: + resolution: {integrity: sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==, tarball: https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==, tarball: https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==, tarball: https://registry.npmjs.org/chai/-/chai-6.2.2.tgz} + engines: {node: '>=18'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, tarball: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz} + engines: {node: '>=10'} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==, tarball: https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==, tarball: https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==, tarball: https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz} + + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==, tarball: https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz} + + cheerio@1.2.0: + resolution: {integrity: sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==, tarball: https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz} + engines: {node: '>=20.18.1'} + + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==, tarball: https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz} + engines: {node: '>= 20.19.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==, tarball: https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, tarball: https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz} + engines: {node: '>=8'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==, tarball: https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz} + engines: {node: '>=18'} + + cli-spinners@2.6.1: + resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==, tarball: https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz} + engines: {node: '>=6'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, tarball: https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz} + engines: {node: '>=6'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, tarball: https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, tarball: https://registry.npmjs.org/clone/-/clone-1.0.4.tgz} + engines: {node: '>=0.8'} + + cockatiel@3.2.1: + resolution: {integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==, tarball: https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz} + engines: {node: '>=16'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, tarball: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, tarball: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz} + + columnify@1.6.0: + resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==, tarball: https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz} + engines: {node: '>=8.0.0'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, tarball: https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, tarball: https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, tarball: https://registry.npmjs.org/commander/-/commander-12.1.0.tgz} + engines: {node: '>=18'} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, tarball: https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz} + + core-js-compat@3.49.0: + resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==, tarball: https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, tarball: https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==, tarball: https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz} + engines: {node: '>=10'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, tarball: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz} + engines: {node: '>= 8'} + + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==, tarball: https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz} + + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==, tarball: https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz} + engines: {node: '>= 6'} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, tarball: https://registry.npmjs.org/debug/-/debug-4.4.3.tgz} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==, tarball: https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz} + engines: {node: '>=10'} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==, tarball: https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz} + engines: {node: '>=10'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==, tarball: https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, tarball: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz} + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==, tarball: https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==, tarball: https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz} + engines: {node: '>=18'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, tarball: https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, tarball: https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==, tarball: https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz} + engines: {node: '>=12'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, tarball: https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, tarball: https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz} + engines: {node: '>=6'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, tarball: https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz} + engines: {node: '>=8'} + + detect-port@2.1.0: + resolution: {integrity: sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q==, tarball: https://registry.npmjs.org/detect-port/-/detect-port-2.1.0.tgz} + engines: {node: '>= 16.0.0'} + hasBin: true + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==, tarball: https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz} + + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==, tarball: https://registry.npmjs.org/diff/-/diff-8.0.4.tgz} + engines: {node: '>=0.3.1'} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, tarball: https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, tarball: https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, tarball: https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==, tarball: https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz} + + dotenv-expand@12.0.3: + resolution: {integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==, tarball: https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.3.tgz} + engines: {node: '>=12'} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==, tarball: https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, tarball: https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz} + engines: {node: '>= 0.4'} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==, tarball: https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz} + + editions@6.22.0: + resolution: {integrity: sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==, tarball: https://registry.npmjs.org/editions/-/editions-6.22.0.tgz} + engines: {ecmascript: '>= es5', node: '>=4'} + + ejs@5.0.1: + resolution: {integrity: sha512-COqBPFMxuPTPspXl2DkVYaDS3HtrD1GpzOGkNTJ1IYkifq/r9h8SVEFrjA3D9/VJGOEoMQcrlhpntcSUrM8k6A==, tarball: https://registry.npmjs.org/ejs/-/ejs-5.0.1.tgz} + engines: {node: '>=0.12.18'} + hasBin: true + + electron-to-chromium@1.5.373: + resolution: {integrity: sha512-G2Hym8JIf/QreuseqkDibgH8Ci8KfJzqGDKdakbhSx9UltwRBH2cBLAWU/lBX0sCdv0TlhyxQyDCnSfxgMWsjA==, tarball: https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.373.tgz} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==, tarball: https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, tarball: https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz} + + encoding-sniffer@0.2.1: + resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==, tarball: https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==, tarball: https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz} + + enquirer@2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==, tarball: https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz} + engines: {node: '>=8.6'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, tarball: https://registry.npmjs.org/entities/-/entities-4.5.0.tgz} + engines: {node: '>=0.12'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==, tarball: https://registry.npmjs.org/entities/-/entities-6.0.1.tgz} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==, tarball: https://registry.npmjs.org/entities/-/entities-7.0.1.tgz} + engines: {node: '>=0.12'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==, tarball: https://registry.npmjs.org/environment/-/environment-1.1.0.tgz} + engines: {node: '>=18'} + + error-ex@1.3.4: + resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==, tarball: https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, tarball: https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, tarball: https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz} + engines: {node: '>= 0.4'} + + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==, tarball: https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==, tarball: https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==, tarball: https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz} + engines: {node: '>= 0.4'} + + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==, tarball: https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, tarball: https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, tarball: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, tarball: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz} + engines: {node: '>=10'} + + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==, tarball: https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==, tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@10.5.0: + resolution: {integrity: sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==, tarball: https://registry.npmjs.org/eslint/-/eslint-10.5.0.tgz} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==, tarball: https://registry.npmjs.org/espree/-/espree-11.2.0.tgz} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==, tarball: https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, tarball: https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, tarball: https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz} + engines: {node: '>=4.0'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, tarball: https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, tarball: https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz} + engines: {node: '>=0.10.0'} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==, tarball: https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz} + engines: {node: '>=6'} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==, tarball: https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz} + engines: {node: '>=12.0.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, tarball: https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, tarball: https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, tarball: https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, tarball: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz} + + fast-plist@0.1.3: + resolution: {integrity: sha512-d9cEfo/WcOezgPLAC/8t8wGb6YOD6JTCPMw2QcG2nAdFmyY+9rTUizCTaGjIZAloWENTEUMAPpkUAIJJJ0i96A==, tarball: https://registry.npmjs.org/fast-plist/-/fast-plist-0.1.3.tgz} + + fast-uri@3.1.2: + resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==, tarball: https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==, tarball: https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, tarball: https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==, tarball: https://registry.npmjs.org/figures/-/figures-3.2.0.tgz} + engines: {node: '>=8'} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, tarball: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, tarball: https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, tarball: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, tarball: https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz} + engines: {node: '>=16'} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, tarball: https://registry.npmjs.org/flat/-/flat-5.0.2.tgz} + hasBin: true + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==, tarball: https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz} + + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==, tarball: https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==, tarball: https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz} + engines: {node: '>= 6'} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==, tarball: https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz} + + fs-extra@11.3.5: + resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==, tarball: https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz} + engines: {node: '>=14.14'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, tarball: https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, tarball: https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, tarball: https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==, tarball: https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, tarball: https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, tarball: https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz} + engines: {node: '>= 0.4'} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==, tarball: https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, tarball: https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, tarball: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz} + engines: {node: '>=10.13.0'} + + glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==, tarball: https://registry.npmjs.org/glob/-/glob-13.0.6.tgz} + engines: {node: 18 || 20 || >=22} + + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==, tarball: https://registry.npmjs.org/globals/-/globals-16.4.0.tgz} + engines: {node: '>=18'} + + globby@14.1.0: + resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==, tarball: https://registry.npmjs.org/globby/-/globby-14.1.0.tgz} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, tarball: https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, tarball: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, tarball: https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, tarball: https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, tarball: https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, tarball: https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz} + engines: {node: '>= 0.4'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==, tarball: https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz} + engines: {node: '>= 0.4'} + + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==, tarball: https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==, tarball: https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, tarball: https://registry.npmjs.org/he/-/he-1.2.0.tgz} + hasBin: true + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==, tarball: https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz} + engines: {node: '>=10'} + + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==, tarball: https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz} + engines: {node: ^16.14.0 || >=18.0.0} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, tarball: https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz} + + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==, tarball: https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz} + + htmlparser2@10.1.0: + resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==, tarball: https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==, tarball: https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==, tarball: https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz} + engines: {node: '>= 14'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, tarball: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, tarball: https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, tarball: https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, tarball: https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz} + engines: {node: '>= 4'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==, tarball: https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, tarball: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, tarball: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz} + engines: {node: '>=0.8.19'} + + index-to-position@1.2.0: + resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==, tarball: https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz} + engines: {node: '>=18'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, tarball: https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, tarball: https://registry.npmjs.org/ini/-/ini-1.3.8.tgz} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, tarball: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz} + + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==, tarball: https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, tarball: https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, tarball: https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, tarball: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, tarball: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, tarball: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz} + engines: {node: '>=0.10.0'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, tarball: https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, tarball: https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz} + engines: {node: '>=8'} + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==, tarball: https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz} + engines: {node: '>=12'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, tarball: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, tarball: https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz} + engines: {node: '>=8'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, tarball: https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz} + engines: {node: '>=8'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz} + engines: {node: '>=10'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==, tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==, tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz} + engines: {node: '>=18'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, tarball: https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz} + engines: {node: '>=8'} + + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==, tarball: https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz} + engines: {node: '>=16'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, tarball: https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, tarball: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==, tarball: https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==, tarball: https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz} + engines: {node: '>=10'} + + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==, tarball: https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz} + engines: {node: '>=8'} + + istextorbinary@9.5.0: + resolution: {integrity: sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==, tarball: https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz} + engines: {node: '>=4'} + + js-tokens@10.0.0: + resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==, tarball: https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, tarball: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz} + + js-yaml@4.2.0: + resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==, tarball: https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, tarball: https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, tarball: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, tarball: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, tarball: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, tarball: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, tarball: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, tarball: https://registry.npmjs.org/json5/-/json5-2.2.3.tgz} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==, tarball: https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz} + + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==, tarball: https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz} + + jsonwebtoken@9.0.3: + resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==, tarball: https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz} + engines: {node: '>=12', npm: '>=6'} + + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==, tarball: https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz} + + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==, tarball: https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz} + + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==, tarball: https://registry.npmjs.org/jws/-/jws-4.0.1.tgz} + + keytar@7.9.0: + resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==, tarball: https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, tarball: https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, tarball: https://registry.npmjs.org/leven/-/leven-3.1.0.tgz} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, tarball: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz} + engines: {node: '>= 0.8.0'} + + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==, tarball: https://registry.npmjs.org/lie/-/lie-3.3.0.tgz} + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==, tarball: https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==, tarball: https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==, tarball: https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==, tarball: https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==, tarball: https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==, tarball: https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==, tarball: https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==, tarball: https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz} + engines: {node: '>= 12.0.0'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, tarball: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz} + + lines-and-columns@2.0.3: + resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==, tarball: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + linkify-it@5.0.1: + resolution: {integrity: sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==, tarball: https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, tarball: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz} + engines: {node: '>=10'} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, tarball: https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==, tarball: https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==, tarball: https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==, tarball: https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==, tarball: https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==, tarball: https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==, tarball: https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==, tarball: https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==, tarball: https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==, tarball: https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, tarball: https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz} + engines: {node: '>=10'} + + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==, tarball: https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz} + engines: {node: '>=18'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz} + + lru-cache@11.5.1: + resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz} + engines: {node: '>=10'} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz} + + magicast@0.5.3: + resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==, tarball: https://registry.npmjs.org/magicast/-/magicast-0.5.3.tgz} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, tarball: https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz} + engines: {node: '>=10'} + + markdown-it@14.2.0: + resolution: {integrity: sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==, tarball: https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz} + hasBin: true + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, tarball: https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz} + engines: {node: '>= 0.4'} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==, tarball: https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==, tarball: https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, tarball: https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz} + engines: {node: '>= 8'} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==, tarball: https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==, tarball: https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==, tarball: https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==, tarball: https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==, tarball: https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, tarball: https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, tarball: https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, tarball: https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, tarball: https://registry.npmjs.org/mime/-/mime-1.6.0.tgz} + engines: {node: '>=4'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, tarball: https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz} + engines: {node: '>=6'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==, tarball: https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz} + engines: {node: '>=18'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==, tarball: https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz} + engines: {node: '>=10'} + + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==, tarball: https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz} + engines: {node: 18 || 20 || >=22} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, tarball: https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==, tarball: https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz} + engines: {node: '>=16 || 14 >=14.17'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==, tarball: https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz} + + mocha@12.0.0-beta-10: + resolution: {integrity: sha512-edlHS69tgkDTSQotUVP6KNtrIV/qQB/uwbxLHE8yFoD2htrbtFv21CyyNVUC9LvcHNeMwNeR2uxJYxYhWPKGTA==, tarball: https://registry.npmjs.org/mocha/-/mocha-12.0.0-beta-10.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, tarball: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==, tarball: https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz} + + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==, tarball: https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==, tarball: https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, tarball: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz} + + node-abi@3.92.0: + resolution: {integrity: sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==, tarball: https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz} + engines: {node: '>=10'} + + node-addon-api@4.3.0: + resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==, tarball: https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz} + + node-releases@2.0.47: + resolution: {integrity: sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==, tarball: https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz} + engines: {node: '>=18'} + + node-sarif-builder@3.4.0: + resolution: {integrity: sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg==, tarball: https://registry.npmjs.org/node-sarif-builder/-/node-sarif-builder-3.4.0.tgz} + engines: {node: '>=20'} + + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==, tarball: https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz} + engines: {node: ^16.14.0 || >=18.0.0} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, tarball: https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz} + engines: {node: '>=8'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, tarball: https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz} + + nx@23.0.0: + resolution: {integrity: sha512-60HZVOQErtSTnR+UVPBYI5sYe8R2nrHttI0tVHhEj91kJpbXvL15gSh+rv6lUcAJtDfPymoEn20jGzN4oOLKAg==, tarball: https://registry.npmjs.org/nx/-/nx-23.0.0.tgz} + hasBin: true + peerDependencies: + '@swc-node/register': ^1.11.1 + '@swc/core': ^1.15.8 + peerDependenciesMeta: + '@swc-node/register': + optional: true + '@swc/core': + optional: true + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==, tarball: https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz} + engines: {node: '>= 0.4'} + + obug@2.1.3: + resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==, tarball: https://registry.npmjs.org/obug/-/obug-2.1.3.tgz} + engines: {node: '>=12.20.0'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, tarball: https://registry.npmjs.org/once/-/once-1.4.0.tgz} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, tarball: https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz} + engines: {node: '>=6'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==, tarball: https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz} + engines: {node: '>=18'} + + oniguruma-parser@0.12.2: + resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==, tarball: https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz} + + oniguruma-to-es@4.3.6: + resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==, tarball: https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.6.tgz} + + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==, tarball: https://registry.npmjs.org/open/-/open-10.2.0.tgz} + engines: {node: '>=18'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, tarball: https://registry.npmjs.org/open/-/open-8.4.2.tgz} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, tarball: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, tarball: https://registry.npmjs.org/ora/-/ora-5.4.1.tgz} + engines: {node: '>=10'} + + ora@8.2.0: + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==, tarball: https://registry.npmjs.org/ora/-/ora-8.2.0.tgz} + engines: {node: '>=18'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, tarball: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, tarball: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz} + engines: {node: '>=10'} + + p-map@7.0.4: + resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==, tarball: https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz} + engines: {node: '>=18'} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==, tarball: https://registry.npmjs.org/pako/-/pako-1.0.11.tgz} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, tarball: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, tarball: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz} + engines: {node: '>=8'} + + parse-json@8.3.0: + resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==, tarball: https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz} + engines: {node: '>=18'} + + parse-semver@1.1.1: + resolution: {integrity: sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==, tarball: https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz} + + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==, tarball: https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz} + + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==, tarball: https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==, tarball: https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, tarball: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, tarball: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, tarball: https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz} + + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==, tarball: https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz} + engines: {node: 18 || 20 || >=22} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, tarball: https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz} + engines: {node: '>=8'} + + path-type@6.0.0: + resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==, tarball: https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz} + engines: {node: '>=18'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, tarball: https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==, tarball: https://registry.npmjs.org/pend/-/pend-1.2.0.tgz} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, tarball: https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==, tarball: https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz} + engines: {node: '>=8.6'} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==, tarball: https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz} + engines: {node: '>=12'} + + pluralize@2.0.0: + resolution: {integrity: sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==, tarball: https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==, tarball: https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz} + engines: {node: '>=4'} + + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==, tarball: https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz} + engines: {node: ^10 || ^12 || >=14} + + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==, tarball: https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz} + engines: {node: '>=10'} + deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. + hasBin: true + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, tarball: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz} + engines: {node: '>= 0.8.0'} + + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==, tarball: https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz} + engines: {node: '>=14'} + hasBin: true + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, tarball: https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz} + + property-information@7.2.0: + resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==, tarball: https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz} + + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==, tarball: https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz} + engines: {node: '>=10'} + + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==, tarball: https://registry.npmjs.org/pump/-/pump-3.0.4.tgz} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==, tarball: https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, tarball: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz} + engines: {node: '>=6'} + + qs@6.15.2: + resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==, tarball: https://registry.npmjs.org/qs/-/qs-6.15.2.tgz} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, tarball: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz} + + rc-config-loader@4.1.4: + resolution: {integrity: sha512-3GiwEzklkbXTDp52UR5nT8iXgYAx1V9ZG/kDZT7p60u2GCv2XTwQq4NzinMoMpNtXhmt3WkhYXcj6HH8HdwCEQ==, tarball: https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.4.tgz} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==, tarball: https://registry.npmjs.org/rc/-/rc-1.2.8.tgz} + hasBin: true + + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==, tarball: https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz} + engines: {node: '>=18'} + + read@1.0.7: + resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==, tarball: https://registry.npmjs.org/read/-/read-1.0.7.tgz} + engines: {node: '>=0.8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==, tarball: https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, tarball: https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz} + engines: {node: '>= 6'} + + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==, tarball: https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz} + engines: {node: '>= 20.19.0'} + + regenerate-unicode-properties@10.2.2: + resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==, tarball: https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, tarball: https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==, tarball: https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==, tarball: https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz} + + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==, tarball: https://registry.npmjs.org/regex/-/regex-6.1.0.tgz} + + regexpu-core@6.4.0: + resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==, tarball: https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, tarball: https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz} + + regjsparser@0.13.2: + resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==, tarball: https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz} + hasBin: true + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, tarball: https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, tarball: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz} + engines: {node: '>=0.10.0'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, tarball: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz} + engines: {node: '>=4'} + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==, tarball: https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz} + engines: {node: '>=10'} + + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==, tarball: https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz} + engines: {node: '>= 0.4'} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, tarball: https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz} + engines: {node: '>=8'} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==, tarball: https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz} + engines: {node: '>=18'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, tarball: https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rolldown@1.0.3: + resolution: {integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==, tarball: https://registry.npmjs.org/rolldown/-/rolldown-1.0.3.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==, tarball: https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz} + engines: {node: '>=18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, tarball: https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, tarball: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, tarball: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, tarball: https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz} + + sax@1.6.0: + resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==, tarball: https://registry.npmjs.org/sax/-/sax-1.6.0.tgz} + engines: {node: '>=11.0.0'} + + secretlint@10.2.2: + resolution: {integrity: sha512-xVpkeHV/aoWe4vP4TansF622nBEImzCY73y/0042DuJ29iKIaqgoJ8fGxre3rVSHHbxar4FdJobmTnLp9AU0eg==, tarball: https://registry.npmjs.org/secretlint/-/secretlint-10.2.2.tgz} + engines: {node: '>=20.0.0'} + hasBin: true + + semver@5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, tarball: https://registry.npmjs.org/semver/-/semver-5.7.1.tgz} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, tarball: https://registry.npmjs.org/semver/-/semver-6.3.1.tgz} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, tarball: https://registry.npmjs.org/semver/-/semver-7.7.4.tgz} + engines: {node: '>=10'} + hasBin: true + + semver@7.8.4: + resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==, tarball: https://registry.npmjs.org/semver/-/semver-7.8.4.tgz} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@7.0.5: + resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==, tarball: https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz} + engines: {node: '>=20.0.0'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==, tarball: https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, tarball: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, tarball: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz} + engines: {node: '>=8'} + + shiki@3.13.0: + resolution: {integrity: sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g==, tarball: https://registry.npmjs.org/shiki/-/shiki-3.13.0.tgz} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==, tarball: https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==, tarball: https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==, tarball: https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz} + engines: {node: '>= 0.4'} + + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==, tarball: https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==, tarball: https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, tarball: https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, tarball: https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz} + engines: {node: '>=14'} + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==, tarball: https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==, tarball: https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==, tarball: https://registry.npmjs.org/slash/-/slash-5.1.0.tgz} + engines: {node: '>=14.16'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==, tarball: https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz} + engines: {node: '>=10'} + + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==, tarball: https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz} + engines: {node: '>= 18'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, tarball: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.19: + resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==, tarball: https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, tarball: https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==, tarball: https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, tarball: https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==, tarball: https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, tarball: https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz} + + spdx-license-ids@3.0.23: + resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==, tarball: https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==, tarball: https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz} + + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==, tarball: https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz} + + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==, tarball: https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz} + engines: {node: '>=18'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, tarball: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz} + engines: {node: '>=8'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, tarball: https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz} + engines: {node: '>=18'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==, tarball: https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, tarball: https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==, tarball: https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, tarball: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==, tarball: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, tarball: https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz} + engines: {node: '>=4'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==, tarball: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz} + engines: {node: '>=0.10.0'} + + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==, tarball: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz} + engines: {node: '>=14.16'} + + structured-source@4.0.0: + resolution: {integrity: sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==, tarball: https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, tarball: https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, tarball: https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz} + engines: {node: '>=10'} + + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==, tarball: https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz} + engines: {node: '>=14.18'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, tarball: https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz} + engines: {node: '>= 0.4'} + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==, tarball: https://registry.npmjs.org/table/-/table-6.9.0.tgz} + engines: {node: '>=10.0.0'} + + tar-fs@2.1.4: + resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==, tarball: https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==, tarball: https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz} + engines: {node: '>=6'} + + terminal-link@4.0.0: + resolution: {integrity: sha512-lk+vH+MccxNqgVqSnkMVKx4VLJfnLjDBGzH16JVZjKE2DoxP57s6/vt6JmXV5I3jBcfGrxNrYtC+mPtU7WJztA==, tarball: https://registry.npmjs.org/terminal-link/-/terminal-link-4.0.0.tgz} + engines: {node: '>=18'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, tarball: https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz} + + textextensions@6.11.0: + resolution: {integrity: sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==, tarball: https://registry.npmjs.org/textextensions/-/textextensions-6.11.0.tgz} + engines: {node: '>=4'} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==, tarball: https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz} + + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==, tarball: https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==, tarball: https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz} + engines: {node: '>=12.0.0'} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==, tarball: https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz} + engines: {node: '>=14.0.0'} + + tmp@0.2.6: + resolution: {integrity: sha512-5sJPdPjfI5Kx+qbrDesxkglRBxW//g7hCsqspEjwkewGvBMGIKMOTKzLt1hFVJzyadba3lDUN20O9qhvbQUSTA==, tarball: https://registry.npmjs.org/tmp/-/tmp-0.2.6.tgz} + engines: {node: '>=14.14'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, tarball: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz} + engines: {node: '>=8.0'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==, tarball: https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz} + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==, tarball: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==, tarball: https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz} + engines: {node: '>=6.10'} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==, tarball: https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz} + engines: {node: '>=6'} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, tarball: https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==, tarball: https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz} + + tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==, tarball: https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, tarball: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz} + engines: {node: '>= 0.8.0'} + + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==, tarball: https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz} + engines: {node: '>=16'} + + typed-rest-client@1.8.11: + resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==, tarball: https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz} + + typescript-eslint@8.61.1: + resolution: {integrity: sha512-V7PayAfJokV3pEHgN7/v03D1SpujhRfQtYLbLIiBfDDncdg4PAiRBfoS4cnCANK4jmAPncczi59QO3afiXUlNw==, tarball: https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.61.1.tgz} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==, tarball: https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz} + engines: {node: '>=14.17'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==, tarball: https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz} + + underscore@1.13.8: + resolution: {integrity: sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==, tarball: https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz} + + undici-types@7.24.6: + resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==, tarball: https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz} + + undici@7.28.0: + resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==, tarball: https://registry.npmjs.org/undici/-/undici-7.28.0.tgz} + engines: {node: '>=20.18.1'} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==, tarball: https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, tarball: https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.1: + resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==, tarball: https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.2.0: + resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==, tarball: https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz} + engines: {node: '>=4'} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==, tarball: https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz} + engines: {node: '>=18'} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==, tarball: https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz} + engines: {node: '>=18'} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==, tarball: https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==, tarball: https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==, tarball: https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==, tarball: https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==, tarball: https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, tarball: https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz} + engines: {node: '>= 10.0.0'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==, tarball: https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, tarball: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz} + + url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==, tarball: https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, tarball: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, tarball: https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz} + + version-range@4.15.0: + resolution: {integrity: sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==, tarball: https://registry.npmjs.org/version-range/-/version-range-4.15.0.tgz} + engines: {node: '>=4'} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==, tarball: https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==, tarball: https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz} + + vite@8.0.16: + resolution: {integrity: sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==, tarball: https://registry.npmjs.org/vite/-/vite-8.0.16.tgz} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.18 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.2: + resolution: {integrity: sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==, tarball: https://registry.npmjs.org/vitest/-/vitest-4.1.2.tgz} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.2 + '@vitest/browser-preview': 4.1.2 + '@vitest/browser-webdriverio': 4.1.2 + '@vitest/ui': 4.1.2 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vscode-jsonrpc@9.0.0: + resolution: {integrity: sha512-+VvMmQPJhtvJ+8O+zu2JKIRiLxXF8NW7krWgyMGeOHrp4Cn23T5hc0v2LknNeopDOB70wghHAds7mKtcZ0I4Sg==, tarball: https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0.tgz} + engines: {node: '>=14.0.0'} + + vscode-languageclient@10.0.0: + resolution: {integrity: sha512-3yRHFkktZQCCg8ehHnD2Z4DZ4mZ17FNo8bxM4OFt8wtpxNBAOZGHmpbIflZSkicvCxi+ozuWntbdeWiY0gP77w==, tarball: https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0.tgz} + engines: {vscode: ^1.91.0} + + vscode-languageserver-protocol@3.18.0: + resolution: {integrity: sha512-Zdz+kJ12Iz6tc11xfZyEo501bBATHXrCjmMfnaR3pMnf1CoqZBKIynba3P+/bi9VEdrMbNtAVKYpKhbODvqy+Q==, tarball: https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.0.tgz} + + vscode-languageserver-textdocument@1.0.13: + resolution: {integrity: sha512-nx0ZHwMGIsVkzFG3/VLeJYBLTaFBRuNdGDvevvjuoayU5EOS2fEYazOhtCM3PI9ClMMg5igc0uwXtAq4tJj+Dw==, tarball: https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.13.tgz} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==, tarball: https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz} + + vscode-languageserver-types@3.18.0: + resolution: {integrity: sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==, tarball: https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.18.0.tgz} + + vscode-shiki-bridge@0.5.2: + resolution: {integrity: sha512-/9YKUFJuNOMxpTFk0PYSSf+p+/jHktBOxMhDe1ueHvT1afhgopg1y5gKQax76gd03gYyb/kRVuiixnT5Utb58A==, tarball: https://registry.npmjs.org/vscode-shiki-bridge/-/vscode-shiki-bridge-0.5.2.tgz} + peerDependencies: + '@types/vscode': ^1.102.0 + shiki: ^3.9.2 + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==, tarball: https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, tarball: https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==, tarball: https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz} + engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==, tarball: https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz} + engines: {node: '>=18'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, tarball: https://registry.npmjs.org/which/-/which-2.0.2.tgz} + engines: {node: '>= 8'} + hasBin: true + + which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==, tarball: https://registry.npmjs.org/which/-/which-3.0.1.tgz} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==, tarball: https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz} + engines: {node: '>=8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, tarball: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz} + engines: {node: '>=0.10.0'} + + workerpool@9.3.4: + resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==, tarball: https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, tarball: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, tarball: https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz} + + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==, tarball: https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz} + engines: {node: '>=18'} + + xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==, tarball: https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==, tarball: https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz} + engines: {node: '>=4.0'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, tarball: https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, tarball: https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, tarball: https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz} + + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==, tarball: https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz} + engines: {node: '>= 6'} + + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==, tarball: https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, tarball: https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz} + engines: {node: '>=12'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==, tarball: https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, tarball: https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz} + engines: {node: '>=12'} + + yauzl@3.4.0: + resolution: {integrity: sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==, tarball: https://registry.npmjs.org/yauzl/-/yauzl-3.4.0.tgz} + engines: {node: '>=12'} + + yazl@2.5.1: + resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==, tarball: https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, tarball: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz} + engines: {node: '>=10'} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==, tarball: https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz} + +snapshots: + + '@azu/format-text@1.0.2': {} + + '@azu/style-format@1.0.1': + dependencies: + '@azu/format-text': 1.0.2 + + '@azure/abort-controller@2.1.2': + dependencies: + tslib: 2.8.1 + + '@azure/core-auth@1.10.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.13.1 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-client@1.10.2': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-rest-pipeline': 1.24.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-rest-pipeline@1.24.0': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + '@typespec/ts-http-runtime': 0.3.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/core-tracing@1.3.1': + dependencies: + tslib: 2.8.1 + + '@azure/core-util@1.13.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@typespec/ts-http-runtime': 0.3.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/identity@4.13.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-client': 1.10.2 + '@azure/core-rest-pipeline': 1.24.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + '@azure/msal-browser': 5.13.0 + '@azure/msal-node': 5.2.4 + open: 10.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/logger@1.3.0': + dependencies: + '@typespec/ts-http-runtime': 0.3.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@azure/msal-browser@5.13.0': + dependencies: + '@azure/msal-common': 16.8.0 + + '@azure/msal-common@16.8.0': {} + + '@azure/msal-node@5.2.4': + dependencies: + '@azure/msal-common': 16.8.0 + jsonwebtoken: 9.0.3 + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.7': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/traverse': 7.29.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + regexpu-core: 6.4.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + debug: 4.4.3(supports-color@8.1.1) + lodash.debounce: 4.0.8 + resolve: 1.22.12 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-member-expression-to-functions@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/helper-plugin-utils@7.29.7': {} + + '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-wrap-function': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helper-wrap-function@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-decorators': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + + '@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/template': 7.29.7 + + '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7) + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.7) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/preset-env@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/core': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7) + '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.7) + '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-block-scoped-functions': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-duplicate-keys': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-dynamic-import': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-explicit-resource-management': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-exponentiation-operator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-function-name': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-json-strings': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-literals': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-systemjs': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-numeric-separator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-object-super': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-spread': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-escapes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-property-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-unicode-sets-regex': 7.29.7(@babel/core@7.29.7) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.7) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7) + babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.7) + babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7) + core-js-compat: 3.49.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/types': 7.29.7 + esutils: 2.0.3 + + '@babel/preset-typescript@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.29.7': {} + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/traverse@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@bcoe/v8-coverage@1.0.2': {} + + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/core@1.4.5': + dependencies: + '@emnapi/wasi-threads': 1.0.4 + tslib: 2.8.1 + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.4.5': + dependencies: + tslib: 2.8.1 + + '@emnapi/wasi-threads@1.0.4': + dependencies: + tslib: 2.8.1 + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@10.5.0(supports-color@8.1.1))': + dependencies: + eslint: 10.5.0(supports-color@8.1.1) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.23.5(supports-color@8.1.1)': + dependencies: + '@eslint/object-schema': 3.0.5 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 10.2.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.6.0': + dependencies: + '@eslint/core': 1.2.1 + + '@eslint/core@1.2.1': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/js@10.0.1(eslint@10.5.0(supports-color@8.1.1))': + optionalDependencies: + eslint: 10.5.0(supports-color@8.1.1) + + '@eslint/object-schema@3.0.5': {} + + '@eslint/plugin-kit@0.7.2': + dependencies: + '@eslint/core': 1.2.1 + levn: 0.4.1 + + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@jest/diff-sequences@30.0.1': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@napi-rs/wasm-runtime@0.2.4': + dependencies: + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@tybys/wasm-util': 0.9.0 + + '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@nx/devkit@23.0.0(nx@23.0.0)': + dependencies: + '@zkochan/js-yaml': 0.0.7 + ejs: 5.0.1 + enquirer: 2.3.6 + minimatch: 10.2.5 + nx: 23.0.0 + semver: 7.8.4 + tslib: 2.8.1 + yargs-parser: 21.1.1 + + '@nx/esbuild@23.0.0(esbuild@0.28.1)(nx@23.0.0)': + dependencies: + '@nx/devkit': 23.0.0(nx@23.0.0) + '@nx/js': 23.0.0(nx@23.0.0) + picocolors: 1.1.1 + tinyglobby: 0.2.17 + tsconfig-paths: 4.2.0 + tslib: 2.8.1 + optionalDependencies: + esbuild: 0.28.1 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/cli' + - '@swc/core' + - debug + - nx + - supports-color + - verdaccio + + '@nx/js@23.0.0(nx@23.0.0)': + dependencies: + '@babel/core': 7.29.7 + '@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7) + '@babel/preset-env': 7.29.7(@babel/core@7.29.7) + '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7) + '@babel/runtime': 7.29.7 + '@nx/devkit': 23.0.0(nx@23.0.0) + '@nx/workspace': 23.0.0 + '@zkochan/js-yaml': 0.0.7 + babel-plugin-const-enum: 1.2.0(@babel/core@7.29.7) + babel-plugin-macros: 3.1.0 + babel-plugin-transform-typescript-metadata: 0.3.2 + chalk: 4.1.2 + columnify: 1.6.0 + detect-port: 2.1.0 + ignore: 7.0.5 + js-tokens: 4.0.0 + jsonc-parser: 3.3.1 + npm-run-path: 4.0.1 + picocolors: 1.1.1 + picomatch: 4.0.4 + semver: 7.8.4 + source-map-support: 0.5.19 + tinyglobby: 0.2.17 + tslib: 2.8.1 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug + - nx + - supports-color + + '@nx/nx-darwin-arm64@23.0.0': + optional: true + + '@nx/nx-darwin-x64@23.0.0': + optional: true + + '@nx/nx-freebsd-x64@23.0.0': + optional: true + + '@nx/nx-linux-arm-gnueabihf@23.0.0': + optional: true + + '@nx/nx-linux-arm64-gnu@23.0.0': + optional: true + + '@nx/nx-linux-arm64-musl@23.0.0': + optional: true + + '@nx/nx-linux-x64-gnu@23.0.0': + optional: true + + '@nx/nx-linux-x64-musl@23.0.0': + optional: true + + '@nx/nx-win32-arm64-msvc@23.0.0': + optional: true + + '@nx/nx-win32-x64-msvc@23.0.0': + optional: true + + '@nx/workspace@23.0.0': + dependencies: + '@nx/devkit': 23.0.0(nx@23.0.0) + '@zkochan/js-yaml': 0.0.7 + chalk: 4.1.2 + enquirer: 2.3.6 + nx: 23.0.0 + picomatch: 4.0.4 + semver: 7.8.4 + tslib: 2.8.1 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - '@swc-node/register' + - '@swc/core' + - debug + + '@oxc-project/types@0.133.0': {} + + '@rolldown/binding-android-arm64@1.0.3': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.3': + optional: true + + '@rolldown/binding-darwin-x64@1.0.3': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.3': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.3': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.3': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.3': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.3': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.3': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.3': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.3': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@secretlint/config-creator@10.2.2': + dependencies: + '@secretlint/types': 10.2.2 + + '@secretlint/config-loader@10.2.2(supports-color@8.1.1)': + dependencies: + '@secretlint/profiler': 10.2.2 + '@secretlint/resolver': 10.2.2 + '@secretlint/types': 10.2.2 + ajv: 8.20.0 + debug: 4.4.3(supports-color@8.1.1) + rc-config-loader: 4.1.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@secretlint/core@10.2.2(supports-color@8.1.1)': + dependencies: + '@secretlint/profiler': 10.2.2 + '@secretlint/types': 10.2.2 + debug: 4.4.3(supports-color@8.1.1) + structured-source: 4.0.0 + transitivePeerDependencies: + - supports-color + + '@secretlint/formatter@10.2.2(supports-color@8.1.1)': + dependencies: + '@secretlint/resolver': 10.2.2 + '@secretlint/types': 10.2.2 + '@textlint/linter-formatter': 15.7.1(supports-color@8.1.1) + '@textlint/module-interop': 15.7.1 + '@textlint/types': 15.7.1 + chalk: 5.6.2 + debug: 4.4.3(supports-color@8.1.1) + pluralize: 8.0.0 + strip-ansi: 7.2.0 + table: 6.9.0 + terminal-link: 4.0.0 + transitivePeerDependencies: + - supports-color + + '@secretlint/node@10.2.2(supports-color@8.1.1)': + dependencies: + '@secretlint/config-loader': 10.2.2(supports-color@8.1.1) + '@secretlint/core': 10.2.2(supports-color@8.1.1) + '@secretlint/formatter': 10.2.2(supports-color@8.1.1) + '@secretlint/profiler': 10.2.2 + '@secretlint/source-creator': 10.2.2 + '@secretlint/types': 10.2.2 + debug: 4.4.3(supports-color@8.1.1) + p-map: 7.0.4 + transitivePeerDependencies: + - supports-color + + '@secretlint/profiler@10.2.2': {} + + '@secretlint/resolver@10.2.2': {} + + '@secretlint/secretlint-formatter-sarif@10.2.2': + dependencies: + node-sarif-builder: 3.4.0 + + '@secretlint/secretlint-rule-no-dotenv@10.2.2': + dependencies: + '@secretlint/types': 10.2.2 + + '@secretlint/secretlint-rule-preset-recommend@10.2.2': {} + + '@secretlint/source-creator@10.2.2': + dependencies: + '@secretlint/types': 10.2.2 + istextorbinary: 9.5.0 + + '@secretlint/types@10.2.2': {} + + '@shikijs/core@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.6 + + '@shikijs/engine-oniguruma@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + + '@shikijs/themes@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + + '@shikijs/types@3.13.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@sindresorhus/merge-streams@2.3.0': {} + + '@standard-schema/spec@1.1.0': {} + + '@textlint/ast-node-types@15.7.1': {} + + '@textlint/linter-formatter@15.7.1(supports-color@8.1.1)': + dependencies: + '@azu/format-text': 1.0.2 + '@azu/style-format': 1.0.1 + '@textlint/module-interop': 15.7.1 + '@textlint/resolver': 15.7.1 + '@textlint/types': 15.7.1 + chalk: 4.1.2 + debug: 4.4.3(supports-color@8.1.1) + js-yaml: 4.2.0 + lodash: 4.18.1 + pluralize: 2.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + table: 6.9.0 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + '@textlint/module-interop@15.7.1': {} + + '@textlint/resolver@15.7.1': {} + + '@textlint/types@15.7.1': + dependencies: + '@textlint/ast-node-types': 15.7.1 + + '@tybys/wasm-util@0.10.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/esrecurse@4.3.1': {} + + '@types/estree@1.0.9': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mocha@10.0.10': {} + + '@types/node@25.9.3': + dependencies: + undici-types: 7.24.6 + + '@types/normalize-package-data@2.4.4': {} + + '@types/parse-json@4.0.2': {} + + '@types/sarif@2.1.7': {} + + '@types/unist@3.0.3': {} + + '@types/vscode-webview@1.57.5': {} + + '@types/vscode@1.120.0': {} + + '@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/type-utils': 8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(supports-color@8.1.1))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.61.1 + eslint: 10.5.0(supports-color@8.1.1) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.61.1 + debug: 4.4.3(supports-color@8.1.1) + eslint: 10.5.0(supports-color@8.1.1) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.61.1(typescript@6.0.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@6.0.3) + '@typescript-eslint/types': 8.61.1 + debug: 4.4.3(supports-color@8.1.1) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.61.1': + dependencies: + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/visitor-keys': 8.61.1 + + '@typescript-eslint/tsconfig-utils@8.61.1(typescript@6.0.3)': + dependencies: + typescript: 6.0.3 + + '@typescript-eslint/type-utils@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': + dependencies: + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(supports-color@8.1.1))(typescript@6.0.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 10.5.0(supports-color@8.1.1) + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.61.1': {} + + '@typescript-eslint/typescript-estree@8.61.1(typescript@6.0.3)': + dependencies: + '@typescript-eslint/project-service': 8.61.1(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@6.0.3) + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/visitor-keys': 8.61.1 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 10.2.5 + semver: 7.8.4 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.61.1(eslint@10.5.0(supports-color@8.1.1))(typescript@6.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(supports-color@8.1.1)) + '@typescript-eslint/scope-manager': 8.61.1 + '@typescript-eslint/types': 8.61.1 + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + eslint: 10.5.0(supports-color@8.1.1) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.61.1': + dependencies: + '@typescript-eslint/types': 8.61.1 + eslint-visitor-keys: 5.0.1 + + '@typespec/ts-http-runtime@0.3.6': + dependencies: + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@ungap/structured-clone@1.3.1': {} + + '@vitest/coverage-v8@4.1.2(vitest@4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0))': + dependencies: + '@bcoe/v8-coverage': 1.0.2 + '@vitest/utils': 4.1.2 + ast-v8-to-istanbul: 1.0.4 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-reports: 3.2.0 + magicast: 0.5.3 + obug: 2.1.3 + std-env: 4.1.0 + tinyrainbow: 3.1.0 + vitest: 4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) + + '@vitest/expect@4.1.2': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.2(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0))': + dependencies: + '@vitest/spy': 4.1.2 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) + + '@vitest/pretty-format@4.1.2': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.2': + dependencies: + '@vitest/utils': 4.1.2 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.2': + dependencies: + '@vitest/pretty-format': 4.1.2 + '@vitest/utils': 4.1.2 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.2': {} + + '@vitest/utils@4.1.2': + dependencies: + '@vitest/pretty-format': 4.1.2 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + '@vscode/codicons@0.0.41': {} + + '@vscode/test-electron@3.0.0': + dependencies: + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + jszip: 3.10.1 + ora: 8.2.0 + semver: 7.8.4 + transitivePeerDependencies: + - supports-color + + '@vscode/vsce-sign-alpine-arm64@2.0.6': + optional: true + + '@vscode/vsce-sign-alpine-x64@2.0.6': + optional: true + + '@vscode/vsce-sign-darwin-arm64@2.0.6': + optional: true + + '@vscode/vsce-sign-darwin-x64@2.0.6': + optional: true + + '@vscode/vsce-sign-linux-arm64@2.0.6': + optional: true + + '@vscode/vsce-sign-linux-arm@2.0.6': + optional: true + + '@vscode/vsce-sign-linux-x64@2.0.6': + optional: true + + '@vscode/vsce-sign-win32-arm64@2.0.6': + optional: true + + '@vscode/vsce-sign-win32-x64@2.0.6': + optional: true + + '@vscode/vsce-sign@2.0.9': + optionalDependencies: + '@vscode/vsce-sign-alpine-arm64': 2.0.6 + '@vscode/vsce-sign-alpine-x64': 2.0.6 + '@vscode/vsce-sign-darwin-arm64': 2.0.6 + '@vscode/vsce-sign-darwin-x64': 2.0.6 + '@vscode/vsce-sign-linux-arm': 2.0.6 + '@vscode/vsce-sign-linux-arm64': 2.0.6 + '@vscode/vsce-sign-linux-x64': 2.0.6 + '@vscode/vsce-sign-win32-arm64': 2.0.6 + '@vscode/vsce-sign-win32-x64': 2.0.6 + + '@vscode/vsce@3.9.2(supports-color@8.1.1)': + dependencies: + '@azure/identity': 4.13.1 + '@secretlint/node': 10.2.2(supports-color@8.1.1) + '@secretlint/secretlint-formatter-sarif': 10.2.2 + '@secretlint/secretlint-rule-no-dotenv': 10.2.2 + '@secretlint/secretlint-rule-preset-recommend': 10.2.2 + '@vscode/vsce-sign': 2.0.9 + azure-devops-node-api: 12.5.0 + chalk: 4.1.2 + cheerio: 1.2.0 + cockatiel: 3.2.1 + commander: 12.1.0 + form-data: 4.0.5 + glob: 13.0.6 + hosted-git-info: 4.1.0 + jsonc-parser: 3.3.1 + leven: 3.1.0 + markdown-it: 14.2.0 + mime: 1.6.0 + minimatch: 10.2.5 + parse-semver: 1.1.1 + read: 1.0.7 + secretlint: 10.2.2(supports-color@8.1.1) + semver: 7.8.4 + tmp: 0.2.6 + typed-rest-client: 1.8.11 + url-join: 4.0.1 + xml2js: 0.5.0 + yauzl: 3.4.0 + yazl: 2.5.1 + optionalDependencies: + keytar: 7.9.0 + transitivePeerDependencies: + - supports-color + + '@yarnpkg/lockfile@1.1.0': {} + + '@zkochan/js-yaml@0.0.7': + dependencies: + argparse: 2.0.1 + + acorn-jsx@5.3.2(acorn@8.17.0): + dependencies: + acorn: 8.17.0 + + acorn@8.17.0: {} + + address@2.0.3: {} + + agent-base@7.1.4: {} + + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.2 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-colors@4.1.3: {} + + ansi-escapes@7.3.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + assertion-error@2.0.1: {} + + ast-v8-to-istanbul@1.0.4: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + estree-walker: 3.0.3 + js-tokens: 10.0.0 + + astral-regex@2.0.0: {} + + asynckit@0.4.0: {} + + axios@1.16.0: + dependencies: + follow-redirects: 1.16.0 + form-data: 4.0.5 + proxy-from-env: 2.1.0 + transitivePeerDependencies: + - debug + + azure-devops-node-api@12.5.0: + dependencies: + tunnel: 0.0.6 + typed-rest-client: 1.8.11 + + babel-plugin-const-enum@1.2.0(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.29.7 + cosmiconfig: 7.1.0 + resolve: 1.22.12 + + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7): + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + core-js-compat: 3.49.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + core-js-compat: 3.49.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7): + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + babel-plugin-transform-typescript-metadata@0.3.2: + dependencies: + '@babel/helper-plugin-utils': 7.29.7 + + balanced-match@4.0.3: {} + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.10.37: {} + + binaryextensions@6.11.0: + dependencies: + editions: 6.22.0 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + boolbase@1.0.0: {} + + boundary@2.0.0: {} + + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.3 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-stdout@1.3.1: {} + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.37 + caniuse-lite: 1.0.30001799 + electron-to-chromium: 1.5.373 + node-releases: 2.0.47 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + buffer-crc32@0.2.13: {} + + buffer-equal-constant-time@1.0.1: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001799: {} + + ccount@2.0.1: {} + + chai@6.2.2: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.6.2: {} + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.2.2 + css-what: 6.2.2 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + + cheerio@1.2.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + encoding-sniffer: 0.2.1 + htmlparser2: 10.1.0 + parse5: 7.3.0 + parse5-htmlparser2-tree-adapter: 7.1.0 + parse5-parser-stream: 7.1.2 + undici: 7.28.0 + whatwg-mimetype: 4.0.0 + + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + + chownr@1.1.4: + optional: true + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.6.1: {} + + cli-spinners@2.9.2: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + cockatiel@3.2.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + columnify@1.6.0: + dependencies: + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + commander@12.1.0: {} + + convert-source-map@2.0.0: {} + + core-js-compat@3.49.0: + dependencies: + browserslist: 4.28.2 + + core-util-is@1.0.3: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.3 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-select@5.2.2: + dependencies: + boolbase: 1.0.0 + css-what: 6.2.2 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + + css-what@6.2.2: {} + + debug@4.4.3(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@4.0.0: {} + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + optional: true + + deep-extend@0.6.0: + optional: true + + deep-is@0.1.4: {} + + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: {} + + delayed-stream@1.0.0: {} + + dequal@2.0.3: {} + + detect-libc@2.1.2: {} + + detect-port@2.1.0: + dependencies: + address: 2.0.3 + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + diff@8.0.4: {} + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dotenv-expand@12.0.3: + dependencies: + dotenv: 16.4.7 + + dotenv@16.4.7: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + editions@6.22.0: + dependencies: + version-range: 4.15.0 + + ejs@5.0.1: {} + + electron-to-chromium@1.5.373: {} + + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + encoding-sniffer@0.2.1: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enquirer@2.3.6: + dependencies: + ansi-colors: 4.1.3 + + entities@4.5.0: {} + + entities@6.0.1: {} + + entities@7.0.1: {} + + environment@1.1.0: {} + + error-ex@1.3.4: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@2.1.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + eslint-scope@9.1.2: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.9 + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@10.5.0(supports-color@8.1.1): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(supports-color@8.1.1)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.23.5(supports-color@8.1.1) + '@eslint/config-helpers': 0.6.0 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.2 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 + ajv: 6.15.0 + cross-spawn: 7.0.6 + debug: 4.4.3(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + minimatch: 10.2.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@11.2.0: + dependencies: + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) + eslint-visitor-keys: 5.0.1 + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + esutils@2.0.3: {} + + expand-template@2.0.3: + optional: true + + expect-type@1.3.0: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-plist@0.1.3: {} + + fast-uri@3.1.2: {} + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flat@5.0.2: {} + + flatted@3.4.2: {} + + follow-redirects@1.16.0: {} + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + fs-constants@1.0.0: {} + + fs-extra@11.3.5: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.6.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + github-from-package@0.0.0: + optional: true + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@13.0.6: + dependencies: + minimatch: 10.2.5 + minipass: 7.1.3 + path-scurry: 2.0.2 + + globals@16.4.0: {} + + globby@14.1.0: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + path-type: 6.0.0 + slash: 5.1.0 + unicorn-magic: 0.3.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + he@1.2.0: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + html-escaper@2.0.2: {} + + html-void-elements@3.0.0: {} + + htmlparser2@10.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 7.0.1 + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + immediate@3.0.6: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + index-to-position@1.2.0: {} + + inherits@2.0.4: {} + + ini@1.3.8: + optional: true + + is-arrayish@0.2.1: {} + + is-core-module@2.16.2: + dependencies: + hasown: 2.0.4 + + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@1.0.0: {} + + is-interactive@2.0.0: {} + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@2.1.0: {} + + is-unicode-supported@0.1.0: {} + + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-reports@3.2.0: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + istextorbinary@9.5.0: + dependencies: + binaryextensions: 6.11.0 + editions: 6.22.0 + textextensions: 6.11.0 + + js-tokens@10.0.0: {} + + js-tokens@4.0.0: {} + + js-yaml@4.2.0: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + + jsonc-parser@3.3.1: {} + + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonwebtoken@9.0.3: + dependencies: + jws: 4.0.1 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 7.8.4 + + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + jwa@2.0.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@4.0.1: + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + + keytar@7.9.0: + dependencies: + node-addon-api: 4.3.0 + prebuild-install: 7.1.3 + optional: true + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lie@3.3.0: + dependencies: + immediate: 3.0.6 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + lines-and-columns@1.2.4: {} + + lines-and-columns@2.0.3: {} + + linkify-it@5.0.1: + dependencies: + uc.micro: 2.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.debounce@4.0.8: {} + + lodash.includes@4.3.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isinteger@4.0.4: {} + + lodash.isnumber@3.0.3: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.once@4.1.1: {} + + lodash.truncate@4.4.2: {} + + lodash@4.18.1: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-symbols@6.0.0: + dependencies: + chalk: 5.6.2 + is-unicode-supported: 1.3.0 + + lru-cache@10.4.3: {} + + lru-cache@11.5.1: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + magicast@0.5.3: + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + source-map-js: 1.2.1 + + make-dir@4.0.0: + dependencies: + semver: 7.8.4 + + markdown-it@14.2.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.1 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + math-intrinsics@1.1.0: {} + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.1 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + + mdurl@2.0.0: {} + + merge2@1.4.1: {} + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-encode@2.0.1: {} + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-function@5.0.1: {} + + mimic-response@3.1.0: + optional: true + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.6 + + minimist@1.2.8: {} + + minipass@7.1.3: {} + + mkdirp-classic@0.5.3: + optional: true + + mocha@12.0.0-beta-10: + dependencies: + browser-stdout: 1.3.1 + chokidar: 5.0.0 + debug: 4.4.3(supports-color@8.1.1) + diff: 8.0.4 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 13.0.6 + he: 1.2.0 + is-path-inside: 3.0.3 + is-unicode-supported: 0.1.0 + js-yaml: 4.2.0 + minimatch: 10.2.5 + ms: 2.1.3 + picocolors: 1.1.1 + serialize-javascript: 7.0.5 + strip-json-comments: 5.0.3 + supports-color: 8.1.1 + workerpool: 9.3.4 + yargs: 17.7.2 + yargs-parser: 21.1.1 + yargs-unparser: 2.0.0 + + ms@2.1.3: {} + + mute-stream@0.0.8: {} + + nanoid@3.3.12: {} + + napi-build-utils@2.0.0: + optional: true + + natural-compare@1.4.0: {} + + node-abi@3.92.0: + dependencies: + semver: 7.8.4 + optional: true + + node-addon-api@4.3.0: + optional: true + + node-releases@2.0.47: {} + + node-sarif-builder@3.4.0: + dependencies: + '@types/sarif': 2.1.7 + fs-extra: 11.3.5 + + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.8.4 + validate-npm-package-license: 3.0.4 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nx@23.0.0: + dependencies: + '@emnapi/core': 1.4.5 + '@emnapi/runtime': 1.4.5 + '@emnapi/wasi-threads': 1.0.4 + '@jest/diff-sequences': 30.0.1 + '@napi-rs/wasm-runtime': 0.2.4 + '@tybys/wasm-util': 0.9.0 + '@yarnpkg/lockfile': 1.1.0 + '@zkochan/js-yaml': 0.0.7 + ansi-colors: 4.1.3 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + argparse: 2.0.1 + asynckit: 0.4.0 + axios: 1.16.0 + balanced-match: 4.0.3 + base64-js: 1.5.1 + bl: 4.1.0 + brace-expansion: 5.0.6 + buffer: 5.7.1 + call-bind-apply-helpers: 1.0.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + cliui: 8.0.1 + clone: 1.0.4 + color-convert: 2.0.1 + color-name: 1.1.4 + combined-stream: 1.0.8 + defaults: 1.0.4 + define-lazy-prop: 2.0.0 + delayed-stream: 1.0.0 + dotenv: 16.4.7 + dotenv-expand: 12.0.3 + dunder-proto: 1.0.1 + ejs: 5.0.1 + emoji-regex: 8.0.0 + end-of-stream: 1.4.5 + enquirer: 2.3.6 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + escalade: 3.2.0 + escape-string-regexp: 1.0.5 + figures: 3.2.0 + flat: 5.0.2 + follow-redirects: 1.16.0 + form-data: 4.0.5 + fs-constants: 1.0.0 + function-bind: 1.1.2 + get-caller-file: 2.0.5 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + has-flag: 4.0.0 + has-symbols: 1.1.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + ieee754: 1.2.1 + ignore: 7.0.5 + inherits: 2.0.4 + is-docker: 2.2.1 + is-fullwidth-code-point: 3.0.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + is-wsl: 2.2.0 + isexe: 2.0.0 + json5: 2.2.3 + jsonc-parser: 3.3.1 + lines-and-columns: 2.0.3 + log-symbols: 4.1.0 + math-intrinsics: 1.1.0 + mime-db: 1.52.0 + mime-types: 2.1.35 + mimic-fn: 2.1.0 + minimatch: 10.2.5 + minimist: 1.2.8 + npm-run-path: 4.0.1 + once: 1.4.0 + onetime: 5.1.2 + open: 8.4.2 + ora: 5.4.1 + path-key: 3.1.1 + picocolors: 1.1.1 + proxy-from-env: 2.1.0 + readable-stream: 3.6.2 + require-directory: 2.1.1 + resolve.exports: 2.0.3 + restore-cursor: 3.1.0 + safe-buffer: 5.2.1 + semver: 7.7.4 + signal-exit: 3.0.7 + smol-toml: 1.6.1 + string-width: 4.2.3 + string_decoder: 1.3.0 + strip-ansi: 6.0.1 + strip-bom: 3.0.0 + supports-color: 7.2.0 + tar-stream: 2.2.0 + tmp: 0.2.6 + tsconfig-paths: 4.2.0 + tslib: 2.8.1 + util-deprecate: 1.0.2 + wcwidth: 1.0.1 + which: 3.0.1 + wrap-ansi: 7.0.0 + wrappy: 1.0.2 + y18n: 5.0.8 + yaml: 2.9.0 + yargs: 17.7.2 + yargs-parser: 21.1.1 + optionalDependencies: + '@nx/nx-darwin-arm64': 23.0.0 + '@nx/nx-darwin-x64': 23.0.0 + '@nx/nx-freebsd-x64': 23.0.0 + '@nx/nx-linux-arm-gnueabihf': 23.0.0 + '@nx/nx-linux-arm64-gnu': 23.0.0 + '@nx/nx-linux-arm64-musl': 23.0.0 + '@nx/nx-linux-x64-gnu': 23.0.0 + '@nx/nx-linux-x64-musl': 23.0.0 + '@nx/nx-win32-arm64-msvc': 23.0.0 + '@nx/nx-win32-x64-msvc': 23.0.0 + transitivePeerDependencies: + - debug + + object-inspect@1.13.4: {} + + obug@2.1.3: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + oniguruma-parser@0.12.2: {} + + oniguruma-to-es@4.3.6: + dependencies: + oniguruma-parser: 0.12.2 + regex: 6.1.0 + regex-recursion: 6.0.2 + + open@10.2.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.6.1 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + ora@8.2.0: + dependencies: + chalk: 5.6.2 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@7.0.4: {} + + pako@1.0.11: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.7 + error-ex: 1.3.4 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-json@8.3.0: + dependencies: + '@babel/code-frame': 7.29.7 + index-to-position: 1.2.0 + type-fest: 4.41.0 + + parse-semver@1.1.1: + dependencies: + semver: 5.7.1 + + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.3.0 + + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.3.0 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@2.0.2: + dependencies: + lru-cache: 11.5.1 + minipass: 7.1.3 + + path-type@4.0.0: {} + + path-type@6.0.0: {} + + pathe@2.0.3: {} + + pend@1.2.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.4: {} + + pluralize@2.0.0: {} + + pluralize@8.0.0: {} + + postcss@8.5.15: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prebuild-install@7.1.3: + dependencies: + detect-libc: 2.1.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 2.0.0 + node-abi: 3.92.0 + pump: 3.0.4 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.4 + tunnel-agent: 0.6.0 + optional: true + + prelude-ls@1.2.1: {} + + prettier@3.6.2: {} + + process-nextick-args@2.0.1: {} + + property-information@7.2.0: {} + + proxy-from-env@2.1.0: {} + + pump@3.0.4: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + optional: true + + punycode.js@2.3.1: {} + + punycode@2.3.1: {} + + qs@6.15.2: + dependencies: + side-channel: 1.1.1 + + queue-microtask@1.2.3: {} + + rc-config-loader@4.1.4(supports-color@8.1.1): + dependencies: + debug: 4.4.3(supports-color@8.1.1) + js-yaml: 4.2.0 + json5: 2.2.3 + require-from-string: 2.0.2 + transitivePeerDependencies: + - supports-color + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + optional: true + + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.3.0 + type-fest: 4.41.0 + unicorn-magic: 0.1.0 + + read@1.0.7: + dependencies: + mute-stream: 0.0.8 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@5.0.0: {} + + regenerate-unicode-properties@10.2.2: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + + regexpu-core@6.4.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.2 + regjsgen: 0.8.0 + regjsparser: 0.13.2 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.1 + + regjsgen@0.8.0: {} + + regjsparser@0.13.2: + dependencies: + jsesc: 3.1.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-from@4.0.0: {} + + resolve.exports@2.0.3: {} + + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.1.0: {} + + rolldown@1.0.3: + dependencies: + '@oxc-project/types': 0.133.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.3 + '@rolldown/binding-darwin-arm64': 1.0.3 + '@rolldown/binding-darwin-x64': 1.0.3 + '@rolldown/binding-freebsd-x64': 1.0.3 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.3 + '@rolldown/binding-linux-arm64-gnu': 1.0.3 + '@rolldown/binding-linux-arm64-musl': 1.0.3 + '@rolldown/binding-linux-ppc64-gnu': 1.0.3 + '@rolldown/binding-linux-s390x-gnu': 1.0.3 + '@rolldown/binding-linux-x64-gnu': 1.0.3 + '@rolldown/binding-linux-x64-musl': 1.0.3 + '@rolldown/binding-openharmony-arm64': 1.0.3 + '@rolldown/binding-wasm32-wasi': 1.0.3 + '@rolldown/binding-win32-arm64-msvc': 1.0.3 + '@rolldown/binding-win32-x64-msvc': 1.0.3 + + run-applescript@7.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sax@1.6.0: {} + + secretlint@10.2.2(supports-color@8.1.1): + dependencies: + '@secretlint/config-creator': 10.2.2 + '@secretlint/formatter': 10.2.2(supports-color@8.1.1) + '@secretlint/node': 10.2.2(supports-color@8.1.1) + '@secretlint/profiler': 10.2.2 + debug: 4.4.3(supports-color@8.1.1) + globby: 14.1.0 + read-pkg: 9.0.1 + transitivePeerDependencies: + - supports-color + + semver@5.7.1: {} + + semver@6.3.1: {} + + semver@7.7.4: {} + + semver@7.8.4: {} + + serialize-javascript@7.0.5: {} + + setimmediate@1.0.5: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shiki@3.13.0: + dependencies: + '@shikijs/core': 3.13.0 + '@shikijs/engine-javascript': 3.13.0 + '@shikijs/engine-oniguruma': 3.13.0 + '@shikijs/langs': 3.13.0 + '@shikijs/themes': 3.13.0 + '@shikijs/types': 3.13.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-concat@1.0.1: + optional: true + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + optional: true + + slash@5.1.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + smol-toml@1.6.1: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.19: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + space-separated-tokens@2.0.2: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.23 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.23 + + spdx-license-ids@3.0.23: {} + + stackback@0.0.2: {} + + std-env@4.1.0: {} + + stdin-discarder@0.2.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-bom@3.0.0: {} + + strip-json-comments@2.0.1: + optional: true + + strip-json-comments@5.0.3: {} + + structured-source@4.0.0: + dependencies: + boundary: 2.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@3.2.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + table@6.9.0: + dependencies: + ajv: 8.20.0 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tar-fs@2.1.4: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.4 + tar-stream: 2.2.0 + optional: true + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + terminal-link@4.0.0: + dependencies: + ansi-escapes: 7.3.0 + supports-hyperlinks: 3.2.0 + + text-table@0.2.0: {} + + textextensions@6.11.0: + dependencies: + editions: 6.22.0 + + tinybench@2.9.0: {} + + tinyexec@1.2.4: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyrainbow@3.1.0: {} + + tmp@0.2.6: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + trim-lines@3.0.1: {} + + ts-api-utils@2.5.0(typescript@6.0.3): + dependencies: + typescript: 6.0.3 + + ts-dedent@2.2.0: {} + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + optional: true + + tunnel@0.0.6: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@4.41.0: {} + + typed-rest-client@1.8.11: + dependencies: + qs: 6.15.2 + tunnel: 0.0.6 + underscore: 1.13.8 + + typescript-eslint@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(supports-color@8.1.1))(typescript@6.0.3) + eslint: 10.5.0(supports-color@8.1.1) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + typescript@6.0.3: {} + + uc.micro@2.1.0: {} + + underscore@1.13.8: {} + + undici-types@7.24.6: {} + + undici@7.28.0: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 + + unicode-match-property-value-ecmascript@2.2.1: {} + + unicode-property-aliases-ecmascript@2.2.0: {} + + unicorn-magic@0.1.0: {} + + unicorn-magic@0.3.0: {} + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + universalify@2.0.1: {} + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-join@4.0.1: {} + + util-deprecate@1.0.2: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + version-range@4.15.0: {} + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0): + dependencies: + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.15 + rolldown: 1.0.3 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 25.9.3 + esbuild: 0.28.1 + fsevents: 2.3.3 + yaml: 2.9.0 + + vitest@4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0): + dependencies: + '@vitest/expect': 4.1.2 + '@vitest/mocker': 4.1.2(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.2 + '@vitest/runner': 4.1.2 + '@vitest/snapshot': 4.1.2 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.3 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.0 + vite: 8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 25.9.3 + transitivePeerDependencies: + - '@vitejs/devtools' + - esbuild + - jiti + - less + - msw + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + + vscode-jsonrpc@9.0.0: {} + + vscode-languageclient@10.0.0: + dependencies: + minimatch: 10.2.5 + semver: 7.8.4 + vscode-languageserver-protocol: 3.18.0 + vscode-languageserver-textdocument: 1.0.13 + + vscode-languageserver-protocol@3.18.0: + dependencies: + vscode-jsonrpc: 9.0.0 + vscode-languageserver-types: 3.18.0 + + vscode-languageserver-textdocument@1.0.13: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver-types@3.18.0: {} + + vscode-shiki-bridge@0.5.2(@types/vscode@1.120.0)(shiki@3.13.0): + dependencies: + '@types/vscode': 1.120.0 + fast-plist: 0.1.3 + jsonc-parser: 3.3.1 + shiki: 3.13.0 + + vscode-uri@3.1.0: {} + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@4.0.0: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@3.0.1: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + word-wrap@1.2.5: {} + + workerpool@9.3.4: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.1 + + xml2js@0.5.0: + dependencies: + sax: 1.6.0 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@1.10.3: {} + + yaml@2.9.0: {} + + yargs-parser@21.1.1: {} + + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@3.4.0: + dependencies: + pend: 1.2.0 + + yazl@2.5.1: + dependencies: + buffer-crc32: 0.2.13 + + yocto-queue@0.1.0: {} + + zwitch@2.0.4: {} + +time: + '@eslint/js@10.0.1': '2026-02-06T22:34:56.290Z' + '@nx/esbuild@23.0.0': '2026-06-16T16:07:04.929Z' + '@nx/js@23.0.0': '2026-06-16T16:07:12.233Z' + '@shikijs/types@3.13.0': '2025-09-19T15:55:59.443Z' + '@types/mocha@10.0.10': '2024-11-20T18:38:25.531Z' + '@types/node@25.9.3': '2026-06-10T22:15:10.607Z' + '@types/vscode-webview@1.57.5': '2024-01-30T22:04:14.566Z' + '@types/vscode@1.120.0': '2026-05-13T23:47:36.171Z' + '@vitest/coverage-v8@4.1.2': '2026-03-26T14:37:07.834Z' + '@vscode/codicons@0.0.41': '2025-10-08T14:41:29.534Z' + '@vscode/test-electron@3.0.0': '2026-06-08T18:19:54.566Z' + '@vscode/vsce@3.9.2': '2026-06-03T21:27:47.500Z' + esbuild@0.28.1: '2026-06-11T22:47:05.085Z' + eslint@10.5.0: '2026-06-12T17:54:40.577Z' + glob@13.0.6: '2026-02-19T17:26:33.269Z' + globals@16.4.0: '2025-09-09T19:39:12.191Z' + mocha@12.0.0-beta-10: '2026-02-21T03:18:31.327Z' + nx@23.0.0: '2026-06-16T16:06:46.654Z' + prettier@3.6.2: '2025-06-27T02:53:53.185Z' + shiki@3.13.0: '2025-09-19T15:57:04.838Z' + ts-dedent@2.2.0: '2021-08-01T15:22:31.863Z' + typescript-eslint@8.61.1: '2026-06-15T18:31:57.892Z' + typescript@6.0.3: '2026-04-16T23:38:27.905Z' + vitest@4.1.2: '2026-03-26T14:36:51.447Z' + vscode-languageclient@10.0.0: '2026-06-03T19:58:47.274Z' + vscode-languageserver-types@3.17.5: '2023-09-26T10:23:06.690Z' + vscode-shiki-bridge@0.5.2: '2026-03-15T00:14:49.002Z' + vscode-uri@3.1.0: '2025-02-04T18:18:11.908Z' + yaml@2.9.0: '2026-05-11T10:16:24.045Z' diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..1952012 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,488 @@ +############################################################################### +# pnpm-workspace.yaml -- PNPM 11 Monorepo Supply-Chain Fortress +# +# Surface contract: +# - pnpm-workspace.yaml: repo-local non-sensitive PNPM policy +# - package.json: exact Node.js + pnpm toolchain pinning +# - .npmrc / auth.ini: auth-local tokens + certificates only +# +# IMPORTANT: +# - This file centralizes the shared Fortress baseline and the monorepo delta. +# - Auth- and registry-secrets never belong here. +############################################################################### + +######################################## +# Supply-chain fortress posture +######################################## + +# `minimumReleaseAge` +# Simple: Delays the adoption of freshly published versions. +# Details: The Fortress baseline is 7 days, not 24 hours. The goal is maximum +# caution against compromised or retracted releases. +# Example: A version published today only becomes installable on the 8th day. +minimumReleaseAge: 10080 + +# `minimumReleaseAgeIgnoreMissingTime` +# Simple: Disables fail-open on missing publish time metadata. +# Details: If the registry does not supply a `time` value, resolution must +# fail rather than silently losing the protective effect. +# Example: A mirror without a `time` field blocks resolution until the issue is clarified. +minimumReleaseAgeIgnoreMissingTime: false + +# `minimumReleaseAgeStrict` +# Simple: Enforces that PNPM aborts hard if versions are too young. +# Details: Without this setting, PNPM might fall back to an overly fresh version +# in case of doubt. This is unacceptable for Fortress governance. +# Example: If no version old enough matches, the install ends with an error. +minimumReleaseAgeStrict: true + +# `minimumReleaseAgeExclude` +# Simple: Defines exceptions from the age gate. +# Details: In the Fortress baseline, the list remains explicitly empty so that no +# convenience approvals for "hot" releases are permitted. +# Example: `[]` signals that there are no approved immediate exceptions. +minimumReleaseAgeExclude: [] + +# `trustPolicy` +# Simple: Blocks versions whose trust level has decreased compared to previous releases. +# Details: This reduces the risk of accidentally accepting a less trustworthy +# follow-up release. +# Example: A package with a trust downgrade will not be installed. +trustPolicy: no-downgrade + +# `trustPolicyExclude` +# Simple: Defines exact version-pinned exceptions from the trust policy. +# Details: The Fortress baseline normally keeps this list explicitly empty so +# that no hidden trust exceptions exist. This workspace currently carries one +# reviewed break-glass exception for `semver@6.3.1`. +# Why this exception exists: `@nx/js@23.0.0` pulls `@babel/core@7.29.7`, and +# that consumer declares `semver: ^6.3.1`. The trust-downgrade reference owner +# requires an exact override first only when a contract-compatible repair exists. +# Why we do NOT use `overrides` here: within the relevant `6.3.x` line, the only +# candidates are `6.3.0` and `6.3.1`. `6.3.0` is below the consumer contract +# floor `^6.3.1`, so there is no allowed same-line patch repair candidate. +# Scope and removal rule: keep the waiver pinned to this one exact version only, +# re-check it whenever Nx or Babel moves, and remove it as soon as upstream ships +# a trust-compliant graph. +# Example: `semver@6.3.1` waives only that blocked version, not the whole package family. +trustPolicyExclude: + - semver@6.3.1 + +# `blockExoticSubdeps` +# Simple: Forbids Git or tarball sources in transitive dependencies. +# Details: Only direct dependencies may use exotic sources; transitive +# sources must originate from controlled registries. +# Example: A transitive `https://...tgz` dependency is rejected. +blockExoticSubdeps: true + +# `strictDepBuilds` +# Simple: Requires explicit decisions for dependency build scripts. +# Details: A new `postinstall` in a dependency must not run silently, +# but must be reviewed and approved. +# Example: A package with a new install script fails until evaluated in `allowBuilds`. +strictDepBuilds: true + +# `allowBuilds` +# Simple: Defines the explicit allow/deny list for dependency build scripts. +# Details: Only the bundle-first VSIX delivery path and the explicitly approved +# toolchain packages may execute install/build scripts. +# Example: `esbuild: true` allows `esbuild`, `nx: true` allows the reviewed +# Nx postinstall path, `keytar: false` forbids `keytar`. +allowBuilds: + '@vscode/vsce-sign': false + esbuild: true + keytar: false + nx: true + +# `dangerouslyAllowAllBuilds` +# Simple: Opens up blanket-wide build script execution. +# Details: In a Fortress architecture, this value always remains `false`. +# Example: `true` would be a deliberate security breach and is forbidden here. +dangerouslyAllowAllBuilds: false + +######################################## +# Registry and transport trust +######################################## + +# `registries` +# Simple: Defines the approved registry destinations. +# Details: This repository currently resolves through the public npm registry. +# Example: `default` points to the registry approved for this install domain. +registries: + default: https://registry.npmjs.org/ + +# `strictSsl` +# Simple: Enforces TLS certificate verification for registry access. +# Details: This is the minimum hardening against MITM and faulty certificate chains. +# Example: A registry with an invalid certificate will not be accepted. +strictSsl: true + +######################################## +# Toolchain enforcement +######################################## + +# `nodeVersion` +# Simple: Defines the root engine baseline for dependency checks. +# Details: This is the control-plane engine-gate surface, not a blanket equality +# target for every package-local runtime contract. +# Example: A dependency that requires Node 27 is rejected by the root policy. +nodeVersion: 26.2.0 + +# `engineStrict` +# Simple: Makes engine checks hard instead of advisory. +# Details: This ensures no dependencies can be introduced that violate the +# approved runtime line. +# Example: A package with `engines.node: >=27` fails immediately. +engineStrict: true + +# `pmOnFail` +# Simple: Aborts if the running pnpm version does not match exactly. +# Details: The Fortress posture is `error`, not `download`. The toolchain must +# be pre-provisioned and approved. +# Example: pnpm `11.1.0` is blocked against a repo with `11.7.0`. +pmOnFail: error + +# `runtimeOnFail` +# Simple: Aborts if a declared runtime surface is not present or matching. +# Details: Here too, fail-closed applies instead of automatic fetching. +# Example: A runner without the approved declared runtime is stopped. +runtimeOnFail: error + +######################################## +# Lockfile and resolution discipline +######################################## + +# `lockfile` +# Simple: Enforces the use of a lockfile. +# Details: A Fortress repo never operates without a deterministic lockfile. +# Example: `false` would be an architectural error here. +lockfile: true + +# `preferFrozenLockfile` +# Simple: Prefers headless, unchanged installations. +# Details: CI and regulated workflows should not resolve silently if the +# lockfile already describes the desired graph. +# Example: A manifest change without a lockfile update leads to an error. +preferFrozenLockfile: true + +# `lockfileIncludeTarballUrl` +# Simple: Saves tarball sources directly in the lockfile. +# Details: This improves traceability and auditability of origin. +# Example: The lockfile explicitly shows which artifact endpoint the package originates from. +lockfileIncludeTarballUrl: true + +# `resolutionMode` +# Simple: Selects the PNPM resolution strategy. +# Details: `time-based` reduces the risk of subdependency hijacking because +# transitive updates remain tied in time to direct dependency releases. +# Example: A direct dep update only pulls in temporally matching subdeps. +resolutionMode: time-based + +# `registrySupportsTimeField` +# Simple: Enables optimized time metadata support for compatible registries. +# Details: This value remains `false` until the full metadata path used by this +# install domain is proven to deliver the required `time` field consistently. +# Example: Resolution falls back to the safer compatibility path instead of assuming registry support. +registrySupportsTimeField: false + +######################################## +# Manifest save policy +######################################## + +# `saveExact` +# Simple: Saves newly added dependency versions as exact versions instead of ranges. +# Details: This prevents caret or tilde ranges from being written during `pnpm add` +# and keeps every new manifest entry pinned to an explicitly approved version. +# Example: `pnpm add lodash@4.17.21` writes `4.17.21` instead of `^4.17.21`. +saveExact: true + +# `savePrefix` +# Simple: Defines the version prefix for newly saved specs. +# Details: An empty string keeps the serialized spec prefix-free and reinforces +# the exact-version save policy established by `saveExact: true`. +# Example: `1.2.3` instead of `^1.2.3`. +savePrefix: "" + +######################################## +# Workspace topology +######################################## + +# `packages` +# Simple: Defines which directories are part of the monorepo in the first place. +# Details: These globs form the governance boundary for filters, recursion, +# the shared lockfile, and workspace ownership. +# Example: `apps/*` includes all direct child packages under `apps/`. +packages: + - "apps/*" + - "packages/*" + - "tooling/*" + - "!**/test/**" + +# `includeWorkspaceRoot` +# Simple: Keeps the root project out of recursive commands by default. +# Details: This ensures the root remains the control plane and is not accidentally +# treated like a leaf package. +# Example: `false` means that `pnpm -r test` will not automatically run in the root. +includeWorkspaceRoot: false + +# `sharedWorkspaceLockfile` +# Simple: Enforces a shared lockfile for the entire monorepo. +# Details: This reduces uncontrolled drift between packages and centralizes review +# and auditing. +# Example: All packages are governed via a root `pnpm-lock.yaml`. +sharedWorkspaceLockfile: true + +# `disallowWorkspaceCycles` +# Simple: Abruptly aborts the installation process in case of workspace cycles. +# Details: Cycles complicate topological ordering, build order, and root-cause analysis. +# Example: A package `a` must not point back to `b` and back via workspace dependencies. +disallowWorkspaceCycles: true + +# `failIfNoMatch` +# Simple: Causes filter operations to fail if no package is matched. +# Details: This prevents silent green runs that actually did nothing. +# Example: `pnpm --filter missing-package test` ends with an error instead of a silent no-op. +failIfNoMatch: true + +######################################## +# Workspace ownership and save policy +######################################## + +# `linkWorkspacePackages` +# Simple: Prevents implicit local linking when ranges happen to match. +# Details: Local ownership must be explicit via `workspace:`, not via +# a convenient implicit side effect. +# Example: `"foo": "^1.0.0"` must not be silently resolved locally instead of from the registry. +linkWorkspacePackages: false + +# `preferWorkspacePackages` +# Simple: Does NOT automatically prefer local packages over the registry. +# Details: Here too, it is about explicit rather than implicit ownership. +# Example: A local copy is only used if `workspace:` deliberately requests it. +preferWorkspacePackages: false + +# `saveWorkspaceProtocol` +# Simple: Saves local workspace dependencies with an explicit `workspace:` prefix. +# Details: `true` plus `savePrefix: ''` writes exact local ownership into the manifest. +# Example: `workspace:1.2.3` instead of an unclear `^1.2.3`. +saveWorkspaceProtocol: true + +# `injectWorkspacePackages` +# Simple: Prevents hard workspace injection by default. +# Details: Injected dependencies are only permitted in genuine peer graph special cases, +# not as a default. +# Example: A package with deviating peer contexts is targeted for opt-in injection later. +injectWorkspacePackages: false + +# `dedupeInjectedDeps` +# Simple: Deduplicates injected dependencies when peer-wise safe. +# Details: This is not a relaxation, but rather reduces unnecessary duplicates in special cases. +# Example: Identical peer contexts lead to a reusable instance. +dedupeInjectedDeps: true + +######################################## +# Dependency layout and anti-hoisting +######################################## + +# `nodeLinker` +# Simple: Selects the installation model for Node dependencies. +# Details: `isolated` is the strictest general default choice for correct +# dependency isolation. +# Example: The project only sees declared dependencies. +nodeLinker: isolated + +# `enableGlobalVirtualStore` +# Simple: Prevents cross-project global virtual store usage. +# Details: A Fortress policy avoids implicit cross-project sharing paths +# and the associated `NODE_PATH` complexity. +# Example: Dependencies are materialized project-locally rather than via a global virtual store. +enableGlobalVirtualStore: false + +# `hoist` +# Simple: Disables hidden hoisting globally. +# Details: The Fortress baseline is no hoisting unless forced by concrete evidence to the contrary. +# Example: Undeclared dependencies remain inaccessible. +hoist: false + +# `hoistPattern` +# Simple: Does not allow hoisting exceptions by default. +# Details: An empty array is the fail-closed baseline; exceptions are +# added later minimally and based on evidence. +# Example: Only after a validated tooling error is a single pattern included. +hoistPattern: [] + +# `publicHoistPattern` +# Simple: Prevents root-visible hoisting for application code. +# Details: This ensures phantom dependencies are not exported to the visible root path. +# Example: Application code cannot see an undeclared transitive dependency via the root. +publicHoistPattern: [] + +# `shamefullyHoist` +# Simple: Prevents blanket-wide public hoisting. +# Details: This setting always remains `false` in a Fortress architecture. +# Example: A flat root layout similar to npm/Yarn Classic is not created. +shamefullyHoist: false + +# `virtualStoreDir` +# Simple: Sets the project-local virtual store path. +# Details: `.pnpm` shortens paths and makes the store path explicitly visible. +# Example: `node_modules/.pnpm` is relocated to `.pnpm`. +virtualStoreDir: .pnpm + +# `virtualStoreDirMaxLength` +# Simple: Limits the length of directory names in the virtual store. +# Details: `60` is the conservative Windows-safe limit. +# Example: Very long package names are shortened in the store layout. +virtualStoreDirMaxLength: 60 + +# `verifyStoreIntegrity` +# Simple: Verifies store contents before linking. +# Details: Modified files in the content-addressable store are not silently accepted. +# Example: A tampered store artifact is caught during the integrity check. +verifyStoreIntegrity: true + +# `strictStorePkgContentCheck` +# Simple: Verifies if name, version, and content match in the store. +# Details: This protects against registries that deliver identical content under different +# package identities. +# Example: An inconsistent store entry is not accepted. +strictStorePkgContentCheck: true + +# `hoistWorkspacePackages` +# Simple: Prevents workspace packages from being pulled into hoisting paths. +# Details: Local packages should be resolved via clean ownership, not via +# hoisted visibility. +# Example: Workspace packages remain at their explicit resolution path. +hoistWorkspacePackages: false + +######################################## +# Peer dependency governance +######################################## + +# `autoInstallPeers` +# Simple: Prevents automatic installation of missing peers. +# Details: Peer decisions must be made explicitly in the manifest. +# Example: A missing `react-dom` is not silently added. +autoInstallPeers: false + +# `strictPeerDependencies` +# Simple: Makes peer conflicts hard instead of advisory. +# Details: This prevents runtime surprises caused by soft peer deviations. +# Example: An invalid peer tree leads directly to an error. +strictPeerDependencies: true + +# `resolvePeersFromWorkspaceRoot` +# Simple: Unifies peer resolution via the root. +# Details: This ensures workspace packages use the same root peers instead of divergent +# shadow versions. +# Example: Multiple packages resolve `eslint` against the same root version. +resolvePeersFromWorkspaceRoot: true + +# `peerDependencyRules` +# Simple: Keeps blanket exceptions for peers closed. +# Details: Empty lists and maps mean: no general relaxation, no +# implicit approvals, no `allowAny` shortcut. +# Example: A later exception is only added selectively for a leaf->peer pair. +peerDependencyRules: + ignoreMissing: [] + allowAny: [] + +######################################## +# Graph repair and explicit policy +######################################## + +# `overrides` +# Simple: Allows later, targeted transitive pins or removals. +# Details: The approved intervention below constrains only the problematic +# `parse-semver -> semver` edge used by official `@vscode/vsce`. +# Example: `foo@1.0.0>bar: "2.0.0"` pins one reviewed repair. +overrides: + parse-semver@1.1.1>semver: 5.7.1 + +# `ignoreCompatibilityDb` +# Simple: Disables implicit automatic manifest patches from the compatibility database. +# Details: This increases auditability because the repo is not silently influenced by +# external patch logic. +# Example: Missing dependency metadata must be deliberately handled via `packageExtensions`. +ignoreCompatibilityDb: true + +# `updateNotifier` +# Simple: Disables automatic update notifications. +# Details: This reduces unplanned network/noise signals and keeps upgrades within the +# controlled governance process. +# Example: Contributors do not receive spontaneous pnpm upgrade notifications in daily work. +updateNotifier: false + +# `packageConfigs` +# Simple: Replaces per-subproject `.npmrc` for package-specific deviations. +# Details: The array remains empty until there is a genuinely necessary and reviewed +# special rule per package. +# Example: A legacy package could target `savePrefix: "~"` later. +packageConfigs: [] + +######################################## +# Central version approval +######################################## + +# `catalog` +# Simple: Central catalog of approved version states. +# Details: Exact versions live here and manifests consume them via `catalog:`. +# Example: `typescript: 5.7.2` is an approved exact version state. +catalog: + '@nx/esbuild': 23.0.0 + '@nx/js': 23.0.0 + '@eslint/js': 10.0.1 + '@shikijs/types': 3.13.0 + '@types/mocha': 10.0.10 + '@types/node': 25.9.3 + '@types/vscode': 1.120.0 + '@types/vscode-webview': 1.57.5 + '@vitest/coverage-v8': 4.1.2 + '@vscode/codicons': 0.0.41 + '@vscode/vsce': 3.9.2 + '@vscode/test-electron': 3.0.0 + esbuild: 0.28.1 + eslint: 10.5.0 + glob: 13.0.6 + globals: 16.4.0 + mocha: 12.0.0-beta-10 + nx: 23.0.0 + prettier: 3.6.2 + shiki: 3.13.0 + ts-dedent: 2.2.0 + typescript: 6.0.3 + typescript-eslint: 8.61.1 + vitest: 4.1.2 + vscode-languageclient: 10.0.0 + vscode-languageserver-types: 3.17.5 + vscode-shiki-bridge: 0.5.2 + vscode-uri: 3.1.0 + yaml: 2.9.0 + +# `catalogMode` +# Simple: Enforces that new dependencies cannot bypass the catalog. +# Details: `strict` makes the catalog the single source of truth in the monorepo. +# Example: `pnpm add lodash@latest` fails if `lodash` is not appropriately listed in the catalog. +catalogMode: strict + +# `cleanupUnusedCatalogs` +# Simple: Cleans up unused catalog entries. +# Details: This reduces governance clutter and prevents obsolete approval remnants. +# Example: Removed packages do not remain as dead entries in the catalog. +cleanupUnusedCatalogs: true + +######################################## +# Script safety +######################################## + +# `enablePrePostScripts` +# Simple: Disables implicit `pre*`/`post*` hooks. +# Details: Script chaining should be explicit, not happen silently in the background. +# Example: `pnpm build` does not automatically execute `prebuild` and `postbuild`. +enablePrePostScripts: false + +# `verifyDepsBeforeRun` +# Simple: Enforces up-to-date dependencies before `pnpm run` and `pnpm exec`. +# Details: `error` prevents working with stale `node_modules`. +# Example: After a manifest change, `pnpm test` blocks until install is run again. +verifyDepsBeforeRun: error diff --git a/project.json b/project.json new file mode 100644 index 0000000..356440c --- /dev/null +++ b/project.json @@ -0,0 +1,31 @@ +{ + "name": "workspace-root", + "$schema": "./node_modules/nx/schemas/project-schema.json", + "root": ".", + "targets": { + "format": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec prettier --write \"**/*.{ts,tsx,js,mjs,cjs,json,md,yml,yaml,css,html}\"" + } + }, + "format:check": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec prettier --check \"**/*.{ts,tsx,js,mjs,cjs,json,md,yml,yaml,css,html}\"" + } + }, + "sync": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec nx sync" + } + }, + "sync:check": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec nx sync:check" + } + } + } +} diff --git a/tsconfig.base.json b/tsconfig.base.json index 53becf6..58ee910 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,10 +1,9 @@ { "compilerOptions": { - "target": "ES2022", - "module": "CommonJS", - "moduleResolution": "Node", - "lib": ["ES2022", "ES2021.String"], - "baseUrl": ".", + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler", + "lib": ["ESNext", "ES2021.String"], "strict": true, "noUncheckedIndexedAccess": true, "exactOptionalPropertyTypes": true, diff --git a/tsconfig.json b/tsconfig.json index 57bfc74..55c2283 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,9 +3,20 @@ "extends": "./tsconfig.base.json", "files": [], "references": [ - { "path": "packages/utils" }, - { "path": "packages/formatter" }, - { "path": "packages/vscode-formatter" }, - { "path": "apps/vscode-extension" } + { + "path": "./packages/utils" + }, + { + "path": "./packages/formatter" + }, + { + "path": "./packages/vscode-formatter" + }, + { + "path": "./apps/vscode-extension" + }, + { + "path": "./packages/error-translator" + } ] } diff --git a/turbo.json b/turbo.json deleted file mode 100644 index f3b0a13..0000000 --- a/turbo.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "globalDependencies": ["**/.env.*local"], - "tasks": { - "build": { - "outputs": ["dist/**"] - }, - "lint": {}, - "dev": { - "cache": false, - "persistent": true - }, - "test": { - "cache": false - } - } -} From 565f71cf80307a719cbf0f4c0bbfcd0c2149ce20 Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Wed, 24 Jun 2026 16:43:05 +0200 Subject: [PATCH 02/13] backup --- HANDOFF_O3_O1_LOCAL_TRANSLATOR.md | 22 + ...XTENSION_DELIVERY_TRANSLATOR_2026_06_24.md | 166 ++--- ..._DELIVERY_TRANSLATOR_SECURED_2026_06_24.md | 688 ++++++++++++++++++ apps/vscode-extension/package.json | 14 +- apps/vscode-extension/src/diagnostics.ts | 30 +- apps/vscode-extension/src/hoverContent.ts | 124 ++++ apps/vscode-extension/src/logger.ts | 2 +- .../src/provider/markdownWebviewProvider.ts | 15 +- .../src/provider/selectedTextHoverProvider.ts | 28 +- .../src/provider/sidebarViewModel.ts | 136 ++++ .../src/provider/webviewViewProvider.ts | 313 +++----- apps/vscode-extension/tsconfig.app.json | 6 +- apps/vscode-extension/tsconfig.json | 17 +- apps/vscode-extension/webview/index.html | 2 +- apps/vscode-extension/webview/index.js | 364 ++++++++- apps/vscode-extension/webview/style.css | 85 ++- .../src/format/prettifyDiagnosticForHover.ts | 138 +++- pnpm-lock.yaml | 6 +- 18 files changed, 1691 insertions(+), 465 deletions(-) create mode 100644 HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_SECURED_2026_06_24.md create mode 100644 apps/vscode-extension/src/hoverContent.ts create mode 100644 apps/vscode-extension/src/provider/sidebarViewModel.ts diff --git a/HANDOFF_O3_O1_LOCAL_TRANSLATOR.md b/HANDOFF_O3_O1_LOCAL_TRANSLATOR.md index f4205f2..a6d2a0b 100644 --- a/HANDOFF_O3_O1_LOCAL_TRANSLATOR.md +++ b/HANDOFF_O3_O1_LOCAL_TRANSLATOR.md @@ -62,6 +62,28 @@ Das Dokument ist HCOA-ready und so strukturiert, dass ein neuer Agent in einem f --- +## 1.1 Status-Delta nach Umsetzung +[INTENT: KONTEXT] + +Der urspruengliche Handoff beschreibt den Zielzustand und den damals offenen O1/O3-Befund. Seitdem wurde der Produktpfad in `pretty-ts-errors` weitergezogen. + +**Aktueller Stand im Produkt-Workspace:** + +- der Remote-Translator-Pfad zu `ts-error-translator.vercel.app` wurde entfernt +- `lz-string` wurde aus dem Produktpfad entfernt +- die lokale first-party Translator-Integration lebt jetzt unter `packages/error-translator` +- `packages/error-translator/src/generated/tsErrorMessages.json` wurde gegen `typescript@6.0.3` aktualisiert +- die Sidebar-WebView rendert jetzt ueber ein strukturiertes Modell und DOM-APIs statt ueber `innerHTML` +- der Hover-Pfad trennt untrusted Diagnoseinhalt von trusted Command-Aktionen und verwendet kein `supportHtml` mehr fuer den Diagnoseblock + +**Wichtig fuer Leser dieses Dokuments:** + +- die darunterliegenden O1/O3-Beschreibungen bleiben als Architektur- und Audit-Referenz weiterhin wertvoll +- die dort beschriebenen "Ist-Zustand"-Probleme sind fuer den aktuellen Produktpfad jedoch nicht mehr in derselben Form aktuell +- `tmp/ts-error-translator` bleibt weiterhin nur die lokale Upstream-Referenz- und Attributionsbasis + +--- + ## 2. Informationsregister (INHALT-Einheiten) [INTENT: REFERENZ] diff --git a/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md b/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md index 0fba4fe..b790e38 100644 --- a/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md +++ b/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md @@ -89,7 +89,10 @@ Der Benutzer hat zusaetzlich bestaetigt: | DEC-003 | ENTSCHEIDUNG | Build- und Typecheck-Lane der Extension werden getrennt gefuehrt | Ja | Aktiv | | DEC-004 | ENTSCHEIDUNG | `trustPolicyExclude` fuer `semver@6.3.1` ist aktuell notwendig | Ja | Aktiv | | DEC-005 | ENTSCHEIDUNG | `registrySupportsTimeField` bleibt gemaess Referenz und verifiziertem Registry-Verhalten auf `false` | Ja | Aktiv | -| WARN-002 | WARNUNG | `skipTypeCheck` ist im Extension-Build aktuell `true`, obwohl der Benutzer spaeter `false` wollte | Nein | Offen | +| DEC-006 | ENTSCHEIDUNG | `skipTypeCheck` wurde fuer `build` und `dev` auf `false` umgestellt | Ja | Aktiv | +| DEC-007 | ENTSCHEIDUNG | Lokale Translator-Integration laeuft jetzt first-party unter `packages/error-translator` | Ja | Aktiv | +| DEC-008 | ENTSCHEIDUNG | Die Translator-Matching-Datenbank wurde gegen `typescript@6.0.3` auf 2026-Stand aktualisiert | Ja | Aktiv | +| DEC-009 | ENTSCHEIDUNG | Sidebar-WebView und Hover wurden auf sichere O1/O3-Zielpfade umgebaut | Ja | Aktiv | | INFO-001 | INFORMATION | `apps/vscode-extension/package.json` verwendet aktuell `CyberT33N`-Identitaet und wurde auf Benutzerbestaetigung hin beibehalten | Nein | Aktiv | | INFO-002 | INFORMATION | Ein `.vsix` wurde bereits erfolgreich unter `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` erzeugt | Nein | Aktiv | @@ -337,7 +340,7 @@ Das Packaging-Skript erledigt: --- -### 3.7 `skipTypeCheck` ist aktuell noch `true` +### 3.7 `skipTypeCheck` steht jetzt auf `false` [INTENT: SPEZIFIKATION] **Aktueller Status:** @@ -345,26 +348,21 @@ Das Packaging-Skript erledigt: - im App-`project.json` - `build` - `dev` - stehen aktuell beide auf: - - `skipTypeCheck: true` + stehen jetzt beide auf: + - `skipTypeCheck: false` -**Warum das aktuell so ist:** +**Warum diese Umstellung jetzt tragfaehig ist:** -- die Bundle-Lane sollte nicht am kompletten Workspace- oder Beispiel-/`tmp`-Noise scheitern -- deshalb wurde die App-Typecheck-Lane explizit getrennt: +- die App-Typecheck-Lane bleibt weiterhin explizit getrennt: - `typecheck` target mit `tsconfig.app.json` - Build/Bundle target mit `@nx/esbuild` - - Packaging target fuehrt aktuell zuerst `typecheck`, dann `build:production`, dann `package-vsix.mjs` aus + - Packaging target fuehrt `typecheck`, danach `build:production`, danach `package-vsix.mjs` aus +- nach der lokalen Translator-Integration und der Referenzbereinigung laeuft die Lane stabil mit aktivem Typecheck -**Wichtige offene Benutzeranforderung:** +**Verifizierter Status:** -- der Benutzer hat spaeter explizit gesagt, `skipTypeCheck` muesse eigentlich auf `false` - -**Daraus folgt fuer die Fortsetzung:** - -- das Thema ist **nicht erledigt** -- aktuell existiert eine funktionierende, getrennte Architektur -- aber die Benutzerforderung nach `skipTypeCheck: false` ist noch offen und muss bewusst gegen die aktuelle Lane-Trennung entschieden oder umgesetzt werden +- `pnpm exec nx run pretty-ts-errors:typecheck` ist erfolgreich +- `pnpm exec nx run pretty-ts-errors:package` ist erfolgreich --- @@ -394,26 +392,26 @@ Der aktuelle Stand dazu: ### 3.9 Translator-Extraktion: aktueller Stand [INTENT: SPEZIFIKATION] -Der eigentliche lokale Translator-Einbau ist **noch nicht umgesetzt**. +Der lokale Translator-Einbau ist jetzt **umgesetzt**. -Was bereits erfolgt ist: +Was umgesetzt wurde: -- die Upstream-Struktur in `tmp/ts-error-translator` wurde architektonisch ausgewertet -- bestaetigt wurde: - - Zielort spaeter `packages/error-translator/` - - nicht `apps/` -- bestaetigt wurde: - - der relevante Kern sitzt primar in `packages/engine` - - `parser`, `searcher` und die Upstream-VSCode-App sind fuer O1 nicht der primaere Kern -- die `move_paths`-Schemaflaeche des Dateisystem-Tools wurde gelesen +- `packages/error-translator/` wurde angelegt +- benoetigte Engine-Dateien, Translation-Markdowns und Build-Helfer wurden aus `tmp/ts-error-translator` uebernommen +- ein internes first-party Package mit `package.json`, `project.json`, `tsconfig`, `tsconfig.lib.json` und `vitest`-Tests existiert jetzt +- die lokale API exportiert: + - `parseErrors` + - `parseErrorsWithDb` + - `fillBodyWithItems` + - `translateDiagnosticMessage` + - `hasTranslation` +- der bisherige Remote-Translator-Egress ueber `ts-error-translator.vercel.app` wurde entfernt +- `lz-string` wurde aus dem Produktpfad entfernt -Was **noch offen** ist: +**Aktuelle Zielverortung:** -- `packages/error-translator/` anlegen -- benoetigte Engine-Dateien physisch verschieben -- bundling-/generated-data-Lane fuer `bundleErrors`/`tsErrorMessages` aufbauen -- internes Package `project.json`, `package.json`, `tsconfig` und Nx-Ziele anlegen -- lokale API fuer die Extension-/Formatter-Integration schaffen +- `packages/error-translator/` +- `tmp/ts-error-translator/` bleibt weiter als lokale Referenz-/Attributionsbasis erhalten --- @@ -441,36 +439,43 @@ Was **noch offen** ist: - `@vscode/vsce` auf: - `3.9.2` -**Noch offen:** +**Jetzt ebenfalls umgesetzt:** -- der inhaltliche 2026-Refresh der Translator-Datenbasis gegen die installierten TypeScript-Quellen -- die eigentliche Auswertung und Integration der neuen TS-Deklarationen fuer den Translator +- `packages/error-translator/scripts/refreshTsErrorMessages.mjs` materialisiert die aktuelle TypeScript-Diagnostic-Datenbank aus dem installierten `typescript` +- `packages/error-translator/src/generated/tsErrorMessages.json` wurde auf den 2026-Stand aktualisiert +- verifizierter Abgleich gegen `typescript@6.0.3`: + - `dbMessageEntries: 2130` + - `currentDiagnostics: 2130` + - `missingMessagesCount: 0` + - `missingCurrentCodesCount: 0` + - `staleDbCodesCount: 0` --- -### 3.11 Noch nicht angegangene O1/O3/Y1-Folgearbeit +### 3.11 O1/O3-Haertung: aktueller Stand [INTENT: SPEZIFIKATION] -Die folgenden fachlichen Arbeitspakete sind noch **nicht** umgesetzt: +Die O1/O3-Arbeitspakete fuer das Produkt wurden jetzt umgesetzt: -1. **Remote-Translator-Egress entfernen** - - `packages/vscode-formatter/src/components/actions.ts` - - `lz-string`-Pfad - - externe `ts-error-translator.vercel.app`-Nutzung +1. **Remote-Translator-Egress entfernt** + - kein `ts-error-translator.vercel.app`-Pfad mehr im Produkt + - kein `lz-string`-Pfad mehr im Produkt + - lokale Plain-English-Translation wird first-party erzeugt -2. **Plain-English-Translator lokal integrieren** +2. **Plain-English-Translator lokal integriert** - neues internes `packages/error-translator` + - lokale Build-/Refresh-Lane fuer `bundleErrors` und `tsErrorMessages` -3. **WebView-/Hover-Haertung** +3. **WebView-/Hover-Haertung umgesetzt** - strukturierter Datenpfad statt HTML-String-Pipeline - - `innerHTML`-Reduktion / Ersetzung - - Trusted-Markdown-/supportHtml-Haertung - -4. **Bestehende Handoff-Berichte refactoren** - - `HANDOFF_O3_O1_LOCAL_TRANSLATOR.md` - - `HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md` + - kein diagnostikgetriebener `innerHTML`-Pfad mehr + - WebView rendert ueber DOM-APIs + - Hover trennt untrusted Diagnoseinhalt von trusted Command-Aktionen + - `supportHtml` wurde im Hover-Pfad entfernt -Diese Punkte waren vom Benutzer bewusst nachgelagert und sollten erst nach der Monorepo-/Package-Manager-/Delivery-Umstellung kommen. +4. **Handoff-Refactor** + - `HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md` wurde auf den aktuellen technischen Stand nachgezogen + - die Y1-spezifische `tmp/`-Dokumentation bleibt als separate Referenz bestehen --- @@ -558,39 +563,23 @@ Diese Punkte waren vom Benutzer bewusst nachgelagert und sollten erst nach der M ### 6.1 Noch offene fachliche Anforderungen -1. `skipTypeCheck` in `apps/vscode-extension/project.json` soll aus Benutzersicht eigentlich auf `false` - - aktueller Stand nutzt getrennte `typecheck`- und `build`-Lanes - - explizite Umstellung auf `false` ist noch offen +Aktuell gibt es aus diesem Arbeitsstrang keine offenen Pflichtpunkte mehr fuer: -2. Translator-Extraktion - - noch nicht begonnen auf Dateisystemebene - -3. 2026-Refresh des Translators gegen aktuelle TypeScript-Quellen - - noch offen +- PNPM-Fortress-Control-Plane +- Nx-Monorepo-Orchestrierung +- lokale Translator-Integration +- 2026-Refresh der Translator-Matching-Daten +- O1/O3-Haertung im Produktpfad -4. O1/O3/Y1-Folgearbeit - - noch offen +Getrennt davon bleibt nur die separat dokumentierte `tmp/`-/Y1-Referenzoberflaeche als eigener Nacharbeitsstrang. ### 6.2 Konkrete naechste Resume-Reihenfolge -1. **Entscheidung und Umsetzung fuer `skipTypeCheck`** - - falls Benutzerforderung strikt umgesetzt werden soll: - - Build-Lane so anpassen, dass `skipTypeCheck: false` funktioniert - - ohne `tmp/**` / `examples/**` wieder in die produktive App-Lane hineinzuziehen +1. **Optional: separate Y1-`tmp/`-Restarbeit** + - nur falls die geklonte Upstream-Referenz in `tmp/` selbst gehaertet werden soll -2. **Translator-Package bauen** - - `packages/error-translator/` - - Quellverschiebung per `move_paths` - - Nx-/PNPM-/TS-Surfaces anlegen - -3. **Formatter-/Extension-Integration** - - Remote-Link entfernen - - lokale Translator-API anschliessen - - `lz-string` entfernen - -4. **Security-Haertung** - - WebView-/Hover-Pipeline umstellen - - Handoffs aktualisieren +2. **Optional: weitere Produktverbesserungen ausserhalb dieses Strangs** + - z. B. gezielte UX-Weiterentwicklung fuer strukturierte Sidebar-Modelle --- @@ -603,11 +592,10 @@ Ein neuer Agent kann von diesem Stand aus direkt weiterarbeiten. - der Workspace ist bereits auf PNPM + Nx migriert - die Delivery-Lane ist funktional und hat eine VSIX erzeugt -- die noch offene Arbeit ist **nicht** mehr Root-Migration, sondern: - - offene Fortress-Policy-Entscheidungen - - Translator-Extraktion - - Translator-2026-Refresh - - O1/O3/Y1-Folgehaertung +- die Produktarbeit dieses Strangs ist funktional umgesetzt: + - lokale Translator-Integration + - 2026-Refresh der Translator-Matching-Daten + - O1/O3-Haertung im Produktpfad **Besonders wichtig fuer den Resume-Agenten:** @@ -616,23 +604,23 @@ Ein neuer Agent kann von diesem Stand aus direkt weiterarbeiten. - `publisher` / `repository.url` / `homepage` in `apps/vscode-extension/package.json` sind aktuell absichtlich auf `CyberT33N` belassen - `trustPolicyExclude: semver@6.3.1` ist absichtlich gesetzt und muss nicht als Zufallsrest fehlinterpretiert werden - `registrySupportsTimeField: false` ist jetzt die explizit bestaetigte Zielhaltung -- `skipTypeCheck: true` bleibt die noch offene Konfigurationsdiskussion +- `skipTypeCheck` steht jetzt in `build` und `dev` auf `false` +- die aktuelle VSIX wurde erfolgreich neu erzeugt --- ## 8. Kurzfazit [INTENT: KONTEXT] -Die ersten drei grossen Migrationsblöcke sind in der aktuellen Session im Kern umgesetzt worden: +Die grossen Migrations- und Härtungsblöcke dieses Strangs sind jetzt umgesetzt: - PNPM Fortress Root - Nx-Monorepo-Orchestrierung - VS Code Extension Delivery Lane +- lokale Translator-Integration +- 2026-Refresh der Translator-Matching-Datenbasis +- O1/O3-Haertung im Produktpfad -Der Workspace ist installierbar, synchronisiert, buildbar und kann eine `.vsix` erzeugen. - -Nicht erledigt sind aktuell die inhaltliche Local-Translator-Integration, der 2026-Refresh dieser Translator-Datenbasis, die O1/O3/Y1-Haertung sowie die noch offene Konfigurationsforderung: - -- `skipTypeCheck = false` +Der Workspace ist installierbar, synchronisiert, buildbar, typecheckt erfolgreich und kann eine `.vsix` erzeugen. Dieser Bericht ist als neuer dritter Workspace-Handoff gedacht und soll die zwei bestehenden Handoffs nicht ersetzen, sondern ergaenzen. diff --git a/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_SECURED_2026_06_24.md b/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_SECURED_2026_06_24.md new file mode 100644 index 0000000..abeae6e --- /dev/null +++ b/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_SECURED_2026_06_24.md @@ -0,0 +1,688 @@ +# Referenzdokument: Vollstaendiger Workspace-Handoff zur PNPM-, Nx-, Extension-Delivery-, Translator- und Security-Haertung in `pretty-ts-errors` +[INTENT: KONTEXT] + +--- + +## 0. Quellenbasis und Scope-Grenzen +[INTENT: KONTEXT] + +**Workspace-Root:** `C:\Projects\development-platform\vs-code\extensions\pretty-ts-errors` + +**Quellemodus:** `CURRENT_CONTEXT_DEFAULT` mit expliziten Zusatzreferenzen aus dem laufenden Chat-Kontext. + +**Freigegebene Quellenbasis fuer diesen Handoff:** + +- die komplette aktuelle Konversation von Beginn bis zu diesem Stand +- die in dieser Session gelesenen AI-Base-Referenzen fuer: + - PNPM Fortress Core / Monorepo Boilerplate / Omitted Properties / Trust-Downgrade Response Order + - Nx `project.json` Governance + - Nx TypeScript Workspace Governance + - Nx Shared Package Build Orchestration + - Monorepo TypeScript Workspace Config Governance + - VS Code Extension PNPM-first Bundle-first Delivery +- die in dieser Session gelesenen bestehenden Handoff-Dokumente: + - `HANDOFF_O3_O1_LOCAL_TRANSLATOR.md` + - `HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md` + - `HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md` +- die in dieser Session gelesenen und/oder geaenderten Workspace-Dateien +- die in dieser Session ausgefuehrten Validierungs- und Installationslaeufe + +**Explizit nicht Ziel dieses Dokuments:** + +- keine Neuinterpretation ausserhalb des aktuellen Kontexts +- keine autonome Projekt-Neusuche ausserhalb der bereits verwendeten Quellen +- keine Erfindung neuer Architekturziele ausserhalb des bereits diskutierten oder implementierten Stands +- keine Bearbeitung oder Loeschung der drei bestehenden Handoff-Berichte + +**Wichtig zur Scope-Treue:** + +- dieses Dokument ist der **vierte** Workspace-Handoff-Bericht +- die drei bereits vorhandenen Handoffs bleiben bestehen +- dieses Dokument aggregiert den gesamten Stand von der initialen Root-Migration bis zur aktuellen Translator- und Security-Haertung +- das Dokument beschreibt nur den aktuellen Stand und die bereits identifizierten offenen Restpunkte + +--- + +## 1. Aufgabenuebersicht +[INTENT: KONTEXT] + +Der Benutzer hat in dieser Session eine mehrstufige Architektur- und Migrationsaufgabe fuer `pretty-ts-errors` verfolgt. Die Aufgabe lief nicht nur auf einen Package-Manager-Wechsel hinaus, sondern auf eine vollstaendige Umstellung des Monorepo-, Delivery- und Translator-Pfads. + +Die uebergeordnete Zielrichtung war: + +1. das bisherige `npm`-/`turbo`-Setup auf ein `pnpm@11.7.0`-basiertes Fortress-Monorepo umzustellen +2. `turbo` vollstaendig durch `nx` zu ersetzen +3. die VS Code Extension Delivery auf eine PNPM-first / bundle-first / offizielle `@vscode/vsce --no-dependencies`-Architektur umzustellen +4. die TypeScript-/ESM-Lane neu zu ordnen +5. den lokalen `ts-error-translator` aus `tmp/ts-error-translator` in ein internes Package unter `packages/` zu integrieren +6. die bisherigen O1/O3-Themen zu remedieren: + - kein externer Translator-Egress mehr + - keine diagnostikgetriebene HTML-String-Pipeline mehr in der Sidebar-WebView + - minimalerer Trust-Scope im Hover-Pfad +7. alle relevanten Oberflaechen auf den aktuellen TypeScript-Stand zu ziehen +8. am Ende die Produktbenennung auf den gesicherten Zielzustand mit `[Secured]` auszurichten + +Der Benutzer hat spaeter zusaetzlich explizit festgelegt: + +- Root-Toolchain: `Node 26.2.0` +- Package-Manager: `pnpm 11.7.0` +- ESM statt CommonJS +- `tsconfig`-Ziel auf `ESNext` +- `@types/node` in der spaetesten durch Minimum-Release-Age erlaubten Linie +- die AI-Base-Referenzen sind der verbindliche Referenzwert +- `registrySupportsTimeField` soll am Ende auf dem Referenzwert `false` bleiben + +Der Benutzer hat ausserdem spaeter explizit nachgezogen: + +- die lokale Translator-Integration muss zwar auf den aktuellen TypeScript-Stand ausgerichtet werden, aber die noch fehlende 100%-Abdeckung der **kuratierten Plain-English-Uebersetzungen** bleibt ein offener Restpunkt +- fuer den neuen Handoff muss der komplette bisherige Stand **vom Anfang des Kontextes bis zum Ende** zusammengefasst werden + +--- + +## 2. Informationsregister +[INTENT: REFERENZ] + +| ID | Typ | Beschreibung | Veraenderung | Status | +|----|-----|--------------|--------------|--------| +| REQ-001 | ANFORDERUNG | Root-Control-Plane auf `pnpm@11.7.0` + Fortress-Workspace umstellen | Ja | Erledigt | +| REQ-002 | ANFORDERUNG | `turbo` vollstaendig durch `nx` ersetzen | Ja | Erledigt | +| REQ-003 | ANFORDERUNG | VS Code Extension Delivery auf PNPM-first / bundle-first / `@vscode/vsce --no-dependencies` umstellen | Ja | Erledigt | +| REQ-004 | ANFORDERUNG | Translator-Logik intern unter `packages/` integrieren | Ja | Erledigt | +| REQ-005 | ANFORDERUNG | TypeScript-/Tooling-Stand auf 2026 heben | Ja | Teilweise erledigt | +| REQ-006 | ANFORDERUNG | `tmp/**` und `examples/**` nicht produktiv mitbauen / mittypechecken | Ja | Erledigt | +| REQ-007 | ANFORDERUNG | Leaf-`package.json`-Skripte duerfen im Nx-Monorepo nicht die Task-Orchestrierung tragen | Ja | Erledigt | +| REQ-008 | ANFORDERUNG | O1: externer Translator-Egress muss entfernt werden | Ja | Erledigt | +| REQ-009 | ANFORDERUNG | O3: Sidebar-WebView muss von `innerHTML`-/HTML-String-Pipeline weg | Ja | Erledigt | +| REQ-010 | ANFORDERUNG | Hover-Trust-Scope muss reduziert werden | Ja | Erledigt | +| REQ-011 | ANFORDERUNG | Produktname muss mit dem Suffix ` [Secured]` ausgerichtet werden | Ja | Teilweise erledigt, Restflaechen noch nachziehen | +| REQ-012 | ANFORDERUNG | Die Translator-Registry muss am Ende 100% vollstaendig werden | Nein | Offen | +| REQ-013 | ANFORDERUNG | Alle TypeScript-Error-Codes muessen in der Plain-English-Registry enthalten sein | Nein | Offen | +| REQ-014 | ANFORDERUNG | Die komplette Translator-Welt darf am Ende keine 2023-Legacy-Luecke mehr enthalten | Nein | Offen | +| DEC-001 | ENTSCHEIDUNG | Root-Toolchain bleibt `Node 26.2.0`, auch wenn VS Code Stable embedded Node `24.16.0` nutzt | Ja | Aktiv | +| DEC-002 | ENTSCHEIDUNG | ESM-Zielarchitektur fuer die Extension; Node-Extension-Host only | Ja | Aktiv | +| DEC-003 | ENTSCHEIDUNG | Build- und Typecheck-Lane der Extension werden getrennt gefuehrt | Ja | Aktiv | +| DEC-004 | ENTSCHEIDUNG | `trustPolicyExclude` fuer `semver@6.3.1` ist aktuell notwendig | Ja | Aktiv | +| DEC-005 | ENTSCHEIDUNG | `registrySupportsTimeField` bleibt gemaess Referenz und verifiziertem Registry-Verhalten auf `false` | Ja | Aktiv | +| DEC-006 | ENTSCHEIDUNG | `skipTypeCheck` wurde fuer `build` und `dev` auf `false` umgestellt | Ja | Aktiv | +| DEC-007 | ENTSCHEIDUNG | Lokale Translator-Integration laeuft first-party unter `packages/error-translator` | Ja | Aktiv | +| DEC-008 | ENTSCHEIDUNG | Die Translator-Matching-Datenbank wurde gegen `typescript@6.0.3` auf 2026-Stand aktualisiert | Ja | Aktiv | +| DEC-009 | ENTSCHEIDUNG | Sidebar-WebView und Hover wurden auf sichere O1/O3-Zielpfade umgebaut | Ja | Aktiv | +| DEC-010 | ENTSCHEIDUNG | `apps/vscode-extension/tsconfig.json` ist jetzt wieder reine Koordinations-/Referenzoberflaeche statt source-owning `NodeNext`-Leaf | Ja | Aktiv | +| INFO-001 | INFORMATION | `apps/vscode-extension/package.json` verwendet aktuell die bestaetigte `CyberT33N`-Identitaet | Nein | Aktiv | +| INFO-002 | INFORMATION | Ein `.vsix` wurde erfolgreich unter `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` erzeugt | Nein | Aktiv | +| INFO-003 | INFORMATION | Die aktuelle TypeScript-Matcher-DB hat `2130` Eintraege und deckt `typescript@6.0.3` vollstaendig ab | Nein | Aktiv | +| INFO-004 | INFORMATION | Das kuratierte Plain-English-Korpus umfasst aktuell nur `67` Markdown-Uebersetzungen | Nein | Aktiv | +| WARN-001 | WARNUNG | Die Plain-English-Registry ist **nicht** 100% vollstaendig; viele Fehlercodes haben noch keine kuratierte Uebersetzung | Nein | Offen | +| WARN-002 | WARNUNG | `trustPolicyExclude: semver@6.3.1` ist weiterhin eine temporare Fortress-Ausnahme | Nein | Offen | + +--- + +## 3. Current-State-Handoff +[INTENT: SPEZIFIKATION] + +### 3.1 Root-Control-Plane und PNPM-Fortress-Status +[INTENT: SPEZIFIKATION] + +**Ist-Zustand vor der Migration:** + +- Root `package.json` war `npm`-/`turbo`-basiert +- `packageManager` stand auf `npm@10.0.0` +- `turbo.json` war die Root-Orchestrierung +- `package-lock.json` existierte +- es gab kein `pnpm-workspace.yaml` +- es gab kein `nx.json` + +**Jetzt umgesetzter Stand:** + +- Root `package.json` fuehrt jetzt nur noch die Root-Control-Plane: + - `packageManager: "pnpm@11.7.0"` + - `devEngines.packageManager` + - `devEngines.runtime` mit `node 26.2.0` +- Root-`scripts` wurden aus `package.json` entfernt; Root-Orchestrierung laeuft ueber `project.json` +- `pnpm-workspace.yaml` existiert als Fortress-Monorepo-Oberflaeche +- `package-lock.json` wurde geloescht +- `turbo.json` wurde geloescht + +**Wichtige PNPM-Fortress-Details im aktuellen Workspace:** + +- `minimumReleaseAge: 10080` +- `minimumReleaseAgeIgnoreMissingTime: false` +- `minimumReleaseAgeStrict: true` +- `trustPolicy: no-downgrade` +- `blockExoticSubdeps: true` +- `strictDepBuilds: true` +- `allowBuilds` ist explizit befuellt statt global offen +- `resolutionMode: time-based` +- `registrySupportsTimeField: false` +- `catalogMode: strict` +- `saveExact: true` +- `savePrefix: ""` +- `nodeLinker: isolated` + +**Verifizierter Installationsstatus:** + +- `pnpm install` laeuft erfolgreich unter `pnpm v11.7.0` +- der Workspace hat ein `pnpm-lock.yaml` +- der Lockfile erfuellt die Supply-Chain-Policies + +--- + +### 3.2 Warum `trustPolicyExclude` statt `overrides` fuer `semver@6.3.1` +[INTENT: SPEZIFIKATION] + +Der Trust-Downgrade-Pfad wurde gemaess Referenz abgearbeitet: + +1. zuerst Updates / neuere freigegebene Versionen +2. dann nur wenn moeglich ein enger Override-Repair +3. erst danach exakte `trustPolicyExclude` + +Der relevante Graph: + +- `@nx/js@23.0.0` +- zieht `@babel/core@7.29.7` +- `@babel/core@7.29.7` deklariert `semver: ^6.3.1` +- in der relevanten `6.3.x`-Linie existieren nur: + - `6.3.0` + - `6.3.1` + +**Warum kein `override`:** + +- `6.3.0` liegt unterhalb des Contract-Floors `^6.3.1` +- `6.3.1` ist genau die geblockte Version +- damit existiert kein zulaessiger enger Patch-Repair + +**Daher bleibt korrekt:** + +- `trustPolicyExclude: [semver@6.3.1]` + +**Folgepflicht:** + +- sobald `@nx/js` / `@babel/core` einen trust-konformen Graphen liefern, muss diese Ausnahme entfernt werden + +--- + +### 3.3 `registrySupportsTimeField` bleibt auf `false` +[INTENT: SPEZIFIKATION] + +**Warum:** + +- `resolutionMode: time-based` braucht die korrekte Zeitmetadaten-Surface +- `registrySupportsTimeField: true` ist nur korrekt, wenn die Registry das `time`-Feld bereits im **abbreviated metadata**-Pfad liefert +- fuer `registry.npmjs.org` ist das im verwendeten Pfad nicht gegeben + +**Verifizierte Live-Beobachtung:** + +Getestete Pakete: + +- `esbuild` +- `typescript` +- `@eslint/js` +- `@nx/js` + +Ergebnis: + +- full metadata: `time` vorhanden +- abbreviated metadata: `time` **nicht** vorhanden + +**Konsequenz:** + +- `registrySupportsTimeField: false` ist technisch korrekt +- `true` waere im aktuellen Setup ein falscher globaler Registry-Claim + +--- + +### 3.4 Nx-Control-Plane und Task-Semantik +[INTENT: SPEZIFIKATION] + +**Neue Root-Oberflaechen:** + +- `nx.json` +- `project.json` am Workspace-Root +- `project.json` fuer: + - `packages/utils` + - `packages/formatter` + - `packages/vscode-formatter` + - `packages/error-translator` + - `apps/vscode-extension` + +**Wichtige Nx-Entscheidungen:** + +- `@nx/js/typescript` ist auf `packages/**/*` als standardisierte TypeScript-Governance aktiv +- Shared Packages nutzen explizite `@nx/js:tsc`-Build-Targets +- das neue Translator-Paket nutzt ebenfalls `@nx/js:tsc` +- die VS Code Extension nutzt `@nx/esbuild:esbuild` +- Leaf-`package.json`-Skripte wurden als Orchestrierungsoberflaechen entfernt +- Root-Format-/Sync-Funktionen leben im Root-`project.json` + +**Verifizierter Nx-Status:** + +- `nx show projects` erkennt aktuell: + - `@pretty-ts-errors/error-translator` + - `@pretty-ts-errors/utils` + - `@pretty-ts-errors/formatter` + - `pretty-ts-errors` + - `workspace-root` +- `pnpm exec nx sync` ist erfolgreich +- `pnpm exec nx sync:check` ist erfolgreich + +--- + +### 3.5 TypeScript-/ESM-Umstellung +[INTENT: SPEZIFIKATION] + +**Root-TS-Stand:** + +- `tsconfig.base.json` ist auf: + - `target: ESNext` + - `module: ESNext` + - `moduleResolution: Bundler` + gestellt + +**Workspace-Rollenaufteilung:** + +- Root-`tsconfig.json` ist die Koordinations-/Referenzoberflaeche +- `apps/vscode-extension/tsconfig.json` ist jetzt ebenfalls wieder Koordinationsoberflaeche: + - `files: []` + - `references` auf `tsconfig.app.json` und `tsconfig.test.json` +- `apps/vscode-extension/tsconfig.app.json` ist die produktive App-Rolle: + - `module: ESNext` + - `moduleResolution: Bundler` + - `noEmit: true` +- `apps/vscode-extension/tsconfig.test.json` bleibt die Test-Rolle + +**Wichtige Folge dieser Korrektur:** + +- die zuvor im Editor sichtbaren `TS2835`-Fehler mit verpflichtenden `.js`-Suffixen kamen aus einer source-owning `NodeNext`-Fehlklassifikation der Leaf-`tsconfig.json` +- diese Ursache wurde beseitigt +- es war **nicht** notwendig, die ganzen App-Imports kuenstlich auf `.js` umzuschreiben + +**Verifizierter Status:** + +- `pnpm exec tsc -p apps/vscode-extension/tsconfig.json --noEmit` ist erfolgreich +- `pnpm exec tsc -p apps/vscode-extension/tsconfig.app.json --noEmit` ist erfolgreich +- `pnpm exec tsc -p apps/vscode-extension/tsconfig.test.json --noEmit` ist erfolgreich +- `pnpm exec nx run pretty-ts-errors:typecheck` ist erfolgreich + +--- + +### 3.6 VS Code Extension Delivery +[INTENT: SPEZIFIKATION] + +**Manifest-/Produktoberflaeche:** + +- `displayName` ist aktuell: + - `Pretty TypeScript Errors [Secured]` +- `publisher`, `repository.url` und `homepage` sind aktuell: + - `CyberT33N` + - `https://github.com/CyberT33N/pretty-ts-errors` +- diese Identitaetsaenderung wurde im Chat bestaetigt und beibehalten + +**Delivery-Oberflaechen:** + +- `.vscodeignore` fuer die VSIX-Strategie wurde eingefuehrt +- `.vscode/tasks.json` und `.vscode/launch.json` wurden auf Nx-Tasks / `dist/**`-Bundle-Vertrag umgestellt +- `apps/vscode-extension/scripts/build.js` wurde entfernt +- `apps/vscode-extension/scripts/package-vsix.mjs` materialisiert `catalog:`-Dependencies in einen Stage-Manifest-Pfad + +**Aktueller Packaging-Status:** + +- `pnpm exec nx run pretty-ts-errors:package` ist erfolgreich +- Artefakt: + - `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` + +**Wichtige operative Beobachtung:** + +- der bekannte Windows-`EPERM` auf `apps/vscode-extension/dist` kann weiterhin auftreten, wenn alte Artefakte oder ein Watcher die Surface halten +- der saubere Workaround bleibt: + - altes `apps/vscode-extension/dist` entfernen + - Packaging-Lane erneut starten + +--- + +### 3.7 Produktname / `[Secured]`-Zielbild +[INTENT: SPEZIFIKATION] + +**Bereits korrekt gesetzt:** + +- `apps/vscode-extension/package.json#displayName` + - `Pretty TypeScript Errors [Secured]` + +**Noch offene user-facing Restflaechen zum Nachziehen:** + +- `apps/vscode-extension/package.json#contributes.viewsContainers.activitybar[0].title` + - aktuell: `Pretty TypeScript Errors` +- `apps/vscode-extension/package.json#contributes.commands[*].category` + - aktuell: `Pretty TS Errors` +- `apps/vscode-extension/src/logger.ts` + - aktueller Output-Channel-Name: `Pretty TypeScript Errors` +- `apps/vscode-extension/webview/index.html` + - aktueller Title: `Pretty TS Errors - Markdown Preview` + +**Architektonische Interpretation:** + +- der Kernname ist bereits mit `[Secured]` auf der Extension-Manifest-Oberflaeche gesetzt +- einzelne user-facing Restflaechen koennen noch nachgezogen werden, wenn eine vollstaendig konsistente Benennungsoberflaeche gewuenscht ist + +--- + +### 3.8 Translator-Architektur: aktueller Zustand +[INTENT: SPEZIFIKATION] + +Der lokale Translator-Einbau ist jetzt **technisch integriert**, aber **inhaltlich noch nicht 100% fertig**. + +**Was jetzt existiert:** + +- neues internes Package: + - `packages/error-translator/` +- lokale first-party API: + - `parseErrors` + - `parseErrorsWithDb` + - `fillBodyWithItems` + - `translateDiagnosticMessage` + - `hasTranslation` +- lokale generated data surfaces: + - `packages/error-translator/src/generated/tsErrorMessages.json` + - `packages/error-translator/src/generated/bundleErrors.json` +- Upstream-Attributions-/Rohdatenbasis: + - `packages/error-translator/vendor/matt-pocock/errors/*.md` + +**Was bewusst nicht uebernommen wurde:** + +- keine komplette Upstream-VS-Code-App +- keine Upstream-Workspace- oder Turbo-Oberflaeche +- keine Upstream-Parser-/Searcher-Pakete als Produktbestandteil + +**Aktuelle Produktintegration:** + +- `packages/vscode-formatter` konsumiert den lokalen Translator +- die Sidebar rendert die lokale Plain-English-Translation direkt im Produkt +- kein externer Remote-Fallback mehr + +--- + +### 3.9 Translator-Skripte / No-Code-Operations / Shims +[INTENT: SPEZIFIKATION] + +Der Benutzer hat explizit gefragt, ob hier zusaetzliche Migrations-, Shims- oder No-Code-Kompatibilitaetsoberflaechen eingefuehrt wurden. + +**Ja, es gibt zwei neue Build-/Maintenance-Skripte:** + +1. `packages/error-translator/scripts/refreshTsErrorMessages.mjs` + - liest die aktuell installierte TypeScript-Diagnostic-Datenbasis direkt aus `typescript` + - generiert daraus `src/generated/tsErrorMessages.json` + - Zweck: die **Matcher-/Erkennungsdatenbank** auf den aktuellen TS-Stand ziehen + +2. `packages/error-translator/scripts/bundleErrors.mjs` + - liest die kuratierten Markdown-Dateien unter `vendor/matt-pocock/errors/*.md` + - materialisiert daraus `src/generated/bundleErrors.json` + - Zweck: die **Runtime-Uebersetzungsdaten** lokal als statisches Bundle bereitstellen + +**Wichtig:** + +- das sind **keine Runtime-Shims** +- das sind **keine Abwaertskompatibilitaets-Layer** +- das sind **keine No-Code-Fallback-Systeme** +- das sind **Build-/Refresh-Skripte fuer Datenmaterialisierung** + +**Was explizit nicht existiert:** + +- kein externer Service-Fallback +- kein Legacy-Translator-Proxy +- kein Runtime-FS-Zugriff auf die rohen Markdown-Dateien +- kein network-basierter Translator + +--- + +### 3.10 TypeScript-2026-Refresh: was erledigt ist und was nicht +[INTENT: SPEZIFIKATION] + +Hier ist die praezise Trennung entscheidend. + +**Erledigt:** + +- die **technische Fehlererkennung** wurde gegen `typescript@6.0.3` aktualisiert +- `packages/error-translator/src/generated/tsErrorMessages.json` wurde neu generiert +- verifizierter Abgleich: + - `dbMessageEntries: 2130` + - `currentDiagnostics: 2130` + - `missingMessagesCount: 0` + - `missingCurrentCodesCount: 0` + - `staleDbCodesCount: 0` + +**Nicht erledigt:** + +- die **kuratierten Plain-English-Uebersetzungen** sind **nicht** 100% vollstaendig +- das aktuelle Markdown-Korpus unter `vendor/matt-pocock/errors` umfasst nur `67` Uebersetzungsdateien +- damit sind zwar alle aktuellen TS-Diagnostics **erkennbar**, aber nicht alle haben schon einen kuratierten Plain-English-Text + +**Das bedeutet architektonisch:** + +- die 2026-Kompatibilitaet der **Matching-Ebene** ist hergestellt +- die 2026-Komplettheit der **Translation-Registry** ist **noch offen** + +--- + +### 3.11 O1/O3-Haertung: aktueller Stand +[INTENT: SPEZIFIKATION] + +**O1 / Remote-Egress:** + +- der bisherige Translator-Egress zu `ts-error-translator.vercel.app` wurde entfernt +- `lz-string` wurde aus dem Produktpfad entfernt +- die Produktoberflaeche uebersetzt lokal + +**O3 / Sidebar-WebView:** + +- die alte Pipeline: + - HTML-Strings aufbauen + - via `postMessage({ html })` transportieren + - im WebView per `innerHTML` einsetzen +- wurde ersetzt durch: + - strukturiertes Sidebar-View-Model + - DOM-Knoten-Erzeugung im WebView + - kein diagnostikgetriebener `innerHTML`-Transport mehr + +**Hover / Trust-Scope:** + +- Hover-Inhalt und Hover-Aktionen wurden getrennt +- der untrusted Diagnoseinhalt wird als normales Markdown ohne `supportHtml` transportiert +- trusted bleibt nur noch die Command-Aktionsoberflaeche + +--- + +### 3.12 Offene Restarbeit fuer den Translator +[INTENT: SPEZIFIKATION] + +Die folgenden Punkte sind **inhaltlich offen** und muessen fuer den gewuenschten Endzustand noch umgesetzt werden: + +1. **Die Translation-Registry muss 100% vollstaendig werden** + - aktuell nur `67` kuratierte Plain-English-Uebersetzungen + - Ziel: alle relevanten aktuellen TS-Error-Codes muessen eine kuratierte Uebersetzung erhalten + +2. **Alle Error-Codes muessen herausgefunden und abgedeckt werden** + - die aktuelle Matcher-DB kennt bereits alle aktuellen Diagnostics + - die kuratierte Registry muss auf diese Menge hochgezogen werden + +3. **Die Legacy-Welt des 2023er-Korpus darf inhaltlich nicht als Endzustand stehen bleiben** + - aktuelle Vendor-Basis ist ein Startpunkt, nicht der Zielzustand + - am Ende muss die eigene Registry den aktuellen TypeScript-Stand 100% abbilden + +4. **Bei spaeteren TypeScript-Upgrades muss der Refresh erneut gefahren werden** + - `refreshTsErrorMessages.mjs` ist die technische Refresh-Oberflaeche + - neue oder geaenderte TS-Diagnostics muessen danach wieder in die kuratierte Registry gezogen werden + +--- + +## 4. Dateiinventar der wichtigsten Oberflaechen +[INTENT: REFERENZ] + +### 4.1 Neue bzw. neue Hauptoberflaechen + +- `pnpm-workspace.yaml` +- `nx.json` +- `project.json` +- `.nxignore` +- `apps/vscode-extension/project.json` +- `apps/vscode-extension/.vscodeignore` +- `apps/vscode-extension/scripts/package-vsix.mjs` +- `apps/vscode-extension/src/lspDiagnostic.ts` +- `apps/vscode-extension/src/hoverContent.ts` +- `apps/vscode-extension/src/provider/sidebarViewModel.ts` +- `packages/error-translator/package.json` +- `packages/error-translator/project.json` +- `packages/error-translator/tsconfig.json` +- `packages/error-translator/tsconfig.lib.json` +- `packages/error-translator/src/index.ts` +- `packages/error-translator/src/parseErrors.ts` +- `packages/error-translator/src/getImprovedMessage.ts` +- `packages/error-translator/src/translateDiagnosticMessage.ts` +- `packages/error-translator/src/generated/tsErrorMessages.json` +- `packages/error-translator/src/generated/bundleErrors.json` +- `packages/error-translator/scripts/refreshTsErrorMessages.mjs` +- `packages/error-translator/scripts/bundleErrors.mjs` +- `packages/error-translator/test/engine.test.ts` +- `packages/error-translator/vendor/matt-pocock/errors/*.md` +- `HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_SECURED_2026_06_24.md` (dieser Bericht) + +### 4.2 Wichtige aktualisierte Oberflaechen + +- `package.json` +- `tsconfig.base.json` +- `tsconfig.json` +- `.vscode/tasks.json` +- `.vscode/launch.json` +- `.vscode/settings.json` +- `apps/vscode-extension/package.json` +- `apps/vscode-extension/tsconfig.json` +- `apps/vscode-extension/tsconfig.app.json` +- `apps/vscode-extension/tsconfig.test.json` +- `apps/vscode-extension/src/diagnostics.ts` +- `apps/vscode-extension/src/provider/markdownWebviewProvider.ts` +- `apps/vscode-extension/src/provider/selectedTextHoverProvider.ts` +- `apps/vscode-extension/src/provider/webviewViewProvider.ts` +- `apps/vscode-extension/webview/index.js` +- `apps/vscode-extension/webview/style.css` +- `apps/vscode-extension/src/logger.ts` +- `packages/vscode-formatter/package.json` +- `packages/vscode-formatter/tsconfig.json` +- `packages/vscode-formatter/src/components/actions.ts` +- `packages/vscode-formatter/src/format/prettifyDiagnosticForSidebar.ts` +- `packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts` +- `README.md` +- `pnpm-lock.yaml` +- `HANDOFF_O3_O1_LOCAL_TRANSLATOR.md` +- `HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md` + +--- + +## 5. Aktueller Verifikationsstand +[INTENT: REFERENZ] + +Erfolgreich verifiziert in diesem Kontext: + +- `pnpm install` +- `pnpm exec nx sync` +- `pnpm exec nx sync:check` +- `pnpm exec nx build @pretty-ts-errors/utils` +- `pnpm exec nx build @pretty-ts-errors/formatter` +- `pnpm exec nx build @pretty-ts-errors/error-translator` +- `pnpm exec nx test @pretty-ts-errors/error-translator` +- `pnpm exec nx build @pretty-ts-errors/vscode-formatter` +- `pnpm exec tsc -p apps/vscode-extension/tsconfig.json --noEmit` +- `pnpm exec tsc -p apps/vscode-extension/tsconfig.app.json --noEmit` +- `pnpm exec tsc -p apps/vscode-extension/tsconfig.test.json --noEmit` +- `pnpm exec nx run pretty-ts-errors:typecheck` +- `pnpm exec nx run pretty-ts-errors:package` + +**Erzeugtes Artefakt:** + +- `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` + +--- + +## 6. Offene Punkte und Resume-Reihenfolge +[INTENT: SPEZIFIKATION] + +### 6.1 Noch offene fachliche Anforderungen + +1. Die Translator-Registry ist **nicht** 100% vollstaendig + - das kuratierte Korpus umfasst nur `67` Plain-English-Dateien + - es muessen weitere Error-Codes kuratiert und eingebunden werden + +2. Alle aktuellen relevanten TypeScript-Error-Codes muessen kuratierte Plain-English-Texte bekommen + - die technische Matcher-Ebene ist bereit + - die inhaltliche Registry muss nachgezogen werden + +3. Die inhaltliche 2023-Legacy-Basis darf nicht der Endzustand bleiben + - Vendor-Content ist derzeit Startbasis + - Ziel ist eine 100% aktuelle eigene Registry + +4. `trustPolicyExclude: semver@6.3.1` bleibt ein spaeter zu entfernender Fortress-Sonderfall + +### 6.2 Konkrete naechste Resume-Reihenfolge + +1. **Translator-Registry vervollstaendigen** + - alle aktuellen TS-Codes gegen die kuratierte Markdown-/JSON-Registry abgleichen + - fehlende Plain-English-Texte systematisch ergaenzen + +2. **Legacy-Reduktion der Vendor-Basis** + - Vendor-Korpus nicht nur technisch behalten, sondern inhaltlich ueberholen + +3. **Spaetere Upgrades** + - bei neuem TypeScript: + - `refreshTsErrorMessages.mjs` + - fehlende Registry-Eintraege ergaenzen + +4. **Separater optionaler Reststrang** + - `tmp/ts-error-translator` selbst haerten, falls der Benutzer auch die lokale Upstream-Referenzflaeche noch nacharbeiten will + +--- + +## 7. Resume-Hinweise fuer einen neuen Agenten +[INTENT: KONTEXT] + +Ein neuer Agent kann von diesem Stand aus direkt weiterarbeiten. + +**Wichtigste Resume-Fakten:** + +- der Workspace ist bereits auf PNPM + Nx migriert +- die Delivery-Lane ist funktional und erzeugt eine VSIX +- der lokale Translator ist als first-party Package integriert +- die O1/O3-Haertung im Produktpfad ist umgesetzt +- die technische 2026-Kompatibilitaet der TS-Matcher-Datenbank ist hergestellt +- die inhaltliche 100%-Vollstaendigkeit der Plain-English-Registry ist **noch offen** + +**Besonders wichtig fuer den Resume-Agenten:** + +- die drei bestehenden Handoff-Berichte bleiben unangetastet +- `tmp/ts-error-translator` bleibt vorerst als lokale Referenz-/Attributionsbasis erhalten +- `registrySupportsTimeField: false` ist die explizit bestaetigte Zielhaltung +- `skipTypeCheck` steht jetzt in `build` und `dev` auf `false` +- `apps/vscode-extension/tsconfig.json` ist jetzt wieder reine Koordinationsflaeche +- die eigentliche Produktrolle liegt in `tsconfig.app.json` +- die derzeit groesste offene Sache ist **nicht** mehr Root-Migration, sondern die **inhaltliche Vollstaendigkeit** der Translator-Registry + +--- + +## 8. Kurzfazit +[INTENT: KONTEXT] + +Die grossen Migrations- und Haertungsbloecke dieses Strangs sind umgesetzt: + +- PNPM Fortress Root +- Nx-Monorepo-Orchestrierung +- VS Code Extension Delivery Lane +- lokale Translator-Integration +- 2026-Refresh der Translator-Matching-Datenbasis +- O1/O3-Haertung im Produktpfad +- Korrektur der Leaf-`tsconfig`-Koordinationsrolle + +Der Workspace ist installierbar, synchronisiert, buildbar, typecheckt erfolgreich und erzeugt eine `.vsix`. + +**Nicht erledigt** ist weiterhin die inhaltliche 100%-Vollstaendigkeit der Plain-English-Translationen: + +- alle Error-Codes muessen am Ende eine kuratierte Uebersetzung erhalten +- die Registry muss 100% vollstaendig werden +- die verbleibende 2023-Legacy-Basis des Vendor-Korpus darf nicht der Endzustand bleiben + +Dieser Bericht ist als neuer vierter Workspace-Handoff gedacht und soll die drei bestehenden Handoffs nicht ersetzen, sondern ergaenzen. diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json index a25608f..8b85149 100644 --- a/apps/vscode-extension/package.json +++ b/apps/vscode-extension/package.json @@ -4,7 +4,7 @@ "type": "module", "publisher": "CyberT33N", "description": "Make TypeScript errors prettier and more human-readable in VSCode", - "version": "0.8.7", + "version": "1.0.0", "icon": "assets/icon.png", "repository": { "type": "git", @@ -50,7 +50,7 @@ "activitybar": [ { "id": "prettyTsErrors", - "title": "Pretty TypeScript Errors", + "title": "Pretty TypeScript Errors [Secured]", "icon": "./assets/ribbon.svg" } ] @@ -69,26 +69,26 @@ { "command": "prettyTsErrors.revealSelection", "title": "Reveal the given selection", - "category": "Pretty TS Errors", + "category": "Pretty TypeScript Errors [Secured]", "enablement": "!isCommandPanel" }, { "command": "prettyTsErrors.showErrorInSidebar", "title": "Show Error in Sidebar", - "category": "Pretty TS Errors", + "category": "Pretty TypeScript Errors [Secured]", "icon": "./assets/ribbon.svg", "enablement": "!isCommandPanel" }, { "command": "prettyTsErrors.pinError", "title": "Pin Error", - "category": "Pretty TS Errors", + "category": "Pretty TypeScript Errors [Secured]", "enablement": "!isCommandPanel" }, { "command": "prettyTsErrors.unpinError", "title": "Unpin Error", - "category": "Pretty TS Errors", + "category": "Pretty TypeScript Errors [Secured]", "enablement": "!isCommandPanel" } ], @@ -132,9 +132,9 @@ "yaml": "catalog:" }, "dependencies": { + "@pretty-ts-errors/error-translator": "workspace:*", "@pretty-ts-errors/formatter": "workspace:*", "@pretty-ts-errors/utils": "workspace:*", - "@pretty-ts-errors/vscode-formatter": "workspace:*", "shiki": "catalog:", "vscode-languageclient": "catalog:", "vscode-shiki-bridge": "catalog:" diff --git a/apps/vscode-extension/src/diagnostics.ts b/apps/vscode-extension/src/diagnostics.ts index 8980f83..c4d39cf 100644 --- a/apps/vscode-extension/src/diagnostics.ts +++ b/apps/vscode-extension/src/diagnostics.ts @@ -1,5 +1,4 @@ import { has } from "@pretty-ts-errors/utils"; -import { prettifyDiagnosticForHover } from "@pretty-ts-errors/vscode-formatter"; import { ExtensionContext, languages, @@ -14,8 +13,8 @@ import { type FormattedDiagnostic, } from "./formattedDiagnosticsStore"; import { logger } from "./logger"; -import { enabledCommands } from "./commands/enabledCommands"; import { toLspDiagnostic } from "./lspDiagnostic"; +import { createHoverContents } from "./hoverContent"; /** * The list of diagnostic sources that pretty-ts-errors supports @@ -80,7 +79,7 @@ export function registerOnDidChangeDiagnostics(context: ExtensionContext) { const CACHE_SIZE_MAX = 100; /** - * A local cache that maps TS diagnostics as `string` to their formatted `MarkdownString` counter part. + * A local cache keyed by diagnostic identity so noisy re-emits do not rebuild hover markdown. * @see https://github.com/CyberT33N/pretty-ts-errors/pull/62 * * One reason this cache is critical is because the TypeScript Language Features extension is very noisy and will constantly push all diagnostics for a file, @@ -90,33 +89,34 @@ const CACHE_SIZE_MAX = 100; * TODO: create a proper LRU cache, to prevent exceeding the cache size being a bottleneck * @see https://github.com/CyberT33N/pretty-ts-errors/issues/104 */ -const cache = new Map(); +const cache = new Map(); async function getFormattedDiagnostic( diagnostic: Diagnostic ): Promise { // The formatter consumes LSP diagnostics, so keep the VS Code -> LSP conversion as a local first-party boundary. const lspDiagnostic = toLspDiagnostic(diagnostic); + const cacheKey = JSON.stringify({ + code: lspDiagnostic.code ?? null, + message: diagnostic.message, + range: lspDiagnostic.range, + }); - let formattedMessage = cache.get(diagnostic.message); - if (!formattedMessage) { - const formattedDiagnostic = await prettifyDiagnosticForHover(lspDiagnostic); - const markdownString = new MarkdownString(formattedDiagnostic); - - markdownString.isTrusted = { enabledCommands }; - markdownString.supportHtml = true; - - formattedMessage = markdownString; + let formattedMessages = cache.get(cacheKey); + if (formattedMessages === undefined) { + formattedMessages = createHoverContents(lspDiagnostic); if (cache.size > CACHE_SIZE_MAX) { const firstCacheKey = cache.keys().next().value!; cache.delete(firstCacheKey); } - cache.set(diagnostic.message, formattedMessage); + cache.set(cacheKey, formattedMessages); } + const contents = formattedMessages; + return { range: diagnostic.range, - contents: [formattedMessage], + contents, lspDiagnostic, }; } diff --git a/apps/vscode-extension/src/hoverContent.ts b/apps/vscode-extension/src/hoverContent.ts new file mode 100644 index 0000000..5daf7d4 --- /dev/null +++ b/apps/vscode-extension/src/hoverContent.ts @@ -0,0 +1,124 @@ +import { translateDiagnosticMessage } from "@pretty-ts-errors/error-translator"; +import { MarkdownString } from "vscode"; +import { enabledCommands } from "./commands/enabledCommands"; +import type { PrettyTsLspDiagnostic } from "./lspDiagnostic"; + +function encodeCommandArgs(args: unknown[]): string { + return encodeURIComponent(JSON.stringify(args)); +} + +function buildCommandUri(command: string, args: unknown[]): string { + return `command:${command}?${encodeCommandArgs(args)}`; +} + +function toCommandRange(range: PrettyTsLspDiagnostic["range"]) { + return { + start: { + line: range.start.line, + character: range.start.character, + }, + end: { + line: range.end.line, + character: range.end.character, + }, + }; +} + +function codeLabel(code: PrettyTsLspDiagnostic["code"]): string { + return typeof code === "number" ? ` (TS${code})` : ""; +} + +function buildRevealLink(diagnostic: PrettyTsLspDiagnostic): string | null { + const related = diagnostic.relatedInformation?.[0]; + if ( + related === undefined || + !related.message.includes("is declared here") + ) { + return null; + } + + const args = [ + related.location.uri, + related.location.range, + ]; + + return `[Go to Symbol](${buildCommandUri( + "prettyTsErrors.revealSelection", + args, + )})`; +} + +function createBodyMarkdown( + diagnostic: PrettyTsLspDiagnostic, + debugHeader?: string, +): MarkdownString { + const markdown = new MarkdownString(); + + if (debugHeader !== undefined) { + markdown.appendMarkdown(`${debugHeader}\n\n`); + } + + markdown.appendMarkdown(`**Error${codeLabel(diagnostic.code)}**\n\n`); + markdown.appendCodeblock(diagnostic.message, "txt"); + + const translations = translateDiagnosticMessage(diagnostic.message); + if (translations.length > 0) { + markdown.appendMarkdown("\n\n**Plain English**"); + translations.forEach((translation) => { + markdown.appendMarkdown(`\n\n**TS${translation.code}**\n\n`); + if (translations.length > 1 || translation.rawError !== diagnostic.message) { + markdown.appendCodeblock(translation.rawError, "txt"); + } + markdown.appendMarkdown( + `\n${ + translation.body ?? + `No local plain-English translation is available for TS${translation.code} yet.` + }\n`, + ); + }); + } + + markdown.supportHtml = false; + return markdown; +} + +function createActionsMarkdown(diagnostic: PrettyTsLspDiagnostic): MarkdownString { + const range = toCommandRange(diagnostic.range); + const links = [ + `[Show in Sidebar](${buildCommandUri( + "prettyTsErrors.showErrorInSidebar", + [range, diagnostic.message], + )})`, + `[Pin](${buildCommandUri("prettyTsErrors.pinError", [ + range, + diagnostic.message, + ])})`, + `[Copy](${buildCommandUri("prettyTsErrors.copyError", [diagnostic.message])})`, + ]; + + const revealLink = buildRevealLink(diagnostic); + if (revealLink !== null) { + links.push(revealLink); + } + + if (typeof diagnostic.code === "number") { + links.push( + `[TS${diagnostic.code} Docs](https://typescript.tv/errors/ts${diagnostic.code})`, + ); + } + + const markdown = new MarkdownString(links.join(" | ")); + markdown.isTrusted = { enabledCommands }; + markdown.supportHtml = false; + return markdown; +} + +export function createHoverContents( + diagnostic: PrettyTsLspDiagnostic, + options?: { debugHeader?: string }, +): MarkdownString[] { + return [ + createBodyMarkdown(diagnostic, options?.debugHeader), + createActionsMarkdown(diagnostic), + ]; +} diff --git a/apps/vscode-extension/src/logger.ts b/apps/vscode-extension/src/logger.ts index a8acbb0..e98e0a5 100644 --- a/apps/vscode-extension/src/logger.ts +++ b/apps/vscode-extension/src/logger.ts @@ -12,7 +12,7 @@ function getLogger(): LogOutputChannel { if (instance !== null) { return instance; } - instance = window.createOutputChannel("Pretty TypeScript Errors", { + instance = window.createOutputChannel("Pretty TypeScript Errors [Secured]", { log: true, }); return instance; diff --git a/apps/vscode-extension/src/provider/markdownWebviewProvider.ts b/apps/vscode-extension/src/provider/markdownWebviewProvider.ts index 08a88b0..cbdb1a3 100644 --- a/apps/vscode-extension/src/provider/markdownWebviewProvider.ts +++ b/apps/vscode-extension/src/provider/markdownWebviewProvider.ts @@ -36,10 +36,14 @@ export class MarkdownWebviewProvider { }; } - createOnDidReceiveMessage() { + createOnDidReceiveMessage(onReady?: () => void) { return (message: { command: string; [key: string]: unknown }) => { if (message && message.command) { switch (message.command) { + case "ready": { + onReady?.(); + break; + } case "notify": { if (typeof message["text"] === "string") { vscode.window.showInformationMessage(message["text"]); @@ -53,14 +57,13 @@ export class MarkdownWebviewProvider { async getWebviewContent( webview: vscode.Webview, - content: string, classList: string[] = [] ): Promise { const template = await this.webviewHtmlTemplate; const html = this.patchCspSafeAttrs(template, webview); return html.replace( '
', - `
${content}
` + `
` ); } @@ -95,13 +98,11 @@ export class MarkdownWebviewProvider { content .replaceAll( "style-src http://localhost:8080", - // TODO: remove `unsafe-inline` if vscode ever fixes their styles and api injection - `style-src ${webview.cspSource} 'unsafe-inline'` + `style-src ${webview.cspSource}` ) .replaceAll( "script-src http://localhost:8080", - // TODO: remove `unsafe-inline` if vscode ever fixes their styles and api injection - `script-src ${webview.cspSource} 'unsafe-inline'` + `script-src ${webview.cspSource}` ) .replaceAll( "font-src http://localhost:8080", diff --git a/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts b/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts index fab5d39..e10611e 100644 --- a/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts +++ b/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts @@ -1,16 +1,14 @@ -import { prettifyDiagnosticForHover } from "@pretty-ts-errors/vscode-formatter"; import { Diagnostic, DiagnosticSeverity, ExtensionContext, ExtensionMode, - MarkdownString, languages, window, } from "vscode"; import { formattedDiagnosticsStore } from "../formattedDiagnosticsStore"; -import { enabledCommands } from "../commands/enabledCommands"; import { toLspDiagnostic } from "../lspDiagnostic"; +import { createHoverContents } from "../hoverContent"; /** * Register an hover provider in debug only. @@ -51,24 +49,20 @@ export function registerSelectedTextHoverProvider(context: ExtensionContext) { debugDiagnostic.code = 1337; const lspDiagnostic = toLspDiagnostic(debugDiagnostic); - - const markdown = new MarkdownString( - debugHoverHeader + (await prettifyDiagnosticForHover(lspDiagnostic)) - ); - - markdown.isTrusted = { enabledCommands }; - markdown.supportHtml = true; + const contents = createHoverContents(lspDiagnostic, { + debugHeader: debugHoverHeader, + }); formattedDiagnosticsStore.set(document.uri.fsPath, [ { range, - contents: [markdown], + contents, lspDiagnostic, }, ]); return { - contents: [markdown], + contents, }; }, } @@ -76,12 +70,4 @@ export function registerSelectedTextHoverProvider(context: ExtensionContext) { ); } -const debugHoverHeader = [ - '', - ' ', - " Formatted selected text (debug only)", - "", - "
", - "
", - "

", -].join("\n"); +const debugHoverHeader = "**Formatted selected text (debug only)**"; diff --git a/apps/vscode-extension/src/provider/sidebarViewModel.ts b/apps/vscode-extension/src/provider/sidebarViewModel.ts new file mode 100644 index 0000000..adab5cf --- /dev/null +++ b/apps/vscode-extension/src/provider/sidebarViewModel.ts @@ -0,0 +1,136 @@ +import { translateDiagnosticMessage } from "@pretty-ts-errors/error-translator"; +import type { Range } from "vscode"; +import type { FormattedDiagnostic } from "../formattedDiagnosticsStore"; + +type SidebarCommandAction = { + kind: "command"; + command: string; + args: unknown[]; + icon: string; + title: string; +}; + +type SidebarLinkAction = { + kind: "link"; + href: string; + icon: string; + title: string; +}; + +type SidebarCopyAction = { + kind: "copy"; + value: string; + icon: string; + title: string; +}; + +export type SidebarActionModel = + | SidebarCommandAction + | SidebarLinkAction + | SidebarCopyAction; + +export interface SidebarTranslationModel { + code: number; + rawError: string; + body: string | null; +} + +export interface SidebarDiagnosticModel { + code: number | null; + message: string; + actions: SidebarActionModel[]; + translations: SidebarTranslationModel[]; + note?: string; +} + +export interface SidebarViewModel { + pinned: SidebarDiagnosticModel | null; + diagnostics: SidebarDiagnosticModel[]; + emptyMessage: string; +} + +function serializeRange(range: Range) { + return { + start: { + line: range.start.line, + character: range.start.character, + }, + end: { + line: range.end.line, + character: range.end.character, + }, + }; +} + +function createRevealAction( + diagnostic: FormattedDiagnostic, +): SidebarCommandAction | null { + const related = diagnostic.lspDiagnostic.relatedInformation?.[0]; + if ( + related === undefined || + !related.message.includes("is declared here") + ) { + return null; + } + + return { + kind: "command", + command: "prettyTsErrors.revealSelection", + args: [related.location.uri, related.location.range], + icon: "codicon-go-to-file", + title: "Go to related symbol", + }; +} + +function getCodeNumber(code: FormattedDiagnostic["lspDiagnostic"]["code"]) { + return typeof code === "number" ? code : null; +} + +export function createSidebarDiagnosticModel( + diagnostic: FormattedDiagnostic, + options?: { note?: string }, +): SidebarDiagnosticModel { + const code = getCodeNumber(diagnostic.lspDiagnostic.code); + const actions: SidebarActionModel[] = [ + { + kind: "command", + command: "prettyTsErrors.pinError", + args: [serializeRange(diagnostic.range), diagnostic.lspDiagnostic.message], + icon: "codicon-pinned", + title: "Pin error", + }, + { + kind: "copy", + value: diagnostic.lspDiagnostic.message, + icon: "codicon-copy", + title: "Copy error message", + }, + ]; + + const revealAction = createRevealAction(diagnostic); + if (revealAction !== null) { + actions.push(revealAction); + } + + if (code !== null) { + actions.push({ + kind: "link", + href: `https://typescript.tv/errors/ts${code}`, + icon: "codicon-link-external", + title: `Open TS${code} documentation`, + }); + } + + const model: SidebarDiagnosticModel = { + code, + message: diagnostic.lspDiagnostic.message, + actions, + translations: translateDiagnosticMessage(diagnostic.lspDiagnostic.message), + }; + + if (options?.note !== undefined) { + model.note = options.note; + } + + return model; +} diff --git a/apps/vscode-extension/src/provider/webviewViewProvider.ts b/apps/vscode-extension/src/provider/webviewViewProvider.ts index af62833..c8b48f0 100644 --- a/apps/vscode-extension/src/provider/webviewViewProvider.ts +++ b/apps/vscode-extension/src/provider/webviewViewProvider.ts @@ -1,42 +1,16 @@ import type { ExtensionContext } from "vscode"; import * as vscode from "vscode"; -import { getTheme, getUserLangs, getUserTheme } from "vscode-shiki-bridge"; -import { - createHighlighterCore, - LanguageRegistration, - ThemeRegistration, -} from "shiki/core"; -import { createOnigurumaEngine } from "shiki/engine/oniguruma"; -import { MarkdownWebviewProvider } from "./markdownWebviewProvider"; -import { - formattedDiagnosticsStore, - type FormattedDiagnostic, -} from "../formattedDiagnosticsStore"; import { has } from "@pretty-ts-errors/utils"; -import { - prettifyDiagnosticForSidebar, - initHighlighter, -} from "@pretty-ts-errors/vscode-formatter"; +import { formattedDiagnosticsStore, type FormattedDiagnostic } from "../formattedDiagnosticsStore"; import { SUPPORTED_LANGUAGE_IDS } from "../supportedLanguageIds"; -import { logger } from "../logger"; +import { MarkdownWebviewProvider } from "./markdownWebviewProvider"; +import { createSidebarDiagnosticModel, type SidebarViewModel } from "./sidebarViewModel"; const NO_DIAGNOSTICS_MESSAGE = "Select code with an error to show the prettified diagnostic in this view."; -const SIDEBAR_CACHE_SIZE_MAX = 100; -const sidebarHtmlCache = new Map(); - type ViewMode = "cursor" | "locked"; -interface DiagnosticItem { - html: string; - range: vscode.Range; -} - -interface PinnedError { - html: string; -} - let viewProviderInstance: MarkdownWebviewViewProvider | null = null; export function getViewProvider() { @@ -62,6 +36,13 @@ function updateHasErrorsContext() { } } +function isSameDiagnostic(left: FormattedDiagnostic, right: FormattedDiagnostic) { + return ( + left.lspDiagnostic.message === right.lspDiagnostic.message && + left.range.isEqual(right.range) + ); +} + export function registerWebviewViewProvider(context: ExtensionContext) { viewProviderInstance = new MarkdownWebviewViewProvider( new MarkdownWebviewProvider(context) @@ -78,168 +59,68 @@ export function registerWebviewViewProvider(context: ExtensionContext) { updateHasErrorsContext(); } -async function diagnosticToItem( - formattedDiagnostic: FormattedDiagnostic -): Promise { - const cacheKey = formattedDiagnostic.lspDiagnostic.message; - let html = sidebarHtmlCache.get(cacheKey); - if (html === undefined) { - const renderedHtml = await prettifyDiagnosticForSidebar( - formattedDiagnostic.lspDiagnostic - ); - if (sidebarHtmlCache.size > SIDEBAR_CACHE_SIZE_MAX) { - const firstKey = sidebarHtmlCache.keys().next().value; - if (firstKey !== undefined) { - sidebarHtmlCache.delete(firstKey); - } - } - sidebarHtmlCache.set(cacheKey, renderedHtml); - html = renderedHtml; - } - - if (html === undefined) { - throw new Error("Sidebar HTML rendering returned no content."); - } - - return { - html, - range: formattedDiagnostic.range, - }; -} - -// TODO: adding a `MarkdownWebviewView` class would make this provider a lot simpler class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { private disposables = new Map(); private webview: vscode.Webview | null = null; private view: vscode.WebviewView | null = null; private mode: ViewMode = "cursor"; - private lockedContent: DiagnosticItem | null = null; - private pinnedError: PinnedError | null = null; - private lastContent: string | null = null; + private lockedContent: FormattedDiagnostic | null = null; + private pinnedError: FormattedDiagnostic | null = null; + private lastModelKey: string | null = null; private skipNextSelectionChange = false; private skipNextEditorChange = false; - private initialized = false; constructor(private readonly provider: MarkdownWebviewProvider) {} - private async ensureInitialized() { - if (this.initialized) { + async lockToDiagnostic(range: vscode.Range, message?: string) { + const activeEditor = vscode.window.activeTextEditor; + if (!activeEditor) { return; } - const isDark = - vscode.window.activeColorTheme.kind === vscode.ColorThemeKind.Dark || - vscode.window.activeColorTheme.kind === - vscode.ColorThemeKind.HighContrast; - logger.info( - `initializing highlighter with ${isDark ? "dark" : "light"} theme` + const diagnostics = + formattedDiagnosticsStore.get(activeEditor.document.uri.fsPath) ?? []; + const diagnostic = diagnostics.find( + (item) => + item.range.isEqual(range) && + (message === undefined || item.lspDiagnostic.message === message) ); - // Default to the special 'none' theme, this will still provide formatted codeblocks with readable background and text colors - // see: https://shiki.style/themes#special-themes - let theme: string = "none"; - let themes: ThemeRegistration[] = []; - let langs: LanguageRegistration[] = []; - - // If the extension is running in the local extension host, expect to be able to resolve themes and languages - if ( - this.provider.context.extension.extensionKind == vscode.ExtensionKind.UI - ) { - logger.info( - `running on the UI extension host, using vscode-shiki-bridge to load themes and language grammars` - ); - try { - [theme, themes] = await getUserTheme(); - } catch { - // User's theme not found in extension registry (e.g. custom themes). - // Fall back to a built-in VS Code theme matching the user's color theme kind. - const fallbackTheme = isDark - ? "Default Dark Modern" - : "Default Light Modern"; - logger.info( - `failed to resolve the users theme, falling back to load the ${fallbackTheme} theme` - ); - [theme, themes] = await getTheme(fallbackTheme); - } - langs = await getUserLangs(["type", "ts"]); - } else { - logger.info( - `NOT running on the UI extension host, falling back to use bundled shiki themes and language grammars` - ); - // if running in the remote host, fall back on the bundles vscode themes from shiki - const bundledTheme = isDark - ? await import("shiki/themes/dark-plus.mjs") - : await import("shiki/themes/light-plus.mjs"); - theme = bundledTheme.default.name!; - themes = [bundledTheme.default]; - - // for typescript, fall back to the bundled grammar from shiki - const bundledTypeScriptGrammar = - await import("shiki/langs/typescript.mjs"); - langs = [ - ...bundledTypeScriptGrammar.default, - // 'type' will still resolve because its part of the pretty-ts-errors extension - ...(await getUserLangs(["type"])), - ]; + if (!diagnostic) { + return; } - const highlighter = await createHighlighterCore({ - themes, - langs, - engine: createOnigurumaEngine(import("shiki/wasm")), - }); - initHighlighter({ - codeToHtml: (code: string, options: { lang: string }) => - highlighter.codeToHtml(code, { ...options, theme }), - }); - this.initialized = true; - } - - async lockToDiagnostic(range: vscode.Range, message?: string) { - const activeEditor = vscode.window.activeTextEditor; - if (activeEditor) { - const diagnostics = - formattedDiagnosticsStore.get(activeEditor.document.uri.fsPath) ?? []; - const diagnostic = diagnostics.find( - (diagnostic) => - diagnostic.range.isEqual(range) && - (!message || diagnostic.lspDiagnostic.message === message) - ); - if (diagnostic) { - await this.ensureInitialized(); - this.mode = "locked"; - this.lockedContent = await diagnosticToItem(diagnostic); - this.skipNextSelectionChange = true; - this.skipNextEditorChange = true; - this.lastContent = null; - if (this.webview) { - this.refresh(this.webview); - } - } + this.mode = "locked"; + this.lockedContent = diagnostic; + this.skipNextSelectionChange = true; + this.skipNextEditorChange = true; + this.lastModelKey = null; + if (this.webview) { + this.refresh(this.webview); } } async pinDiagnostic(range: vscode.Range, message?: string) { const activeEditor = vscode.window.activeTextEditor; - if (!activeEditor) return; + if (!activeEditor) { + return; + } const diagnostics = formattedDiagnosticsStore.get(activeEditor.document.uri.fsPath) ?? []; const diagnostic = diagnostics.find( - (diagnostic) => - diagnostic.range.isEqual(range) && - (!message || diagnostic.lspDiagnostic.message === message) + (item) => + item.range.isEqual(range) && + (message === undefined || item.lspDiagnostic.message === message) ); - if (!diagnostic) return; - - await this.ensureInitialized(); - const item = await diagnosticToItem(diagnostic); + if (!diagnostic) { + return; + } - // Toggle: if already pinned, unpin instead - if (this.pinnedError && this.pinnedError.html === item.html) { + if (this.pinnedError && isSameDiagnostic(this.pinnedError, diagnostic)) { this.pinnedError = null; } else { - this.pinnedError = { html: item.html }; + this.pinnedError = diagnostic; } if (this.webview) { @@ -260,23 +141,21 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { ): Promise { this.webview = webviewView.webview; this.view = webviewView; - - const initialContent = await this.getActiveContentHtml(); + webviewView.webview.options = this.provider.getWebviewOptions(); webviewView.webview.html = await this.provider.getWebviewContent( webviewView.webview, - initialContent, ["webview-panel"] ); const disposables = this.ensureDisposables(webviewView); - webviewView.webview.options = this.provider.getWebviewOptions(); disposables.push( webviewView.webview.onDidReceiveMessage( - this.provider.createOnDidReceiveMessage() + this.provider.createOnDidReceiveMessage(() => { + void this.refresh(webviewView.webview); + }) ), vscode.languages.onDidChangeDiagnostics(() => - // TODO: since `onDidChangeDiagnostics` fires often, we should try and avoid calling refresh based on the event uris this.refresh(webviewView.webview) ), vscode.window.onDidChangeActiveTextEditor((editor) => { @@ -293,8 +172,6 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { }), vscode.window.onDidChangeTextEditorSelection((event) => { const document = event.textEditor.document; - // this event fires often, including selecting text in output windows and terminal windows - // avoid doing unnessesary work, because it will cause noticable delays in the UI if (!has(SUPPORTED_LANGUAGE_IDS, document.languageId)) { return; } @@ -316,9 +193,11 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { }) ); + void this.refresh(webviewView.webview); + webviewView.onDidDispose(() => { - const disposables = this.disposables.get(webviewView); - disposables?.forEach((disposable) => disposable.dispose()); + const viewDisposables = this.disposables.get(webviewView); + viewDisposables?.forEach((disposable) => disposable.dispose()); this.disposables.delete(webviewView); this.webview = null; this.view = null; @@ -334,14 +213,7 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { return disposables; } - private async getActiveContentHtml(): Promise { - const items = await this.getActiveDiagnosticItems(); - if (items.length === 0) return NO_DIAGNOSTICS_MESSAGE; - return items.map((item) => item.html).join("
"); - } - - private async getActiveDiagnosticItems(): Promise { - await this.ensureInitialized(); + private getActiveDiagnosticItems(): FormattedDiagnostic[] { switch (this.mode) { case "cursor": return this.getCursorDiagnosticItems(); @@ -350,65 +222,56 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { } } - private async getCursorDiagnosticItems(): Promise { + private getCursorDiagnosticItems(): FormattedDiagnostic[] { const activeEditor = vscode.window.activeTextEditor; const selection = activeEditor?.selection; - if (!activeEditor || !selection) return []; + if (!activeEditor || !selection) { + return []; + } const diagnostics = formattedDiagnosticsStore.get(activeEditor.document.uri.fsPath) ?? []; - const selectedDiagnostics = diagnostics.filter( + return diagnostics.filter( (diagnostic) => diagnostic.range.intersection(selection) !== undefined ); - return Promise.all(selectedDiagnostics.map((d) => diagnosticToItem(d))); + } + + private createViewModel(items: FormattedDiagnostic[]): SidebarViewModel { + const pinned = + this.pinnedError === null + ? null + : createSidebarDiagnosticModel(this.pinnedError); + + const diagnostics = items.map((item) => { + const note = + this.pinnedError !== null && isSameDiagnostic(this.pinnedError, item) + ? "This item is pinned on top." + : undefined; + + return note === undefined + ? createSidebarDiagnosticModel(item) + : createSidebarDiagnosticModel(item, { note }); + }); + + return { + pinned, + diagnostics, + emptyMessage: NO_DIAGNOSTICS_MESSAGE, + }; } async refresh(webview: vscode.Webview) { - if (this.view && !this.view.visible) return; - - const sections: string[] = []; - - // Render pinned error section - if (this.pinnedError) { - sections.push( - `
` + - `
` + - `` + - `` + - ` Pinned error` + - `` + - `` + - `
` + - this.pinnedError.html + - `
` - ); - sections.push(`
`); + if (this.view && !this.view.visible) { + return; } - // Render active diagnostic items - const items = await this.getActiveDiagnosticItems(); - if (items.length === 0) { - sections.push(NO_DIAGNOSTICS_MESSAGE); - } else { - for (let i = 0; i < items.length; i++) { - if (i > 0) sections.push(`
`); - const item = items[i]!; - if (this.pinnedError && item.html === this.pinnedError.html) { - sections.push( - `
` + - `This item is pinned on top.` + - `
` - ); - } else { - sections.push(`
${item.html}
`); - } - } + const model = this.createViewModel(this.getActiveDiagnosticItems()); + const modelKey = JSON.stringify(model); + if (modelKey === this.lastModelKey) { + return; } - const fullHtml = sections.join(""); - if (fullHtml !== this.lastContent) { - webview.postMessage({ command: "update-content", html: fullHtml }); - this.lastContent = fullHtml; - } + webview.postMessage({ command: "render-sidebar", model }); + this.lastModelKey = modelKey; } } diff --git a/apps/vscode-extension/tsconfig.app.json b/apps/vscode-extension/tsconfig.app.json index 806147a..a9bbbf7 100644 --- a/apps/vscode-extension/tsconfig.app.json +++ b/apps/vscode-extension/tsconfig.app.json @@ -10,14 +10,14 @@ "include": ["src/**/*.ts", "src/globals.d.ts"], "exclude": ["src/test/**"], "references": [ - { - "path": "../../packages/vscode-formatter/tsconfig.lib.json" - }, { "path": "../../packages/utils/tsconfig.lib.json" }, { "path": "../../packages/formatter/tsconfig.lib.json" + }, + { + "path": "../../packages/error-translator/tsconfig.lib.json" } ] } diff --git a/apps/vscode-extension/tsconfig.json b/apps/vscode-extension/tsconfig.json index 02c89dc..410930c 100644 --- a/apps/vscode-extension/tsconfig.json +++ b/apps/vscode-extension/tsconfig.json @@ -1,23 +1,12 @@ { "extends": "../../tsconfig.base.json", - "compilerOptions": { - "module": "nodenext", - "target": "ESNext", - "rootDir": "src", - "outDir": "out", - "moduleResolution": "nodenext", - "types": ["node"] - }, - "include": ["src/**/*.ts"], + "files": [], "references": [ { - "path": "../../packages/vscode-formatter" + "path": "./tsconfig.app.json" }, { - "path": "../../packages/utils" - }, - { - "path": "../../packages/formatter" + "path": "./tsconfig.test.json" } ] } diff --git a/apps/vscode-extension/webview/index.html b/apps/vscode-extension/webview/index.html index 98dca9b..5cf7301 100644 --- a/apps/vscode-extension/webview/index.html +++ b/apps/vscode-extension/webview/index.html @@ -10,7 +10,7 @@ data-csp-replace-content content="default-src 'none'; script-src http://localhost:8080; style-src http://localhost:8080; font-src http://localhost:8080;" /> - Pretty TS Errors - Markdown Preview + Pretty TypeScript Errors [Secured] - Markdown Preview { const message = event.data; - switch (message.command) { - case "update-content": { - if ($content) { - $content.innerHTML = message.html; - } - } + if (message?.command === "render-sidebar" && $content) { + renderSidebar($content, /** @type {SidebarViewModel} */ (message.model)); } }); window.document.addEventListener("click", (event) => { - const element = /** @type {HTMLElement} */ (event.target); - if ( - element.tagName.toLowerCase() === "button" && - element.hasAttribute("data-copy-content") - ) { - handleCopyContentEvent(element); + const target = event.target; + if (!(target instanceof HTMLElement)) { + return; + } + + const copyButton = target.closest("[data-copy-content]"); + if (copyButton instanceof HTMLElement) { + const content = copyButton.dataset.copyContent; + if (typeof content === "string" && content.length > 0) { + void copyToClipboard(content); + } } }); +api.ready(); + /** - * - * @param {HTMLElement} element + * @param {HTMLElement} container + * @param {SidebarViewModel} model */ -function handleCopyContentEvent(element) { - const parent = element.parentElement; - if (parent?.classList.contains("code-container")) { - const pre = parent.querySelector("pre"); - const code = pre?.querySelector("code"); - const content = code?.innerText; - if (content) { - copyToClipboard(content); +function renderSidebar(container, model) { + container.replaceChildren(); + + if (model.pinned !== null) { + container.appendChild(createPinnedSection(model.pinned)); + } + + if (model.diagnostics.length === 0) { + if (model.pinned === null) { + const empty = document.createElement("p"); + empty.className = "sidebar-empty-state"; + empty.textContent = model.emptyMessage; + container.appendChild(empty); } + return; } + + model.diagnostics.forEach((diagnostic, index) => { + if (index > 0 || model.pinned !== null) { + container.appendChild(document.createElement("hr")); + } + container.appendChild(createDiagnosticCard(diagnostic)); + }); +} + +/** + * @param {SidebarDiagnosticModel} diagnostic + */ +function createPinnedSection(diagnostic) { + const section = document.createElement("section"); + section.className = "pinned-section"; + + const header = document.createElement("div"); + header.className = "pinned-header"; + + const label = document.createElement("span"); + label.className = "pinned-label"; + label.appendChild(createCodicon("codicon-pinned")); + label.append(" Pinned error"); + + header.appendChild(label); + header.appendChild( + createCommandLink( + "prettyTsErrors.unpinError", + [], + "Unpin error", + "codicon-close", + "unpin-button", + ), + ); + + section.appendChild(header); + section.appendChild(createDiagnosticCard(diagnostic)); + + return section; +} + +/** + * @param {SidebarDiagnosticModel} diagnostic + */ +function createDiagnosticCard(diagnostic) { + const card = document.createElement("article"); + card.className = "diagnostic-card"; + + const header = document.createElement("div"); + header.className = "diagnostic-header"; + + const title = document.createElement("div"); + title.className = "diagnostic-title"; + title.textContent = + diagnostic.code === null ? "Error" : `Error (TS${diagnostic.code})`; + header.appendChild(title); + + const actions = document.createElement("div"); + actions.className = "diagnostic-actions"; + diagnostic.actions.forEach((action) => { + actions.appendChild(createActionElement(action)); + }); + header.appendChild(actions); + + card.appendChild(header); + + if (typeof diagnostic.note === "string" && diagnostic.note.length > 0) { + const note = document.createElement("p"); + note.className = "diagnostic-note"; + note.textContent = diagnostic.note; + card.appendChild(note); + } + + const codeContainer = document.createElement("div"); + codeContainer.className = "code-container"; + + const copyButton = document.createElement("button"); + copyButton.className = "copy-button"; + copyButton.type = "button"; + copyButton.title = "Copy error message"; + copyButton.dataset.copyContent = diagnostic.message; + copyButton.appendChild(createCodicon("codicon-copy")); + codeContainer.appendChild(copyButton); + + const pre = document.createElement("pre"); + const code = document.createElement("code"); + code.textContent = diagnostic.message; + pre.appendChild(code); + codeContainer.appendChild(pre); + card.appendChild(codeContainer); + + if (diagnostic.translations.length > 0) { + card.appendChild( + createTranslationsSection(diagnostic.translations, diagnostic.message), + ); + } + + return card; +} + +/** + * @param {SidebarTranslationModel[]} translations + * @param {string} originalMessage + */ +function createTranslationsSection(translations, originalMessage) { + const section = document.createElement("section"); + section.className = "translation-section"; + + translations.forEach((translation) => { + const card = document.createElement("div"); + card.className = "translation-card"; + + const title = document.createElement("div"); + title.className = "translation-title"; + title.textContent = `Plain English · TS${translation.code}`; + card.appendChild(title); + + if (translations.length > 1 || translation.rawError !== originalMessage) { + const pre = document.createElement("pre"); + const code = document.createElement("code"); + code.textContent = translation.rawError; + pre.appendChild(code); + card.appendChild(pre); + } + + if (translation.body === null) { + const fallback = document.createElement("p"); + fallback.textContent = `No local plain-English translation is available for TS${translation.code} yet.`; + card.appendChild(fallback); + } else { + appendMarkdownParagraphs(card, translation.body); + } + + section.appendChild(card); + }); + + return section; +} + +/** + * @param {HTMLElement} container + * @param {string} markdown + */ +function appendMarkdownParagraphs(container, markdown) { + const paragraphs = markdown.split(/\r?\n\r?\n/gu).filter(Boolean); + paragraphs.forEach((paragraph) => { + const element = document.createElement("p"); + const lines = paragraph.split(/\r?\n/gu); + lines.forEach((line, index) => { + element.appendChild(createInlineMarkdownFragment(line)); + if (index < lines.length - 1) { + element.appendChild(document.createElement("br")); + } + }); + container.appendChild(element); + }); +} + +/** + * @param {string} text + */ +function createInlineMarkdownFragment(text) { + const fragment = document.createDocumentFragment(); + const tokenPattern = /\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)|`([^`]+)`/gu; + let lastIndex = 0; + + for (const match of text.matchAll(tokenPattern)) { + const matchIndex = match.index ?? 0; + if (matchIndex > lastIndex) { + fragment.append(text.slice(lastIndex, matchIndex)); + } + + const [, linkLabel, linkHref, codeText] = match; + if (typeof linkLabel === "string" && typeof linkHref === "string") { + const link = document.createElement("a"); + link.href = linkHref; + link.textContent = linkLabel; + fragment.appendChild(link); + } else if (typeof codeText === "string") { + const code = document.createElement("code"); + code.textContent = codeText; + fragment.appendChild(code); + } + + lastIndex = matchIndex + match[0].length; + } + + if (lastIndex < text.length) { + fragment.append(text.slice(lastIndex)); + } + + return fragment; +} + +/** + * @param {SidebarActionModel} action + */ +function createActionElement(action) { + switch (action.kind) { + case "command": + return createCommandLink(action.command, action.args, action.title, action.icon); + case "link": + return createExternalLink(action.href, action.title, action.icon); + case "copy": + return createCopyButton(action.value, action.title, action.icon); + } +} + +/** + * @param {string} command + * @param {unknown[]} args + * @param {string} title + * @param {string} icon + * @param {string} [extraClassName] + */ +function createCommandLink(command, args, title, icon, extraClassName = "") { + const link = document.createElement("a"); + link.href = `command:${command}?${encodeURIComponent(JSON.stringify(args))}`; + link.title = title; + link.className = ["action-link", extraClassName].filter(Boolean).join(" "); + link.appendChild(createCodicon(icon)); + return link; +} + +/** + * @param {string} href + * @param {string} title + * @param {string} icon + */ +function createExternalLink(href, title, icon) { + const link = document.createElement("a"); + link.href = href; + link.title = title; + link.className = "action-link"; + link.appendChild(createCodicon(icon)); + return link; +} + +/** + * @param {string} value + * @param {string} title + * @param {string} icon + */ +function createCopyButton(value, title, icon) { + const button = document.createElement("button"); + button.type = "button"; + button.title = title; + button.className = "action-button"; + button.dataset.copyContent = value; + button.appendChild(createCodicon(icon)); + return button; +} + +/** + * @param {string} iconClass + */ +function createCodicon(iconClass) { + const icon = document.createElement("span"); + icon.className = `codicon ${iconClass}`; + return icon; } /** - * Copy `text` to the user's clipboard * @param {string} text */ async function copyToClipboard(text) { diff --git a/apps/vscode-extension/webview/style.css b/apps/vscode-extension/webview/style.css index 56275ec..cf65ebb 100644 --- a/apps/vscode-extension/webview/style.css +++ b/apps/vscode-extension/webview/style.css @@ -12,21 +12,6 @@ body { padding: 0 12px; } -/* Tables from identSentences */ -#content table { - width: 100%; -} - -#content table td:first-child { - white-space: nowrap; -} - -#content table td:last-child { - width: 100%; - max-width: 0; - word-break: break-word; -} - h1, h2, h3, @@ -93,6 +78,76 @@ pre code { background: var(--vscode-button-hoverBackground); } +.diagnostic-card { + padding: 4px 0 12px; +} + +.diagnostic-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + margin-bottom: 8px; +} + +.diagnostic-title { + color: #f96363; + font-weight: 600; +} + +.diagnostic-actions { + display: flex; + align-items: center; + gap: 8px; +} + +.action-link, +.action-button { + display: inline-flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + border-radius: 4px; + color: var(--vscode-icon-foreground); + background: transparent; + border: none; + cursor: pointer; + text-decoration: none; +} + +.action-link:hover, +.action-button:hover, +.unpin-button:hover { + background: var(--vscode-toolbar-hoverBackground, rgba(128, 128, 128, 0.12)); +} + +.diagnostic-note { + color: var(--vscode-descriptionForeground); + font-style: italic; + margin: 0 0 8px; +} + +.sidebar-empty-state { + color: var(--vscode-descriptionForeground); +} + +.translation-section { + padding-top: 12px; +} + +.translation-card { + margin-top: 12px; + padding: 12px; + border: 1px solid var(--vscode-panel-border); + border-radius: 6px; +} + +.translation-title { + font-weight: 600; + margin-bottom: 8px; +} + #content a { text-decoration: none; } diff --git a/packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts b/packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts index 751538d..fafa76c 100644 --- a/packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts +++ b/packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts @@ -1,45 +1,111 @@ -import { createErrorMessagePrettifier } from "@pretty-ts-errors/formatter"; +import { translateDiagnosticMessage } from "@pretty-ts-errors/error-translator"; import { Diagnostic } from "vscode-languageserver-types"; -import { - divider, - showErrorInSidebarLink, - pinErrorLink, - copyErrorLink, - errorCodeExplanationLink, -} from "../components/actions"; -import { errorTitle } from "../components/errorTitle"; -import { miniLine } from "../components/miniLine"; -import { d } from "@pretty-ts-errors/utils"; -import { embedSymbolLinks } from "./embedSymbolLinks"; -import { identSentences } from "./identSentences"; -import { hoverCodeBlock } from "../components/hoverCodeBlock"; - -const prettifyErrorMessageForHover = - createErrorMessagePrettifier(hoverCodeBlock); +import { URI } from "vscode-uri"; + +function encodeCommandArgs(args: unknown[]): string { + return encodeURIComponent(JSON.stringify(args)); +} + +function buildCommandUri(command: string, args: unknown[]): string { + return `command:${command}?${encodeCommandArgs(args)}`; +} + +function toCommandRange(range: Diagnostic["range"]) { + return { + start: { + line: range.start.line, + character: range.start.character, + }, + end: { + line: range.end.line, + character: range.end.character, + }, + }; +} + +function codeLabel(code: Diagnostic["code"]): string { + return typeof code === "number" ? ` (TS${code})` : ""; +} + +function buildRevealLink(diagnostic: Diagnostic): string | null { + const related = diagnostic.relatedInformation?.[0]; + if ( + related === undefined || + !related.message.includes("is declared here") + ) { + return null; + } + + const args = [ + URI.parse(related.location.uri).toString(), + related.location.range, + ]; + + return `[Go to Symbol](${buildCommandUri( + "prettyTsErrors.revealSelection", + args, + )})`; +} /** * Prettify a diagnostic for display in hover tooltips. - * Uses markdown fenced code blocks (required by VS Code's MarkdownString). + * Uses plain markdown only, so the extension does not need `supportHtml`. */ export async function prettifyDiagnosticForHover( diagnostic: Diagnostic ): Promise { - const newDiagnostic = embedSymbolLinks(diagnostic); - const identedSentences = identSentences(newDiagnostic.message); - const prettifiedMessage = - await prettifyErrorMessageForHover(identedSentences); - - return d /*html*/ ` - ${errorTitle( - newDiagnostic.code, - d`${showErrorInSidebarLink(newDiagnostic.range, diagnostic.message)} ${divider} - ${pinErrorLink(newDiagnostic.range, diagnostic.message)} ${divider} - ${copyErrorLink(newDiagnostic.message)} ${divider} - ${errorCodeExplanationLink(newDiagnostic.code)}`, - miniLine - )} - - ${prettifiedMessage} - - `; + const range = toCommandRange(diagnostic.range); + const commandLinks = [ + `[Show in Sidebar](${buildCommandUri( + "prettyTsErrors.showErrorInSidebar", + [range, diagnostic.message], + )})`, + `[Pin](${buildCommandUri("prettyTsErrors.pinError", [ + range, + diagnostic.message, + ])})`, + `[Copy](${buildCommandUri("prettyTsErrors.copyError", [diagnostic.message])})`, + ]; + + const revealLink = buildRevealLink(diagnostic); + if (revealLink !== null) { + commandLinks.push(revealLink); + } + + if (typeof diagnostic.code === "number") { + commandLinks.push( + `[TS${diagnostic.code} Docs](https://typescript.tv/errors/ts${diagnostic.code})`, + ); + } + + const sections = [ + `**Error${codeLabel(diagnostic.code)}**`, + "", + commandLinks.join(" | "), + "", + "```txt", + diagnostic.message, + "```", + ]; + + const translations = translateDiagnosticMessage(diagnostic.message); + if (translations.length > 0) { + sections.push("", "**Plain English**"); + + translations.forEach((translation) => { + if (translations.length > 1 || translation.rawError !== diagnostic.message) { + sections.push("", `**TS${translation.code}**`, "", "```txt", translation.rawError, "```"); + } else { + sections.push("", `**TS${translation.code}**`); + } + + sections.push( + "", + translation.body ?? + `No local plain-English translation is available for TS${translation.code} yet.`, + ); + }); + } + + return sections.join("\n"); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 718de68..5c1ebc3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -333,15 +333,15 @@ importers: apps/vscode-extension: dependencies: + '@pretty-ts-errors/error-translator': + specifier: workspace:* + version: link:../../packages/error-translator '@pretty-ts-errors/formatter': specifier: workspace:* version: link:../../packages/formatter '@pretty-ts-errors/utils': specifier: workspace:* version: link:../../packages/utils - '@pretty-ts-errors/vscode-formatter': - specifier: workspace:* - version: link:../../packages/vscode-formatter shiki: specifier: 'catalog:' version: 3.13.0 From 1252709d5f9ce41c82af5e140754b19fb6494180 Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Wed, 24 Jun 2026 17:13:58 +0200 Subject: [PATCH 03/13] backup --- apps/vscode-extension/src/hoverContent.ts | 9 +- .../src/provider/sidebarViewModel.ts | 2 +- apps/vscode-extension/webview/index.js | 19 +- packages/error-translator/project.json | 22 +- .../error-translator/scripts/bundleErrors.mjs | 112 +- .../scripts/validateContractData.mjs | 169 + .../src/generated/bundleErrors.json | 15002 +++++++++++++++- packages/error-translator/src/parseErrors.ts | 42 +- .../src/translateDiagnosticMessage.ts | 40 +- packages/error-translator/test/engine.test.ts | 21 +- .../test/translationContract.test.ts | 144 + .../vendor/matt-pocock/errors/1155.md | 4 +- .../vendor/matt-pocock/errors/1208.md | 5 - .../vendor/matt-pocock/errors/2355.md | 4 +- .../vendor/matt-pocock/errors/2414.md | 2 +- .../vendor/matt-pocock/errors/2590.md | 4 +- .../vendor/matt-pocock/errors/6244.md | 5 - .../src/format/prettifyDiagnosticForHover.ts | 8 +- .../format/renderPlainEnglishTranslations.ts | 7 +- 19 files changed, 15363 insertions(+), 258 deletions(-) create mode 100644 packages/error-translator/scripts/validateContractData.mjs create mode 100644 packages/error-translator/test/translationContract.test.ts delete mode 100644 packages/error-translator/vendor/matt-pocock/errors/1208.md delete mode 100644 packages/error-translator/vendor/matt-pocock/errors/6244.md diff --git a/apps/vscode-extension/src/hoverContent.ts b/apps/vscode-extension/src/hoverContent.ts index 5daf7d4..2dfff12 100644 --- a/apps/vscode-extension/src/hoverContent.ts +++ b/apps/vscode-extension/src/hoverContent.ts @@ -63,18 +63,13 @@ function createBodyMarkdown( const translations = translateDiagnosticMessage(diagnostic.message); if (translations.length > 0) { - markdown.appendMarkdown("\n\n**Plain English**"); + markdown.appendMarkdown("\n\n**Local explanation**"); translations.forEach((translation) => { markdown.appendMarkdown(`\n\n**TS${translation.code}**\n\n`); if (translations.length > 1 || translation.rawError !== diagnostic.message) { markdown.appendCodeblock(translation.rawError, "txt"); } - markdown.appendMarkdown( - `\n${ - translation.body ?? - `No local plain-English translation is available for TS${translation.code} yet.` - }\n`, - ); + markdown.appendMarkdown(`\n${translation.body}\n`); }); } diff --git a/apps/vscode-extension/src/provider/sidebarViewModel.ts b/apps/vscode-extension/src/provider/sidebarViewModel.ts index adab5cf..aaf43a9 100644 --- a/apps/vscode-extension/src/provider/sidebarViewModel.ts +++ b/apps/vscode-extension/src/provider/sidebarViewModel.ts @@ -32,7 +32,7 @@ export type SidebarActionModel = export interface SidebarTranslationModel { code: number; rawError: string; - body: string | null; + body: string; } export interface SidebarDiagnosticModel { diff --git a/apps/vscode-extension/webview/index.js b/apps/vscode-extension/webview/index.js index 060afeb..5fd56b1 100644 --- a/apps/vscode-extension/webview/index.js +++ b/apps/vscode-extension/webview/index.js @@ -22,7 +22,7 @@ * @typedef {{ * code: number; * rawError: string; - * body: string | null; + * body: string; * }} SidebarTranslationModel * * @typedef {{ @@ -41,9 +41,10 @@ */ const api = (function () { + const acquireVsCodeApiFn = Reflect.get(globalThis, "acquireVsCodeApi"); const vscode = - typeof acquireVsCodeApi === "function" - ? acquireVsCodeApi() + typeof acquireVsCodeApiFn === "function" + ? acquireVsCodeApiFn() : { /** * @param {unknown} message @@ -70,7 +71,7 @@ const $content = window.document.querySelector("#content"); window.addEventListener("message", (event) => { const message = event.data; - if (message?.command === "render-sidebar" && $content) { + if (message?.command === "render-sidebar" && $content instanceof HTMLElement) { renderSidebar($content, /** @type {SidebarViewModel} */ (message.model)); } }); @@ -226,7 +227,7 @@ function createTranslationsSection(translations, originalMessage) { const title = document.createElement("div"); title.className = "translation-title"; - title.textContent = `Plain English · TS${translation.code}`; + title.textContent = `Local explanation · TS${translation.code}`; card.appendChild(title); if (translations.length > 1 || translation.rawError !== originalMessage) { @@ -237,13 +238,7 @@ function createTranslationsSection(translations, originalMessage) { card.appendChild(pre); } - if (translation.body === null) { - const fallback = document.createElement("p"); - fallback.textContent = `No local plain-English translation is available for TS${translation.code} yet.`; - card.appendChild(fallback); - } else { - appendMarkdownParagraphs(card, translation.body); - } + appendMarkdownParagraphs(card, translation.body); section.appendChild(card); }); diff --git a/packages/error-translator/project.json b/packages/error-translator/project.json index c2f7a1a..f568f78 100644 --- a/packages/error-translator/project.json +++ b/packages/error-translator/project.json @@ -13,6 +13,18 @@ "command": "node scripts/refreshTsErrorMessages.mjs" } }, + "refresh-contract-data": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "cwd": "packages/error-translator", + "commands": [ + "node scripts/refreshTsErrorMessages.mjs", + "node scripts/bundleErrors.mjs" + ], + "parallel": false + } + }, "bundle-data": { "executor": "nx:run-commands", "cache": false, @@ -21,9 +33,17 @@ "command": "node scripts/bundleErrors.mjs" } }, + "validate-contract-data": { + "executor": "nx:run-commands", + "cache": false, + "options": { + "cwd": "packages/error-translator", + "command": "node scripts/validateContractData.mjs" + } + }, "build": { "executor": "@nx/js:tsc", - "dependsOn": ["bundle-data", "^build"], + "dependsOn": ["validate-contract-data", "^build"], "outputs": ["{workspaceRoot}/packages/error-translator/dist"], "options": { "main": "packages/error-translator/src/index.ts", diff --git a/packages/error-translator/scripts/bundleErrors.mjs b/packages/error-translator/scripts/bundleErrors.mjs index 25f9358..b8e4228 100644 --- a/packages/error-translator/scripts/bundleErrors.mjs +++ b/packages/error-translator/scripts/bundleErrors.mjs @@ -1,7 +1,11 @@ +import { createRequire } from "node:module"; import { mkdir, readdir, readFile, writeFile } from "node:fs/promises"; import path from "node:path"; import { fileURLToPath } from "node:url"; +const require = createRequire(import.meta.url); +const ts = require("typescript"); + const scriptDir = path.dirname(fileURLToPath(import.meta.url)); const packageRoot = path.resolve(scriptDir, ".."); const errorsDir = path.join(packageRoot, "vendor", "matt-pocock", "errors"); @@ -20,15 +24,65 @@ function parseTranslationMarkdown(markdown, fileName) { throw new Error(`Missing translation body in ${fileName}.`); } - return { body }; + const originalMatch = /^original:\s*(.+)$/mu.exec(match[1]); + if (originalMatch === null) { + throw new Error(`Missing original diagnostic message in ${fileName}.`); + } + + return { + body, + original: unwrapQuotedValue(originalMatch[1].trim()), + }; } -async function bundleErrors() { +function unwrapQuotedValue(value) { + if ( + (value.startsWith('"') && value.endsWith('"')) || + (value.startsWith("'") && value.endsWith("'")) + ) { + return value.slice(1, -1); + } + + return value; +} + +function getCategoryName(category) { + const categoryName = ts.DiagnosticCategory?.[category]; + return typeof categoryName === "string" ? categoryName : "Error"; +} + +function buildFallbackBody(diagnostic) { + const categoryName = getCategoryName(diagnostic.category).toLowerCase("en"); + + switch (categoryName) { + case "suggestion": + return `TypeScript suggests: ${diagnostic.message}`; + case "message": + return `TypeScript reports: ${diagnostic.message}`; + default: + return `TypeScript reports this error: ${diagnostic.message}`; + } +} + +function getCurrentDiagnostics() { + return Object.values(ts.Diagnostics) + .filter((diagnostic) => { + return ( + typeof diagnostic === "object" && + diagnostic !== null && + typeof diagnostic.code === "number" && + typeof diagnostic.message === "string" + ); + }) + .sort((left, right) => left.code - right.code); +} + +async function loadCuratedTranslations() { const files = (await readdir(errorsDir)) .filter((file) => file.endsWith(".md")) .sort((left, right) => left.localeCompare(right, "en")); - const json = {}; + const curatedTranslationsByCode = new Map(); for (const fileName of files) { const code = Number(path.parse(fileName).name); @@ -37,11 +91,55 @@ async function bundleErrors() { } const markdown = await readFile(path.join(errorsDir, fileName), "utf8"); - const { body } = parseTranslationMarkdown(markdown, fileName); + const translation = parseTranslationMarkdown(markdown, fileName); + + if (curatedTranslationsByCode.has(code)) { + throw new Error(`Duplicate curated translation for TS${code}.`); + } + + curatedTranslationsByCode.set(code, { + ...translation, + fileName, + }); + } + + return curatedTranslationsByCode; +} + +async function bundleErrors() { + const diagnostics = getCurrentDiagnostics(); + const diagnosticsByCode = new Map( + diagnostics.map((diagnostic) => [diagnostic.code, diagnostic]), + ); + const curatedTranslationsByCode = await loadCuratedTranslations(); + + const json = {}; + + for (const [code, translation] of curatedTranslationsByCode) { + if (!diagnosticsByCode.has(code)) { + throw new Error( + `Curated translation ${translation.fileName} targets removed or unknown TS${code}.`, + ); + } + } + + for (const diagnostic of diagnostics) { + const curatedTranslation = curatedTranslationsByCode.get(diagnostic.code); + if ( + curatedTranslation !== undefined && + curatedTranslation.original !== diagnostic.message + ) { + throw new Error( + `Curated translation ${curatedTranslation.fileName} is stale for TS${diagnostic.code}. Expected "${diagnostic.message}" but found "${curatedTranslation.original}".`, + ); + } - json[String(code)] = { - body, - code, + json[String(diagnostic.code)] = { + body: curatedTranslation?.body ?? buildFallbackBody(diagnostic), + category: getCategoryName(diagnostic.category), + code: diagnostic.code, + message: diagnostic.message, + source: curatedTranslation === undefined ? "generated" : "curated", }; } diff --git a/packages/error-translator/scripts/validateContractData.mjs b/packages/error-translator/scripts/validateContractData.mjs new file mode 100644 index 0000000..733ed43 --- /dev/null +++ b/packages/error-translator/scripts/validateContractData.mjs @@ -0,0 +1,169 @@ +import { createRequire } from "node:module"; +import { readdir, readFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const require = createRequire(import.meta.url); +const ts = require("typescript"); + +const scriptDir = path.dirname(fileURLToPath(import.meta.url)); +const packageRoot = path.resolve(scriptDir, ".."); +const curatedErrorsDir = path.join(packageRoot, "vendor", "matt-pocock", "errors"); +const generatedDir = path.join(packageRoot, "src", "generated"); +const bundleFile = path.join(generatedDir, "bundleErrors.json"); +const tsErrorMessagesFile = path.join(generatedDir, "tsErrorMessages.json"); + +function getCategoryName(category) { + const categoryName = ts.DiagnosticCategory?.[category]; + return typeof categoryName === "string" ? categoryName : "Error"; +} + +function getCurrentDiagnostics() { + return Object.values(ts.Diagnostics) + .filter((diagnostic) => { + return ( + typeof diagnostic === "object" && + diagnostic !== null && + typeof diagnostic.code === "number" && + typeof diagnostic.message === "string" + ); + }) + .sort((left, right) => left.code - right.code); +} + +function unwrapQuotedValue(value) { + if ( + (value.startsWith('"') && value.endsWith('"')) || + (value.startsWith("'") && value.endsWith("'")) + ) { + return value.slice(1, -1); + } + + return value; +} + +function parseOriginalMessage(markdown, fileName) { + const match = /^---\r?\n([\s\S]*?)\r?\n---/u.exec(markdown); + if (match === null) { + throw new Error(`Missing front matter in ${fileName}.`); + } + + const originalMatch = /^original:\s*(.+)$/mu.exec(match[1]); + if (originalMatch === null) { + throw new Error(`Missing original diagnostic message in ${fileName}.`); + } + + return unwrapQuotedValue(originalMatch[1].trim()); +} + +async function readJson(filePath) { + return JSON.parse(await readFile(filePath, "utf8")); +} + +async function validateTsErrorMessages(currentDiagnostics) { + const tsErrorMessages = await readJson(tsErrorMessagesFile); + + if (Object.keys(tsErrorMessages).length !== currentDiagnostics.length) { + throw new Error( + `tsErrorMessages.json is stale. Expected ${currentDiagnostics.length} entries but found ${Object.keys(tsErrorMessages).length}.`, + ); + } + + for (const diagnostic of currentDiagnostics) { + const entry = tsErrorMessages[diagnostic.message]; + if (entry === undefined) { + throw new Error( + `tsErrorMessages.json is missing the current diagnostic template for TS${diagnostic.code}.`, + ); + } + + if ( + entry.code !== diagnostic.code || + entry.category !== getCategoryName(diagnostic.category) + ) { + throw new Error( + `tsErrorMessages.json is stale for TS${diagnostic.code}.`, + ); + } + } +} + +async function validateCuratedOverrides(currentDiagnosticsByCode) { + const files = (await readdir(curatedErrorsDir)) + .filter((file) => file.endsWith(".md")) + .sort((left, right) => left.localeCompare(right, "en")); + + for (const fileName of files) { + const code = Number(path.parse(fileName).name); + if (!Number.isInteger(code)) { + throw new Error(`Cannot derive numeric diagnostic code from ${fileName}.`); + } + + const diagnostic = currentDiagnosticsByCode.get(code); + if (diagnostic === undefined) { + throw new Error( + `Curated translation ${fileName} targets removed or unknown TS${code}.`, + ); + } + + const markdown = await readFile(path.join(curatedErrorsDir, fileName), "utf8"); + const original = parseOriginalMessage(markdown, fileName); + + if (original !== diagnostic.message) { + throw new Error( + `Curated translation ${fileName} is stale for TS${code}. Expected "${diagnostic.message}" but found "${original}".`, + ); + } + } +} + +async function validateBundle(currentDiagnostics) { + const bundle = await readJson(bundleFile); + + if (Object.keys(bundle).length !== currentDiagnostics.length) { + throw new Error( + `bundleErrors.json is stale. Expected ${currentDiagnostics.length} entries but found ${Object.keys(bundle).length}.`, + ); + } + + for (const diagnostic of currentDiagnostics) { + const entry = bundle[String(diagnostic.code)]; + if (entry === undefined) { + throw new Error(`bundleErrors.json is missing TS${diagnostic.code}.`); + } + + if ( + entry.code !== diagnostic.code || + entry.category !== getCategoryName(diagnostic.category) || + entry.message !== diagnostic.message + ) { + throw new Error(`bundleErrors.json is stale for TS${diagnostic.code}.`); + } + + if (typeof entry.body !== "string" || entry.body.length === 0) { + throw new Error(`bundleErrors.json has an empty body for TS${diagnostic.code}.`); + } + + if (entry.source !== "curated" && entry.source !== "generated") { + throw new Error( + `bundleErrors.json has an invalid source for TS${diagnostic.code}.`, + ); + } + } +} + +async function main() { + const currentDiagnostics = getCurrentDiagnostics(); + const currentDiagnosticsByCode = new Map( + currentDiagnostics.map((diagnostic) => [diagnostic.code, diagnostic]), + ); + + await validateTsErrorMessages(currentDiagnostics); + await validateCuratedOverrides(currentDiagnosticsByCode); + await validateBundle(currentDiagnostics); +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); diff --git a/packages/error-translator/src/generated/bundleErrors.json b/packages/error-translator/src/generated/bundleErrors.json index 1a8edd3..e46fd04 100644 --- a/packages/error-translator/src/generated/bundleErrors.json +++ b/packages/error-translator/src/generated/bundleErrors.json @@ -1,270 +1,14912 @@ { "1002": { "body": "You've started a string (via a single or double quote) but haven't ended it.", - "code": 1002 + "category": "Error", + "code": 1002, + "message": "Unterminated string literal.", + "source": "curated" }, "1003": { "body": "I was expecting a name but none was provided.", - "code": 1003 + "category": "Error", + "code": 1003, + "message": "Identifier expected.", + "source": "curated" + }, + "1005": { + "body": "TypeScript reports this error: '{0}' expected.", + "category": "Error", + "code": 1005, + "message": "'{0}' expected.", + "source": "generated" }, "1006": { "body": "You've got a triple-slash reference inside a file that's referencing itself.", - "code": 1006 + "category": "Error", + "code": 1006, + "message": "A file cannot have a reference to itself.", + "source": "curated" + }, + "1007": { + "body": "TypeScript reports this error: The parser expected to find a '{1}' to match the '{0}' token here.", + "category": "Error", + "code": 1007, + "message": "The parser expected to find a '{1}' to match the '{0}' token here.", + "source": "generated" }, "1009": { "body": "You've added a trailing comma when you're not supposed to add it.", - "code": 1009 + "category": "Error", + "code": 1009, + "message": "Trailing comma not allowed.", + "source": "curated" + }, + "1010": { + "body": "TypeScript reports this error: '*/' expected.", + "category": "Error", + "code": 1010, + "message": "'*/' expected.", + "source": "generated" + }, + "1011": { + "body": "TypeScript reports this error: An element access expression should take an argument.", + "category": "Error", + "code": 1011, + "message": "An element access expression should take an argument.", + "source": "generated" + }, + "1012": { + "body": "TypeScript reports this error: Unexpected token.", + "category": "Error", + "code": 1012, + "message": "Unexpected token.", + "source": "generated" + }, + "1013": { + "body": "TypeScript reports this error: A rest parameter or binding pattern may not have a trailing comma.", + "category": "Error", + "code": 1013, + "message": "A rest parameter or binding pattern may not have a trailing comma.", + "source": "generated" }, "1014": { "body": "A parameter in a function that starts with `...` must be the last one in the list.", - "code": 1014 + "category": "Error", + "code": 1014, + "message": "A rest parameter must be last in a parameter list.", + "source": "curated" }, "1015": { "body": "You can use a question mark or an default value, but not both at once.", - "code": 1015 + "category": "Error", + "code": 1015, + "message": "Parameter cannot have question mark and initializer.", + "source": "curated" + }, + "1016": { + "body": "TypeScript reports this error: A required parameter cannot follow an optional parameter.", + "category": "Error", + "code": 1016, + "message": "A required parameter cannot follow an optional parameter.", + "source": "generated" + }, + "1017": { + "body": "TypeScript reports this error: An index signature cannot have a rest parameter.", + "category": "Error", + "code": 1017, + "message": "An index signature cannot have a rest parameter.", + "source": "generated" + }, + "1018": { + "body": "TypeScript reports this error: An index signature parameter cannot have an accessibility modifier.", + "category": "Error", + "code": 1018, + "message": "An index signature parameter cannot have an accessibility modifier.", + "source": "generated" + }, + "1019": { + "body": "TypeScript reports this error: An index signature parameter cannot have a question mark.", + "category": "Error", + "code": 1019, + "message": "An index signature parameter cannot have a question mark.", + "source": "generated" + }, + "1020": { + "body": "TypeScript reports this error: An index signature parameter cannot have an initializer.", + "category": "Error", + "code": 1020, + "message": "An index signature parameter cannot have an initializer.", + "source": "generated" + }, + "1021": { + "body": "TypeScript reports this error: An index signature must have a type annotation.", + "category": "Error", + "code": 1021, + "message": "An index signature must have a type annotation.", + "source": "generated" + }, + "1022": { + "body": "TypeScript reports this error: An index signature parameter must have a type annotation.", + "category": "Error", + "code": 1022, + "message": "An index signature parameter must have a type annotation.", + "source": "generated" + }, + "1024": { + "body": "TypeScript reports this error: 'readonly' modifier can only appear on a property declaration or index signature.", + "category": "Error", + "code": 1024, + "message": "'readonly' modifier can only appear on a property declaration or index signature.", + "source": "generated" + }, + "1025": { + "body": "TypeScript reports this error: An index signature cannot have a trailing comma.", + "category": "Error", + "code": 1025, + "message": "An index signature cannot have a trailing comma.", + "source": "generated" + }, + "1028": { + "body": "TypeScript reports this error: Accessibility modifier already seen.", + "category": "Error", + "code": 1028, + "message": "Accessibility modifier already seen.", + "source": "generated" + }, + "1029": { + "body": "TypeScript reports this error: '{0}' modifier must precede '{1}' modifier.", + "category": "Error", + "code": 1029, + "message": "'{0}' modifier must precede '{1}' modifier.", + "source": "generated" + }, + "1030": { + "body": "TypeScript reports this error: '{0}' modifier already seen.", + "category": "Error", + "code": 1030, + "message": "'{0}' modifier already seen.", + "source": "generated" + }, + "1031": { + "body": "TypeScript reports this error: '{0}' modifier cannot appear on class elements of this kind.", + "category": "Error", + "code": 1031, + "message": "'{0}' modifier cannot appear on class elements of this kind.", + "source": "generated" + }, + "1034": { + "body": "TypeScript reports this error: 'super' must be followed by an argument list or member access.", + "category": "Error", + "code": 1034, + "message": "'super' must be followed by an argument list or member access.", + "source": "generated" + }, + "1035": { + "body": "TypeScript reports this error: Only ambient modules can use quoted names.", + "category": "Error", + "code": 1035, + "message": "Only ambient modules can use quoted names.", + "source": "generated" + }, + "1036": { + "body": "TypeScript reports this error: Statements are not allowed in ambient contexts.", + "category": "Error", + "code": 1036, + "message": "Statements are not allowed in ambient contexts.", + "source": "generated" + }, + "1038": { + "body": "TypeScript reports this error: A 'declare' modifier cannot be used in an already ambient context.", + "category": "Error", + "code": 1038, + "message": "A 'declare' modifier cannot be used in an already ambient context.", + "source": "generated" + }, + "1039": { + "body": "TypeScript reports this error: Initializers are not allowed in ambient contexts.", + "category": "Error", + "code": 1039, + "message": "Initializers are not allowed in ambient contexts.", + "source": "generated" + }, + "1040": { + "body": "TypeScript reports this error: '{0}' modifier cannot be used in an ambient context.", + "category": "Error", + "code": 1040, + "message": "'{0}' modifier cannot be used in an ambient context.", + "source": "generated" + }, + "1042": { + "body": "TypeScript reports this error: '{0}' modifier cannot be used here.", + "category": "Error", + "code": 1042, + "message": "'{0}' modifier cannot be used here.", + "source": "generated" + }, + "1044": { + "body": "TypeScript reports this error: '{0}' modifier cannot appear on a module or namespace element.", + "category": "Error", + "code": 1044, + "message": "'{0}' modifier cannot appear on a module or namespace element.", + "source": "generated" + }, + "1046": { + "body": "TypeScript reports this error: Top-level declarations in .d.ts files must start with either a 'declare' or 'export' modifier.", + "category": "Error", + "code": 1046, + "message": "Top-level declarations in .d.ts files must start with either a 'declare' or 'export' modifier.", + "source": "generated" + }, + "1047": { + "body": "TypeScript reports this error: A rest parameter cannot be optional.", + "category": "Error", + "code": 1047, + "message": "A rest parameter cannot be optional.", + "source": "generated" + }, + "1048": { + "body": "TypeScript reports this error: A rest parameter cannot have an initializer.", + "category": "Error", + "code": 1048, + "message": "A rest parameter cannot have an initializer.", + "source": "generated" + }, + "1049": { + "body": "TypeScript reports this error: A 'set' accessor must have exactly one parameter.", + "category": "Error", + "code": 1049, + "message": "A 'set' accessor must have exactly one parameter.", + "source": "generated" + }, + "1051": { + "body": "TypeScript reports this error: A 'set' accessor cannot have an optional parameter.", + "category": "Error", + "code": 1051, + "message": "A 'set' accessor cannot have an optional parameter.", + "source": "generated" + }, + "1052": { + "body": "TypeScript reports this error: A 'set' accessor parameter cannot have an initializer.", + "category": "Error", + "code": 1052, + "message": "A 'set' accessor parameter cannot have an initializer.", + "source": "generated" + }, + "1053": { + "body": "TypeScript reports this error: A 'set' accessor cannot have rest parameter.", + "category": "Error", + "code": 1053, + "message": "A 'set' accessor cannot have rest parameter.", + "source": "generated" + }, + "1054": { + "body": "TypeScript reports this error: A 'get' accessor cannot have parameters.", + "category": "Error", + "code": 1054, + "message": "A 'get' accessor cannot have parameters.", + "source": "generated" + }, + "1055": { + "body": "TypeScript reports this error: Type '{0}' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value.", + "category": "Error", + "code": 1055, + "message": "Type '{0}' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value.", + "source": "generated" + }, + "1056": { + "body": "TypeScript reports this error: Accessors are only available when targeting ECMAScript 5 and higher.", + "category": "Error", + "code": 1056, + "message": "Accessors are only available when targeting ECMAScript 5 and higher.", + "source": "generated" + }, + "1058": { + "body": "TypeScript reports this error: The return type of an async function must either be a valid promise or must not contain a callable 'then' member.", + "category": "Error", + "code": 1058, + "message": "The return type of an async function must either be a valid promise or must not contain a callable 'then' member.", + "source": "generated" + }, + "1059": { + "body": "TypeScript reports this error: A promise must have a 'then' method.", + "category": "Error", + "code": 1059, + "message": "A promise must have a 'then' method.", + "source": "generated" + }, + "1060": { + "body": "TypeScript reports this error: The first parameter of the 'then' method of a promise must be a callback.", + "category": "Error", + "code": 1060, + "message": "The first parameter of the 'then' method of a promise must be a callback.", + "source": "generated" + }, + "1061": { + "body": "TypeScript reports this error: Enum member must have initializer.", + "category": "Error", + "code": 1061, + "message": "Enum member must have initializer.", + "source": "generated" + }, + "1062": { + "body": "TypeScript reports this error: Type is referenced directly or indirectly in the fulfillment callback of its own 'then' method.", + "category": "Error", + "code": 1062, + "message": "Type is referenced directly or indirectly in the fulfillment callback of its own 'then' method.", + "source": "generated" + }, + "1063": { + "body": "TypeScript reports this error: An export assignment cannot be used in a namespace.", + "category": "Error", + "code": 1063, + "message": "An export assignment cannot be used in a namespace.", + "source": "generated" + }, + "1064": { + "body": "TypeScript reports this error: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise<{0}>'?", + "category": "Error", + "code": 1064, + "message": "The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise<{0}>'?", + "source": "generated" + }, + "1065": { + "body": "TypeScript reports this error: The return type of an async function or method must be the global Promise type.", + "category": "Error", + "code": 1065, + "message": "The return type of an async function or method must be the global Promise type.", + "source": "generated" + }, + "1066": { + "body": "TypeScript reports this error: In ambient enum declarations member initializer must be constant expression.", + "category": "Error", + "code": 1066, + "message": "In ambient enum declarations member initializer must be constant expression.", + "source": "generated" + }, + "1068": { + "body": "TypeScript reports this error: Unexpected token. A constructor, method, accessor, or property was expected.", + "category": "Error", + "code": 1068, + "message": "Unexpected token. A constructor, method, accessor, or property was expected.", + "source": "generated" + }, + "1069": { + "body": "TypeScript reports this error: Unexpected token. A type parameter name was expected without curly braces.", + "category": "Error", + "code": 1069, + "message": "Unexpected token. A type parameter name was expected without curly braces.", + "source": "generated" + }, + "1070": { + "body": "TypeScript reports this error: '{0}' modifier cannot appear on a type member.", + "category": "Error", + "code": 1070, + "message": "'{0}' modifier cannot appear on a type member.", + "source": "generated" + }, + "1071": { + "body": "TypeScript reports this error: '{0}' modifier cannot appear on an index signature.", + "category": "Error", + "code": 1071, + "message": "'{0}' modifier cannot appear on an index signature.", + "source": "generated" + }, + "1079": { + "body": "TypeScript reports this error: A '{0}' modifier cannot be used with an import declaration.", + "category": "Error", + "code": 1079, + "message": "A '{0}' modifier cannot be used with an import declaration.", + "source": "generated" + }, + "1084": { + "body": "TypeScript reports this error: Invalid 'reference' directive syntax.", + "category": "Error", + "code": 1084, + "message": "Invalid 'reference' directive syntax.", + "source": "generated" + }, + "1089": { + "body": "TypeScript reports this error: '{0}' modifier cannot appear on a constructor declaration.", + "category": "Error", + "code": 1089, + "message": "'{0}' modifier cannot appear on a constructor declaration.", + "source": "generated" + }, + "1090": { + "body": "TypeScript reports this error: '{0}' modifier cannot appear on a parameter.", + "category": "Error", + "code": 1090, + "message": "'{0}' modifier cannot appear on a parameter.", + "source": "generated" }, "1091": { "body": "You can only create a single variable in a 'for...in' statement", - "code": 1091 + "category": "Error", + "code": 1091, + "message": "Only a single variable declaration is allowed in a 'for...in' statement.", + "source": "curated" + }, + "1092": { + "body": "TypeScript reports this error: Type parameters cannot appear on a constructor declaration.", + "category": "Error", + "code": 1092, + "message": "Type parameters cannot appear on a constructor declaration.", + "source": "generated" + }, + "1093": { + "body": "TypeScript reports this error: Type annotation cannot appear on a constructor declaration.", + "category": "Error", + "code": 1093, + "message": "Type annotation cannot appear on a constructor declaration.", + "source": "generated" + }, + "1094": { + "body": "TypeScript reports this error: An accessor cannot have type parameters.", + "category": "Error", + "code": 1094, + "message": "An accessor cannot have type parameters.", + "source": "generated" + }, + "1095": { + "body": "TypeScript reports this error: A 'set' accessor cannot have a return type annotation.", + "category": "Error", + "code": 1095, + "message": "A 'set' accessor cannot have a return type annotation.", + "source": "generated" + }, + "1096": { + "body": "TypeScript reports this error: An index signature must have exactly one parameter.", + "category": "Error", + "code": 1096, + "message": "An index signature must have exactly one parameter.", + "source": "generated" + }, + "1097": { + "body": "TypeScript reports this error: '{0}' list cannot be empty.", + "category": "Error", + "code": 1097, + "message": "'{0}' list cannot be empty.", + "source": "generated" + }, + "1098": { + "body": "TypeScript reports this error: Type parameter list cannot be empty.", + "category": "Error", + "code": 1098, + "message": "Type parameter list cannot be empty.", + "source": "generated" + }, + "1099": { + "body": "TypeScript reports this error: Type argument list cannot be empty.", + "category": "Error", + "code": 1099, + "message": "Type argument list cannot be empty.", + "source": "generated" + }, + "1100": { + "body": "TypeScript reports this error: Invalid use of '{0}' in strict mode.", + "category": "Error", + "code": 1100, + "message": "Invalid use of '{0}' in strict mode.", + "source": "generated" + }, + "1101": { + "body": "TypeScript reports this error: 'with' statements are not allowed in strict mode.", + "category": "Error", + "code": 1101, + "message": "'with' statements are not allowed in strict mode.", + "source": "generated" + }, + "1102": { + "body": "TypeScript reports this error: 'delete' cannot be called on an identifier in strict mode.", + "category": "Error", + "code": 1102, + "message": "'delete' cannot be called on an identifier in strict mode.", + "source": "generated" + }, + "1103": { + "body": "TypeScript reports this error: 'for await' loops are only allowed within async functions and at the top levels of modules.", + "category": "Error", + "code": 1103, + "message": "'for await' loops are only allowed within async functions and at the top levels of modules.", + "source": "generated" + }, + "1104": { + "body": "TypeScript reports this error: A 'continue' statement can only be used within an enclosing iteration statement.", + "category": "Error", + "code": 1104, + "message": "A 'continue' statement can only be used within an enclosing iteration statement.", + "source": "generated" + }, + "1105": { + "body": "TypeScript reports this error: A 'break' statement can only be used within an enclosing iteration or switch statement.", + "category": "Error", + "code": 1105, + "message": "A 'break' statement can only be used within an enclosing iteration or switch statement.", + "source": "generated" + }, + "1106": { + "body": "TypeScript reports this error: The left-hand side of a 'for...of' statement may not be 'async'.", + "category": "Error", + "code": 1106, + "message": "The left-hand side of a 'for...of' statement may not be 'async'.", + "source": "generated" + }, + "1107": { + "body": "TypeScript reports this error: Jump target cannot cross function boundary.", + "category": "Error", + "code": 1107, + "message": "Jump target cannot cross function boundary.", + "source": "generated" + }, + "1108": { + "body": "TypeScript reports this error: A 'return' statement can only be used within a function body.", + "category": "Error", + "code": 1108, + "message": "A 'return' statement can only be used within a function body.", + "source": "generated" }, "1109": { "body": "I am expecting a code that resolves to a value.", - "code": 1109 + "category": "Error", + "code": 1109, + "message": "Expression expected.", + "source": "curated" + }, + "1110": { + "body": "TypeScript reports this error: Type expected.", + "category": "Error", + "code": 1110, + "message": "Type expected.", + "source": "generated" + }, + "1111": { + "body": "TypeScript reports this error: Private field '{0}' must be declared in an enclosing class.", + "category": "Error", + "code": 1111, + "message": "Private field '{0}' must be declared in an enclosing class.", + "source": "generated" + }, + "1113": { + "body": "TypeScript reports this error: A 'default' clause cannot appear more than once in a 'switch' statement.", + "category": "Error", + "code": 1113, + "message": "A 'default' clause cannot appear more than once in a 'switch' statement.", + "source": "generated" + }, + "1114": { + "body": "TypeScript reports this error: Duplicate label '{0}'.", + "category": "Error", + "code": 1114, + "message": "Duplicate label '{0}'.", + "source": "generated" + }, + "1115": { + "body": "TypeScript reports this error: A 'continue' statement can only jump to a label of an enclosing iteration statement.", + "category": "Error", + "code": 1115, + "message": "A 'continue' statement can only jump to a label of an enclosing iteration statement.", + "source": "generated" + }, + "1116": { + "body": "TypeScript reports this error: A 'break' statement can only jump to a label of an enclosing statement.", + "category": "Error", + "code": 1116, + "message": "A 'break' statement can only jump to a label of an enclosing statement.", + "source": "generated" }, "1117": { "body": "You can't add the same property multiple times to an object.", - "code": 1117 + "category": "Error", + "code": 1117, + "message": "An object literal cannot have multiple properties with the same name.", + "source": "curated" + }, + "1118": { + "body": "TypeScript reports this error: An object literal cannot have multiple get/set accessors with the same name.", + "category": "Error", + "code": 1118, + "message": "An object literal cannot have multiple get/set accessors with the same name.", + "source": "generated" + }, + "1119": { + "body": "TypeScript reports this error: An object literal cannot have property and accessor with the same name.", + "category": "Error", + "code": 1119, + "message": "An object literal cannot have property and accessor with the same name.", + "source": "generated" + }, + "1120": { + "body": "TypeScript reports this error: An export assignment cannot have modifiers.", + "category": "Error", + "code": 1120, + "message": "An export assignment cannot have modifiers.", + "source": "generated" + }, + "1121": { + "body": "TypeScript reports this error: Octal literals are not allowed. Use the syntax '{0}'.", + "category": "Error", + "code": 1121, + "message": "Octal literals are not allowed. Use the syntax '{0}'.", + "source": "generated" + }, + "1123": { + "body": "TypeScript reports this error: Variable declaration list cannot be empty.", + "category": "Error", + "code": 1123, + "message": "Variable declaration list cannot be empty.", + "source": "generated" + }, + "1124": { + "body": "TypeScript reports this error: Digit expected.", + "category": "Error", + "code": 1124, + "message": "Digit expected.", + "source": "generated" + }, + "1125": { + "body": "TypeScript reports this error: Hexadecimal digit expected.", + "category": "Error", + "code": 1125, + "message": "Hexadecimal digit expected.", + "source": "generated" + }, + "1126": { + "body": "TypeScript reports this error: Unexpected end of text.", + "category": "Error", + "code": 1126, + "message": "Unexpected end of text.", + "source": "generated" + }, + "1127": { + "body": "TypeScript reports this error: Invalid character.", + "category": "Error", + "code": 1127, + "message": "Invalid character.", + "source": "generated" + }, + "1128": { + "body": "TypeScript reports this error: Declaration or statement expected.", + "category": "Error", + "code": 1128, + "message": "Declaration or statement expected.", + "source": "generated" + }, + "1129": { + "body": "TypeScript reports this error: Statement expected.", + "category": "Error", + "code": 1129, + "message": "Statement expected.", + "source": "generated" + }, + "1130": { + "body": "TypeScript reports this error: 'case' or 'default' expected.", + "category": "Error", + "code": 1130, + "message": "'case' or 'default' expected.", + "source": "generated" + }, + "1131": { + "body": "TypeScript reports this error: Property or signature expected.", + "category": "Error", + "code": 1131, + "message": "Property or signature expected.", + "source": "generated" + }, + "1132": { + "body": "TypeScript reports this error: Enum member expected.", + "category": "Error", + "code": 1132, + "message": "Enum member expected.", + "source": "generated" + }, + "1134": { + "body": "TypeScript reports this error: Variable declaration expected.", + "category": "Error", + "code": 1134, + "message": "Variable declaration expected.", + "source": "generated" + }, + "1135": { + "body": "TypeScript reports this error: Argument expression expected.", + "category": "Error", + "code": 1135, + "message": "Argument expression expected.", + "source": "generated" + }, + "1136": { + "body": "TypeScript reports this error: Property assignment expected.", + "category": "Error", + "code": 1136, + "message": "Property assignment expected.", + "source": "generated" + }, + "1137": { + "body": "TypeScript reports this error: Expression or comma expected.", + "category": "Error", + "code": 1137, + "message": "Expression or comma expected.", + "source": "generated" + }, + "1138": { + "body": "TypeScript reports this error: Parameter declaration expected.", + "category": "Error", + "code": 1138, + "message": "Parameter declaration expected.", + "source": "generated" + }, + "1139": { + "body": "TypeScript reports this error: Type parameter declaration expected.", + "category": "Error", + "code": 1139, + "message": "Type parameter declaration expected.", + "source": "generated" + }, + "1140": { + "body": "TypeScript reports this error: Type argument expected.", + "category": "Error", + "code": 1140, + "message": "Type argument expected.", + "source": "generated" + }, + "1141": { + "body": "TypeScript reports this error: String literal expected.", + "category": "Error", + "code": 1141, + "message": "String literal expected.", + "source": "generated" + }, + "1142": { + "body": "TypeScript reports this error: Line break not permitted here.", + "category": "Error", + "code": 1142, + "message": "Line break not permitted here.", + "source": "generated" + }, + "1144": { + "body": "TypeScript reports this error: '{' or ';' expected.", + "category": "Error", + "code": 1144, + "message": "'{' or ';' expected.", + "source": "generated" + }, + "1145": { + "body": "TypeScript reports this error: '{' or JSX element expected.", + "category": "Error", + "code": 1145, + "message": "'{' or JSX element expected.", + "source": "generated" + }, + "1146": { + "body": "TypeScript reports this error: Declaration expected.", + "category": "Error", + "code": 1146, + "message": "Declaration expected.", + "source": "generated" + }, + "1147": { + "body": "TypeScript reports this error: Import declarations in a namespace cannot reference a module.", + "category": "Error", + "code": 1147, + "message": "Import declarations in a namespace cannot reference a module.", + "source": "generated" + }, + "1148": { + "body": "TypeScript reports this error: Cannot use imports, exports, or module augmentations when '--module' is 'none'.", + "category": "Error", + "code": 1148, + "message": "Cannot use imports, exports, or module augmentations when '--module' is 'none'.", + "source": "generated" + }, + "1149": { + "body": "TypeScript reports this error: File name '{0}' differs from already included file name '{1}' only in casing.", + "category": "Error", + "code": 1149, + "message": "File name '{0}' differs from already included file name '{1}' only in casing.", + "source": "generated" }, "1155": { - "body": "A `const` must be given a value when it's declared.", - "code": 1155 + "body": "A `{0}` declaration must be given a value when it is declared.", + "category": "Error", + "code": 1155, + "message": "'{0}' declarations must be initialized.", + "source": "curated" + }, + "1156": { + "body": "TypeScript reports this error: '{0}' declarations can only be declared inside a block.", + "category": "Error", + "code": 1156, + "message": "'{0}' declarations can only be declared inside a block.", + "source": "generated" + }, + "1160": { + "body": "TypeScript reports this error: Unterminated template literal.", + "category": "Error", + "code": 1160, + "message": "Unterminated template literal.", + "source": "generated" + }, + "1161": { + "body": "TypeScript reports this error: Unterminated regular expression literal.", + "category": "Error", + "code": 1161, + "message": "Unterminated regular expression literal.", + "source": "generated" + }, + "1162": { + "body": "TypeScript reports this error: An object member cannot be declared optional.", + "category": "Error", + "code": 1162, + "message": "An object member cannot be declared optional.", + "source": "generated" }, "1163": { "body": "The `yield` keyword can only be used inside a generator function", - "code": 1163 + "category": "Error", + "code": 1163, + "message": "A 'yield' expression is only allowed in a generator body.", + "source": "curated" }, - "1208": { - "body": "You have set the 'isolatedModules' flag. Therefore all implementation files must be modules (which means it has some form of import/export). Add an import, export, or an empty 'export {}' statement to make it a module.", - "code": 1208 + "1164": { + "body": "TypeScript reports this error: Computed property names are not allowed in enums.", + "category": "Error", + "code": 1164, + "message": "Computed property names are not allowed in enums.", + "source": "generated" }, - "1240": { - "body": "You can't use a decorator on an expression, like an arrow function.", - "code": 1240 + "1165": { + "body": "TypeScript reports this error: A computed property name in an ambient context must refer to an expression whose type is a literal type or a 'unique symbol' type.", + "category": "Error", + "code": 1165, + "message": "A computed property name in an ambient context must refer to an expression whose type is a literal type or a 'unique symbol' type.", + "source": "generated" }, - "1254": { - "body": "You can't use runtime code in a declaration file.", - "code": 1254 + "1166": { + "body": "TypeScript reports this error: A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type.", + "category": "Error", + "code": 1166, + "message": "A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type.", + "source": "generated" }, - "1268": { - "body": "Objects in TypeScript (and JavaScript!) can only have strings, numbers or symbols as keys. [Template literal types](https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html) are a way of constructing strings.", - "code": 1268 + "1168": { + "body": "TypeScript reports this error: A computed property name in a method overload must refer to an expression whose type is a literal type or a 'unique symbol' type.", + "category": "Error", + "code": 1168, + "message": "A computed property name in a method overload must refer to an expression whose type is a literal type or a 'unique symbol' type.", + "source": "generated" }, - "1313": { - "body": "An if statement shouldn't be empty", - "code": 1313 + "1169": { + "body": "TypeScript reports this error: A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type.", + "category": "Error", + "code": 1169, + "message": "A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type.", + "source": "generated" }, - "1434": { - "body": "There's a syntax error in your code, so I can't tell exactly what's wrong.", - "code": 1434 + "1170": { + "body": "TypeScript reports this error: A computed property name in a type literal must refer to an expression whose type is a literal type or a 'unique symbol' type.", + "category": "Error", + "code": 1170, + "message": "A computed property name in a type literal must refer to an expression whose type is a literal type or a 'unique symbol' type.", + "source": "generated" }, - "2304": { - "body": "I can't find the variable you're trying to access.", - "code": 2304 + "1171": { + "body": "TypeScript reports this error: A comma expression is not allowed in a computed property name.", + "category": "Error", + "code": 1171, + "message": "A comma expression is not allowed in a computed property name.", + "source": "generated" }, - "2305": { - "body": "'{1}' is not one of the things exported from '{0}'.", - "code": 2305 + "1172": { + "body": "TypeScript reports this error: 'extends' clause already seen.", + "category": "Error", + "code": 1172, + "message": "'extends' clause already seen.", + "source": "generated" }, - "2307": { - "body": "This could be one of two things - either '{0}' doesn't exist on your file system, or I can't find any type declarations for it.", - "code": 2307 + "1173": { + "body": "TypeScript reports this error: 'extends' clause must precede 'implements' clause.", + "category": "Error", + "code": 1173, + "message": "'extends' clause must precede 'implements' clause.", + "source": "generated" }, - "2312": { - "body": "You might be trying to use an interface to extend a union type. This isn't possible.", - "code": 2312 + "1174": { + "body": "TypeScript reports this error: Classes can only extend a single class.", + "category": "Error", + "code": 1174, + "message": "Classes can only extend a single class.", + "source": "generated" }, - "2314": { - "body": "It looks like '{0}' requires '{1}' type arguments, which means you need to pass them in via a generic.", - "code": 2314 + "1175": { + "body": "TypeScript reports this error: 'implements' clause already seen.", + "category": "Error", + "code": 1175, + "message": "'implements' clause already seen.", + "source": "generated" }, - "2322": { - "body": "I was expecting a type matching '{1}', but instead you passed '{0}'.", - "code": 2322 + "1176": { + "body": "TypeScript reports this error: Interface declaration cannot have 'implements' clause.", + "category": "Error", + "code": 1176, + "message": "Interface declaration cannot have 'implements' clause.", + "source": "generated" }, - "2324": { - "body": "You haven't passed all the required properties to '{1}' - you've missed out '{0}'", - "code": 2324 + "1177": { + "body": "TypeScript reports this error: Binary digit expected.", + "category": "Error", + "code": 1177, + "message": "Binary digit expected.", + "source": "generated" }, - "2326": { - "body": "Two similar types have a property '{0}' which is different, making them incompatible.", - "code": 2326 + "1178": { + "body": "TypeScript reports this error: Octal digit expected.", + "category": "Error", + "code": 1178, + "message": "Octal digit expected.", + "source": "generated" }, - "2327": { - "body": "Property '{0}' in type '{2}' must exist.", - "code": 2327 + "1179": { + "body": "TypeScript reports this error: Unexpected token. '{' expected.", + "category": "Error", + "code": 1179, + "message": "Unexpected token. '{' expected.", + "source": "generated" }, - "2339": { - "body": "You're trying to access '{0}' on an object that doesn't contain it. [Learn more](https://totaltypescript.com/concepts/property-does-not-exist-on-type).", - "code": 2339 + "1180": { + "body": "TypeScript reports this error: Property destructuring pattern expected.", + "category": "Error", + "code": 1180, + "message": "Property destructuring pattern expected.", + "source": "generated" }, - "2344": { - "body": "You're trying to pass in '{0}' into a slot where I can see only '{1}' can be passed.", - "code": 2344 + "1181": { + "body": "TypeScript reports this error: Array element destructuring pattern expected.", + "category": "Error", + "code": 1181, + "message": "Array element destructuring pattern expected.", + "source": "generated" }, - "2345": { - "body": "I was expecting '{1}', but you passed '{0}'.", - "code": 2345 + "1182": { + "body": "TypeScript reports this error: A destructuring declaration must have an initializer.", + "category": "Error", + "code": 1182, + "message": "A destructuring declaration must have an initializer.", + "source": "generated" }, - "2349": { - "body": "I can't call this expression because I can't call it like a function.", - "code": 2349 + "1183": { + "body": "TypeScript reports this error: An implementation cannot be declared in ambient contexts.", + "category": "Error", + "code": 1183, + "message": "An implementation cannot be declared in ambient contexts.", + "source": "generated" }, - "2352": { - "body": "You can't use 'as' to convert '{0}' into a '{1}' - they don't share enough in common.", - "code": 2352 + "1184": { + "body": "TypeScript reports this error: Modifiers cannot appear here.", + "category": "Error", + "code": 1184, + "message": "Modifiers cannot appear here.", + "source": "generated" }, - "2353": { - "body": "You can't pass property '{0}' to type '{1}'.", - "code": 2353 + "1185": { + "body": "TypeScript reports this error: Merge conflict marker encountered.", + "category": "Error", + "code": 1185, + "message": "Merge conflict marker encountered.", + "source": "generated" }, - "2355": { - "body": "You set the function return type but it is not returning anything.", - "code": 2355 + "1186": { + "body": "TypeScript reports this error: A rest element cannot have an initializer.", + "category": "Error", + "code": 1186, + "message": "A rest element cannot have an initializer.", + "source": "generated" }, - "2365": { - "body": "You can't use '{0}' on the types '{1}' and '{2}'.", - "code": 2365 + "1187": { + "body": "TypeScript reports this error: A parameter property may not be declared using a binding pattern.", + "category": "Error", + "code": 1187, + "message": "A parameter property may not be declared using a binding pattern.", + "source": "generated" }, - "2393": { - "body": "You've already declared a function with the same name.", - "code": 2393 + "1188": { + "body": "TypeScript reports this error: Only a single variable declaration is allowed in a 'for...of' statement.", + "category": "Error", + "code": 1188, + "message": "Only a single variable declaration is allowed in a 'for...of' statement.", + "source": "generated" }, - "2414": { - "body": "You can't give a class the name of '{0}' because it's protected by TypeScript.", - "code": 2414 + "1189": { + "body": "TypeScript reports this error: The variable declaration of a 'for...in' statement cannot have an initializer.", + "category": "Error", + "code": 1189, + "message": "The variable declaration of a 'for...in' statement cannot have an initializer.", + "source": "generated" }, - "2451": { - "body": "'{0}' has already been declared - you can't declare it again. [Learn more](https://www.totaltypescript.com/cannot-redeclare-block-scoped-variable).", - "code": 2451 + "1190": { + "body": "TypeScript reports this error: The variable declaration of a 'for...of' statement cannot have an initializer.", + "category": "Error", + "code": 1190, + "message": "The variable declaration of a 'for...of' statement cannot have an initializer.", + "source": "generated" }, - "2488": { - "body": "Type '{0}' isn't iterable. To make it iterable, add a [`Symbol.iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator) key.", - "code": 2488 + "1191": { + "body": "TypeScript reports this error: An import declaration cannot have modifiers.", + "category": "Error", + "code": 1191, + "message": "An import declaration cannot have modifiers.", + "source": "generated" }, - "2551": { - "body": "You're trying to access '{0}' on an object that doesn't contain it. Did you mean '{2}'?", - "code": 2551 + "1192": { + "body": "TypeScript reports this error: Module '{0}' has no default export.", + "category": "Error", + "code": 1192, + "message": "Module '{0}' has no default export.", + "source": "generated" }, - "2552": { - "body": "You are trying to reference a function or variable which I can't find in the current scope.", - "code": 2552 + "1193": { + "body": "TypeScript reports this error: An export declaration cannot have modifiers.", + "category": "Error", + "code": 1193, + "message": "An export declaration cannot have modifiers.", + "source": "generated" }, - "2554": { - "body": "The function you're trying to call needs {0} arguments, but you're passing {1}.", - "code": 2554 + "1194": { + "body": "TypeScript reports this error: Export declarations are not permitted in a namespace.", + "category": "Error", + "code": 1194, + "message": "Export declarations are not permitted in a namespace.", + "source": "generated" }, - "2556": { - "body": "You're spreading arguments into a function. To do that, either the argument needs to be a tuple OR the function needs to accept a dynamic number of arguments.", - "code": 2556 + "1195": { + "body": "TypeScript reports this error: 'export *' does not re-export a default.", + "category": "Error", + "code": 1195, + "message": "'export *' does not re-export a default.", + "source": "generated" }, - "2571": { - "body": "I don't know what type this object is, so I've defaulted it to 'unknown'. [Learn more](https://www.totaltypescript.com/concepts/object-is-of-type-unknown).", - "code": 2571 + "1196": { + "body": "TypeScript reports this error: Catch clause variable type annotation must be 'any' or 'unknown' if specified.", + "category": "Error", + "code": 1196, + "message": "Catch clause variable type annotation must be 'any' or 'unknown' if specified.", + "source": "generated" }, - "2590": { - "body": "You've created a union type that's too complex for me to handle! 🤯 I can only represent 100,000 combinations in the same union, and you've gone over that limit.", - "code": 2590 + "1197": { + "body": "TypeScript reports this error: Catch clause variable cannot have an initializer.", + "category": "Error", + "code": 1197, + "message": "Catch clause variable cannot have an initializer.", + "source": "generated" }, - "2604": { - "body": "'{0}' cannot be used as a JSX component because it isn't a function.", - "code": 2604 + "1198": { + "body": "TypeScript reports this error: An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.", + "category": "Error", + "code": 1198, + "message": "An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive.", + "source": "generated" }, - "2614": { - "body": "'{1}' is not one of the things exported from '{0}'. Did you mean to import '{1}' from '{0}' instead?", - "code": 2614 + "1199": { + "body": "TypeScript reports this error: Unterminated Unicode escape sequence.", + "category": "Error", + "code": 1199, + "message": "Unterminated Unicode escape sequence.", + "source": "generated" }, - "2686": { - "body": "You might not have configured `jsx` in your `tsconfig.json` correctly. [Learn more](https://www.totaltypescript.com/react-refers-to-a-umd-global).", - "code": 2686 + "1200": { + "body": "TypeScript reports this error: Line terminator not permitted before arrow.", + "category": "Error", + "code": 1200, + "message": "Line terminator not permitted before arrow.", + "source": "generated" }, - "2722": { - "body": "This function might be undefined. You'll need to check it's defined before calling it.", - "code": 2722 + "1202": { + "body": "TypeScript reports this error: Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"', 'import d from \"mod\"', or another module format instead.", + "category": "Error", + "code": 1202, + "message": "Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"', 'import d from \"mod\"', or another module format instead.", + "source": "generated" }, - "2739": { - "body": "'{0}' is missing some required properties from type '{1}': {2}.", - "code": 2739 + "1203": { + "body": "TypeScript reports this error: Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead.", + "category": "Error", + "code": 1203, + "message": "Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead.", + "source": "generated" }, - "2741": { - "body": "You haven't passed all the required properties to '{2}' - '{1}' is missing the '{0}' property.", - "code": 2741 + "1205": { + "body": "TypeScript reports this error: Re-exporting a type when '{0}' is enabled requires using 'export type'.", + "category": "Error", + "code": 1205, + "message": "Re-exporting a type when '{0}' is enabled requires using 'export type'.", + "source": "generated" }, - "2749": { - "body": "You're trying to use a JavaScript variable where you should be passing a type.", - "code": 2749 + "1206": { + "body": "TypeScript reports this error: Decorators are not valid here.", + "category": "Error", + "code": 1206, + "message": "Decorators are not valid here.", + "source": "generated" }, - "2761": { - "body": "Type '{0}' is not a class.", - "code": 2761 + "1207": { + "body": "TypeScript reports this error: Decorators cannot be applied to multiple get/set accessors of the same name.", + "category": "Error", + "code": 1207, + "message": "Decorators cannot be applied to multiple get/set accessors of the same name.", + "source": "generated" }, - "2775": { - "body": "You might be using an `asserts` keyword on an arrow function. If you are, change the function to use the `function` keyword.", - "code": 2775 + "1209": { + "body": "TypeScript reports this error: Invalid optional chain from new expression. Did you mean to call '{0}()'?", + "category": "Error", + "code": 1209, + "message": "Invalid optional chain from new expression. Did you mean to call '{0}()'?", + "source": "generated" }, - "2783": { - "body": "'{0}' will be overwritten by the spread.", - "code": 2783 + "1210": { + "body": "TypeScript reports this error: Code contained in a class is evaluated in JavaScript's strict mode which does not allow this use of '{0}'. For more information, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode.", + "category": "Error", + "code": 1210, + "message": "Code contained in a class is evaluated in JavaScript's strict mode which does not allow this use of '{0}'. For more information, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode.", + "source": "generated" }, - "5075": { - "body": "You're passing a type '{0}' into a slot which is too narrow. It could be as wide as anything assignable to '{2}'.", - "code": 5075 + "1211": { + "body": "TypeScript reports this error: A class declaration without the 'default' modifier must have a name.", + "category": "Error", + "code": 1211, + "message": "A class declaration without the 'default' modifier must have a name.", + "source": "generated" }, - "6133": { - "body": "I noticed that '{0}' has been declared, but it's never used in the code.", - "code": 6133 + "1212": { + "body": "TypeScript reports this error: Identifier expected. '{0}' is a reserved word in strict mode.", + "category": "Error", + "code": 1212, + "message": "Identifier expected. '{0}' is a reserved word in strict mode.", + "source": "generated" }, - "6142": { - "body": "You can't import `.jsx` or `.tsx` files until you set `jsx` in your `tsconfig.json`.", - "code": 6142 + "1213": { + "body": "TypeScript reports this error: Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode.", + "category": "Error", + "code": 1213, + "message": "Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode.", + "source": "generated" }, - "6244": { - "body": "You can't use const enums when `isolatedModules` is enabled.", - "code": 6244 + "1214": { + "body": "TypeScript reports this error: Identifier expected. '{0}' is a reserved word in strict mode. Modules are automatically in strict mode.", + "category": "Error", + "code": 1214, + "message": "Identifier expected. '{0}' is a reserved word in strict mode. Modules are automatically in strict mode.", + "source": "generated" }, - "7006": { - "body": "I don't know what type '{0}' is supposed to be, so I've defaulted it to '{1}'. Your `tsconfig.json` file says I should throw an error here. [Learn more](https://www.totaltypescript.com/tutorials/beginners-typescript/beginner-s-typescript-section/implicit-any-type-error).", - "code": 7006 + "1215": { + "body": "TypeScript reports this error: Invalid use of '{0}'. Modules are automatically in strict mode.", + "category": "Error", + "code": 1215, + "message": "Invalid use of '{0}'. Modules are automatically in strict mode.", + "source": "generated" }, - "7026": { - "body": "`JSX.IntrinsicElements` has not been declared in the global scope. [Learn more](https://www.totaltypescript.com/what-is-jsx-intrinsicelements).", - "code": 7026 + "1216": { + "body": "TypeScript reports this error: Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules.", + "category": "Error", + "code": 1216, + "message": "Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules.", + "source": "generated" }, - "7053": { - "body": "You can't use '{0}' to index into '{1}'. [This article](https://www.totaltypescript.com/concepts/type-string-cannot-be-used-to-index-type) might help.", - "code": 7053 + "1218": { + "body": "TypeScript reports this error: Export assignment is not supported when '--module' flag is 'system'.", + "category": "Error", + "code": 1218, + "message": "Export assignment is not supported when '--module' flag is 'system'.", + "source": "generated" }, - "7057": { - "body": "I don't know enough about your generator function's return type to safely infer here.", - "code": 7057 + "1221": { + "body": "TypeScript reports this error: Generators are not allowed in an ambient context.", + "category": "Error", + "code": 1221, + "message": "Generators are not allowed in an ambient context.", + "source": "generated" }, - "7061": { - "body": "You're trying to create a mapped type with both static and dynamic properties.", - "code": 7061 + "1222": { + "body": "TypeScript reports this error: An overload signature cannot be declared as a generator.", + "category": "Error", + "code": 1222, + "message": "An overload signature cannot be declared as a generator.", + "source": "generated" }, - "8016": { - "body": "You can't use type assertions because this isn't a TypeScript file.", - "code": 8016 + "1223": { + "body": "TypeScript reports this error: '{0}' tag already specified.", + "category": "Error", + "code": 1223, + "message": "'{0}' tag already specified.", + "source": "generated" }, - "17004": { - "body": "You can't use JSX yet because you haven't added `jsx` to your `tsconfig.json`. [Learn more](https://www.totaltypescript.com/cannot-use-jsx-unless-the-jsx-flag-is-provided).", - "code": 17004 + "1224": { + "body": "TypeScript reports this error: Signature '{0}' must be a type predicate.", + "category": "Error", + "code": 1224, + "message": "Signature '{0}' must be a type predicate.", + "source": "generated" }, - "18004": { - "body": "You're trying to pass '{0}' as a key AND value to this object using a shorthand. You'll need to declare '{0}' as a variable first.", - "code": 18004 + "1225": { + "body": "TypeScript reports this error: Cannot find parameter '{0}'.", + "category": "Error", + "code": 1225, + "message": "Cannot find parameter '{0}'.", + "source": "generated" }, - "95050": { - "body": "I've spotted a bit of code that will never be run.", - "code": 95050 + "1226": { + "body": "TypeScript reports this error: Type predicate '{0}' is not assignable to '{1}'.", + "category": "Error", + "code": 1226, + "message": "Type predicate '{0}' is not assignable to '{1}'.", + "source": "generated" + }, + "1227": { + "body": "TypeScript reports this error: Parameter '{0}' is not in the same position as parameter '{1}'.", + "category": "Error", + "code": 1227, + "message": "Parameter '{0}' is not in the same position as parameter '{1}'.", + "source": "generated" + }, + "1228": { + "body": "TypeScript reports this error: A type predicate is only allowed in return type position for functions and methods.", + "category": "Error", + "code": 1228, + "message": "A type predicate is only allowed in return type position for functions and methods.", + "source": "generated" + }, + "1229": { + "body": "TypeScript reports this error: A type predicate cannot reference a rest parameter.", + "category": "Error", + "code": 1229, + "message": "A type predicate cannot reference a rest parameter.", + "source": "generated" + }, + "1230": { + "body": "TypeScript reports this error: A type predicate cannot reference element '{0}' in a binding pattern.", + "category": "Error", + "code": 1230, + "message": "A type predicate cannot reference element '{0}' in a binding pattern.", + "source": "generated" + }, + "1231": { + "body": "TypeScript reports this error: An export assignment must be at the top level of a file or module declaration.", + "category": "Error", + "code": 1231, + "message": "An export assignment must be at the top level of a file or module declaration.", + "source": "generated" + }, + "1232": { + "body": "TypeScript reports this error: An import declaration can only be used at the top level of a namespace or module.", + "category": "Error", + "code": 1232, + "message": "An import declaration can only be used at the top level of a namespace or module.", + "source": "generated" + }, + "1233": { + "body": "TypeScript reports this error: An export declaration can only be used at the top level of a namespace or module.", + "category": "Error", + "code": 1233, + "message": "An export declaration can only be used at the top level of a namespace or module.", + "source": "generated" + }, + "1234": { + "body": "TypeScript reports this error: An ambient module declaration is only allowed at the top level in a file.", + "category": "Error", + "code": 1234, + "message": "An ambient module declaration is only allowed at the top level in a file.", + "source": "generated" + }, + "1235": { + "body": "TypeScript reports this error: A namespace declaration is only allowed at the top level of a namespace or module.", + "category": "Error", + "code": 1235, + "message": "A namespace declaration is only allowed at the top level of a namespace or module.", + "source": "generated" + }, + "1236": { + "body": "TypeScript reports this error: The return type of a property decorator function must be either 'void' or 'any'.", + "category": "Error", + "code": 1236, + "message": "The return type of a property decorator function must be either 'void' or 'any'.", + "source": "generated" + }, + "1237": { + "body": "TypeScript reports this error: The return type of a parameter decorator function must be either 'void' or 'any'.", + "category": "Error", + "code": 1237, + "message": "The return type of a parameter decorator function must be either 'void' or 'any'.", + "source": "generated" + }, + "1238": { + "body": "TypeScript reports this error: Unable to resolve signature of class decorator when called as an expression.", + "category": "Error", + "code": 1238, + "message": "Unable to resolve signature of class decorator when called as an expression.", + "source": "generated" + }, + "1239": { + "body": "TypeScript reports this error: Unable to resolve signature of parameter decorator when called as an expression.", + "category": "Error", + "code": 1239, + "message": "Unable to resolve signature of parameter decorator when called as an expression.", + "source": "generated" + }, + "1240": { + "body": "You can't use a decorator on an expression, like an arrow function.", + "category": "Error", + "code": 1240, + "message": "Unable to resolve signature of property decorator when called as an expression.", + "source": "curated" + }, + "1241": { + "body": "TypeScript reports this error: Unable to resolve signature of method decorator when called as an expression.", + "category": "Error", + "code": 1241, + "message": "Unable to resolve signature of method decorator when called as an expression.", + "source": "generated" + }, + "1242": { + "body": "TypeScript reports this error: 'abstract' modifier can only appear on a class, method, or property declaration.", + "category": "Error", + "code": 1242, + "message": "'abstract' modifier can only appear on a class, method, or property declaration.", + "source": "generated" + }, + "1243": { + "body": "TypeScript reports this error: '{0}' modifier cannot be used with '{1}' modifier.", + "category": "Error", + "code": 1243, + "message": "'{0}' modifier cannot be used with '{1}' modifier.", + "source": "generated" + }, + "1244": { + "body": "TypeScript reports this error: Abstract methods can only appear within an abstract class.", + "category": "Error", + "code": 1244, + "message": "Abstract methods can only appear within an abstract class.", + "source": "generated" + }, + "1245": { + "body": "TypeScript reports this error: Method '{0}' cannot have an implementation because it is marked abstract.", + "category": "Error", + "code": 1245, + "message": "Method '{0}' cannot have an implementation because it is marked abstract.", + "source": "generated" + }, + "1246": { + "body": "TypeScript reports this error: An interface property cannot have an initializer.", + "category": "Error", + "code": 1246, + "message": "An interface property cannot have an initializer.", + "source": "generated" + }, + "1247": { + "body": "TypeScript reports this error: A type literal property cannot have an initializer.", + "category": "Error", + "code": 1247, + "message": "A type literal property cannot have an initializer.", + "source": "generated" + }, + "1248": { + "body": "TypeScript reports this error: A class member cannot have the '{0}' keyword.", + "category": "Error", + "code": 1248, + "message": "A class member cannot have the '{0}' keyword.", + "source": "generated" + }, + "1249": { + "body": "TypeScript reports this error: A decorator can only decorate a method implementation, not an overload.", + "category": "Error", + "code": 1249, + "message": "A decorator can only decorate a method implementation, not an overload.", + "source": "generated" + }, + "1250": { + "body": "TypeScript reports this error: Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'.", + "category": "Error", + "code": 1250, + "message": "Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'.", + "source": "generated" + }, + "1251": { + "body": "TypeScript reports this error: Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. Class definitions are automatically in strict mode.", + "category": "Error", + "code": 1251, + "message": "Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. Class definitions are automatically in strict mode.", + "source": "generated" + }, + "1252": { + "body": "TypeScript reports this error: Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. Modules are automatically in strict mode.", + "category": "Error", + "code": 1252, + "message": "Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. Modules are automatically in strict mode.", + "source": "generated" + }, + "1253": { + "body": "TypeScript reports this error: Abstract properties can only appear within an abstract class.", + "category": "Error", + "code": 1253, + "message": "Abstract properties can only appear within an abstract class.", + "source": "generated" + }, + "1254": { + "body": "You can't use runtime code in a declaration file.", + "category": "Error", + "code": 1254, + "message": "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.", + "source": "curated" + }, + "1255": { + "body": "TypeScript reports this error: A definite assignment assertion '!' is not permitted in this context.", + "category": "Error", + "code": 1255, + "message": "A definite assignment assertion '!' is not permitted in this context.", + "source": "generated" + }, + "1257": { + "body": "TypeScript reports this error: A required element cannot follow an optional element.", + "category": "Error", + "code": 1257, + "message": "A required element cannot follow an optional element.", + "source": "generated" + }, + "1258": { + "body": "TypeScript reports this error: A default export must be at the top level of a file or module declaration.", + "category": "Error", + "code": 1258, + "message": "A default export must be at the top level of a file or module declaration.", + "source": "generated" + }, + "1259": { + "body": "TypeScript reports this error: Module '{0}' can only be default-imported using the '{1}' flag", + "category": "Error", + "code": 1259, + "message": "Module '{0}' can only be default-imported using the '{1}' flag", + "source": "generated" + }, + "1260": { + "body": "TypeScript reports this error: Keywords cannot contain escape characters.", + "category": "Error", + "code": 1260, + "message": "Keywords cannot contain escape characters.", + "source": "generated" + }, + "1261": { + "body": "TypeScript reports this error: Already included file name '{0}' differs from file name '{1}' only in casing.", + "category": "Error", + "code": 1261, + "message": "Already included file name '{0}' differs from file name '{1}' only in casing.", + "source": "generated" + }, + "1262": { + "body": "TypeScript reports this error: Identifier expected. '{0}' is a reserved word at the top-level of a module.", + "category": "Error", + "code": 1262, + "message": "Identifier expected. '{0}' is a reserved word at the top-level of a module.", + "source": "generated" + }, + "1263": { + "body": "TypeScript reports this error: Declarations with initializers cannot also have definite assignment assertions.", + "category": "Error", + "code": 1263, + "message": "Declarations with initializers cannot also have definite assignment assertions.", + "source": "generated" + }, + "1264": { + "body": "TypeScript reports this error: Declarations with definite assignment assertions must also have type annotations.", + "category": "Error", + "code": 1264, + "message": "Declarations with definite assignment assertions must also have type annotations.", + "source": "generated" + }, + "1265": { + "body": "TypeScript reports this error: A rest element cannot follow another rest element.", + "category": "Error", + "code": 1265, + "message": "A rest element cannot follow another rest element.", + "source": "generated" + }, + "1266": { + "body": "TypeScript reports this error: An optional element cannot follow a rest element.", + "category": "Error", + "code": 1266, + "message": "An optional element cannot follow a rest element.", + "source": "generated" + }, + "1267": { + "body": "TypeScript reports this error: Property '{0}' cannot have an initializer because it is marked abstract.", + "category": "Error", + "code": 1267, + "message": "Property '{0}' cannot have an initializer because it is marked abstract.", + "source": "generated" + }, + "1268": { + "body": "Objects in TypeScript (and JavaScript!) can only have strings, numbers or symbols as keys. [Template literal types](https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html) are a way of constructing strings.", + "category": "Error", + "code": 1268, + "message": "An index signature parameter type must be 'string', 'number', 'symbol', or a template literal type.", + "source": "curated" + }, + "1269": { + "body": "TypeScript reports this error: Cannot use 'export import' on a type or type-only namespace when '{0}' is enabled.", + "category": "Error", + "code": 1269, + "message": "Cannot use 'export import' on a type or type-only namespace when '{0}' is enabled.", + "source": "generated" + }, + "1270": { + "body": "TypeScript reports this error: Decorator function return type '{0}' is not assignable to type '{1}'.", + "category": "Error", + "code": 1270, + "message": "Decorator function return type '{0}' is not assignable to type '{1}'.", + "source": "generated" + }, + "1271": { + "body": "TypeScript reports this error: Decorator function return type is '{0}' but is expected to be 'void' or 'any'.", + "category": "Error", + "code": 1271, + "message": "Decorator function return type is '{0}' but is expected to be 'void' or 'any'.", + "source": "generated" + }, + "1272": { + "body": "TypeScript reports this error: A type referenced in a decorated signature must be imported with 'import type' or a namespace import when 'isolatedModules' and 'emitDecoratorMetadata' are enabled.", + "category": "Error", + "code": 1272, + "message": "A type referenced in a decorated signature must be imported with 'import type' or a namespace import when 'isolatedModules' and 'emitDecoratorMetadata' are enabled.", + "source": "generated" + }, + "1273": { + "body": "TypeScript reports this error: '{0}' modifier cannot appear on a type parameter", + "category": "Error", + "code": 1273, + "message": "'{0}' modifier cannot appear on a type parameter", + "source": "generated" + }, + "1274": { + "body": "TypeScript reports this error: '{0}' modifier can only appear on a type parameter of a class, interface or type alias", + "category": "Error", + "code": 1274, + "message": "'{0}' modifier can only appear on a type parameter of a class, interface or type alias", + "source": "generated" + }, + "1275": { + "body": "TypeScript reports this error: 'accessor' modifier can only appear on a property declaration.", + "category": "Error", + "code": 1275, + "message": "'accessor' modifier can only appear on a property declaration.", + "source": "generated" + }, + "1276": { + "body": "TypeScript reports this error: An 'accessor' property cannot be declared optional.", + "category": "Error", + "code": 1276, + "message": "An 'accessor' property cannot be declared optional.", + "source": "generated" + }, + "1277": { + "body": "TypeScript reports this error: '{0}' modifier can only appear on a type parameter of a function, method or class", + "category": "Error", + "code": 1277, + "message": "'{0}' modifier can only appear on a type parameter of a function, method or class", + "source": "generated" + }, + "1278": { + "body": "TypeScript reports this error: The runtime will invoke the decorator with {1} arguments, but the decorator expects {0}.", + "category": "Error", + "code": 1278, + "message": "The runtime will invoke the decorator with {1} arguments, but the decorator expects {0}.", + "source": "generated" + }, + "1279": { + "body": "TypeScript reports this error: The runtime will invoke the decorator with {1} arguments, but the decorator expects at least {0}.", + "category": "Error", + "code": 1279, + "message": "The runtime will invoke the decorator with {1} arguments, but the decorator expects at least {0}.", + "source": "generated" + }, + "1280": { + "body": "TypeScript reports this error: Namespaces are not allowed in global script files when '{0}' is enabled. If this file is not intended to be a global script, set 'moduleDetection' to 'force' or add an empty 'export {}' statement.", + "category": "Error", + "code": 1280, + "message": "Namespaces are not allowed in global script files when '{0}' is enabled. If this file is not intended to be a global script, set 'moduleDetection' to 'force' or add an empty 'export {}' statement.", + "source": "generated" + }, + "1281": { + "body": "TypeScript reports this error: Cannot access '{0}' from another file without qualification when '{1}' is enabled. Use '{2}' instead.", + "category": "Error", + "code": 1281, + "message": "Cannot access '{0}' from another file without qualification when '{1}' is enabled. Use '{2}' instead.", + "source": "generated" + }, + "1282": { + "body": "TypeScript reports this error: An 'export =' declaration must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type.", + "category": "Error", + "code": 1282, + "message": "An 'export =' declaration must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type.", + "source": "generated" + }, + "1283": { + "body": "TypeScript reports this error: An 'export =' declaration must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration.", + "category": "Error", + "code": 1283, + "message": "An 'export =' declaration must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration.", + "source": "generated" + }, + "1284": { + "body": "TypeScript reports this error: An 'export default' must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type.", + "category": "Error", + "code": 1284, + "message": "An 'export default' must reference a value when 'verbatimModuleSyntax' is enabled, but '{0}' only refers to a type.", + "source": "generated" + }, + "1285": { + "body": "TypeScript reports this error: An 'export default' must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration.", + "category": "Error", + "code": 1285, + "message": "An 'export default' must reference a real value when 'verbatimModuleSyntax' is enabled, but '{0}' resolves to a type-only declaration.", + "source": "generated" + }, + "1286": { + "body": "TypeScript reports this error: ECMAScript imports and exports cannot be written in a CommonJS file under 'verbatimModuleSyntax'.", + "category": "Error", + "code": 1286, + "message": "ECMAScript imports and exports cannot be written in a CommonJS file under 'verbatimModuleSyntax'.", + "source": "generated" + }, + "1287": { + "body": "TypeScript reports this error: A top-level 'export' modifier cannot be used on value declarations in a CommonJS module when 'verbatimModuleSyntax' is enabled.", + "category": "Error", + "code": 1287, + "message": "A top-level 'export' modifier cannot be used on value declarations in a CommonJS module when 'verbatimModuleSyntax' is enabled.", + "source": "generated" + }, + "1288": { + "body": "TypeScript reports this error: An import alias cannot resolve to a type or type-only declaration when 'verbatimModuleSyntax' is enabled.", + "category": "Error", + "code": 1288, + "message": "An import alias cannot resolve to a type or type-only declaration when 'verbatimModuleSyntax' is enabled.", + "source": "generated" + }, + "1289": { + "body": "TypeScript reports this error: '{0}' resolves to a type-only declaration and must be marked type-only in this file before re-exporting when '{1}' is enabled. Consider using 'import type' where '{0}' is imported.", + "category": "Error", + "code": 1289, + "message": "'{0}' resolves to a type-only declaration and must be marked type-only in this file before re-exporting when '{1}' is enabled. Consider using 'import type' where '{0}' is imported.", + "source": "generated" + }, + "1290": { + "body": "TypeScript reports this error: '{0}' resolves to a type-only declaration and must be marked type-only in this file before re-exporting when '{1}' is enabled. Consider using 'export type { {0} as default }'.", + "category": "Error", + "code": 1290, + "message": "'{0}' resolves to a type-only declaration and must be marked type-only in this file before re-exporting when '{1}' is enabled. Consider using 'export type { {0} as default }'.", + "source": "generated" + }, + "1291": { + "body": "TypeScript reports this error: '{0}' resolves to a type and must be marked type-only in this file before re-exporting when '{1}' is enabled. Consider using 'import type' where '{0}' is imported.", + "category": "Error", + "code": 1291, + "message": "'{0}' resolves to a type and must be marked type-only in this file before re-exporting when '{1}' is enabled. Consider using 'import type' where '{0}' is imported.", + "source": "generated" + }, + "1292": { + "body": "TypeScript reports this error: '{0}' resolves to a type and must be marked type-only in this file before re-exporting when '{1}' is enabled. Consider using 'export type { {0} as default }'.", + "category": "Error", + "code": 1292, + "message": "'{0}' resolves to a type and must be marked type-only in this file before re-exporting when '{1}' is enabled. Consider using 'export type { {0} as default }'.", + "source": "generated" + }, + "1293": { + "body": "TypeScript reports this error: ECMAScript module syntax is not allowed in a CommonJS module when 'module' is set to 'preserve'.", + "category": "Error", + "code": 1293, + "message": "ECMAScript module syntax is not allowed in a CommonJS module when 'module' is set to 'preserve'.", + "source": "generated" + }, + "1294": { + "body": "TypeScript reports this error: This syntax is not allowed when 'erasableSyntaxOnly' is enabled.", + "category": "Error", + "code": 1294, + "message": "This syntax is not allowed when 'erasableSyntaxOnly' is enabled.", + "source": "generated" + }, + "1295": { + "body": "TypeScript reports this error: ECMAScript imports and exports cannot be written in a CommonJS file under 'verbatimModuleSyntax'. Adjust the 'type' field in the nearest 'package.json' to make this file an ECMAScript module, or adjust your 'verbatimModuleSyntax', 'module', and 'moduleResolution' settings in TypeScript.", + "category": "Error", + "code": 1295, + "message": "ECMAScript imports and exports cannot be written in a CommonJS file under 'verbatimModuleSyntax'. Adjust the 'type' field in the nearest 'package.json' to make this file an ECMAScript module, or adjust your 'verbatimModuleSyntax', 'module', and 'moduleResolution' settings in TypeScript.", + "source": "generated" + }, + "1300": { + "body": "TypeScript reports this error: 'with' statements are not allowed in an async function block.", + "category": "Error", + "code": 1300, + "message": "'with' statements are not allowed in an async function block.", + "source": "generated" + }, + "1308": { + "body": "TypeScript reports this error: 'await' expressions are only allowed within async functions and at the top levels of modules.", + "category": "Error", + "code": 1308, + "message": "'await' expressions are only allowed within async functions and at the top levels of modules.", + "source": "generated" + }, + "1309": { + "body": "TypeScript reports this error: The current file is a CommonJS module and cannot use 'await' at the top level.", + "category": "Error", + "code": 1309, + "message": "The current file is a CommonJS module and cannot use 'await' at the top level.", + "source": "generated" + }, + "1312": { + "body": "TypeScript reports this error: Did you mean to use a ':'? An '=' can only follow a property name when the containing object literal is part of a destructuring pattern.", + "category": "Error", + "code": 1312, + "message": "Did you mean to use a ':'? An '=' can only follow a property name when the containing object literal is part of a destructuring pattern.", + "source": "generated" + }, + "1313": { + "body": "An if statement shouldn't be empty", + "category": "Error", + "code": 1313, + "message": "The body of an 'if' statement cannot be the empty statement.", + "source": "curated" + }, + "1314": { + "body": "TypeScript reports this error: Global module exports may only appear in module files.", + "category": "Error", + "code": 1314, + "message": "Global module exports may only appear in module files.", + "source": "generated" + }, + "1315": { + "body": "TypeScript reports this error: Global module exports may only appear in declaration files.", + "category": "Error", + "code": 1315, + "message": "Global module exports may only appear in declaration files.", + "source": "generated" + }, + "1316": { + "body": "TypeScript reports this error: Global module exports may only appear at top level.", + "category": "Error", + "code": 1316, + "message": "Global module exports may only appear at top level.", + "source": "generated" + }, + "1317": { + "body": "TypeScript reports this error: A parameter property cannot be declared using a rest parameter.", + "category": "Error", + "code": 1317, + "message": "A parameter property cannot be declared using a rest parameter.", + "source": "generated" + }, + "1318": { + "body": "TypeScript reports this error: An abstract accessor cannot have an implementation.", + "category": "Error", + "code": 1318, + "message": "An abstract accessor cannot have an implementation.", + "source": "generated" + }, + "1319": { + "body": "TypeScript reports this error: A default export can only be used in an ECMAScript-style module.", + "category": "Error", + "code": 1319, + "message": "A default export can only be used in an ECMAScript-style module.", + "source": "generated" + }, + "1320": { + "body": "TypeScript reports this error: Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member.", + "category": "Error", + "code": 1320, + "message": "Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member.", + "source": "generated" + }, + "1321": { + "body": "TypeScript reports this error: Type of 'yield' operand in an async generator must either be a valid promise or must not contain a callable 'then' member.", + "category": "Error", + "code": 1321, + "message": "Type of 'yield' operand in an async generator must either be a valid promise or must not contain a callable 'then' member.", + "source": "generated" + }, + "1322": { + "body": "TypeScript reports this error: Type of iterated elements of a 'yield*' operand must either be a valid promise or must not contain a callable 'then' member.", + "category": "Error", + "code": 1322, + "message": "Type of iterated elements of a 'yield*' operand must either be a valid promise or must not contain a callable 'then' member.", + "source": "generated" + }, + "1323": { + "body": "TypeScript reports this error: Dynamic imports are only supported when the '--module' flag is set to 'es2020', 'es2022', 'esnext', 'commonjs', 'amd', 'system', 'umd', 'node16', 'node18', 'node20', or 'nodenext'.", + "category": "Error", + "code": 1323, + "message": "Dynamic imports are only supported when the '--module' flag is set to 'es2020', 'es2022', 'esnext', 'commonjs', 'amd', 'system', 'umd', 'node16', 'node18', 'node20', or 'nodenext'.", + "source": "generated" + }, + "1324": { + "body": "TypeScript reports this error: Dynamic imports only support a second argument when the '--module' option is set to 'esnext', 'node16', 'node18', 'node20', 'nodenext', or 'preserve'.", + "category": "Error", + "code": 1324, + "message": "Dynamic imports only support a second argument when the '--module' option is set to 'esnext', 'node16', 'node18', 'node20', 'nodenext', or 'preserve'.", + "source": "generated" + }, + "1325": { + "body": "TypeScript reports this error: Argument of dynamic import cannot be spread element.", + "category": "Error", + "code": 1325, + "message": "Argument of dynamic import cannot be spread element.", + "source": "generated" + }, + "1326": { + "body": "TypeScript reports this error: This use of 'import' is invalid. 'import()' calls can be written, but they must have parentheses and cannot have type arguments.", + "category": "Error", + "code": 1326, + "message": "This use of 'import' is invalid. 'import()' calls can be written, but they must have parentheses and cannot have type arguments.", + "source": "generated" + }, + "1327": { + "body": "TypeScript reports this error: String literal with double quotes expected.", + "category": "Error", + "code": 1327, + "message": "String literal with double quotes expected.", + "source": "generated" + }, + "1328": { + "body": "TypeScript reports this error: Property value can only be string literal, numeric literal, 'true', 'false', 'null', object literal or array literal.", + "category": "Error", + "code": 1328, + "message": "Property value can only be string literal, numeric literal, 'true', 'false', 'null', object literal or array literal.", + "source": "generated" + }, + "1329": { + "body": "TypeScript reports this error: '{0}' accepts too few arguments to be used as a decorator here. Did you mean to call it first and write '@{0}()'?", + "category": "Error", + "code": 1329, + "message": "'{0}' accepts too few arguments to be used as a decorator here. Did you mean to call it first and write '@{0}()'?", + "source": "generated" + }, + "1330": { + "body": "TypeScript reports this error: A property of an interface or type literal whose type is a 'unique symbol' type must be 'readonly'.", + "category": "Error", + "code": 1330, + "message": "A property of an interface or type literal whose type is a 'unique symbol' type must be 'readonly'.", + "source": "generated" + }, + "1331": { + "body": "TypeScript reports this error: A property of a class whose type is a 'unique symbol' type must be both 'static' and 'readonly'.", + "category": "Error", + "code": 1331, + "message": "A property of a class whose type is a 'unique symbol' type must be both 'static' and 'readonly'.", + "source": "generated" + }, + "1332": { + "body": "TypeScript reports this error: A variable whose type is a 'unique symbol' type must be 'const'.", + "category": "Error", + "code": 1332, + "message": "A variable whose type is a 'unique symbol' type must be 'const'.", + "source": "generated" + }, + "1333": { + "body": "TypeScript reports this error: 'unique symbol' types may not be used on a variable declaration with a binding name.", + "category": "Error", + "code": 1333, + "message": "'unique symbol' types may not be used on a variable declaration with a binding name.", + "source": "generated" + }, + "1334": { + "body": "TypeScript reports this error: 'unique symbol' types are only allowed on variables in a variable statement.", + "category": "Error", + "code": 1334, + "message": "'unique symbol' types are only allowed on variables in a variable statement.", + "source": "generated" + }, + "1335": { + "body": "TypeScript reports this error: 'unique symbol' types are not allowed here.", + "category": "Error", + "code": 1335, + "message": "'unique symbol' types are not allowed here.", + "source": "generated" + }, + "1337": { + "body": "TypeScript reports this error: An index signature parameter type cannot be a literal type or generic type. Consider using a mapped object type instead.", + "category": "Error", + "code": 1337, + "message": "An index signature parameter type cannot be a literal type or generic type. Consider using a mapped object type instead.", + "source": "generated" + }, + "1338": { + "body": "TypeScript reports this error: 'infer' declarations are only permitted in the 'extends' clause of a conditional type.", + "category": "Error", + "code": 1338, + "message": "'infer' declarations are only permitted in the 'extends' clause of a conditional type.", + "source": "generated" + }, + "1339": { + "body": "TypeScript reports this error: Module '{0}' does not refer to a value, but is used as a value here.", + "category": "Error", + "code": 1339, + "message": "Module '{0}' does not refer to a value, but is used as a value here.", + "source": "generated" + }, + "1340": { + "body": "TypeScript reports this error: Module '{0}' does not refer to a type, but is used as a type here. Did you mean 'typeof import('{0}')'?", + "category": "Error", + "code": 1340, + "message": "Module '{0}' does not refer to a type, but is used as a type here. Did you mean 'typeof import('{0}')'?", + "source": "generated" + }, + "1341": { + "body": "TypeScript reports this error: Class constructor may not be an accessor.", + "category": "Error", + "code": 1341, + "message": "Class constructor may not be an accessor.", + "source": "generated" + }, + "1343": { + "body": "TypeScript reports this error: The 'import.meta' meta-property is only allowed when the '--module' option is 'es2020', 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', or 'nodenext'.", + "category": "Error", + "code": 1343, + "message": "The 'import.meta' meta-property is only allowed when the '--module' option is 'es2020', 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', or 'nodenext'.", + "source": "generated" + }, + "1344": { + "body": "TypeScript reports this error: 'A label is not allowed here.", + "category": "Error", + "code": 1344, + "message": "'A label is not allowed here.", + "source": "generated" + }, + "1345": { + "body": "TypeScript reports this error: An expression of type 'void' cannot be tested for truthiness.", + "category": "Error", + "code": 1345, + "message": "An expression of type 'void' cannot be tested for truthiness.", + "source": "generated" + }, + "1346": { + "body": "TypeScript reports this error: This parameter is not allowed with 'use strict' directive.", + "category": "Error", + "code": 1346, + "message": "This parameter is not allowed with 'use strict' directive.", + "source": "generated" + }, + "1347": { + "body": "TypeScript reports this error: 'use strict' directive cannot be used with non-simple parameter list.", + "category": "Error", + "code": 1347, + "message": "'use strict' directive cannot be used with non-simple parameter list.", + "source": "generated" + }, + "1348": { + "body": "TypeScript reports this error: Non-simple parameter declared here.", + "category": "Error", + "code": 1348, + "message": "Non-simple parameter declared here.", + "source": "generated" + }, + "1349": { + "body": "TypeScript reports this error: 'use strict' directive used here.", + "category": "Error", + "code": 1349, + "message": "'use strict' directive used here.", + "source": "generated" + }, + "1350": { + "body": "TypeScript reports: Print the final configuration instead of building.", + "category": "Message", + "code": 1350, + "message": "Print the final configuration instead of building.", + "source": "generated" + }, + "1351": { + "body": "TypeScript reports this error: An identifier or keyword cannot immediately follow a numeric literal.", + "category": "Error", + "code": 1351, + "message": "An identifier or keyword cannot immediately follow a numeric literal.", + "source": "generated" + }, + "1352": { + "body": "TypeScript reports this error: A bigint literal cannot use exponential notation.", + "category": "Error", + "code": 1352, + "message": "A bigint literal cannot use exponential notation.", + "source": "generated" + }, + "1353": { + "body": "TypeScript reports this error: A bigint literal must be an integer.", + "category": "Error", + "code": 1353, + "message": "A bigint literal must be an integer.", + "source": "generated" + }, + "1354": { + "body": "TypeScript reports this error: 'readonly' type modifier is only permitted on array and tuple literal types.", + "category": "Error", + "code": 1354, + "message": "'readonly' type modifier is only permitted on array and tuple literal types.", + "source": "generated" + }, + "1355": { + "body": "TypeScript reports this error: A 'const' assertion can only be applied to references to enum members, or string, number, boolean, array, or object literals.", + "category": "Error", + "code": 1355, + "message": "A 'const' assertion can only be applied to references to enum members, or string, number, boolean, array, or object literals.", + "source": "generated" + }, + "1356": { + "body": "TypeScript reports this error: Did you mean to mark this function as 'async'?", + "category": "Error", + "code": 1356, + "message": "Did you mean to mark this function as 'async'?", + "source": "generated" + }, + "1357": { + "body": "TypeScript reports this error: An enum member name must be followed by a ',', '=', or '}'.", + "category": "Error", + "code": 1357, + "message": "An enum member name must be followed by a ',', '=', or '}'.", + "source": "generated" + }, + "1358": { + "body": "TypeScript reports this error: Tagged template expressions are not permitted in an optional chain.", + "category": "Error", + "code": 1358, + "message": "Tagged template expressions are not permitted in an optional chain.", + "source": "generated" + }, + "1359": { + "body": "TypeScript reports this error: Identifier expected. '{0}' is a reserved word that cannot be used here.", + "category": "Error", + "code": 1359, + "message": "Identifier expected. '{0}' is a reserved word that cannot be used here.", + "source": "generated" + }, + "1360": { + "body": "TypeScript reports this error: Type '{0}' does not satisfy the expected type '{1}'.", + "category": "Error", + "code": 1360, + "message": "Type '{0}' does not satisfy the expected type '{1}'.", + "source": "generated" + }, + "1361": { + "body": "TypeScript reports this error: '{0}' cannot be used as a value because it was imported using 'import type'.", + "category": "Error", + "code": 1361, + "message": "'{0}' cannot be used as a value because it was imported using 'import type'.", + "source": "generated" + }, + "1362": { + "body": "TypeScript reports this error: '{0}' cannot be used as a value because it was exported using 'export type'.", + "category": "Error", + "code": 1362, + "message": "'{0}' cannot be used as a value because it was exported using 'export type'.", + "source": "generated" + }, + "1363": { + "body": "TypeScript reports this error: A type-only import can specify a default import or named bindings, but not both.", + "category": "Error", + "code": 1363, + "message": "A type-only import can specify a default import or named bindings, but not both.", + "source": "generated" + }, + "1364": { + "body": "TypeScript reports: Convert to type-only export", + "category": "Message", + "code": 1364, + "message": "Convert to type-only export", + "source": "generated" + }, + "1365": { + "body": "TypeScript reports: Convert all re-exported types to type-only exports", + "category": "Message", + "code": 1365, + "message": "Convert all re-exported types to type-only exports", + "source": "generated" + }, + "1366": { + "body": "TypeScript reports: Split into two separate import declarations", + "category": "Message", + "code": 1366, + "message": "Split into two separate import declarations", + "source": "generated" + }, + "1367": { + "body": "TypeScript reports: Split all invalid type-only imports", + "category": "Message", + "code": 1367, + "message": "Split all invalid type-only imports", + "source": "generated" + }, + "1368": { + "body": "TypeScript reports this error: Class constructor may not be a generator.", + "category": "Error", + "code": 1368, + "message": "Class constructor may not be a generator.", + "source": "generated" + }, + "1369": { + "body": "TypeScript reports: Did you mean '{0}'?", + "category": "Message", + "code": 1369, + "message": "Did you mean '{0}'?", + "source": "generated" + }, + "1375": { + "body": "TypeScript reports this error: 'await' expressions are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.", + "category": "Error", + "code": 1375, + "message": "'await' expressions are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.", + "source": "generated" + }, + "1376": { + "body": "TypeScript reports: '{0}' was imported here.", + "category": "Message", + "code": 1376, + "message": "'{0}' was imported here.", + "source": "generated" + }, + "1377": { + "body": "TypeScript reports: '{0}' was exported here.", + "category": "Message", + "code": 1377, + "message": "'{0}' was exported here.", + "source": "generated" + }, + "1378": { + "body": "TypeScript reports this error: Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher.", + "category": "Error", + "code": 1378, + "message": "Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher.", + "source": "generated" + }, + "1379": { + "body": "TypeScript reports this error: An import alias cannot reference a declaration that was exported using 'export type'.", + "category": "Error", + "code": 1379, + "message": "An import alias cannot reference a declaration that was exported using 'export type'.", + "source": "generated" + }, + "1380": { + "body": "TypeScript reports this error: An import alias cannot reference a declaration that was imported using 'import type'.", + "category": "Error", + "code": 1380, + "message": "An import alias cannot reference a declaration that was imported using 'import type'.", + "source": "generated" + }, + "1381": { + "body": "TypeScript reports this error: Unexpected token. Did you mean `{'}'}` or `}`?", + "category": "Error", + "code": 1381, + "message": "Unexpected token. Did you mean `{'}'}` or `}`?", + "source": "generated" + }, + "1382": { + "body": "TypeScript reports this error: Unexpected token. Did you mean `{'>'}` or `>`?", + "category": "Error", + "code": 1382, + "message": "Unexpected token. Did you mean `{'>'}` or `>`?", + "source": "generated" + }, + "1385": { + "body": "TypeScript reports this error: Function type notation must be parenthesized when used in a union type.", + "category": "Error", + "code": 1385, + "message": "Function type notation must be parenthesized when used in a union type.", + "source": "generated" + }, + "1386": { + "body": "TypeScript reports this error: Constructor type notation must be parenthesized when used in a union type.", + "category": "Error", + "code": 1386, + "message": "Constructor type notation must be parenthesized when used in a union type.", + "source": "generated" + }, + "1387": { + "body": "TypeScript reports this error: Function type notation must be parenthesized when used in an intersection type.", + "category": "Error", + "code": 1387, + "message": "Function type notation must be parenthesized when used in an intersection type.", + "source": "generated" + }, + "1388": { + "body": "TypeScript reports this error: Constructor type notation must be parenthesized when used in an intersection type.", + "category": "Error", + "code": 1388, + "message": "Constructor type notation must be parenthesized when used in an intersection type.", + "source": "generated" + }, + "1389": { + "body": "TypeScript reports this error: '{0}' is not allowed as a variable declaration name.", + "category": "Error", + "code": 1389, + "message": "'{0}' is not allowed as a variable declaration name.", + "source": "generated" + }, + "1390": { + "body": "TypeScript reports this error: '{0}' is not allowed as a parameter name.", + "category": "Error", + "code": 1390, + "message": "'{0}' is not allowed as a parameter name.", + "source": "generated" + }, + "1392": { + "body": "TypeScript reports this error: An import alias cannot use 'import type'", + "category": "Error", + "code": 1392, + "message": "An import alias cannot use 'import type'", + "source": "generated" + }, + "1393": { + "body": "TypeScript reports: Imported via {0} from file '{1}'", + "category": "Message", + "code": 1393, + "message": "Imported via {0} from file '{1}'", + "source": "generated" + }, + "1394": { + "body": "TypeScript reports: Imported via {0} from file '{1}' with packageId '{2}'", + "category": "Message", + "code": 1394, + "message": "Imported via {0} from file '{1}' with packageId '{2}'", + "source": "generated" + }, + "1395": { + "body": "TypeScript reports: Imported via {0} from file '{1}' to import 'importHelpers' as specified in compilerOptions", + "category": "Message", + "code": 1395, + "message": "Imported via {0} from file '{1}' to import 'importHelpers' as specified in compilerOptions", + "source": "generated" + }, + "1396": { + "body": "TypeScript reports: Imported via {0} from file '{1}' with packageId '{2}' to import 'importHelpers' as specified in compilerOptions", + "category": "Message", + "code": 1396, + "message": "Imported via {0} from file '{1}' with packageId '{2}' to import 'importHelpers' as specified in compilerOptions", + "source": "generated" + }, + "1397": { + "body": "TypeScript reports: Imported via {0} from file '{1}' to import 'jsx' and 'jsxs' factory functions", + "category": "Message", + "code": 1397, + "message": "Imported via {0} from file '{1}' to import 'jsx' and 'jsxs' factory functions", + "source": "generated" + }, + "1398": { + "body": "TypeScript reports: Imported via {0} from file '{1}' with packageId '{2}' to import 'jsx' and 'jsxs' factory functions", + "category": "Message", + "code": 1398, + "message": "Imported via {0} from file '{1}' with packageId '{2}' to import 'jsx' and 'jsxs' factory functions", + "source": "generated" + }, + "1399": { + "body": "TypeScript reports: File is included via import here.", + "category": "Message", + "code": 1399, + "message": "File is included via import here.", + "source": "generated" + }, + "1400": { + "body": "TypeScript reports: Referenced via '{0}' from file '{1}'", + "category": "Message", + "code": 1400, + "message": "Referenced via '{0}' from file '{1}'", + "source": "generated" + }, + "1401": { + "body": "TypeScript reports: File is included via reference here.", + "category": "Message", + "code": 1401, + "message": "File is included via reference here.", + "source": "generated" + }, + "1402": { + "body": "TypeScript reports: Type library referenced via '{0}' from file '{1}'", + "category": "Message", + "code": 1402, + "message": "Type library referenced via '{0}' from file '{1}'", + "source": "generated" + }, + "1403": { + "body": "TypeScript reports: Type library referenced via '{0}' from file '{1}' with packageId '{2}'", + "category": "Message", + "code": 1403, + "message": "Type library referenced via '{0}' from file '{1}' with packageId '{2}'", + "source": "generated" + }, + "1404": { + "body": "TypeScript reports: File is included via type library reference here.", + "category": "Message", + "code": 1404, + "message": "File is included via type library reference here.", + "source": "generated" + }, + "1405": { + "body": "TypeScript reports: Library referenced via '{0}' from file '{1}'", + "category": "Message", + "code": 1405, + "message": "Library referenced via '{0}' from file '{1}'", + "source": "generated" + }, + "1406": { + "body": "TypeScript reports: File is included via library reference here.", + "category": "Message", + "code": 1406, + "message": "File is included via library reference here.", + "source": "generated" + }, + "1407": { + "body": "TypeScript reports: Matched by include pattern '{0}' in '{1}'", + "category": "Message", + "code": 1407, + "message": "Matched by include pattern '{0}' in '{1}'", + "source": "generated" + }, + "1408": { + "body": "TypeScript reports: File is matched by include pattern specified here.", + "category": "Message", + "code": 1408, + "message": "File is matched by include pattern specified here.", + "source": "generated" + }, + "1409": { + "body": "TypeScript reports: Part of 'files' list in tsconfig.json", + "category": "Message", + "code": 1409, + "message": "Part of 'files' list in tsconfig.json", + "source": "generated" + }, + "1410": { + "body": "TypeScript reports: File is matched by 'files' list specified here.", + "category": "Message", + "code": 1410, + "message": "File is matched by 'files' list specified here.", + "source": "generated" + }, + "1411": { + "body": "TypeScript reports: Output from referenced project '{0}' included because '{1}' specified", + "category": "Message", + "code": 1411, + "message": "Output from referenced project '{0}' included because '{1}' specified", + "source": "generated" + }, + "1412": { + "body": "TypeScript reports: Output from referenced project '{0}' included because '--module' is specified as 'none'", + "category": "Message", + "code": 1412, + "message": "Output from referenced project '{0}' included because '--module' is specified as 'none'", + "source": "generated" + }, + "1413": { + "body": "TypeScript reports: File is output from referenced project specified here.", + "category": "Message", + "code": 1413, + "message": "File is output from referenced project specified here.", + "source": "generated" + }, + "1414": { + "body": "TypeScript reports: Source from referenced project '{0}' included because '{1}' specified", + "category": "Message", + "code": 1414, + "message": "Source from referenced project '{0}' included because '{1}' specified", + "source": "generated" + }, + "1415": { + "body": "TypeScript reports: Source from referenced project '{0}' included because '--module' is specified as 'none'", + "category": "Message", + "code": 1415, + "message": "Source from referenced project '{0}' included because '--module' is specified as 'none'", + "source": "generated" + }, + "1416": { + "body": "TypeScript reports: File is source from referenced project specified here.", + "category": "Message", + "code": 1416, + "message": "File is source from referenced project specified here.", + "source": "generated" + }, + "1417": { + "body": "TypeScript reports: Entry point of type library '{0}' specified in compilerOptions", + "category": "Message", + "code": 1417, + "message": "Entry point of type library '{0}' specified in compilerOptions", + "source": "generated" + }, + "1418": { + "body": "TypeScript reports: Entry point of type library '{0}' specified in compilerOptions with packageId '{1}'", + "category": "Message", + "code": 1418, + "message": "Entry point of type library '{0}' specified in compilerOptions with packageId '{1}'", + "source": "generated" + }, + "1419": { + "body": "TypeScript reports: File is entry point of type library specified here.", + "category": "Message", + "code": 1419, + "message": "File is entry point of type library specified here.", + "source": "generated" + }, + "1420": { + "body": "TypeScript reports: Entry point for implicit type library '{0}'", + "category": "Message", + "code": 1420, + "message": "Entry point for implicit type library '{0}'", + "source": "generated" + }, + "1421": { + "body": "TypeScript reports: Entry point for implicit type library '{0}' with packageId '{1}'", + "category": "Message", + "code": 1421, + "message": "Entry point for implicit type library '{0}' with packageId '{1}'", + "source": "generated" + }, + "1422": { + "body": "TypeScript reports: Library '{0}' specified in compilerOptions", + "category": "Message", + "code": 1422, + "message": "Library '{0}' specified in compilerOptions", + "source": "generated" + }, + "1423": { + "body": "TypeScript reports: File is library specified here.", + "category": "Message", + "code": 1423, + "message": "File is library specified here.", + "source": "generated" + }, + "1424": { + "body": "TypeScript reports: Default library", + "category": "Message", + "code": 1424, + "message": "Default library", + "source": "generated" + }, + "1425": { + "body": "TypeScript reports: Default library for target '{0}'", + "category": "Message", + "code": 1425, + "message": "Default library for target '{0}'", + "source": "generated" + }, + "1426": { + "body": "TypeScript reports: File is default library for target specified here.", + "category": "Message", + "code": 1426, + "message": "File is default library for target specified here.", + "source": "generated" + }, + "1427": { + "body": "TypeScript reports: Root file specified for compilation", + "category": "Message", + "code": 1427, + "message": "Root file specified for compilation", + "source": "generated" + }, + "1428": { + "body": "TypeScript reports: File is output of project reference source '{0}'", + "category": "Message", + "code": 1428, + "message": "File is output of project reference source '{0}'", + "source": "generated" + }, + "1429": { + "body": "TypeScript reports: File redirects to file '{0}'", + "category": "Message", + "code": 1429, + "message": "File redirects to file '{0}'", + "source": "generated" + }, + "1430": { + "body": "TypeScript reports: The file is in the program because:", + "category": "Message", + "code": 1430, + "message": "The file is in the program because:", + "source": "generated" + }, + "1431": { + "body": "TypeScript reports this error: 'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.", + "category": "Error", + "code": 1431, + "message": "'for await' loops are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.", + "source": "generated" + }, + "1432": { + "body": "TypeScript reports this error: Top-level 'for await' loops are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher.", + "category": "Error", + "code": 1432, + "message": "Top-level 'for await' loops are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher.", + "source": "generated" + }, + "1433": { + "body": "TypeScript reports this error: Neither decorators nor modifiers may be applied to 'this' parameters.", + "category": "Error", + "code": 1433, + "message": "Neither decorators nor modifiers may be applied to 'this' parameters.", + "source": "generated" + }, + "1434": { + "body": "There's a syntax error in your code, so I can't tell exactly what's wrong.", + "category": "Error", + "code": 1434, + "message": "Unexpected keyword or identifier.", + "source": "curated" + }, + "1435": { + "body": "TypeScript reports this error: Unknown keyword or identifier. Did you mean '{0}'?", + "category": "Error", + "code": 1435, + "message": "Unknown keyword or identifier. Did you mean '{0}'?", + "source": "generated" + }, + "1436": { + "body": "TypeScript reports this error: Decorators must precede the name and all keywords of property declarations.", + "category": "Error", + "code": 1436, + "message": "Decorators must precede the name and all keywords of property declarations.", + "source": "generated" + }, + "1437": { + "body": "TypeScript reports this error: Namespace must be given a name.", + "category": "Error", + "code": 1437, + "message": "Namespace must be given a name.", + "source": "generated" + }, + "1438": { + "body": "TypeScript reports this error: Interface must be given a name.", + "category": "Error", + "code": 1438, + "message": "Interface must be given a name.", + "source": "generated" + }, + "1439": { + "body": "TypeScript reports this error: Type alias must be given a name.", + "category": "Error", + "code": 1439, + "message": "Type alias must be given a name.", + "source": "generated" + }, + "1440": { + "body": "TypeScript reports this error: Variable declaration not allowed at this location.", + "category": "Error", + "code": 1440, + "message": "Variable declaration not allowed at this location.", + "source": "generated" + }, + "1441": { + "body": "TypeScript reports this error: Cannot start a function call in a type annotation.", + "category": "Error", + "code": 1441, + "message": "Cannot start a function call in a type annotation.", + "source": "generated" + }, + "1442": { + "body": "TypeScript reports this error: Expected '=' for property initializer.", + "category": "Error", + "code": 1442, + "message": "Expected '=' for property initializer.", + "source": "generated" + }, + "1443": { + "body": "TypeScript reports this error: Module declaration names may only use ' or \" quoted strings.", + "category": "Error", + "code": 1443, + "message": "Module declaration names may only use ' or \" quoted strings.", + "source": "generated" + }, + "1448": { + "body": "TypeScript reports this error: '{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when '{1}' is enabled.", + "category": "Error", + "code": 1448, + "message": "'{0}' resolves to a type-only declaration and must be re-exported using a type-only re-export when '{1}' is enabled.", + "source": "generated" + }, + "1449": { + "body": "TypeScript reports: Preserve unused imported values in the JavaScript output that would otherwise be removed.", + "category": "Message", + "code": 1449, + "message": "Preserve unused imported values in the JavaScript output that would otherwise be removed.", + "source": "generated" + }, + "1450": { + "body": "TypeScript reports: Dynamic imports can only accept a module specifier and an optional set of attributes as arguments", + "category": "Message", + "code": 1450, + "message": "Dynamic imports can only accept a module specifier and an optional set of attributes as arguments", + "source": "generated" + }, + "1451": { + "body": "TypeScript reports this error: Private identifiers are only allowed in class bodies and may only be used as part of a class member declaration, property access, or on the left-hand-side of an 'in' expression", + "category": "Error", + "code": 1451, + "message": "Private identifiers are only allowed in class bodies and may only be used as part of a class member declaration, property access, or on the left-hand-side of an 'in' expression", + "source": "generated" + }, + "1453": { + "body": "TypeScript reports this error: `resolution-mode` should be either `require` or `import`.", + "category": "Error", + "code": 1453, + "message": "`resolution-mode` should be either `require` or `import`.", + "source": "generated" + }, + "1454": { + "body": "TypeScript reports this error: `resolution-mode` can only be set for type-only imports.", + "category": "Error", + "code": 1454, + "message": "`resolution-mode` can only be set for type-only imports.", + "source": "generated" + }, + "1455": { + "body": "TypeScript reports this error: `resolution-mode` is the only valid key for type import assertions.", + "category": "Error", + "code": 1455, + "message": "`resolution-mode` is the only valid key for type import assertions.", + "source": "generated" + }, + "1456": { + "body": "TypeScript reports this error: Type import assertions should have exactly one key - `resolution-mode` - with value `import` or `require`.", + "category": "Error", + "code": 1456, + "message": "Type import assertions should have exactly one key - `resolution-mode` - with value `import` or `require`.", + "source": "generated" + }, + "1457": { + "body": "TypeScript reports: Matched by default include pattern '**/*'", + "category": "Message", + "code": 1457, + "message": "Matched by default include pattern '**/*'", + "source": "generated" + }, + "1458": { + "body": "TypeScript reports: File is ECMAScript module because '{0}' has field \"type\" with value \"module\"", + "category": "Message", + "code": 1458, + "message": "File is ECMAScript module because '{0}' has field \"type\" with value \"module\"", + "source": "generated" + }, + "1459": { + "body": "TypeScript reports: File is CommonJS module because '{0}' has field \"type\" whose value is not \"module\"", + "category": "Message", + "code": 1459, + "message": "File is CommonJS module because '{0}' has field \"type\" whose value is not \"module\"", + "source": "generated" + }, + "1460": { + "body": "TypeScript reports: File is CommonJS module because '{0}' does not have field \"type\"", + "category": "Message", + "code": 1460, + "message": "File is CommonJS module because '{0}' does not have field \"type\"", + "source": "generated" + }, + "1461": { + "body": "TypeScript reports: File is CommonJS module because 'package.json' was not found", + "category": "Message", + "code": 1461, + "message": "File is CommonJS module because 'package.json' was not found", + "source": "generated" + }, + "1463": { + "body": "TypeScript reports this error: 'resolution-mode' is the only valid key for type import attributes.", + "category": "Error", + "code": 1463, + "message": "'resolution-mode' is the only valid key for type import attributes.", + "source": "generated" + }, + "1464": { + "body": "TypeScript reports this error: Type import attributes should have exactly one key - 'resolution-mode' - with value 'import' or 'require'.", + "category": "Error", + "code": 1464, + "message": "Type import attributes should have exactly one key - 'resolution-mode' - with value 'import' or 'require'.", + "source": "generated" + }, + "1470": { + "body": "TypeScript reports this error: The 'import.meta' meta-property is not allowed in files which will build into CommonJS output.", + "category": "Error", + "code": 1470, + "message": "The 'import.meta' meta-property is not allowed in files which will build into CommonJS output.", + "source": "generated" + }, + "1471": { + "body": "TypeScript reports this error: Module '{0}' cannot be imported using this construct. The specifier only resolves to an ES module, which cannot be imported with 'require'. Use an ECMAScript import instead.", + "category": "Error", + "code": 1471, + "message": "Module '{0}' cannot be imported using this construct. The specifier only resolves to an ES module, which cannot be imported with 'require'. Use an ECMAScript import instead.", + "source": "generated" + }, + "1472": { + "body": "TypeScript reports this error: 'catch' or 'finally' expected.", + "category": "Error", + "code": 1472, + "message": "'catch' or 'finally' expected.", + "source": "generated" + }, + "1473": { + "body": "TypeScript reports this error: An import declaration can only be used at the top level of a module.", + "category": "Error", + "code": 1473, + "message": "An import declaration can only be used at the top level of a module.", + "source": "generated" + }, + "1474": { + "body": "TypeScript reports this error: An export declaration can only be used at the top level of a module.", + "category": "Error", + "code": 1474, + "message": "An export declaration can only be used at the top level of a module.", + "source": "generated" + }, + "1475": { + "body": "TypeScript reports: Control what method is used to detect module-format JS files.", + "category": "Message", + "code": 1475, + "message": "Control what method is used to detect module-format JS files.", + "source": "generated" + }, + "1476": { + "body": "TypeScript reports: \"auto\": Treat files with imports, exports, import.meta, jsx (with jsx: react-jsx), or esm format (with module: node16+) as modules.", + "category": "Message", + "code": 1476, + "message": "\"auto\": Treat files with imports, exports, import.meta, jsx (with jsx: react-jsx), or esm format (with module: node16+) as modules.", + "source": "generated" + }, + "1477": { + "body": "TypeScript reports this error: An instantiation expression cannot be followed by a property access.", + "category": "Error", + "code": 1477, + "message": "An instantiation expression cannot be followed by a property access.", + "source": "generated" + }, + "1478": { + "body": "TypeScript reports this error: Identifier or string literal expected.", + "category": "Error", + "code": 1478, + "message": "Identifier or string literal expected.", + "source": "generated" + }, + "1479": { + "body": "TypeScript reports this error: The current file is a CommonJS module whose imports will produce 'require' calls; however, the referenced file is an ECMAScript module and cannot be imported with 'require'. Consider writing a dynamic 'import(\"{0}\")' call instead.", + "category": "Error", + "code": 1479, + "message": "The current file is a CommonJS module whose imports will produce 'require' calls; however, the referenced file is an ECMAScript module and cannot be imported with 'require'. Consider writing a dynamic 'import(\"{0}\")' call instead.", + "source": "generated" + }, + "1480": { + "body": "TypeScript reports: To convert this file to an ECMAScript module, change its file extension to '{0}' or create a local package.json file with `{ \"type\": \"module\" }`.", + "category": "Message", + "code": 1480, + "message": "To convert this file to an ECMAScript module, change its file extension to '{0}' or create a local package.json file with `{ \"type\": \"module\" }`.", + "source": "generated" + }, + "1481": { + "body": "TypeScript reports: To convert this file to an ECMAScript module, change its file extension to '{0}', or add the field `\"type\": \"module\"` to '{1}'.", + "category": "Message", + "code": 1481, + "message": "To convert this file to an ECMAScript module, change its file extension to '{0}', or add the field `\"type\": \"module\"` to '{1}'.", + "source": "generated" + }, + "1482": { + "body": "TypeScript reports: To convert this file to an ECMAScript module, add the field `\"type\": \"module\"` to '{0}'.", + "category": "Message", + "code": 1482, + "message": "To convert this file to an ECMAScript module, add the field `\"type\": \"module\"` to '{0}'.", + "source": "generated" + }, + "1483": { + "body": "TypeScript reports: To convert this file to an ECMAScript module, create a local package.json file with `{ \"type\": \"module\" }`.", + "category": "Message", + "code": 1483, + "message": "To convert this file to an ECMAScript module, create a local package.json file with `{ \"type\": \"module\" }`.", + "source": "generated" + }, + "1484": { + "body": "TypeScript reports this error: '{0}' is a type and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled.", + "category": "Error", + "code": 1484, + "message": "'{0}' is a type and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled.", + "source": "generated" + }, + "1485": { + "body": "TypeScript reports this error: '{0}' resolves to a type-only declaration and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled.", + "category": "Error", + "code": 1485, + "message": "'{0}' resolves to a type-only declaration and must be imported using a type-only import when 'verbatimModuleSyntax' is enabled.", + "source": "generated" + }, + "1486": { + "body": "TypeScript reports this error: Decorator used before 'export' here.", + "category": "Error", + "code": 1486, + "message": "Decorator used before 'export' here.", + "source": "generated" + }, + "1487": { + "body": "TypeScript reports this error: Octal escape sequences are not allowed. Use the syntax '{0}'.", + "category": "Error", + "code": 1487, + "message": "Octal escape sequences are not allowed. Use the syntax '{0}'.", + "source": "generated" + }, + "1488": { + "body": "TypeScript reports this error: Escape sequence '{0}' is not allowed.", + "category": "Error", + "code": 1488, + "message": "Escape sequence '{0}' is not allowed.", + "source": "generated" + }, + "1489": { + "body": "TypeScript reports this error: Decimals with leading zeros are not allowed.", + "category": "Error", + "code": 1489, + "message": "Decimals with leading zeros are not allowed.", + "source": "generated" + }, + "1490": { + "body": "TypeScript reports this error: File appears to be binary.", + "category": "Error", + "code": 1490, + "message": "File appears to be binary.", + "source": "generated" + }, + "1491": { + "body": "TypeScript reports this error: '{0}' modifier cannot appear on a 'using' declaration.", + "category": "Error", + "code": 1491, + "message": "'{0}' modifier cannot appear on a 'using' declaration.", + "source": "generated" + }, + "1492": { + "body": "TypeScript reports this error: '{0}' declarations may not have binding patterns.", + "category": "Error", + "code": 1492, + "message": "'{0}' declarations may not have binding patterns.", + "source": "generated" + }, + "1493": { + "body": "TypeScript reports this error: The left-hand side of a 'for...in' statement cannot be a 'using' declaration.", + "category": "Error", + "code": 1493, + "message": "The left-hand side of a 'for...in' statement cannot be a 'using' declaration.", + "source": "generated" + }, + "1494": { + "body": "TypeScript reports this error: The left-hand side of a 'for...in' statement cannot be an 'await using' declaration.", + "category": "Error", + "code": 1494, + "message": "The left-hand side of a 'for...in' statement cannot be an 'await using' declaration.", + "source": "generated" + }, + "1495": { + "body": "TypeScript reports this error: '{0}' modifier cannot appear on an 'await using' declaration.", + "category": "Error", + "code": 1495, + "message": "'{0}' modifier cannot appear on an 'await using' declaration.", + "source": "generated" + }, + "1496": { + "body": "TypeScript reports this error: Identifier, string literal, or number literal expected.", + "category": "Error", + "code": 1496, + "message": "Identifier, string literal, or number literal expected.", + "source": "generated" + }, + "1497": { + "body": "TypeScript reports this error: Expression must be enclosed in parentheses to be used as a decorator.", + "category": "Error", + "code": 1497, + "message": "Expression must be enclosed in parentheses to be used as a decorator.", + "source": "generated" + }, + "1498": { + "body": "TypeScript reports this error: Invalid syntax in decorator.", + "category": "Error", + "code": 1498, + "message": "Invalid syntax in decorator.", + "source": "generated" + }, + "1499": { + "body": "TypeScript reports this error: Unknown regular expression flag.", + "category": "Error", + "code": 1499, + "message": "Unknown regular expression flag.", + "source": "generated" + }, + "1500": { + "body": "TypeScript reports this error: Duplicate regular expression flag.", + "category": "Error", + "code": 1500, + "message": "Duplicate regular expression flag.", + "source": "generated" + }, + "1501": { + "body": "TypeScript reports this error: This regular expression flag is only available when targeting '{0}' or later.", + "category": "Error", + "code": 1501, + "message": "This regular expression flag is only available when targeting '{0}' or later.", + "source": "generated" + }, + "1502": { + "body": "TypeScript reports this error: The Unicode (u) flag and the Unicode Sets (v) flag cannot be set simultaneously.", + "category": "Error", + "code": 1502, + "message": "The Unicode (u) flag and the Unicode Sets (v) flag cannot be set simultaneously.", + "source": "generated" + }, + "1503": { + "body": "TypeScript reports this error: Named capturing groups are only available when targeting 'ES2018' or later.", + "category": "Error", + "code": 1503, + "message": "Named capturing groups are only available when targeting 'ES2018' or later.", + "source": "generated" + }, + "1504": { + "body": "TypeScript reports this error: Subpattern flags must be present when there is a minus sign.", + "category": "Error", + "code": 1504, + "message": "Subpattern flags must be present when there is a minus sign.", + "source": "generated" + }, + "1505": { + "body": "TypeScript reports this error: Incomplete quantifier. Digit expected.", + "category": "Error", + "code": 1505, + "message": "Incomplete quantifier. Digit expected.", + "source": "generated" + }, + "1506": { + "body": "TypeScript reports this error: Numbers out of order in quantifier.", + "category": "Error", + "code": 1506, + "message": "Numbers out of order in quantifier.", + "source": "generated" + }, + "1507": { + "body": "TypeScript reports this error: There is nothing available for repetition.", + "category": "Error", + "code": 1507, + "message": "There is nothing available for repetition.", + "source": "generated" + }, + "1508": { + "body": "TypeScript reports this error: Unexpected '{0}'. Did you mean to escape it with backslash?", + "category": "Error", + "code": 1508, + "message": "Unexpected '{0}'. Did you mean to escape it with backslash?", + "source": "generated" + }, + "1509": { + "body": "TypeScript reports this error: This regular expression flag cannot be toggled within a subpattern.", + "category": "Error", + "code": 1509, + "message": "This regular expression flag cannot be toggled within a subpattern.", + "source": "generated" + }, + "1510": { + "body": "TypeScript reports this error: '\\k' must be followed by a capturing group name enclosed in angle brackets.", + "category": "Error", + "code": 1510, + "message": "'\\k' must be followed by a capturing group name enclosed in angle brackets.", + "source": "generated" + }, + "1511": { + "body": "TypeScript reports this error: '\\q' is only available inside character class.", + "category": "Error", + "code": 1511, + "message": "'\\q' is only available inside character class.", + "source": "generated" + }, + "1512": { + "body": "TypeScript reports this error: '\\c' must be followed by an ASCII letter.", + "category": "Error", + "code": 1512, + "message": "'\\c' must be followed by an ASCII letter.", + "source": "generated" + }, + "1513": { + "body": "TypeScript reports this error: Undetermined character escape.", + "category": "Error", + "code": 1513, + "message": "Undetermined character escape.", + "source": "generated" + }, + "1514": { + "body": "TypeScript reports this error: Expected a capturing group name.", + "category": "Error", + "code": 1514, + "message": "Expected a capturing group name.", + "source": "generated" + }, + "1515": { + "body": "TypeScript reports this error: Named capturing groups with the same name must be mutually exclusive to each other.", + "category": "Error", + "code": 1515, + "message": "Named capturing groups with the same name must be mutually exclusive to each other.", + "source": "generated" + }, + "1516": { + "body": "TypeScript reports this error: A character class range must not be bounded by another character class.", + "category": "Error", + "code": 1516, + "message": "A character class range must not be bounded by another character class.", + "source": "generated" + }, + "1517": { + "body": "TypeScript reports this error: Range out of order in character class.", + "category": "Error", + "code": 1517, + "message": "Range out of order in character class.", + "source": "generated" + }, + "1518": { + "body": "TypeScript reports this error: Anything that would possibly match more than a single character is invalid inside a negated character class.", + "category": "Error", + "code": 1518, + "message": "Anything that would possibly match more than a single character is invalid inside a negated character class.", + "source": "generated" + }, + "1519": { + "body": "TypeScript reports this error: Operators must not be mixed within a character class. Wrap it in a nested class instead.", + "category": "Error", + "code": 1519, + "message": "Operators must not be mixed within a character class. Wrap it in a nested class instead.", + "source": "generated" + }, + "1520": { + "body": "TypeScript reports this error: Expected a class set operand.", + "category": "Error", + "code": 1520, + "message": "Expected a class set operand.", + "source": "generated" + }, + "1521": { + "body": "TypeScript reports this error: '\\q' must be followed by string alternatives enclosed in braces.", + "category": "Error", + "code": 1521, + "message": "'\\q' must be followed by string alternatives enclosed in braces.", + "source": "generated" + }, + "1522": { + "body": "TypeScript reports this error: A character class must not contain a reserved double punctuator. Did you mean to escape it with backslash?", + "category": "Error", + "code": 1522, + "message": "A character class must not contain a reserved double punctuator. Did you mean to escape it with backslash?", + "source": "generated" + }, + "1523": { + "body": "TypeScript reports this error: Expected a Unicode property name.", + "category": "Error", + "code": 1523, + "message": "Expected a Unicode property name.", + "source": "generated" + }, + "1524": { + "body": "TypeScript reports this error: Unknown Unicode property name.", + "category": "Error", + "code": 1524, + "message": "Unknown Unicode property name.", + "source": "generated" + }, + "1525": { + "body": "TypeScript reports this error: Expected a Unicode property value.", + "category": "Error", + "code": 1525, + "message": "Expected a Unicode property value.", + "source": "generated" + }, + "1526": { + "body": "TypeScript reports this error: Unknown Unicode property value.", + "category": "Error", + "code": 1526, + "message": "Unknown Unicode property value.", + "source": "generated" + }, + "1527": { + "body": "TypeScript reports this error: Expected a Unicode property name or value.", + "category": "Error", + "code": 1527, + "message": "Expected a Unicode property name or value.", + "source": "generated" + }, + "1528": { + "body": "TypeScript reports this error: Any Unicode property that would possibly match more than a single character is only available when the Unicode Sets (v) flag is set.", + "category": "Error", + "code": 1528, + "message": "Any Unicode property that would possibly match more than a single character is only available when the Unicode Sets (v) flag is set.", + "source": "generated" + }, + "1529": { + "body": "TypeScript reports this error: Unknown Unicode property name or value.", + "category": "Error", + "code": 1529, + "message": "Unknown Unicode property name or value.", + "source": "generated" + }, + "1530": { + "body": "TypeScript reports this error: Unicode property value expressions are only available when the Unicode (u) flag or the Unicode Sets (v) flag is set.", + "category": "Error", + "code": 1530, + "message": "Unicode property value expressions are only available when the Unicode (u) flag or the Unicode Sets (v) flag is set.", + "source": "generated" + }, + "1531": { + "body": "TypeScript reports this error: '\\{0}' must be followed by a Unicode property value expression enclosed in braces.", + "category": "Error", + "code": 1531, + "message": "'\\{0}' must be followed by a Unicode property value expression enclosed in braces.", + "source": "generated" + }, + "1532": { + "body": "TypeScript reports this error: There is no capturing group named '{0}' in this regular expression.", + "category": "Error", + "code": 1532, + "message": "There is no capturing group named '{0}' in this regular expression.", + "source": "generated" + }, + "1533": { + "body": "TypeScript reports this error: This backreference refers to a group that does not exist. There are only {0} capturing groups in this regular expression.", + "category": "Error", + "code": 1533, + "message": "This backreference refers to a group that does not exist. There are only {0} capturing groups in this regular expression.", + "source": "generated" + }, + "1534": { + "body": "TypeScript reports this error: This backreference refers to a group that does not exist. There are no capturing groups in this regular expression.", + "category": "Error", + "code": 1534, + "message": "This backreference refers to a group that does not exist. There are no capturing groups in this regular expression.", + "source": "generated" + }, + "1535": { + "body": "TypeScript reports this error: This character cannot be escaped in a regular expression.", + "category": "Error", + "code": 1535, + "message": "This character cannot be escaped in a regular expression.", + "source": "generated" + }, + "1536": { + "body": "TypeScript reports this error: Octal escape sequences and backreferences are not allowed in a character class. If this was intended as an escape sequence, use the syntax '{0}' instead.", + "category": "Error", + "code": 1536, + "message": "Octal escape sequences and backreferences are not allowed in a character class. If this was intended as an escape sequence, use the syntax '{0}' instead.", + "source": "generated" + }, + "1537": { + "body": "TypeScript reports this error: Decimal escape sequences and backreferences are not allowed in a character class.", + "category": "Error", + "code": 1537, + "message": "Decimal escape sequences and backreferences are not allowed in a character class.", + "source": "generated" + }, + "1538": { + "body": "TypeScript reports this error: Unicode escape sequences are only available when the Unicode (u) flag or the Unicode Sets (v) flag is set.", + "category": "Error", + "code": 1538, + "message": "Unicode escape sequences are only available when the Unicode (u) flag or the Unicode Sets (v) flag is set.", + "source": "generated" + }, + "1539": { + "body": "TypeScript reports this error: A 'bigint' literal cannot be used as a property name.", + "category": "Error", + "code": 1539, + "message": "A 'bigint' literal cannot be used as a property name.", + "source": "generated" + }, + "1540": { + "body": "TypeScript reports this error: A 'namespace' declaration should not be declared using the 'module' keyword. Please use the 'namespace' keyword instead.", + "category": "Error", + "code": 1540, + "message": "A 'namespace' declaration should not be declared using the 'module' keyword. Please use the 'namespace' keyword instead.", + "source": "generated" + }, + "1541": { + "body": "TypeScript reports this error: Type-only import of an ECMAScript module from a CommonJS module must have a 'resolution-mode' attribute.", + "category": "Error", + "code": 1541, + "message": "Type-only import of an ECMAScript module from a CommonJS module must have a 'resolution-mode' attribute.", + "source": "generated" + }, + "1542": { + "body": "TypeScript reports this error: Type import of an ECMAScript module from a CommonJS module must have a 'resolution-mode' attribute.", + "category": "Error", + "code": 1542, + "message": "Type import of an ECMAScript module from a CommonJS module must have a 'resolution-mode' attribute.", + "source": "generated" + }, + "1543": { + "body": "TypeScript reports this error: Importing a JSON file into an ECMAScript module requires a 'type: \"json\"' import attribute when 'module' is set to '{0}'.", + "category": "Error", + "code": 1543, + "message": "Importing a JSON file into an ECMAScript module requires a 'type: \"json\"' import attribute when 'module' is set to '{0}'.", + "source": "generated" + }, + "1544": { + "body": "TypeScript reports this error: Named imports from a JSON file into an ECMAScript module are not allowed when 'module' is set to '{0}'.", + "category": "Error", + "code": 1544, + "message": "Named imports from a JSON file into an ECMAScript module are not allowed when 'module' is set to '{0}'.", + "source": "generated" + }, + "1545": { + "body": "TypeScript reports this error: 'using' declarations are not allowed in ambient contexts.", + "category": "Error", + "code": 1545, + "message": "'using' declarations are not allowed in ambient contexts.", + "source": "generated" + }, + "1546": { + "body": "TypeScript reports this error: 'await using' declarations are not allowed in ambient contexts.", + "category": "Error", + "code": 1546, + "message": "'await using' declarations are not allowed in ambient contexts.", + "source": "generated" + }, + "1547": { + "body": "TypeScript reports this error: 'using' declarations are not allowed in 'case' or 'default' clauses unless contained within a block.", + "category": "Error", + "code": 1547, + "message": "'using' declarations are not allowed in 'case' or 'default' clauses unless contained within a block.", + "source": "generated" + }, + "1548": { + "body": "TypeScript reports this error: 'await using' declarations are not allowed in 'case' or 'default' clauses unless contained within a block.", + "category": "Error", + "code": 1548, + "message": "'await using' declarations are not allowed in 'case' or 'default' clauses unless contained within a block.", + "source": "generated" + }, + "1549": { + "body": "TypeScript reports: Ignore the tsconfig found and build with commandline options and files.", + "category": "Message", + "code": 1549, + "message": "Ignore the tsconfig found and build with commandline options and files.", + "source": "generated" + }, + "2200": { + "body": "TypeScript reports this error: The types of '{0}' are incompatible between these types.", + "category": "Error", + "code": 2200, + "message": "The types of '{0}' are incompatible between these types.", + "source": "generated" + }, + "2201": { + "body": "TypeScript reports this error: The types returned by '{0}' are incompatible between these types.", + "category": "Error", + "code": 2201, + "message": "The types returned by '{0}' are incompatible between these types.", + "source": "generated" + }, + "2202": { + "body": "TypeScript reports this error: Call signature return types '{0}' and '{1}' are incompatible.", + "category": "Error", + "code": 2202, + "message": "Call signature return types '{0}' and '{1}' are incompatible.", + "source": "generated" + }, + "2203": { + "body": "TypeScript reports this error: Construct signature return types '{0}' and '{1}' are incompatible.", + "category": "Error", + "code": 2203, + "message": "Construct signature return types '{0}' and '{1}' are incompatible.", + "source": "generated" + }, + "2204": { + "body": "TypeScript reports this error: Call signatures with no arguments have incompatible return types '{0}' and '{1}'.", + "category": "Error", + "code": 2204, + "message": "Call signatures with no arguments have incompatible return types '{0}' and '{1}'.", + "source": "generated" + }, + "2205": { + "body": "TypeScript reports this error: Construct signatures with no arguments have incompatible return types '{0}' and '{1}'.", + "category": "Error", + "code": 2205, + "message": "Construct signatures with no arguments have incompatible return types '{0}' and '{1}'.", + "source": "generated" + }, + "2206": { + "body": "TypeScript reports this error: The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.", + "category": "Error", + "code": 2206, + "message": "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.", + "source": "generated" + }, + "2207": { + "body": "TypeScript reports this error: The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.", + "category": "Error", + "code": 2207, + "message": "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.", + "source": "generated" + }, + "2208": { + "body": "TypeScript reports this error: This type parameter might need an `extends {0}` constraint.", + "category": "Error", + "code": 2208, + "message": "This type parameter might need an `extends {0}` constraint.", + "source": "generated" + }, + "2209": { + "body": "TypeScript reports this error: The project root is ambiguous, but is required to resolve export map entry '{0}' in file '{1}'. Supply the `rootDir` compiler option to disambiguate.", + "category": "Error", + "code": 2209, + "message": "The project root is ambiguous, but is required to resolve export map entry '{0}' in file '{1}'. Supply the `rootDir` compiler option to disambiguate.", + "source": "generated" + }, + "2210": { + "body": "TypeScript reports this error: The project root is ambiguous, but is required to resolve import map entry '{0}' in file '{1}'. Supply the `rootDir` compiler option to disambiguate.", + "category": "Error", + "code": 2210, + "message": "The project root is ambiguous, but is required to resolve import map entry '{0}' in file '{1}'. Supply the `rootDir` compiler option to disambiguate.", + "source": "generated" + }, + "2211": { + "body": "TypeScript reports: Add `extends` constraint.", + "category": "Message", + "code": 2211, + "message": "Add `extends` constraint.", + "source": "generated" + }, + "2212": { + "body": "TypeScript reports: Add `extends` constraint to all type parameters", + "category": "Message", + "code": 2212, + "message": "Add `extends` constraint to all type parameters", + "source": "generated" + }, + "2300": { + "body": "TypeScript reports this error: Duplicate identifier '{0}'.", + "category": "Error", + "code": 2300, + "message": "Duplicate identifier '{0}'.", + "source": "generated" + }, + "2301": { + "body": "TypeScript reports this error: Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor.", + "category": "Error", + "code": 2301, + "message": "Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor.", + "source": "generated" + }, + "2302": { + "body": "TypeScript reports this error: Static members cannot reference class type parameters.", + "category": "Error", + "code": 2302, + "message": "Static members cannot reference class type parameters.", + "source": "generated" + }, + "2303": { + "body": "TypeScript reports this error: Circular definition of import alias '{0}'.", + "category": "Error", + "code": 2303, + "message": "Circular definition of import alias '{0}'.", + "source": "generated" + }, + "2304": { + "body": "I can't find the variable you're trying to access.", + "category": "Error", + "code": 2304, + "message": "Cannot find name '{0}'.", + "source": "curated" + }, + "2305": { + "body": "'{1}' is not one of the things exported from '{0}'.", + "category": "Error", + "code": 2305, + "message": "Module '{0}' has no exported member '{1}'.", + "source": "curated" + }, + "2306": { + "body": "TypeScript reports this error: File '{0}' is not a module.", + "category": "Error", + "code": 2306, + "message": "File '{0}' is not a module.", + "source": "generated" + }, + "2307": { + "body": "This could be one of two things - either '{0}' doesn't exist on your file system, or I can't find any type declarations for it.", + "category": "Error", + "code": 2307, + "message": "Cannot find module '{0}' or its corresponding type declarations.", + "source": "curated" + }, + "2308": { + "body": "TypeScript reports this error: Module {0} has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity.", + "category": "Error", + "code": 2308, + "message": "Module {0} has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity.", + "source": "generated" + }, + "2309": { + "body": "TypeScript reports this error: An export assignment cannot be used in a module with other exported elements.", + "category": "Error", + "code": 2309, + "message": "An export assignment cannot be used in a module with other exported elements.", + "source": "generated" + }, + "2310": { + "body": "TypeScript reports this error: Type '{0}' recursively references itself as a base type.", + "category": "Error", + "code": 2310, + "message": "Type '{0}' recursively references itself as a base type.", + "source": "generated" + }, + "2311": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Did you mean to write this in an async function?", + "category": "Error", + "code": 2311, + "message": "Cannot find name '{0}'. Did you mean to write this in an async function?", + "source": "generated" + }, + "2312": { + "body": "You might be trying to use an interface to extend a union type. This isn't possible.", + "category": "Error", + "code": 2312, + "message": "An interface can only extend an object type or intersection of object types with statically known members.", + "source": "curated" + }, + "2313": { + "body": "TypeScript reports this error: Type parameter '{0}' has a circular constraint.", + "category": "Error", + "code": 2313, + "message": "Type parameter '{0}' has a circular constraint.", + "source": "generated" + }, + "2314": { + "body": "It looks like '{0}' requires '{1}' type arguments, which means you need to pass them in via a generic.", + "category": "Error", + "code": 2314, + "message": "Generic type '{0}' requires {1} type argument(s).", + "source": "curated" + }, + "2315": { + "body": "TypeScript reports this error: Type '{0}' is not generic.", + "category": "Error", + "code": 2315, + "message": "Type '{0}' is not generic.", + "source": "generated" + }, + "2316": { + "body": "TypeScript reports this error: Global type '{0}' must be a class or interface type.", + "category": "Error", + "code": 2316, + "message": "Global type '{0}' must be a class or interface type.", + "source": "generated" + }, + "2317": { + "body": "TypeScript reports this error: Global type '{0}' must have {1} type parameter(s).", + "category": "Error", + "code": 2317, + "message": "Global type '{0}' must have {1} type parameter(s).", + "source": "generated" + }, + "2318": { + "body": "TypeScript reports this error: Cannot find global type '{0}'.", + "category": "Error", + "code": 2318, + "message": "Cannot find global type '{0}'.", + "source": "generated" + }, + "2319": { + "body": "TypeScript reports this error: Named property '{0}' of types '{1}' and '{2}' are not identical.", + "category": "Error", + "code": 2319, + "message": "Named property '{0}' of types '{1}' and '{2}' are not identical.", + "source": "generated" + }, + "2320": { + "body": "TypeScript reports this error: Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'.", + "category": "Error", + "code": 2320, + "message": "Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'.", + "source": "generated" + }, + "2321": { + "body": "TypeScript reports this error: Excessive stack depth comparing types '{0}' and '{1}'.", + "category": "Error", + "code": 2321, + "message": "Excessive stack depth comparing types '{0}' and '{1}'.", + "source": "generated" + }, + "2322": { + "body": "I was expecting a type matching '{1}', but instead you passed '{0}'.", + "category": "Error", + "code": 2322, + "message": "Type '{0}' is not assignable to type '{1}'.", + "source": "curated" + }, + "2323": { + "body": "TypeScript reports this error: Cannot redeclare exported variable '{0}'.", + "category": "Error", + "code": 2323, + "message": "Cannot redeclare exported variable '{0}'.", + "source": "generated" + }, + "2324": { + "body": "You haven't passed all the required properties to '{1}' - you've missed out '{0}'", + "category": "Error", + "code": 2324, + "message": "Property '{0}' is missing in type '{1}'.", + "source": "curated" + }, + "2325": { + "body": "TypeScript reports this error: Property '{0}' is private in type '{1}' but not in type '{2}'.", + "category": "Error", + "code": 2325, + "message": "Property '{0}' is private in type '{1}' but not in type '{2}'.", + "source": "generated" + }, + "2326": { + "body": "Two similar types have a property '{0}' which is different, making them incompatible.", + "category": "Error", + "code": 2326, + "message": "Types of property '{0}' are incompatible.", + "source": "curated" + }, + "2327": { + "body": "Property '{0}' in type '{2}' must exist.", + "category": "Error", + "code": 2327, + "message": "Property '{0}' is optional in type '{1}' but required in type '{2}'.", + "source": "curated" + }, + "2328": { + "body": "TypeScript reports this error: Types of parameters '{0}' and '{1}' are incompatible.", + "category": "Error", + "code": 2328, + "message": "Types of parameters '{0}' and '{1}' are incompatible.", + "source": "generated" + }, + "2329": { + "body": "TypeScript reports this error: Index signature for type '{0}' is missing in type '{1}'.", + "category": "Error", + "code": 2329, + "message": "Index signature for type '{0}' is missing in type '{1}'.", + "source": "generated" + }, + "2330": { + "body": "TypeScript reports this error: '{0}' and '{1}' index signatures are incompatible.", + "category": "Error", + "code": 2330, + "message": "'{0}' and '{1}' index signatures are incompatible.", + "source": "generated" + }, + "2331": { + "body": "TypeScript reports this error: 'this' cannot be referenced in a module or namespace body.", + "category": "Error", + "code": 2331, + "message": "'this' cannot be referenced in a module or namespace body.", + "source": "generated" + }, + "2332": { + "body": "TypeScript reports this error: 'this' cannot be referenced in current location.", + "category": "Error", + "code": 2332, + "message": "'this' cannot be referenced in current location.", + "source": "generated" + }, + "2334": { + "body": "TypeScript reports this error: 'this' cannot be referenced in a static property initializer.", + "category": "Error", + "code": 2334, + "message": "'this' cannot be referenced in a static property initializer.", + "source": "generated" + }, + "2335": { + "body": "TypeScript reports this error: 'super' can only be referenced in a derived class.", + "category": "Error", + "code": 2335, + "message": "'super' can only be referenced in a derived class.", + "source": "generated" + }, + "2336": { + "body": "TypeScript reports this error: 'super' cannot be referenced in constructor arguments.", + "category": "Error", + "code": 2336, + "message": "'super' cannot be referenced in constructor arguments.", + "source": "generated" + }, + "2337": { + "body": "TypeScript reports this error: Super calls are not permitted outside constructors or in nested functions inside constructors.", + "category": "Error", + "code": 2337, + "message": "Super calls are not permitted outside constructors or in nested functions inside constructors.", + "source": "generated" + }, + "2338": { + "body": "TypeScript reports this error: 'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.", + "category": "Error", + "code": 2338, + "message": "'super' property access is permitted only in a constructor, member function, or member accessor of a derived class.", + "source": "generated" + }, + "2339": { + "body": "You're trying to access '{0}' on an object that doesn't contain it. [Learn more](https://totaltypescript.com/concepts/property-does-not-exist-on-type).", + "category": "Error", + "code": 2339, + "message": "Property '{0}' does not exist on type '{1}'.", + "source": "curated" + }, + "2340": { + "body": "TypeScript reports this error: Only public and protected methods of the base class are accessible via the 'super' keyword.", + "category": "Error", + "code": 2340, + "message": "Only public and protected methods of the base class are accessible via the 'super' keyword.", + "source": "generated" + }, + "2341": { + "body": "TypeScript reports this error: Property '{0}' is private and only accessible within class '{1}'.", + "category": "Error", + "code": 2341, + "message": "Property '{0}' is private and only accessible within class '{1}'.", + "source": "generated" + }, + "2343": { + "body": "TypeScript reports this error: This syntax requires an imported helper named '{1}' which does not exist in '{0}'. Consider upgrading your version of '{0}'.", + "category": "Error", + "code": 2343, + "message": "This syntax requires an imported helper named '{1}' which does not exist in '{0}'. Consider upgrading your version of '{0}'.", + "source": "generated" + }, + "2344": { + "body": "You're trying to pass in '{0}' into a slot where I can see only '{1}' can be passed.", + "category": "Error", + "code": 2344, + "message": "Type '{0}' does not satisfy the constraint '{1}'.", + "source": "curated" + }, + "2345": { + "body": "I was expecting '{1}', but you passed '{0}'.", + "category": "Error", + "code": 2345, + "message": "Argument of type '{0}' is not assignable to parameter of type '{1}'.", + "source": "curated" + }, + "2346": { + "body": "TypeScript reports this error: Call target does not contain any signatures.", + "category": "Error", + "code": 2346, + "message": "Call target does not contain any signatures.", + "source": "generated" + }, + "2347": { + "body": "TypeScript reports this error: Untyped function calls may not accept type arguments.", + "category": "Error", + "code": 2347, + "message": "Untyped function calls may not accept type arguments.", + "source": "generated" + }, + "2348": { + "body": "TypeScript reports this error: Value of type '{0}' is not callable. Did you mean to include 'new'?", + "category": "Error", + "code": 2348, + "message": "Value of type '{0}' is not callable. Did you mean to include 'new'?", + "source": "generated" + }, + "2349": { + "body": "I can't call this expression because I can't call it like a function.", + "category": "Error", + "code": 2349, + "message": "This expression is not callable.", + "source": "curated" + }, + "2350": { + "body": "TypeScript reports this error: Only a void function can be called with the 'new' keyword.", + "category": "Error", + "code": 2350, + "message": "Only a void function can be called with the 'new' keyword.", + "source": "generated" + }, + "2351": { + "body": "TypeScript reports this error: This expression is not constructable.", + "category": "Error", + "code": 2351, + "message": "This expression is not constructable.", + "source": "generated" + }, + "2352": { + "body": "You can't use 'as' to convert '{0}' into a '{1}' - they don't share enough in common.", + "category": "Error", + "code": 2352, + "message": "Conversion of type '{0}' to type '{1}' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.", + "source": "curated" + }, + "2353": { + "body": "You can't pass property '{0}' to type '{1}'.", + "category": "Error", + "code": 2353, + "message": "Object literal may only specify known properties, and '{0}' does not exist in type '{1}'.", + "source": "curated" + }, + "2354": { + "body": "TypeScript reports this error: This syntax requires an imported helper but module '{0}' cannot be found.", + "category": "Error", + "code": 2354, + "message": "This syntax requires an imported helper but module '{0}' cannot be found.", + "source": "generated" + }, + "2355": { + "body": "This function says it returns a value, but at least one path does not return one.", + "category": "Error", + "code": 2355, + "message": "A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value.", + "source": "curated" + }, + "2356": { + "body": "TypeScript reports this error: An arithmetic operand must be of type 'any', 'number', 'bigint' or an enum type.", + "category": "Error", + "code": 2356, + "message": "An arithmetic operand must be of type 'any', 'number', 'bigint' or an enum type.", + "source": "generated" + }, + "2357": { + "body": "TypeScript reports this error: The operand of an increment or decrement operator must be a variable or a property access.", + "category": "Error", + "code": 2357, + "message": "The operand of an increment or decrement operator must be a variable or a property access.", + "source": "generated" + }, + "2358": { + "body": "TypeScript reports this error: The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter.", + "category": "Error", + "code": 2358, + "message": "The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter.", + "source": "generated" + }, + "2359": { + "body": "TypeScript reports this error: The right-hand side of an 'instanceof' expression must be either of type 'any', a class, function, or other type assignable to the 'Function' interface type, or an object type with a 'Symbol.hasInstance' method.", + "category": "Error", + "code": 2359, + "message": "The right-hand side of an 'instanceof' expression must be either of type 'any', a class, function, or other type assignable to the 'Function' interface type, or an object type with a 'Symbol.hasInstance' method.", + "source": "generated" + }, + "2362": { + "body": "TypeScript reports this error: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.", + "category": "Error", + "code": 2362, + "message": "The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.", + "source": "generated" + }, + "2363": { + "body": "TypeScript reports this error: The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.", + "category": "Error", + "code": 2363, + "message": "The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.", + "source": "generated" + }, + "2364": { + "body": "TypeScript reports this error: The left-hand side of an assignment expression must be a variable or a property access.", + "category": "Error", + "code": 2364, + "message": "The left-hand side of an assignment expression must be a variable or a property access.", + "source": "generated" + }, + "2365": { + "body": "You can't use '{0}' on the types '{1}' and '{2}'.", + "category": "Error", + "code": 2365, + "message": "Operator '{0}' cannot be applied to types '{1}' and '{2}'.", + "source": "curated" + }, + "2366": { + "body": "TypeScript reports this error: Function lacks ending return statement and return type does not include 'undefined'.", + "category": "Error", + "code": 2366, + "message": "Function lacks ending return statement and return type does not include 'undefined'.", + "source": "generated" + }, + "2367": { + "body": "TypeScript reports this error: This comparison appears to be unintentional because the types '{0}' and '{1}' have no overlap.", + "category": "Error", + "code": 2367, + "message": "This comparison appears to be unintentional because the types '{0}' and '{1}' have no overlap.", + "source": "generated" + }, + "2368": { + "body": "TypeScript reports this error: Type parameter name cannot be '{0}'.", + "category": "Error", + "code": 2368, + "message": "Type parameter name cannot be '{0}'.", + "source": "generated" + }, + "2369": { + "body": "TypeScript reports this error: A parameter property is only allowed in a constructor implementation.", + "category": "Error", + "code": 2369, + "message": "A parameter property is only allowed in a constructor implementation.", + "source": "generated" + }, + "2370": { + "body": "TypeScript reports this error: A rest parameter must be of an array type.", + "category": "Error", + "code": 2370, + "message": "A rest parameter must be of an array type.", + "source": "generated" + }, + "2371": { + "body": "TypeScript reports this error: A parameter initializer is only allowed in a function or constructor implementation.", + "category": "Error", + "code": 2371, + "message": "A parameter initializer is only allowed in a function or constructor implementation.", + "source": "generated" + }, + "2372": { + "body": "TypeScript reports this error: Parameter '{0}' cannot reference itself.", + "category": "Error", + "code": 2372, + "message": "Parameter '{0}' cannot reference itself.", + "source": "generated" + }, + "2373": { + "body": "TypeScript reports this error: Parameter '{0}' cannot reference identifier '{1}' declared after it.", + "category": "Error", + "code": 2373, + "message": "Parameter '{0}' cannot reference identifier '{1}' declared after it.", + "source": "generated" + }, + "2374": { + "body": "TypeScript reports this error: Duplicate index signature for type '{0}'.", + "category": "Error", + "code": 2374, + "message": "Duplicate index signature for type '{0}'.", + "source": "generated" + }, + "2375": { + "body": "TypeScript reports this error: Type '{0}' is not assignable to type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties.", + "category": "Error", + "code": 2375, + "message": "Type '{0}' is not assignable to type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties.", + "source": "generated" + }, + "2376": { + "body": "TypeScript reports this error: A 'super' call must be the first statement in the constructor to refer to 'super' or 'this' when a derived class contains initialized properties, parameter properties, or private identifiers.", + "category": "Error", + "code": 2376, + "message": "A 'super' call must be the first statement in the constructor to refer to 'super' or 'this' when a derived class contains initialized properties, parameter properties, or private identifiers.", + "source": "generated" + }, + "2377": { + "body": "TypeScript reports this error: Constructors for derived classes must contain a 'super' call.", + "category": "Error", + "code": 2377, + "message": "Constructors for derived classes must contain a 'super' call.", + "source": "generated" + }, + "2378": { + "body": "TypeScript reports this error: A 'get' accessor must return a value.", + "category": "Error", + "code": 2378, + "message": "A 'get' accessor must return a value.", + "source": "generated" + }, + "2379": { + "body": "TypeScript reports this error: Argument of type '{0}' is not assignable to parameter of type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties.", + "category": "Error", + "code": 2379, + "message": "Argument of type '{0}' is not assignable to parameter of type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties.", + "source": "generated" + }, + "2383": { + "body": "TypeScript reports this error: Overload signatures must all be exported or non-exported.", + "category": "Error", + "code": 2383, + "message": "Overload signatures must all be exported or non-exported.", + "source": "generated" + }, + "2384": { + "body": "TypeScript reports this error: Overload signatures must all be ambient or non-ambient.", + "category": "Error", + "code": 2384, + "message": "Overload signatures must all be ambient or non-ambient.", + "source": "generated" + }, + "2385": { + "body": "TypeScript reports this error: Overload signatures must all be public, private or protected.", + "category": "Error", + "code": 2385, + "message": "Overload signatures must all be public, private or protected.", + "source": "generated" + }, + "2386": { + "body": "TypeScript reports this error: Overload signatures must all be optional or required.", + "category": "Error", + "code": 2386, + "message": "Overload signatures must all be optional or required.", + "source": "generated" + }, + "2387": { + "body": "TypeScript reports this error: Function overload must be static.", + "category": "Error", + "code": 2387, + "message": "Function overload must be static.", + "source": "generated" + }, + "2388": { + "body": "TypeScript reports this error: Function overload must not be static.", + "category": "Error", + "code": 2388, + "message": "Function overload must not be static.", + "source": "generated" + }, + "2389": { + "body": "TypeScript reports this error: Function implementation name must be '{0}'.", + "category": "Error", + "code": 2389, + "message": "Function implementation name must be '{0}'.", + "source": "generated" + }, + "2390": { + "body": "TypeScript reports this error: Constructor implementation is missing.", + "category": "Error", + "code": 2390, + "message": "Constructor implementation is missing.", + "source": "generated" + }, + "2391": { + "body": "TypeScript reports this error: Function implementation is missing or not immediately following the declaration.", + "category": "Error", + "code": 2391, + "message": "Function implementation is missing or not immediately following the declaration.", + "source": "generated" + }, + "2392": { + "body": "TypeScript reports this error: Multiple constructor implementations are not allowed.", + "category": "Error", + "code": 2392, + "message": "Multiple constructor implementations are not allowed.", + "source": "generated" + }, + "2393": { + "body": "You've already declared a function with the same name.", + "category": "Error", + "code": 2393, + "message": "Duplicate function implementation.", + "source": "curated" + }, + "2394": { + "body": "TypeScript reports this error: This overload signature is not compatible with its implementation signature.", + "category": "Error", + "code": 2394, + "message": "This overload signature is not compatible with its implementation signature.", + "source": "generated" + }, + "2395": { + "body": "TypeScript reports this error: Individual declarations in merged declaration '{0}' must be all exported or all local.", + "category": "Error", + "code": 2395, + "message": "Individual declarations in merged declaration '{0}' must be all exported or all local.", + "source": "generated" + }, + "2396": { + "body": "TypeScript reports this error: Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters.", + "category": "Error", + "code": 2396, + "message": "Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters.", + "source": "generated" + }, + "2397": { + "body": "TypeScript reports this error: Declaration name conflicts with built-in global identifier '{0}'.", + "category": "Error", + "code": 2397, + "message": "Declaration name conflicts with built-in global identifier '{0}'.", + "source": "generated" + }, + "2398": { + "body": "TypeScript reports this error: 'constructor' cannot be used as a parameter property name.", + "category": "Error", + "code": 2398, + "message": "'constructor' cannot be used as a parameter property name.", + "source": "generated" + }, + "2399": { + "body": "TypeScript reports this error: Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference.", + "category": "Error", + "code": 2399, + "message": "Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference.", + "source": "generated" + }, + "2400": { + "body": "TypeScript reports this error: Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference.", + "category": "Error", + "code": 2400, + "message": "Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference.", + "source": "generated" + }, + "2401": { + "body": "TypeScript reports this error: A 'super' call must be a root-level statement within a constructor of a derived class that contains initialized properties, parameter properties, or private identifiers.", + "category": "Error", + "code": 2401, + "message": "A 'super' call must be a root-level statement within a constructor of a derived class that contains initialized properties, parameter properties, or private identifiers.", + "source": "generated" + }, + "2402": { + "body": "TypeScript reports this error: Expression resolves to '_super' that compiler uses to capture base class reference.", + "category": "Error", + "code": 2402, + "message": "Expression resolves to '_super' that compiler uses to capture base class reference.", + "source": "generated" + }, + "2403": { + "body": "TypeScript reports this error: Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'.", + "category": "Error", + "code": 2403, + "message": "Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'.", + "source": "generated" + }, + "2404": { + "body": "TypeScript reports this error: The left-hand side of a 'for...in' statement cannot use a type annotation.", + "category": "Error", + "code": 2404, + "message": "The left-hand side of a 'for...in' statement cannot use a type annotation.", + "source": "generated" + }, + "2405": { + "body": "TypeScript reports this error: The left-hand side of a 'for...in' statement must be of type 'string' or 'any'.", + "category": "Error", + "code": 2405, + "message": "The left-hand side of a 'for...in' statement must be of type 'string' or 'any'.", + "source": "generated" + }, + "2406": { + "body": "TypeScript reports this error: The left-hand side of a 'for...in' statement must be a variable or a property access.", + "category": "Error", + "code": 2406, + "message": "The left-hand side of a 'for...in' statement must be a variable or a property access.", + "source": "generated" + }, + "2407": { + "body": "TypeScript reports this error: The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter, but here has type '{0}'.", + "category": "Error", + "code": 2407, + "message": "The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter, but here has type '{0}'.", + "source": "generated" + }, + "2408": { + "body": "TypeScript reports this error: Setters cannot return a value.", + "category": "Error", + "code": 2408, + "message": "Setters cannot return a value.", + "source": "generated" + }, + "2409": { + "body": "TypeScript reports this error: Return type of constructor signature must be assignable to the instance type of the class.", + "category": "Error", + "code": 2409, + "message": "Return type of constructor signature must be assignable to the instance type of the class.", + "source": "generated" + }, + "2410": { + "body": "TypeScript reports this error: The 'with' statement is not supported. All symbols in a 'with' block will have type 'any'.", + "category": "Error", + "code": 2410, + "message": "The 'with' statement is not supported. All symbols in a 'with' block will have type 'any'.", + "source": "generated" + }, + "2411": { + "body": "TypeScript reports this error: Property '{0}' of type '{1}' is not assignable to '{2}' index type '{3}'.", + "category": "Error", + "code": 2411, + "message": "Property '{0}' of type '{1}' is not assignable to '{2}' index type '{3}'.", + "source": "generated" + }, + "2412": { + "body": "TypeScript reports this error: Type '{0}' is not assignable to type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the type of the target.", + "category": "Error", + "code": 2412, + "message": "Type '{0}' is not assignable to type '{1}' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the type of the target.", + "source": "generated" + }, + "2413": { + "body": "TypeScript reports this error: '{0}' index type '{1}' is not assignable to '{2}' index type '{3}'.", + "category": "Error", + "code": 2413, + "message": "'{0}' index type '{1}' is not assignable to '{2}' index type '{3}'.", + "source": "generated" + }, + "2414": { + "body": "You can't give a class the name of '{0}' because it's protected by TypeScript.", + "category": "Error", + "code": 2414, + "message": "Class name cannot be '{0}'.", + "source": "curated" + }, + "2415": { + "body": "TypeScript reports this error: Class '{0}' incorrectly extends base class '{1}'.", + "category": "Error", + "code": 2415, + "message": "Class '{0}' incorrectly extends base class '{1}'.", + "source": "generated" + }, + "2416": { + "body": "TypeScript reports this error: Property '{0}' in type '{1}' is not assignable to the same property in base type '{2}'.", + "category": "Error", + "code": 2416, + "message": "Property '{0}' in type '{1}' is not assignable to the same property in base type '{2}'.", + "source": "generated" + }, + "2417": { + "body": "TypeScript reports this error: Class static side '{0}' incorrectly extends base class static side '{1}'.", + "category": "Error", + "code": 2417, + "message": "Class static side '{0}' incorrectly extends base class static side '{1}'.", + "source": "generated" + }, + "2418": { + "body": "TypeScript reports this error: Type of computed property's value is '{0}', which is not assignable to type '{1}'.", + "category": "Error", + "code": 2418, + "message": "Type of computed property's value is '{0}', which is not assignable to type '{1}'.", + "source": "generated" + }, + "2419": { + "body": "TypeScript reports this error: Types of construct signatures are incompatible.", + "category": "Error", + "code": 2419, + "message": "Types of construct signatures are incompatible.", + "source": "generated" + }, + "2420": { + "body": "TypeScript reports this error: Class '{0}' incorrectly implements interface '{1}'.", + "category": "Error", + "code": 2420, + "message": "Class '{0}' incorrectly implements interface '{1}'.", + "source": "generated" + }, + "2422": { + "body": "TypeScript reports this error: A class can only implement an object type or intersection of object types with statically known members.", + "category": "Error", + "code": 2422, + "message": "A class can only implement an object type or intersection of object types with statically known members.", + "source": "generated" + }, + "2423": { + "body": "TypeScript reports this error: Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor.", + "category": "Error", + "code": 2423, + "message": "Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor.", + "source": "generated" + }, + "2425": { + "body": "TypeScript reports this error: Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function.", + "category": "Error", + "code": 2425, + "message": "Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function.", + "source": "generated" + }, + "2426": { + "body": "TypeScript reports this error: Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function.", + "category": "Error", + "code": 2426, + "message": "Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function.", + "source": "generated" + }, + "2427": { + "body": "TypeScript reports this error: Interface name cannot be '{0}'.", + "category": "Error", + "code": 2427, + "message": "Interface name cannot be '{0}'.", + "source": "generated" + }, + "2428": { + "body": "TypeScript reports this error: All declarations of '{0}' must have identical type parameters.", + "category": "Error", + "code": 2428, + "message": "All declarations of '{0}' must have identical type parameters.", + "source": "generated" + }, + "2430": { + "body": "TypeScript reports this error: Interface '{0}' incorrectly extends interface '{1}'.", + "category": "Error", + "code": 2430, + "message": "Interface '{0}' incorrectly extends interface '{1}'.", + "source": "generated" + }, + "2431": { + "body": "TypeScript reports this error: Enum name cannot be '{0}'.", + "category": "Error", + "code": 2431, + "message": "Enum name cannot be '{0}'.", + "source": "generated" + }, + "2432": { + "body": "TypeScript reports this error: In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element.", + "category": "Error", + "code": 2432, + "message": "In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element.", + "source": "generated" + }, + "2433": { + "body": "TypeScript reports this error: A namespace declaration cannot be in a different file from a class or function with which it is merged.", + "category": "Error", + "code": 2433, + "message": "A namespace declaration cannot be in a different file from a class or function with which it is merged.", + "source": "generated" + }, + "2434": { + "body": "TypeScript reports this error: A namespace declaration cannot be located prior to a class or function with which it is merged.", + "category": "Error", + "code": 2434, + "message": "A namespace declaration cannot be located prior to a class or function with which it is merged.", + "source": "generated" + }, + "2435": { + "body": "TypeScript reports this error: Ambient modules cannot be nested in other modules or namespaces.", + "category": "Error", + "code": 2435, + "message": "Ambient modules cannot be nested in other modules or namespaces.", + "source": "generated" + }, + "2436": { + "body": "TypeScript reports this error: Ambient module declaration cannot specify relative module name.", + "category": "Error", + "code": 2436, + "message": "Ambient module declaration cannot specify relative module name.", + "source": "generated" + }, + "2437": { + "body": "TypeScript reports this error: Module '{0}' is hidden by a local declaration with the same name.", + "category": "Error", + "code": 2437, + "message": "Module '{0}' is hidden by a local declaration with the same name.", + "source": "generated" + }, + "2438": { + "body": "TypeScript reports this error: Import name cannot be '{0}'.", + "category": "Error", + "code": 2438, + "message": "Import name cannot be '{0}'.", + "source": "generated" + }, + "2439": { + "body": "TypeScript reports this error: Import or export declaration in an ambient module declaration cannot reference module through relative module name.", + "category": "Error", + "code": 2439, + "message": "Import or export declaration in an ambient module declaration cannot reference module through relative module name.", + "source": "generated" + }, + "2440": { + "body": "TypeScript reports this error: Import declaration conflicts with local declaration of '{0}'.", + "category": "Error", + "code": 2440, + "message": "Import declaration conflicts with local declaration of '{0}'.", + "source": "generated" + }, + "2441": { + "body": "TypeScript reports this error: Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module.", + "category": "Error", + "code": 2441, + "message": "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module.", + "source": "generated" + }, + "2442": { + "body": "TypeScript reports this error: Types have separate declarations of a private property '{0}'.", + "category": "Error", + "code": 2442, + "message": "Types have separate declarations of a private property '{0}'.", + "source": "generated" + }, + "2443": { + "body": "TypeScript reports this error: Property '{0}' is protected but type '{1}' is not a class derived from '{2}'.", + "category": "Error", + "code": 2443, + "message": "Property '{0}' is protected but type '{1}' is not a class derived from '{2}'.", + "source": "generated" + }, + "2444": { + "body": "TypeScript reports this error: Property '{0}' is protected in type '{1}' but public in type '{2}'.", + "category": "Error", + "code": 2444, + "message": "Property '{0}' is protected in type '{1}' but public in type '{2}'.", + "source": "generated" + }, + "2445": { + "body": "TypeScript reports this error: Property '{0}' is protected and only accessible within class '{1}' and its subclasses.", + "category": "Error", + "code": 2445, + "message": "Property '{0}' is protected and only accessible within class '{1}' and its subclasses.", + "source": "generated" + }, + "2446": { + "body": "TypeScript reports this error: Property '{0}' is protected and only accessible through an instance of class '{1}'. This is an instance of class '{2}'.", + "category": "Error", + "code": 2446, + "message": "Property '{0}' is protected and only accessible through an instance of class '{1}'. This is an instance of class '{2}'.", + "source": "generated" + }, + "2447": { + "body": "TypeScript reports this error: The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead.", + "category": "Error", + "code": 2447, + "message": "The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead.", + "source": "generated" + }, + "2448": { + "body": "TypeScript reports this error: Block-scoped variable '{0}' used before its declaration.", + "category": "Error", + "code": 2448, + "message": "Block-scoped variable '{0}' used before its declaration.", + "source": "generated" + }, + "2449": { + "body": "TypeScript reports this error: Class '{0}' used before its declaration.", + "category": "Error", + "code": 2449, + "message": "Class '{0}' used before its declaration.", + "source": "generated" + }, + "2450": { + "body": "TypeScript reports this error: Enum '{0}' used before its declaration.", + "category": "Error", + "code": 2450, + "message": "Enum '{0}' used before its declaration.", + "source": "generated" + }, + "2451": { + "body": "'{0}' has already been declared - you can't declare it again. [Learn more](https://www.totaltypescript.com/cannot-redeclare-block-scoped-variable).", + "category": "Error", + "code": 2451, + "message": "Cannot redeclare block-scoped variable '{0}'.", + "source": "curated" + }, + "2452": { + "body": "TypeScript reports this error: An enum member cannot have a numeric name.", + "category": "Error", + "code": 2452, + "message": "An enum member cannot have a numeric name.", + "source": "generated" + }, + "2454": { + "body": "TypeScript reports this error: Variable '{0}' is used before being assigned.", + "category": "Error", + "code": 2454, + "message": "Variable '{0}' is used before being assigned.", + "source": "generated" + }, + "2456": { + "body": "TypeScript reports this error: Type alias '{0}' circularly references itself.", + "category": "Error", + "code": 2456, + "message": "Type alias '{0}' circularly references itself.", + "source": "generated" + }, + "2457": { + "body": "TypeScript reports this error: Type alias name cannot be '{0}'.", + "category": "Error", + "code": 2457, + "message": "Type alias name cannot be '{0}'.", + "source": "generated" + }, + "2458": { + "body": "TypeScript reports this error: An AMD module cannot have multiple name assignments.", + "category": "Error", + "code": 2458, + "message": "An AMD module cannot have multiple name assignments.", + "source": "generated" + }, + "2459": { + "body": "TypeScript reports this error: Module '{0}' declares '{1}' locally, but it is not exported.", + "category": "Error", + "code": 2459, + "message": "Module '{0}' declares '{1}' locally, but it is not exported.", + "source": "generated" + }, + "2460": { + "body": "TypeScript reports this error: Module '{0}' declares '{1}' locally, but it is exported as '{2}'.", + "category": "Error", + "code": 2460, + "message": "Module '{0}' declares '{1}' locally, but it is exported as '{2}'.", + "source": "generated" + }, + "2461": { + "body": "TypeScript reports this error: Type '{0}' is not an array type.", + "category": "Error", + "code": 2461, + "message": "Type '{0}' is not an array type.", + "source": "generated" + }, + "2462": { + "body": "TypeScript reports this error: A rest element must be last in a destructuring pattern.", + "category": "Error", + "code": 2462, + "message": "A rest element must be last in a destructuring pattern.", + "source": "generated" + }, + "2463": { + "body": "TypeScript reports this error: A binding pattern parameter cannot be optional in an implementation signature.", + "category": "Error", + "code": 2463, + "message": "A binding pattern parameter cannot be optional in an implementation signature.", + "source": "generated" + }, + "2464": { + "body": "TypeScript reports this error: A computed property name must be of type 'string', 'number', 'symbol', or 'any'.", + "category": "Error", + "code": 2464, + "message": "A computed property name must be of type 'string', 'number', 'symbol', or 'any'.", + "source": "generated" + }, + "2465": { + "body": "TypeScript reports this error: 'this' cannot be referenced in a computed property name.", + "category": "Error", + "code": 2465, + "message": "'this' cannot be referenced in a computed property name.", + "source": "generated" + }, + "2466": { + "body": "TypeScript reports this error: 'super' cannot be referenced in a computed property name.", + "category": "Error", + "code": 2466, + "message": "'super' cannot be referenced in a computed property name.", + "source": "generated" + }, + "2467": { + "body": "TypeScript reports this error: A computed property name cannot reference a type parameter from its containing type.", + "category": "Error", + "code": 2467, + "message": "A computed property name cannot reference a type parameter from its containing type.", + "source": "generated" + }, + "2468": { + "body": "TypeScript reports this error: Cannot find global value '{0}'.", + "category": "Error", + "code": 2468, + "message": "Cannot find global value '{0}'.", + "source": "generated" + }, + "2469": { + "body": "TypeScript reports this error: The '{0}' operator cannot be applied to type 'symbol'.", + "category": "Error", + "code": 2469, + "message": "The '{0}' operator cannot be applied to type 'symbol'.", + "source": "generated" + }, + "2472": { + "body": "TypeScript reports this error: Spread operator in 'new' expressions is only available when targeting ECMAScript 5 and higher.", + "category": "Error", + "code": 2472, + "message": "Spread operator in 'new' expressions is only available when targeting ECMAScript 5 and higher.", + "source": "generated" + }, + "2473": { + "body": "TypeScript reports this error: Enum declarations must all be const or non-const.", + "category": "Error", + "code": 2473, + "message": "Enum declarations must all be const or non-const.", + "source": "generated" + }, + "2474": { + "body": "TypeScript reports this error: const enum member initializers must be constant expressions.", + "category": "Error", + "code": 2474, + "message": "const enum member initializers must be constant expressions.", + "source": "generated" + }, + "2475": { + "body": "TypeScript reports this error: 'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment or type query.", + "category": "Error", + "code": 2475, + "message": "'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment or type query.", + "source": "generated" + }, + "2476": { + "body": "TypeScript reports this error: A const enum member can only be accessed using a string literal.", + "category": "Error", + "code": 2476, + "message": "A const enum member can only be accessed using a string literal.", + "source": "generated" + }, + "2477": { + "body": "TypeScript reports this error: 'const' enum member initializer was evaluated to a non-finite value.", + "category": "Error", + "code": 2477, + "message": "'const' enum member initializer was evaluated to a non-finite value.", + "source": "generated" + }, + "2478": { + "body": "TypeScript reports this error: 'const' enum member initializer was evaluated to disallowed value 'NaN'.", + "category": "Error", + "code": 2478, + "message": "'const' enum member initializer was evaluated to disallowed value 'NaN'.", + "source": "generated" + }, + "2480": { + "body": "TypeScript reports this error: 'let' is not allowed to be used as a name in 'let' or 'const' declarations.", + "category": "Error", + "code": 2480, + "message": "'let' is not allowed to be used as a name in 'let' or 'const' declarations.", + "source": "generated" + }, + "2481": { + "body": "TypeScript reports this error: Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'.", + "category": "Error", + "code": 2481, + "message": "Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'.", + "source": "generated" + }, + "2483": { + "body": "TypeScript reports this error: The left-hand side of a 'for...of' statement cannot use a type annotation.", + "category": "Error", + "code": 2483, + "message": "The left-hand side of a 'for...of' statement cannot use a type annotation.", + "source": "generated" + }, + "2484": { + "body": "TypeScript reports this error: Export declaration conflicts with exported declaration of '{0}'.", + "category": "Error", + "code": 2484, + "message": "Export declaration conflicts with exported declaration of '{0}'.", + "source": "generated" + }, + "2487": { + "body": "TypeScript reports this error: The left-hand side of a 'for...of' statement must be a variable or a property access.", + "category": "Error", + "code": 2487, + "message": "The left-hand side of a 'for...of' statement must be a variable or a property access.", + "source": "generated" + }, + "2488": { + "body": "Type '{0}' isn't iterable. To make it iterable, add a [`Symbol.iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator) key.", + "category": "Error", + "code": 2488, + "message": "Type '{0}' must have a '[Symbol.iterator]()' method that returns an iterator.", + "source": "curated" + }, + "2489": { + "body": "TypeScript reports this error: An iterator must have a 'next()' method.", + "category": "Error", + "code": 2489, + "message": "An iterator must have a 'next()' method.", + "source": "generated" + }, + "2490": { + "body": "TypeScript reports this error: The type returned by the '{0}()' method of an iterator must have a 'value' property.", + "category": "Error", + "code": 2490, + "message": "The type returned by the '{0}()' method of an iterator must have a 'value' property.", + "source": "generated" + }, + "2491": { + "body": "TypeScript reports this error: The left-hand side of a 'for...in' statement cannot be a destructuring pattern.", + "category": "Error", + "code": 2491, + "message": "The left-hand side of a 'for...in' statement cannot be a destructuring pattern.", + "source": "generated" + }, + "2492": { + "body": "TypeScript reports this error: Cannot redeclare identifier '{0}' in catch clause.", + "category": "Error", + "code": 2492, + "message": "Cannot redeclare identifier '{0}' in catch clause.", + "source": "generated" + }, + "2493": { + "body": "TypeScript reports this error: Tuple type '{0}' of length '{1}' has no element at index '{2}'.", + "category": "Error", + "code": 2493, + "message": "Tuple type '{0}' of length '{1}' has no element at index '{2}'.", + "source": "generated" + }, + "2494": { + "body": "TypeScript reports this error: Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher.", + "category": "Error", + "code": 2494, + "message": "Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher.", + "source": "generated" + }, + "2495": { + "body": "TypeScript reports this error: Type '{0}' is not an array type or a string type.", + "category": "Error", + "code": 2495, + "message": "Type '{0}' is not an array type or a string type.", + "source": "generated" + }, + "2496": { + "body": "TypeScript reports this error: The 'arguments' object cannot be referenced in an arrow function in ES5. Consider using a standard function expression.", + "category": "Error", + "code": 2496, + "message": "The 'arguments' object cannot be referenced in an arrow function in ES5. Consider using a standard function expression.", + "source": "generated" + }, + "2497": { + "body": "TypeScript reports this error: This module can only be referenced with ECMAScript imports/exports by turning on the '{0}' flag and referencing its default export.", + "category": "Error", + "code": 2497, + "message": "This module can only be referenced with ECMAScript imports/exports by turning on the '{0}' flag and referencing its default export.", + "source": "generated" + }, + "2498": { + "body": "TypeScript reports this error: Module '{0}' uses 'export =' and cannot be used with 'export *'.", + "category": "Error", + "code": 2498, + "message": "Module '{0}' uses 'export =' and cannot be used with 'export *'.", + "source": "generated" + }, + "2499": { + "body": "TypeScript reports this error: An interface can only extend an identifier/qualified-name with optional type arguments.", + "category": "Error", + "code": 2499, + "message": "An interface can only extend an identifier/qualified-name with optional type arguments.", + "source": "generated" + }, + "2500": { + "body": "TypeScript reports this error: A class can only implement an identifier/qualified-name with optional type arguments.", + "category": "Error", + "code": 2500, + "message": "A class can only implement an identifier/qualified-name with optional type arguments.", + "source": "generated" + }, + "2501": { + "body": "TypeScript reports this error: A rest element cannot contain a binding pattern.", + "category": "Error", + "code": 2501, + "message": "A rest element cannot contain a binding pattern.", + "source": "generated" + }, + "2502": { + "body": "TypeScript reports this error: '{0}' is referenced directly or indirectly in its own type annotation.", + "category": "Error", + "code": 2502, + "message": "'{0}' is referenced directly or indirectly in its own type annotation.", + "source": "generated" + }, + "2503": { + "body": "TypeScript reports this error: Cannot find namespace '{0}'.", + "category": "Error", + "code": 2503, + "message": "Cannot find namespace '{0}'.", + "source": "generated" + }, + "2504": { + "body": "TypeScript reports this error: Type '{0}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator.", + "category": "Error", + "code": 2504, + "message": "Type '{0}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator.", + "source": "generated" + }, + "2505": { + "body": "TypeScript reports this error: A generator cannot have a 'void' type annotation.", + "category": "Error", + "code": 2505, + "message": "A generator cannot have a 'void' type annotation.", + "source": "generated" + }, + "2506": { + "body": "TypeScript reports this error: '{0}' is referenced directly or indirectly in its own base expression.", + "category": "Error", + "code": 2506, + "message": "'{0}' is referenced directly or indirectly in its own base expression.", + "source": "generated" + }, + "2507": { + "body": "TypeScript reports this error: Type '{0}' is not a constructor function type.", + "category": "Error", + "code": 2507, + "message": "Type '{0}' is not a constructor function type.", + "source": "generated" + }, + "2508": { + "body": "TypeScript reports this error: No base constructor has the specified number of type arguments.", + "category": "Error", + "code": 2508, + "message": "No base constructor has the specified number of type arguments.", + "source": "generated" + }, + "2509": { + "body": "TypeScript reports this error: Base constructor return type '{0}' is not an object type or intersection of object types with statically known members.", + "category": "Error", + "code": 2509, + "message": "Base constructor return type '{0}' is not an object type or intersection of object types with statically known members.", + "source": "generated" + }, + "2510": { + "body": "TypeScript reports this error: Base constructors must all have the same return type.", + "category": "Error", + "code": 2510, + "message": "Base constructors must all have the same return type.", + "source": "generated" + }, + "2511": { + "body": "TypeScript reports this error: Cannot create an instance of an abstract class.", + "category": "Error", + "code": 2511, + "message": "Cannot create an instance of an abstract class.", + "source": "generated" + }, + "2512": { + "body": "TypeScript reports this error: Overload signatures must all be abstract or non-abstract.", + "category": "Error", + "code": 2512, + "message": "Overload signatures must all be abstract or non-abstract.", + "source": "generated" + }, + "2513": { + "body": "TypeScript reports this error: Abstract method '{0}' in class '{1}' cannot be accessed via super expression.", + "category": "Error", + "code": 2513, + "message": "Abstract method '{0}' in class '{1}' cannot be accessed via super expression.", + "source": "generated" + }, + "2514": { + "body": "TypeScript reports this error: A tuple type cannot be indexed with a negative value.", + "category": "Error", + "code": 2514, + "message": "A tuple type cannot be indexed with a negative value.", + "source": "generated" + }, + "2515": { + "body": "TypeScript reports this error: Non-abstract class '{0}' does not implement inherited abstract member {1} from class '{2}'.", + "category": "Error", + "code": 2515, + "message": "Non-abstract class '{0}' does not implement inherited abstract member {1} from class '{2}'.", + "source": "generated" + }, + "2516": { + "body": "TypeScript reports this error: All declarations of an abstract method must be consecutive.", + "category": "Error", + "code": 2516, + "message": "All declarations of an abstract method must be consecutive.", + "source": "generated" + }, + "2517": { + "body": "TypeScript reports this error: Cannot assign an abstract constructor type to a non-abstract constructor type.", + "category": "Error", + "code": 2517, + "message": "Cannot assign an abstract constructor type to a non-abstract constructor type.", + "source": "generated" + }, + "2518": { + "body": "TypeScript reports this error: A 'this'-based type guard is not compatible with a parameter-based type guard.", + "category": "Error", + "code": 2518, + "message": "A 'this'-based type guard is not compatible with a parameter-based type guard.", + "source": "generated" + }, + "2519": { + "body": "TypeScript reports this error: An async iterator must have a 'next()' method.", + "category": "Error", + "code": 2519, + "message": "An async iterator must have a 'next()' method.", + "source": "generated" + }, + "2520": { + "body": "TypeScript reports this error: Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions.", + "category": "Error", + "code": 2520, + "message": "Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions.", + "source": "generated" + }, + "2522": { + "body": "TypeScript reports this error: The 'arguments' object cannot be referenced in an async function or method in ES5. Consider using a standard function or method.", + "category": "Error", + "code": 2522, + "message": "The 'arguments' object cannot be referenced in an async function or method in ES5. Consider using a standard function or method.", + "source": "generated" + }, + "2523": { + "body": "TypeScript reports this error: 'yield' expressions cannot be used in a parameter initializer.", + "category": "Error", + "code": 2523, + "message": "'yield' expressions cannot be used in a parameter initializer.", + "source": "generated" + }, + "2524": { + "body": "TypeScript reports this error: 'await' expressions cannot be used in a parameter initializer.", + "category": "Error", + "code": 2524, + "message": "'await' expressions cannot be used in a parameter initializer.", + "source": "generated" + }, + "2526": { + "body": "TypeScript reports this error: A 'this' type is available only in a non-static member of a class or interface.", + "category": "Error", + "code": 2526, + "message": "A 'this' type is available only in a non-static member of a class or interface.", + "source": "generated" + }, + "2527": { + "body": "TypeScript reports this error: The inferred type of '{0}' references an inaccessible '{1}' type. A type annotation is necessary.", + "category": "Error", + "code": 2527, + "message": "The inferred type of '{0}' references an inaccessible '{1}' type. A type annotation is necessary.", + "source": "generated" + }, + "2528": { + "body": "TypeScript reports this error: A module cannot have multiple default exports.", + "category": "Error", + "code": 2528, + "message": "A module cannot have multiple default exports.", + "source": "generated" + }, + "2529": { + "body": "TypeScript reports this error: Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module containing async functions.", + "category": "Error", + "code": 2529, + "message": "Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module containing async functions.", + "source": "generated" + }, + "2530": { + "body": "TypeScript reports this error: Property '{0}' is incompatible with index signature.", + "category": "Error", + "code": 2530, + "message": "Property '{0}' is incompatible with index signature.", + "source": "generated" + }, + "2531": { + "body": "TypeScript reports this error: Object is possibly 'null'.", + "category": "Error", + "code": 2531, + "message": "Object is possibly 'null'.", + "source": "generated" + }, + "2532": { + "body": "TypeScript reports this error: Object is possibly 'undefined'.", + "category": "Error", + "code": 2532, + "message": "Object is possibly 'undefined'.", + "source": "generated" + }, + "2533": { + "body": "TypeScript reports this error: Object is possibly 'null' or 'undefined'.", + "category": "Error", + "code": 2533, + "message": "Object is possibly 'null' or 'undefined'.", + "source": "generated" + }, + "2534": { + "body": "TypeScript reports this error: A function returning 'never' cannot have a reachable end point.", + "category": "Error", + "code": 2534, + "message": "A function returning 'never' cannot have a reachable end point.", + "source": "generated" + }, + "2536": { + "body": "TypeScript reports this error: Type '{0}' cannot be used to index type '{1}'.", + "category": "Error", + "code": 2536, + "message": "Type '{0}' cannot be used to index type '{1}'.", + "source": "generated" + }, + "2537": { + "body": "TypeScript reports this error: Type '{0}' has no matching index signature for type '{1}'.", + "category": "Error", + "code": 2537, + "message": "Type '{0}' has no matching index signature for type '{1}'.", + "source": "generated" + }, + "2538": { + "body": "TypeScript reports this error: Type '{0}' cannot be used as an index type.", + "category": "Error", + "code": 2538, + "message": "Type '{0}' cannot be used as an index type.", + "source": "generated" + }, + "2539": { + "body": "TypeScript reports this error: Cannot assign to '{0}' because it is not a variable.", + "category": "Error", + "code": 2539, + "message": "Cannot assign to '{0}' because it is not a variable.", + "source": "generated" + }, + "2540": { + "body": "TypeScript reports this error: Cannot assign to '{0}' because it is a read-only property.", + "category": "Error", + "code": 2540, + "message": "Cannot assign to '{0}' because it is a read-only property.", + "source": "generated" + }, + "2542": { + "body": "TypeScript reports this error: Index signature in type '{0}' only permits reading.", + "category": "Error", + "code": 2542, + "message": "Index signature in type '{0}' only permits reading.", + "source": "generated" + }, + "2543": { + "body": "TypeScript reports this error: Duplicate identifier '_newTarget'. Compiler uses variable declaration '_newTarget' to capture 'new.target' meta-property reference.", + "category": "Error", + "code": 2543, + "message": "Duplicate identifier '_newTarget'. Compiler uses variable declaration '_newTarget' to capture 'new.target' meta-property reference.", + "source": "generated" + }, + "2544": { + "body": "TypeScript reports this error: Expression resolves to variable declaration '_newTarget' that compiler uses to capture 'new.target' meta-property reference.", + "category": "Error", + "code": 2544, + "message": "Expression resolves to variable declaration '_newTarget' that compiler uses to capture 'new.target' meta-property reference.", + "source": "generated" + }, + "2545": { + "body": "TypeScript reports this error: A mixin class must have a constructor with a single rest parameter of type 'any[]'.", + "category": "Error", + "code": 2545, + "message": "A mixin class must have a constructor with a single rest parameter of type 'any[]'.", + "source": "generated" + }, + "2547": { + "body": "TypeScript reports this error: The type returned by the '{0}()' method of an async iterator must be a promise for a type with a 'value' property.", + "category": "Error", + "code": 2547, + "message": "The type returned by the '{0}()' method of an async iterator must be a promise for a type with a 'value' property.", + "source": "generated" + }, + "2548": { + "body": "TypeScript reports this error: Type '{0}' is not an array type or does not have a '[Symbol.iterator]()' method that returns an iterator.", + "category": "Error", + "code": 2548, + "message": "Type '{0}' is not an array type or does not have a '[Symbol.iterator]()' method that returns an iterator.", + "source": "generated" + }, + "2549": { + "body": "TypeScript reports this error: Type '{0}' is not an array type or a string type or does not have a '[Symbol.iterator]()' method that returns an iterator.", + "category": "Error", + "code": 2549, + "message": "Type '{0}' is not an array type or a string type or does not have a '[Symbol.iterator]()' method that returns an iterator.", + "source": "generated" + }, + "2550": { + "body": "TypeScript reports this error: Property '{0}' does not exist on type '{1}'. Do you need to change your target library? Try changing the 'lib' compiler option to '{2}' or later.", + "category": "Error", + "code": 2550, + "message": "Property '{0}' does not exist on type '{1}'. Do you need to change your target library? Try changing the 'lib' compiler option to '{2}' or later.", + "source": "generated" + }, + "2551": { + "body": "You're trying to access '{0}' on an object that doesn't contain it. Did you mean '{2}'?", + "category": "Error", + "code": 2551, + "message": "Property '{0}' does not exist on type '{1}'. Did you mean '{2}'?", + "source": "curated" + }, + "2552": { + "body": "You are trying to reference a function or variable which I can't find in the current scope.", + "category": "Error", + "code": 2552, + "message": "Cannot find name '{0}'. Did you mean '{1}'?", + "source": "curated" + }, + "2553": { + "body": "TypeScript reports this error: Computed values are not permitted in an enum with string valued members.", + "category": "Error", + "code": 2553, + "message": "Computed values are not permitted in an enum with string valued members.", + "source": "generated" + }, + "2554": { + "body": "The function you're trying to call needs {0} arguments, but you're passing {1}.", + "category": "Error", + "code": 2554, + "message": "Expected {0} arguments, but got {1}.", + "source": "curated" + }, + "2555": { + "body": "TypeScript reports this error: Expected at least {0} arguments, but got {1}.", + "category": "Error", + "code": 2555, + "message": "Expected at least {0} arguments, but got {1}.", + "source": "generated" + }, + "2556": { + "body": "You're spreading arguments into a function. To do that, either the argument needs to be a tuple OR the function needs to accept a dynamic number of arguments.", + "category": "Error", + "code": 2556, + "message": "A spread argument must either have a tuple type or be passed to a rest parameter.", + "source": "curated" + }, + "2558": { + "body": "TypeScript reports this error: Expected {0} type arguments, but got {1}.", + "category": "Error", + "code": 2558, + "message": "Expected {0} type arguments, but got {1}.", + "source": "generated" + }, + "2559": { + "body": "TypeScript reports this error: Type '{0}' has no properties in common with type '{1}'.", + "category": "Error", + "code": 2559, + "message": "Type '{0}' has no properties in common with type '{1}'.", + "source": "generated" + }, + "2560": { + "body": "TypeScript reports this error: Value of type '{0}' has no properties in common with type '{1}'. Did you mean to call it?", + "category": "Error", + "code": 2560, + "message": "Value of type '{0}' has no properties in common with type '{1}'. Did you mean to call it?", + "source": "generated" + }, + "2561": { + "body": "TypeScript reports this error: Object literal may only specify known properties, but '{0}' does not exist in type '{1}'. Did you mean to write '{2}'?", + "category": "Error", + "code": 2561, + "message": "Object literal may only specify known properties, but '{0}' does not exist in type '{1}'. Did you mean to write '{2}'?", + "source": "generated" + }, + "2562": { + "body": "TypeScript reports this error: Base class expressions cannot reference class type parameters.", + "category": "Error", + "code": 2562, + "message": "Base class expressions cannot reference class type parameters.", + "source": "generated" + }, + "2563": { + "body": "TypeScript reports this error: The containing function or module body is too large for control flow analysis.", + "category": "Error", + "code": 2563, + "message": "The containing function or module body is too large for control flow analysis.", + "source": "generated" + }, + "2564": { + "body": "TypeScript reports this error: Property '{0}' has no initializer and is not definitely assigned in the constructor.", + "category": "Error", + "code": 2564, + "message": "Property '{0}' has no initializer and is not definitely assigned in the constructor.", + "source": "generated" + }, + "2565": { + "body": "TypeScript reports this error: Property '{0}' is used before being assigned.", + "category": "Error", + "code": 2565, + "message": "Property '{0}' is used before being assigned.", + "source": "generated" + }, + "2566": { + "body": "TypeScript reports this error: A rest element cannot have a property name.", + "category": "Error", + "code": 2566, + "message": "A rest element cannot have a property name.", + "source": "generated" + }, + "2567": { + "body": "TypeScript reports this error: Enum declarations can only merge with namespace or other enum declarations.", + "category": "Error", + "code": 2567, + "message": "Enum declarations can only merge with namespace or other enum declarations.", + "source": "generated" + }, + "2568": { + "body": "TypeScript reports this error: Property '{0}' may not exist on type '{1}'. Did you mean '{2}'?", + "category": "Error", + "code": 2568, + "message": "Property '{0}' may not exist on type '{1}'. Did you mean '{2}'?", + "source": "generated" + }, + "2570": { + "body": "TypeScript reports this error: Could not find name '{0}'. Did you mean '{1}'?", + "category": "Error", + "code": 2570, + "message": "Could not find name '{0}'. Did you mean '{1}'?", + "source": "generated" + }, + "2571": { + "body": "I don't know what type this object is, so I've defaulted it to 'unknown'. [Learn more](https://www.totaltypescript.com/concepts/object-is-of-type-unknown).", + "category": "Error", + "code": 2571, + "message": "Object is of type 'unknown'.", + "source": "curated" + }, + "2574": { + "body": "TypeScript reports this error: A rest element type must be an array type.", + "category": "Error", + "code": 2574, + "message": "A rest element type must be an array type.", + "source": "generated" + }, + "2575": { + "body": "TypeScript reports this error: No overload expects {0} arguments, but overloads do exist that expect either {1} or {2} arguments.", + "category": "Error", + "code": 2575, + "message": "No overload expects {0} arguments, but overloads do exist that expect either {1} or {2} arguments.", + "source": "generated" + }, + "2576": { + "body": "TypeScript reports this error: Property '{0}' does not exist on type '{1}'. Did you mean to access the static member '{2}' instead?", + "category": "Error", + "code": 2576, + "message": "Property '{0}' does not exist on type '{1}'. Did you mean to access the static member '{2}' instead?", + "source": "generated" + }, + "2577": { + "body": "TypeScript reports this error: Return type annotation circularly references itself.", + "category": "Error", + "code": 2577, + "message": "Return type annotation circularly references itself.", + "source": "generated" + }, + "2578": { + "body": "TypeScript reports this error: Unused '@ts-expect-error' directive.", + "category": "Error", + "code": 2578, + "message": "Unused '@ts-expect-error' directive.", + "source": "generated" + }, + "2580": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.", + "category": "Error", + "code": 2580, + "message": "Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.", + "source": "generated" + }, + "2581": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i --save-dev @types/jquery`.", + "category": "Error", + "code": 2581, + "message": "Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i --save-dev @types/jquery`.", + "source": "generated" + }, + "2582": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i --save-dev @types/jest` or `npm i --save-dev @types/mocha`.", + "category": "Error", + "code": 2582, + "message": "Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i --save-dev @types/jest` or `npm i --save-dev @types/mocha`.", + "source": "generated" + }, + "2583": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Do you need to change your target library? Try changing the 'lib' compiler option to '{1}' or later.", + "category": "Error", + "code": 2583, + "message": "Cannot find name '{0}'. Do you need to change your target library? Try changing the 'lib' compiler option to '{1}' or later.", + "source": "generated" + }, + "2584": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Do you need to change your target library? Try changing the 'lib' compiler option to include 'dom'.", + "category": "Error", + "code": 2584, + "message": "Cannot find name '{0}'. Do you need to change your target library? Try changing the 'lib' compiler option to include 'dom'.", + "source": "generated" + }, + "2585": { + "body": "TypeScript reports this error: '{0}' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the 'lib' compiler option to es2015 or later.", + "category": "Error", + "code": 2585, + "message": "'{0}' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the 'lib' compiler option to es2015 or later.", + "source": "generated" + }, + "2588": { + "body": "TypeScript reports this error: Cannot assign to '{0}' because it is a constant.", + "category": "Error", + "code": 2588, + "message": "Cannot assign to '{0}' because it is a constant.", + "source": "generated" + }, + "2589": { + "body": "TypeScript reports this error: Type instantiation is excessively deep and possibly infinite.", + "category": "Error", + "code": 2589, + "message": "Type instantiation is excessively deep and possibly infinite.", + "source": "generated" + }, + "2590": { + "body": "This union type has become so large that TypeScript cannot represent it any more. The usual fix is to simplify the type so it produces fewer possible combinations.", + "category": "Error", + "code": 2590, + "message": "Expression produces a union type that is too complex to represent.", + "source": "curated" + }, + "2591": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node` and then add 'node' to the types field in your tsconfig.", + "category": "Error", + "code": 2591, + "message": "Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node` and then add 'node' to the types field in your tsconfig.", + "source": "generated" + }, + "2592": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i --save-dev @types/jquery` and then add 'jquery' to the types field in your tsconfig.", + "category": "Error", + "code": 2592, + "message": "Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i --save-dev @types/jquery` and then add 'jquery' to the types field in your tsconfig.", + "source": "generated" + }, + "2593": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i --save-dev @types/jest` or `npm i --save-dev @types/mocha` and then add 'jest' or 'mocha' to the types field in your tsconfig.", + "category": "Error", + "code": 2593, + "message": "Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i --save-dev @types/jest` or `npm i --save-dev @types/mocha` and then add 'jest' or 'mocha' to the types field in your tsconfig.", + "source": "generated" + }, + "2594": { + "body": "TypeScript reports this error: This module is declared with 'export =', and can only be used with a default import when using the '{0}' flag.", + "category": "Error", + "code": 2594, + "message": "This module is declared with 'export =', and can only be used with a default import when using the '{0}' flag.", + "source": "generated" + }, + "2595": { + "body": "TypeScript reports this error: '{0}' can only be imported by using a default import.", + "category": "Error", + "code": 2595, + "message": "'{0}' can only be imported by using a default import.", + "source": "generated" + }, + "2596": { + "body": "TypeScript reports this error: '{0}' can only be imported by turning on the 'esModuleInterop' flag and using a default import.", + "category": "Error", + "code": 2596, + "message": "'{0}' can only be imported by turning on the 'esModuleInterop' flag and using a default import.", + "source": "generated" + }, + "2597": { + "body": "TypeScript reports this error: '{0}' can only be imported by using a 'require' call or by using a default import.", + "category": "Error", + "code": 2597, + "message": "'{0}' can only be imported by using a 'require' call or by using a default import.", + "source": "generated" + }, + "2598": { + "body": "TypeScript reports this error: '{0}' can only be imported by using a 'require' call or by turning on the 'esModuleInterop' flag and using a default import.", + "category": "Error", + "code": 2598, + "message": "'{0}' can only be imported by using a 'require' call or by turning on the 'esModuleInterop' flag and using a default import.", + "source": "generated" + }, + "2602": { + "body": "TypeScript reports this error: JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist.", + "category": "Error", + "code": 2602, + "message": "JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist.", + "source": "generated" + }, + "2603": { + "body": "TypeScript reports this error: Property '{0}' in type '{1}' is not assignable to type '{2}'.", + "category": "Error", + "code": 2603, + "message": "Property '{0}' in type '{1}' is not assignable to type '{2}'.", + "source": "generated" + }, + "2604": { + "body": "'{0}' cannot be used as a JSX component because it isn't a function.", + "category": "Error", + "code": 2604, + "message": "JSX element type '{0}' does not have any construct or call signatures.", + "source": "curated" + }, + "2606": { + "body": "TypeScript reports this error: Property '{0}' of JSX spread attribute is not assignable to target property.", + "category": "Error", + "code": 2606, + "message": "Property '{0}' of JSX spread attribute is not assignable to target property.", + "source": "generated" + }, + "2607": { + "body": "TypeScript reports this error: JSX element class does not support attributes because it does not have a '{0}' property.", + "category": "Error", + "code": 2607, + "message": "JSX element class does not support attributes because it does not have a '{0}' property.", + "source": "generated" + }, + "2608": { + "body": "TypeScript reports this error: The global type 'JSX.{0}' may not have more than one property.", + "category": "Error", + "code": 2608, + "message": "The global type 'JSX.{0}' may not have more than one property.", + "source": "generated" + }, + "2609": { + "body": "TypeScript reports this error: JSX spread child must be an array type.", + "category": "Error", + "code": 2609, + "message": "JSX spread child must be an array type.", + "source": "generated" + }, + "2610": { + "body": "TypeScript reports this error: '{0}' is defined as an accessor in class '{1}', but is overridden here in '{2}' as an instance property.", + "category": "Error", + "code": 2610, + "message": "'{0}' is defined as an accessor in class '{1}', but is overridden here in '{2}' as an instance property.", + "source": "generated" + }, + "2611": { + "body": "TypeScript reports this error: '{0}' is defined as a property in class '{1}', but is overridden here in '{2}' as an accessor.", + "category": "Error", + "code": 2611, + "message": "'{0}' is defined as a property in class '{1}', but is overridden here in '{2}' as an accessor.", + "source": "generated" + }, + "2612": { + "body": "TypeScript reports this error: Property '{0}' will overwrite the base property in '{1}'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration.", + "category": "Error", + "code": 2612, + "message": "Property '{0}' will overwrite the base property in '{1}'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration.", + "source": "generated" + }, + "2613": { + "body": "TypeScript reports this error: Module '{0}' has no default export. Did you mean to use 'import { {1} } from {0}' instead?", + "category": "Error", + "code": 2613, + "message": "Module '{0}' has no default export. Did you mean to use 'import { {1} } from {0}' instead?", + "source": "generated" + }, + "2614": { + "body": "'{1}' is not one of the things exported from '{0}'. Did you mean to import '{1}' from '{0}' instead?", + "category": "Error", + "code": 2614, + "message": "Module '{0}' has no exported member '{1}'. Did you mean to use 'import {1} from {0}' instead?", + "source": "curated" + }, + "2615": { + "body": "TypeScript reports this error: Type of property '{0}' circularly references itself in mapped type '{1}'.", + "category": "Error", + "code": 2615, + "message": "Type of property '{0}' circularly references itself in mapped type '{1}'.", + "source": "generated" + }, + "2616": { + "body": "TypeScript reports this error: '{0}' can only be imported by using 'import {1} = require({2})' or a default import.", + "category": "Error", + "code": 2616, + "message": "'{0}' can only be imported by using 'import {1} = require({2})' or a default import.", + "source": "generated" + }, + "2617": { + "body": "TypeScript reports this error: '{0}' can only be imported by using 'import {1} = require({2})' or by turning on the 'esModuleInterop' flag and using a default import.", + "category": "Error", + "code": 2617, + "message": "'{0}' can only be imported by using 'import {1} = require({2})' or by turning on the 'esModuleInterop' flag and using a default import.", + "source": "generated" + }, + "2618": { + "body": "TypeScript reports this error: Source has {0} element(s) but target requires {1}.", + "category": "Error", + "code": 2618, + "message": "Source has {0} element(s) but target requires {1}.", + "source": "generated" + }, + "2619": { + "body": "TypeScript reports this error: Source has {0} element(s) but target allows only {1}.", + "category": "Error", + "code": 2619, + "message": "Source has {0} element(s) but target allows only {1}.", + "source": "generated" + }, + "2620": { + "body": "TypeScript reports this error: Target requires {0} element(s) but source may have fewer.", + "category": "Error", + "code": 2620, + "message": "Target requires {0} element(s) but source may have fewer.", + "source": "generated" + }, + "2621": { + "body": "TypeScript reports this error: Target allows only {0} element(s) but source may have more.", + "category": "Error", + "code": 2621, + "message": "Target allows only {0} element(s) but source may have more.", + "source": "generated" + }, + "2623": { + "body": "TypeScript reports this error: Source provides no match for required element at position {0} in target.", + "category": "Error", + "code": 2623, + "message": "Source provides no match for required element at position {0} in target.", + "source": "generated" + }, + "2624": { + "body": "TypeScript reports this error: Source provides no match for variadic element at position {0} in target.", + "category": "Error", + "code": 2624, + "message": "Source provides no match for variadic element at position {0} in target.", + "source": "generated" + }, + "2625": { + "body": "TypeScript reports this error: Variadic element at position {0} in source does not match element at position {1} in target.", + "category": "Error", + "code": 2625, + "message": "Variadic element at position {0} in source does not match element at position {1} in target.", + "source": "generated" + }, + "2626": { + "body": "TypeScript reports this error: Type at position {0} in source is not compatible with type at position {1} in target.", + "category": "Error", + "code": 2626, + "message": "Type at position {0} in source is not compatible with type at position {1} in target.", + "source": "generated" + }, + "2627": { + "body": "TypeScript reports this error: Type at positions {0} through {1} in source is not compatible with type at position {2} in target.", + "category": "Error", + "code": 2627, + "message": "Type at positions {0} through {1} in source is not compatible with type at position {2} in target.", + "source": "generated" + }, + "2628": { + "body": "TypeScript reports this error: Cannot assign to '{0}' because it is an enum.", + "category": "Error", + "code": 2628, + "message": "Cannot assign to '{0}' because it is an enum.", + "source": "generated" + }, + "2629": { + "body": "TypeScript reports this error: Cannot assign to '{0}' because it is a class.", + "category": "Error", + "code": 2629, + "message": "Cannot assign to '{0}' because it is a class.", + "source": "generated" + }, + "2630": { + "body": "TypeScript reports this error: Cannot assign to '{0}' because it is a function.", + "category": "Error", + "code": 2630, + "message": "Cannot assign to '{0}' because it is a function.", + "source": "generated" + }, + "2631": { + "body": "TypeScript reports this error: Cannot assign to '{0}' because it is a namespace.", + "category": "Error", + "code": 2631, + "message": "Cannot assign to '{0}' because it is a namespace.", + "source": "generated" + }, + "2632": { + "body": "TypeScript reports this error: Cannot assign to '{0}' because it is an import.", + "category": "Error", + "code": 2632, + "message": "Cannot assign to '{0}' because it is an import.", + "source": "generated" + }, + "2633": { + "body": "TypeScript reports this error: JSX property access expressions cannot include JSX namespace names", + "category": "Error", + "code": 2633, + "message": "JSX property access expressions cannot include JSX namespace names", + "source": "generated" + }, + "2634": { + "body": "TypeScript reports this error: '{0}' index signatures are incompatible.", + "category": "Error", + "code": 2634, + "message": "'{0}' index signatures are incompatible.", + "source": "generated" + }, + "2635": { + "body": "TypeScript reports this error: Type '{0}' has no signatures for which the type argument list is applicable.", + "category": "Error", + "code": 2635, + "message": "Type '{0}' has no signatures for which the type argument list is applicable.", + "source": "generated" + }, + "2636": { + "body": "TypeScript reports this error: Type '{0}' is not assignable to type '{1}' as implied by variance annotation.", + "category": "Error", + "code": 2636, + "message": "Type '{0}' is not assignable to type '{1}' as implied by variance annotation.", + "source": "generated" + }, + "2637": { + "body": "TypeScript reports this error: Variance annotations are only supported in type aliases for object, function, constructor, and mapped types.", + "category": "Error", + "code": 2637, + "message": "Variance annotations are only supported in type aliases for object, function, constructor, and mapped types.", + "source": "generated" + }, + "2638": { + "body": "TypeScript reports this error: Type '{0}' may represent a primitive value, which is not permitted as the right operand of the 'in' operator.", + "category": "Error", + "code": 2638, + "message": "Type '{0}' may represent a primitive value, which is not permitted as the right operand of the 'in' operator.", + "source": "generated" + }, + "2639": { + "body": "TypeScript reports this error: React components cannot include JSX namespace names", + "category": "Error", + "code": 2639, + "message": "React components cannot include JSX namespace names", + "source": "generated" + }, + "2649": { + "body": "TypeScript reports this error: Cannot augment module '{0}' with value exports because it resolves to a non-module entity.", + "category": "Error", + "code": 2649, + "message": "Cannot augment module '{0}' with value exports because it resolves to a non-module entity.", + "source": "generated" + }, + "2650": { + "body": "TypeScript reports this error: Non-abstract class expression is missing implementations for the following members of '{0}': {1} and {2} more.", + "category": "Error", + "code": 2650, + "message": "Non-abstract class expression is missing implementations for the following members of '{0}': {1} and {2} more.", + "source": "generated" + }, + "2651": { + "body": "TypeScript reports this error: A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.", + "category": "Error", + "code": 2651, + "message": "A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums.", + "source": "generated" + }, + "2652": { + "body": "TypeScript reports this error: Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead.", + "category": "Error", + "code": 2652, + "message": "Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead.", + "source": "generated" + }, + "2653": { + "body": "TypeScript reports this error: Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'.", + "category": "Error", + "code": 2653, + "message": "Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'.", + "source": "generated" + }, + "2654": { + "body": "TypeScript reports this error: Non-abstract class '{0}' is missing implementations for the following members of '{1}': {2}.", + "category": "Error", + "code": 2654, + "message": "Non-abstract class '{0}' is missing implementations for the following members of '{1}': {2}.", + "source": "generated" + }, + "2655": { + "body": "TypeScript reports this error: Non-abstract class '{0}' is missing implementations for the following members of '{1}': {2} and {3} more.", + "category": "Error", + "code": 2655, + "message": "Non-abstract class '{0}' is missing implementations for the following members of '{1}': {2} and {3} more.", + "source": "generated" + }, + "2656": { + "body": "TypeScript reports this error: Non-abstract class expression is missing implementations for the following members of '{0}': {1}.", + "category": "Error", + "code": 2656, + "message": "Non-abstract class expression is missing implementations for the following members of '{0}': {1}.", + "source": "generated" + }, + "2657": { + "body": "TypeScript reports this error: JSX expressions must have one parent element.", + "category": "Error", + "code": 2657, + "message": "JSX expressions must have one parent element.", + "source": "generated" + }, + "2658": { + "body": "TypeScript reports this error: Type '{0}' provides no match for the signature '{1}'.", + "category": "Error", + "code": 2658, + "message": "Type '{0}' provides no match for the signature '{1}'.", + "source": "generated" + }, + "2659": { + "body": "TypeScript reports this error: 'super' is only allowed in members of object literal expressions when option 'target' is 'ES2015' or higher.", + "category": "Error", + "code": 2659, + "message": "'super' is only allowed in members of object literal expressions when option 'target' is 'ES2015' or higher.", + "source": "generated" + }, + "2660": { + "body": "TypeScript reports this error: 'super' can only be referenced in members of derived classes or object literal expressions.", + "category": "Error", + "code": 2660, + "message": "'super' can only be referenced in members of derived classes or object literal expressions.", + "source": "generated" + }, + "2661": { + "body": "TypeScript reports this error: Cannot export '{0}'. Only local declarations can be exported from a module.", + "category": "Error", + "code": 2661, + "message": "Cannot export '{0}'. Only local declarations can be exported from a module.", + "source": "generated" + }, + "2662": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Did you mean the static member '{1}.{0}'?", + "category": "Error", + "code": 2662, + "message": "Cannot find name '{0}'. Did you mean the static member '{1}.{0}'?", + "source": "generated" + }, + "2663": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Did you mean the instance member 'this.{0}'?", + "category": "Error", + "code": 2663, + "message": "Cannot find name '{0}'. Did you mean the instance member 'this.{0}'?", + "source": "generated" + }, + "2664": { + "body": "TypeScript reports this error: Invalid module name in augmentation, module '{0}' cannot be found.", + "category": "Error", + "code": 2664, + "message": "Invalid module name in augmentation, module '{0}' cannot be found.", + "source": "generated" + }, + "2665": { + "body": "TypeScript reports this error: Invalid module name in augmentation. Module '{0}' resolves to an untyped module at '{1}', which cannot be augmented.", + "category": "Error", + "code": 2665, + "message": "Invalid module name in augmentation. Module '{0}' resolves to an untyped module at '{1}', which cannot be augmented.", + "source": "generated" + }, + "2666": { + "body": "TypeScript reports this error: Exports and export assignments are not permitted in module augmentations.", + "category": "Error", + "code": 2666, + "message": "Exports and export assignments are not permitted in module augmentations.", + "source": "generated" + }, + "2667": { + "body": "TypeScript reports this error: Imports are not permitted in module augmentations. Consider moving them to the enclosing external module.", + "category": "Error", + "code": 2667, + "message": "Imports are not permitted in module augmentations. Consider moving them to the enclosing external module.", + "source": "generated" + }, + "2668": { + "body": "TypeScript reports this error: 'export' modifier cannot be applied to ambient modules and module augmentations since they are always visible.", + "category": "Error", + "code": 2668, + "message": "'export' modifier cannot be applied to ambient modules and module augmentations since they are always visible.", + "source": "generated" + }, + "2669": { + "body": "TypeScript reports this error: Augmentations for the global scope can only be directly nested in external modules or ambient module declarations.", + "category": "Error", + "code": 2669, + "message": "Augmentations for the global scope can only be directly nested in external modules or ambient module declarations.", + "source": "generated" + }, + "2670": { + "body": "TypeScript reports this error: Augmentations for the global scope should have 'declare' modifier unless they appear in already ambient context.", + "category": "Error", + "code": 2670, + "message": "Augmentations for the global scope should have 'declare' modifier unless they appear in already ambient context.", + "source": "generated" + }, + "2671": { + "body": "TypeScript reports this error: Cannot augment module '{0}' because it resolves to a non-module entity.", + "category": "Error", + "code": 2671, + "message": "Cannot augment module '{0}' because it resolves to a non-module entity.", + "source": "generated" + }, + "2672": { + "body": "TypeScript reports this error: Cannot assign a '{0}' constructor type to a '{1}' constructor type.", + "category": "Error", + "code": 2672, + "message": "Cannot assign a '{0}' constructor type to a '{1}' constructor type.", + "source": "generated" + }, + "2673": { + "body": "TypeScript reports this error: Constructor of class '{0}' is private and only accessible within the class declaration.", + "category": "Error", + "code": 2673, + "message": "Constructor of class '{0}' is private and only accessible within the class declaration.", + "source": "generated" + }, + "2674": { + "body": "TypeScript reports this error: Constructor of class '{0}' is protected and only accessible within the class declaration.", + "category": "Error", + "code": 2674, + "message": "Constructor of class '{0}' is protected and only accessible within the class declaration.", + "source": "generated" + }, + "2675": { + "body": "TypeScript reports this error: Cannot extend a class '{0}'. Class constructor is marked as private.", + "category": "Error", + "code": 2675, + "message": "Cannot extend a class '{0}'. Class constructor is marked as private.", + "source": "generated" + }, + "2676": { + "body": "TypeScript reports this error: Accessors must both be abstract or non-abstract.", + "category": "Error", + "code": 2676, + "message": "Accessors must both be abstract or non-abstract.", + "source": "generated" + }, + "2677": { + "body": "TypeScript reports this error: A type predicate's type must be assignable to its parameter's type.", + "category": "Error", + "code": 2677, + "message": "A type predicate's type must be assignable to its parameter's type.", + "source": "generated" + }, + "2678": { + "body": "TypeScript reports this error: Type '{0}' is not comparable to type '{1}'.", + "category": "Error", + "code": 2678, + "message": "Type '{0}' is not comparable to type '{1}'.", + "source": "generated" + }, + "2679": { + "body": "TypeScript reports this error: A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'.", + "category": "Error", + "code": 2679, + "message": "A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'.", + "source": "generated" + }, + "2680": { + "body": "TypeScript reports this error: A '{0}' parameter must be the first parameter.", + "category": "Error", + "code": 2680, + "message": "A '{0}' parameter must be the first parameter.", + "source": "generated" + }, + "2681": { + "body": "TypeScript reports this error: A constructor cannot have a 'this' parameter.", + "category": "Error", + "code": 2681, + "message": "A constructor cannot have a 'this' parameter.", + "source": "generated" + }, + "2683": { + "body": "TypeScript reports this error: 'this' implicitly has type 'any' because it does not have a type annotation.", + "category": "Error", + "code": 2683, + "message": "'this' implicitly has type 'any' because it does not have a type annotation.", + "source": "generated" + }, + "2684": { + "body": "TypeScript reports this error: The 'this' context of type '{0}' is not assignable to method's 'this' of type '{1}'.", + "category": "Error", + "code": 2684, + "message": "The 'this' context of type '{0}' is not assignable to method's 'this' of type '{1}'.", + "source": "generated" + }, + "2685": { + "body": "TypeScript reports this error: The 'this' types of each signature are incompatible.", + "category": "Error", + "code": 2685, + "message": "The 'this' types of each signature are incompatible.", + "source": "generated" + }, + "2686": { + "body": "You might not have configured `jsx` in your `tsconfig.json` correctly. [Learn more](https://www.totaltypescript.com/react-refers-to-a-umd-global).", + "category": "Error", + "code": 2686, + "message": "'{0}' refers to a UMD global, but the current file is a module. Consider adding an import instead.", + "source": "curated" + }, + "2687": { + "body": "TypeScript reports this error: All declarations of '{0}' must have identical modifiers.", + "category": "Error", + "code": 2687, + "message": "All declarations of '{0}' must have identical modifiers.", + "source": "generated" + }, + "2688": { + "body": "TypeScript reports this error: Cannot find type definition file for '{0}'.", + "category": "Error", + "code": 2688, + "message": "Cannot find type definition file for '{0}'.", + "source": "generated" + }, + "2689": { + "body": "TypeScript reports this error: Cannot extend an interface '{0}'. Did you mean 'implements'?", + "category": "Error", + "code": 2689, + "message": "Cannot extend an interface '{0}'. Did you mean 'implements'?", + "source": "generated" + }, + "2690": { + "body": "TypeScript reports this error: '{0}' only refers to a type, but is being used as a value here. Did you mean to use '{1} in {0}'?", + "category": "Error", + "code": 2690, + "message": "'{0}' only refers to a type, but is being used as a value here. Did you mean to use '{1} in {0}'?", + "source": "generated" + }, + "2692": { + "body": "TypeScript reports this error: '{0}' is a primitive, but '{1}' is a wrapper object. Prefer using '{0}' when possible.", + "category": "Error", + "code": 2692, + "message": "'{0}' is a primitive, but '{1}' is a wrapper object. Prefer using '{0}' when possible.", + "source": "generated" + }, + "2693": { + "body": "TypeScript reports this error: '{0}' only refers to a type, but is being used as a value here.", + "category": "Error", + "code": 2693, + "message": "'{0}' only refers to a type, but is being used as a value here.", + "source": "generated" + }, + "2694": { + "body": "TypeScript reports this error: Namespace '{0}' has no exported member '{1}'.", + "category": "Error", + "code": 2694, + "message": "Namespace '{0}' has no exported member '{1}'.", + "source": "generated" + }, + "2695": { + "body": "TypeScript reports this error: Left side of comma operator is unused and has no side effects.", + "category": "Error", + "code": 2695, + "message": "Left side of comma operator is unused and has no side effects.", + "source": "generated" + }, + "2696": { + "body": "TypeScript reports this error: The 'Object' type is assignable to very few other types. Did you mean to use the 'any' type instead?", + "category": "Error", + "code": 2696, + "message": "The 'Object' type is assignable to very few other types. Did you mean to use the 'any' type instead?", + "source": "generated" + }, + "2697": { + "body": "TypeScript reports this error: An async function or method must return a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your '--lib' option.", + "category": "Error", + "code": 2697, + "message": "An async function or method must return a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your '--lib' option.", + "source": "generated" + }, + "2698": { + "body": "TypeScript reports this error: Spread types may only be created from object types.", + "category": "Error", + "code": 2698, + "message": "Spread types may only be created from object types.", + "source": "generated" + }, + "2699": { + "body": "TypeScript reports this error: Static property '{0}' conflicts with built-in property 'Function.{0}' of constructor function '{1}'.", + "category": "Error", + "code": 2699, + "message": "Static property '{0}' conflicts with built-in property 'Function.{0}' of constructor function '{1}'.", + "source": "generated" + }, + "2700": { + "body": "TypeScript reports this error: Rest types may only be created from object types.", + "category": "Error", + "code": 2700, + "message": "Rest types may only be created from object types.", + "source": "generated" + }, + "2701": { + "body": "TypeScript reports this error: The target of an object rest assignment must be a variable or a property access.", + "category": "Error", + "code": 2701, + "message": "The target of an object rest assignment must be a variable or a property access.", + "source": "generated" + }, + "2702": { + "body": "TypeScript reports this error: '{0}' only refers to a type, but is being used as a namespace here.", + "category": "Error", + "code": 2702, + "message": "'{0}' only refers to a type, but is being used as a namespace here.", + "source": "generated" + }, + "2703": { + "body": "TypeScript reports this error: The operand of a 'delete' operator must be a property reference.", + "category": "Error", + "code": 2703, + "message": "The operand of a 'delete' operator must be a property reference.", + "source": "generated" + }, + "2704": { + "body": "TypeScript reports this error: The operand of a 'delete' operator cannot be a read-only property.", + "category": "Error", + "code": 2704, + "message": "The operand of a 'delete' operator cannot be a read-only property.", + "source": "generated" + }, + "2705": { + "body": "TypeScript reports this error: An async function or method in ES5 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option.", + "category": "Error", + "code": 2705, + "message": "An async function or method in ES5 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option.", + "source": "generated" + }, + "2706": { + "body": "TypeScript reports this error: Required type parameters may not follow optional type parameters.", + "category": "Error", + "code": 2706, + "message": "Required type parameters may not follow optional type parameters.", + "source": "generated" + }, + "2707": { + "body": "TypeScript reports this error: Generic type '{0}' requires between {1} and {2} type arguments.", + "category": "Error", + "code": 2707, + "message": "Generic type '{0}' requires between {1} and {2} type arguments.", + "source": "generated" + }, + "2708": { + "body": "TypeScript reports this error: Cannot use namespace '{0}' as a value.", + "category": "Error", + "code": 2708, + "message": "Cannot use namespace '{0}' as a value.", + "source": "generated" + }, + "2709": { + "body": "TypeScript reports this error: Cannot use namespace '{0}' as a type.", + "category": "Error", + "code": 2709, + "message": "Cannot use namespace '{0}' as a type.", + "source": "generated" + }, + "2710": { + "body": "TypeScript reports this error: '{0}' are specified twice. The attribute named '{0}' will be overwritten.", + "category": "Error", + "code": 2710, + "message": "'{0}' are specified twice. The attribute named '{0}' will be overwritten.", + "source": "generated" + }, + "2711": { + "body": "TypeScript reports this error: A dynamic import call returns a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your '--lib' option.", + "category": "Error", + "code": 2711, + "message": "A dynamic import call returns a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your '--lib' option.", + "source": "generated" + }, + "2712": { + "body": "TypeScript reports this error: A dynamic import call in ES5 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option.", + "category": "Error", + "code": 2712, + "message": "A dynamic import call in ES5 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option.", + "source": "generated" + }, + "2713": { + "body": "TypeScript reports this error: Cannot access '{0}.{1}' because '{0}' is a type, but not a namespace. Did you mean to retrieve the type of the property '{1}' in '{0}' with '{0}[\"{1}\"]'?", + "category": "Error", + "code": 2713, + "message": "Cannot access '{0}.{1}' because '{0}' is a type, but not a namespace. Did you mean to retrieve the type of the property '{1}' in '{0}' with '{0}[\"{1}\"]'?", + "source": "generated" + }, + "2714": { + "body": "TypeScript reports this error: The expression of an export assignment must be an identifier or qualified name in an ambient context.", + "category": "Error", + "code": 2714, + "message": "The expression of an export assignment must be an identifier or qualified name in an ambient context.", + "source": "generated" + }, + "2715": { + "body": "TypeScript reports this error: Abstract property '{0}' in class '{1}' cannot be accessed in the constructor.", + "category": "Error", + "code": 2715, + "message": "Abstract property '{0}' in class '{1}' cannot be accessed in the constructor.", + "source": "generated" + }, + "2716": { + "body": "TypeScript reports this error: Type parameter '{0}' has a circular default.", + "category": "Error", + "code": 2716, + "message": "Type parameter '{0}' has a circular default.", + "source": "generated" + }, + "2717": { + "body": "TypeScript reports this error: Subsequent property declarations must have the same type. Property '{0}' must be of type '{1}', but here has type '{2}'.", + "category": "Error", + "code": 2717, + "message": "Subsequent property declarations must have the same type. Property '{0}' must be of type '{1}', but here has type '{2}'.", + "source": "generated" + }, + "2718": { + "body": "TypeScript reports this error: Duplicate property '{0}'.", + "category": "Error", + "code": 2718, + "message": "Duplicate property '{0}'.", + "source": "generated" + }, + "2719": { + "body": "TypeScript reports this error: Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.", + "category": "Error", + "code": 2719, + "message": "Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated.", + "source": "generated" + }, + "2720": { + "body": "TypeScript reports this error: Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?", + "category": "Error", + "code": 2720, + "message": "Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?", + "source": "generated" + }, + "2721": { + "body": "TypeScript reports this error: Cannot invoke an object which is possibly 'null'.", + "category": "Error", + "code": 2721, + "message": "Cannot invoke an object which is possibly 'null'.", + "source": "generated" + }, + "2722": { + "body": "This function might be undefined. You'll need to check it's defined before calling it.", + "category": "Error", + "code": 2722, + "message": "Cannot invoke an object which is possibly 'undefined'.", + "source": "curated" + }, + "2723": { + "body": "TypeScript reports this error: Cannot invoke an object which is possibly 'null' or 'undefined'.", + "category": "Error", + "code": 2723, + "message": "Cannot invoke an object which is possibly 'null' or 'undefined'.", + "source": "generated" + }, + "2724": { + "body": "TypeScript reports this error: '{0}' has no exported member named '{1}'. Did you mean '{2}'?", + "category": "Error", + "code": 2724, + "message": "'{0}' has no exported member named '{1}'. Did you mean '{2}'?", + "source": "generated" + }, + "2725": { + "body": "TypeScript reports this error: Class name cannot be 'Object' when targeting ES5 and above with module {0}.", + "category": "Error", + "code": 2725, + "message": "Class name cannot be 'Object' when targeting ES5 and above with module {0}.", + "source": "generated" + }, + "2726": { + "body": "TypeScript reports this error: Cannot find lib definition for '{0}'.", + "category": "Error", + "code": 2726, + "message": "Cannot find lib definition for '{0}'.", + "source": "generated" + }, + "2727": { + "body": "TypeScript reports this error: Cannot find lib definition for '{0}'. Did you mean '{1}'?", + "category": "Error", + "code": 2727, + "message": "Cannot find lib definition for '{0}'. Did you mean '{1}'?", + "source": "generated" + }, + "2728": { + "body": "TypeScript reports: '{0}' is declared here.", + "category": "Message", + "code": 2728, + "message": "'{0}' is declared here.", + "source": "generated" + }, + "2729": { + "body": "TypeScript reports this error: Property '{0}' is used before its initialization.", + "category": "Error", + "code": 2729, + "message": "Property '{0}' is used before its initialization.", + "source": "generated" + }, + "2730": { + "body": "TypeScript reports this error: An arrow function cannot have a 'this' parameter.", + "category": "Error", + "code": 2730, + "message": "An arrow function cannot have a 'this' parameter.", + "source": "generated" + }, + "2731": { + "body": "TypeScript reports this error: Implicit conversion of a 'symbol' to a 'string' will fail at runtime. Consider wrapping this expression in 'String(...)'.", + "category": "Error", + "code": 2731, + "message": "Implicit conversion of a 'symbol' to a 'string' will fail at runtime. Consider wrapping this expression in 'String(...)'.", + "source": "generated" + }, + "2732": { + "body": "TypeScript reports this error: Cannot find module '{0}'. Consider using '--resolveJsonModule' to import module with '.json' extension.", + "category": "Error", + "code": 2732, + "message": "Cannot find module '{0}'. Consider using '--resolveJsonModule' to import module with '.json' extension.", + "source": "generated" + }, + "2733": { + "body": "TypeScript reports this error: Property '{0}' was also declared here.", + "category": "Error", + "code": 2733, + "message": "Property '{0}' was also declared here.", + "source": "generated" + }, + "2734": { + "body": "TypeScript reports this error: Are you missing a semicolon?", + "category": "Error", + "code": 2734, + "message": "Are you missing a semicolon?", + "source": "generated" + }, + "2735": { + "body": "TypeScript reports this error: Did you mean for '{0}' to be constrained to type 'new (...args: any[]) => {1}'?", + "category": "Error", + "code": 2735, + "message": "Did you mean for '{0}' to be constrained to type 'new (...args: any[]) => {1}'?", + "source": "generated" + }, + "2736": { + "body": "TypeScript reports this error: Operator '{0}' cannot be applied to type '{1}'.", + "category": "Error", + "code": 2736, + "message": "Operator '{0}' cannot be applied to type '{1}'.", + "source": "generated" + }, + "2737": { + "body": "TypeScript reports this error: BigInt literals are not available when targeting lower than ES2020.", + "category": "Error", + "code": 2737, + "message": "BigInt literals are not available when targeting lower than ES2020.", + "source": "generated" + }, + "2738": { + "body": "TypeScript reports: An outer value of 'this' is shadowed by this container.", + "category": "Message", + "code": 2738, + "message": "An outer value of 'this' is shadowed by this container.", + "source": "generated" + }, + "2739": { + "body": "'{0}' is missing some required properties from type '{1}': {2}.", + "category": "Error", + "code": 2739, + "message": "Type '{0}' is missing the following properties from type '{1}': {2}", + "source": "curated" + }, + "2740": { + "body": "TypeScript reports this error: Type '{0}' is missing the following properties from type '{1}': {2}, and {3} more.", + "category": "Error", + "code": 2740, + "message": "Type '{0}' is missing the following properties from type '{1}': {2}, and {3} more.", + "source": "generated" + }, + "2741": { + "body": "You haven't passed all the required properties to '{2}' - '{1}' is missing the '{0}' property.", + "category": "Error", + "code": 2741, + "message": "Property '{0}' is missing in type '{1}' but required in type '{2}'.", + "source": "curated" + }, + "2742": { + "body": "TypeScript reports this error: The inferred type of '{0}' cannot be named without a reference to '{1}'. This is likely not portable. A type annotation is necessary.", + "category": "Error", + "code": 2742, + "message": "The inferred type of '{0}' cannot be named without a reference to '{1}'. This is likely not portable. A type annotation is necessary.", + "source": "generated" + }, + "2743": { + "body": "TypeScript reports this error: No overload expects {0} type arguments, but overloads do exist that expect either {1} or {2} type arguments.", + "category": "Error", + "code": 2743, + "message": "No overload expects {0} type arguments, but overloads do exist that expect either {1} or {2} type arguments.", + "source": "generated" + }, + "2744": { + "body": "TypeScript reports this error: Type parameter defaults can only reference previously declared type parameters.", + "category": "Error", + "code": 2744, + "message": "Type parameter defaults can only reference previously declared type parameters.", + "source": "generated" + }, + "2745": { + "body": "TypeScript reports this error: This JSX tag's '{0}' prop expects type '{1}' which requires multiple children, but only a single child was provided.", + "category": "Error", + "code": 2745, + "message": "This JSX tag's '{0}' prop expects type '{1}' which requires multiple children, but only a single child was provided.", + "source": "generated" + }, + "2746": { + "body": "TypeScript reports this error: This JSX tag's '{0}' prop expects a single child of type '{1}', but multiple children were provided.", + "category": "Error", + "code": 2746, + "message": "This JSX tag's '{0}' prop expects a single child of type '{1}', but multiple children were provided.", + "source": "generated" + }, + "2747": { + "body": "TypeScript reports this error: '{0}' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of '{1}' is '{2}'.", + "category": "Error", + "code": 2747, + "message": "'{0}' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of '{1}' is '{2}'.", + "source": "generated" + }, + "2748": { + "body": "TypeScript reports this error: Cannot access ambient const enums when '{0}' is enabled.", + "category": "Error", + "code": 2748, + "message": "Cannot access ambient const enums when '{0}' is enabled.", + "source": "generated" + }, + "2749": { + "body": "You're trying to use a JavaScript variable where you should be passing a type.", + "category": "Error", + "code": 2749, + "message": "'{0}' refers to a value, but is being used as a type here. Did you mean 'typeof {0}'?", + "source": "curated" + }, + "2750": { + "body": "TypeScript reports this error: The implementation signature is declared here.", + "category": "Error", + "code": 2750, + "message": "The implementation signature is declared here.", + "source": "generated" + }, + "2751": { + "body": "TypeScript reports this error: Circularity originates in type at this location.", + "category": "Error", + "code": 2751, + "message": "Circularity originates in type at this location.", + "source": "generated" + }, + "2752": { + "body": "TypeScript reports this error: The first export default is here.", + "category": "Error", + "code": 2752, + "message": "The first export default is here.", + "source": "generated" + }, + "2753": { + "body": "TypeScript reports this error: Another export default is here.", + "category": "Error", + "code": 2753, + "message": "Another export default is here.", + "source": "generated" + }, + "2754": { + "body": "TypeScript reports this error: 'super' may not use type arguments.", + "category": "Error", + "code": 2754, + "message": "'super' may not use type arguments.", + "source": "generated" + }, + "2755": { + "body": "TypeScript reports this error: No constituent of type '{0}' is callable.", + "category": "Error", + "code": 2755, + "message": "No constituent of type '{0}' is callable.", + "source": "generated" + }, + "2756": { + "body": "TypeScript reports this error: Not all constituents of type '{0}' are callable.", + "category": "Error", + "code": 2756, + "message": "Not all constituents of type '{0}' are callable.", + "source": "generated" + }, + "2757": { + "body": "TypeScript reports this error: Type '{0}' has no call signatures.", + "category": "Error", + "code": 2757, + "message": "Type '{0}' has no call signatures.", + "source": "generated" + }, + "2758": { + "body": "TypeScript reports this error: Each member of the union type '{0}' has signatures, but none of those signatures are compatible with each other.", + "category": "Error", + "code": 2758, + "message": "Each member of the union type '{0}' has signatures, but none of those signatures are compatible with each other.", + "source": "generated" + }, + "2759": { + "body": "TypeScript reports this error: No constituent of type '{0}' is constructable.", + "category": "Error", + "code": 2759, + "message": "No constituent of type '{0}' is constructable.", + "source": "generated" + }, + "2760": { + "body": "TypeScript reports this error: Not all constituents of type '{0}' are constructable.", + "category": "Error", + "code": 2760, + "message": "Not all constituents of type '{0}' are constructable.", + "source": "generated" + }, + "2761": { + "body": "Type '{0}' is not a class.", + "category": "Error", + "code": 2761, + "message": "Type '{0}' has no construct signatures.", + "source": "curated" + }, + "2762": { + "body": "TypeScript reports this error: Each member of the union type '{0}' has construct signatures, but none of those signatures are compatible with each other.", + "category": "Error", + "code": 2762, + "message": "Each member of the union type '{0}' has construct signatures, but none of those signatures are compatible with each other.", + "source": "generated" + }, + "2763": { + "body": "TypeScript reports this error: Cannot iterate value because the 'next' method of its iterator expects type '{1}', but for-of will always send '{0}'.", + "category": "Error", + "code": 2763, + "message": "Cannot iterate value because the 'next' method of its iterator expects type '{1}', but for-of will always send '{0}'.", + "source": "generated" + }, + "2764": { + "body": "TypeScript reports this error: Cannot iterate value because the 'next' method of its iterator expects type '{1}', but array spread will always send '{0}'.", + "category": "Error", + "code": 2764, + "message": "Cannot iterate value because the 'next' method of its iterator expects type '{1}', but array spread will always send '{0}'.", + "source": "generated" + }, + "2765": { + "body": "TypeScript reports this error: Cannot iterate value because the 'next' method of its iterator expects type '{1}', but array destructuring will always send '{0}'.", + "category": "Error", + "code": 2765, + "message": "Cannot iterate value because the 'next' method of its iterator expects type '{1}', but array destructuring will always send '{0}'.", + "source": "generated" + }, + "2766": { + "body": "TypeScript reports this error: Cannot delegate iteration to value because the 'next' method of its iterator expects type '{1}', but the containing generator will always send '{0}'.", + "category": "Error", + "code": 2766, + "message": "Cannot delegate iteration to value because the 'next' method of its iterator expects type '{1}', but the containing generator will always send '{0}'.", + "source": "generated" + }, + "2767": { + "body": "TypeScript reports this error: The '{0}' property of an iterator must be a method.", + "category": "Error", + "code": 2767, + "message": "The '{0}' property of an iterator must be a method.", + "source": "generated" + }, + "2768": { + "body": "TypeScript reports this error: The '{0}' property of an async iterator must be a method.", + "category": "Error", + "code": 2768, + "message": "The '{0}' property of an async iterator must be a method.", + "source": "generated" + }, + "2769": { + "body": "TypeScript reports this error: No overload matches this call.", + "category": "Error", + "code": 2769, + "message": "No overload matches this call.", + "source": "generated" + }, + "2770": { + "body": "TypeScript reports this error: The last overload gave the following error.", + "category": "Error", + "code": 2770, + "message": "The last overload gave the following error.", + "source": "generated" + }, + "2771": { + "body": "TypeScript reports this error: The last overload is declared here.", + "category": "Error", + "code": 2771, + "message": "The last overload is declared here.", + "source": "generated" + }, + "2772": { + "body": "TypeScript reports this error: Overload {0} of {1}, '{2}', gave the following error.", + "category": "Error", + "code": 2772, + "message": "Overload {0} of {1}, '{2}', gave the following error.", + "source": "generated" + }, + "2773": { + "body": "TypeScript reports this error: Did you forget to use 'await'?", + "category": "Error", + "code": 2773, + "message": "Did you forget to use 'await'?", + "source": "generated" + }, + "2774": { + "body": "TypeScript reports this error: This condition will always return true since this function is always defined. Did you mean to call it instead?", + "category": "Error", + "code": 2774, + "message": "This condition will always return true since this function is always defined. Did you mean to call it instead?", + "source": "generated" + }, + "2775": { + "body": "You might be using an `asserts` keyword on an arrow function. If you are, change the function to use the `function` keyword.", + "category": "Error", + "code": 2775, + "message": "Assertions require every name in the call target to be declared with an explicit type annotation.", + "source": "curated" + }, + "2776": { + "body": "TypeScript reports this error: Assertions require the call target to be an identifier or qualified name.", + "category": "Error", + "code": 2776, + "message": "Assertions require the call target to be an identifier or qualified name.", + "source": "generated" + }, + "2777": { + "body": "TypeScript reports this error: The operand of an increment or decrement operator may not be an optional property access.", + "category": "Error", + "code": 2777, + "message": "The operand of an increment or decrement operator may not be an optional property access.", + "source": "generated" + }, + "2778": { + "body": "TypeScript reports this error: The target of an object rest assignment may not be an optional property access.", + "category": "Error", + "code": 2778, + "message": "The target of an object rest assignment may not be an optional property access.", + "source": "generated" + }, + "2779": { + "body": "TypeScript reports this error: The left-hand side of an assignment expression may not be an optional property access.", + "category": "Error", + "code": 2779, + "message": "The left-hand side of an assignment expression may not be an optional property access.", + "source": "generated" + }, + "2780": { + "body": "TypeScript reports this error: The left-hand side of a 'for...in' statement may not be an optional property access.", + "category": "Error", + "code": 2780, + "message": "The left-hand side of a 'for...in' statement may not be an optional property access.", + "source": "generated" + }, + "2781": { + "body": "TypeScript reports this error: The left-hand side of a 'for...of' statement may not be an optional property access.", + "category": "Error", + "code": 2781, + "message": "The left-hand side of a 'for...of' statement may not be an optional property access.", + "source": "generated" + }, + "2782": { + "body": "TypeScript reports: '{0}' needs an explicit type annotation.", + "category": "Message", + "code": 2782, + "message": "'{0}' needs an explicit type annotation.", + "source": "generated" + }, + "2783": { + "body": "'{0}' will be overwritten by the spread.", + "category": "Error", + "code": 2783, + "message": "'{0}' is specified more than once, so this usage will be overwritten.", + "source": "curated" + }, + "2784": { + "body": "TypeScript reports this error: 'get' and 'set' accessors cannot declare 'this' parameters.", + "category": "Error", + "code": 2784, + "message": "'get' and 'set' accessors cannot declare 'this' parameters.", + "source": "generated" + }, + "2785": { + "body": "TypeScript reports this error: This spread always overwrites this property.", + "category": "Error", + "code": 2785, + "message": "This spread always overwrites this property.", + "source": "generated" + }, + "2786": { + "body": "TypeScript reports this error: '{0}' cannot be used as a JSX component.", + "category": "Error", + "code": 2786, + "message": "'{0}' cannot be used as a JSX component.", + "source": "generated" + }, + "2787": { + "body": "TypeScript reports this error: Its return type '{0}' is not a valid JSX element.", + "category": "Error", + "code": 2787, + "message": "Its return type '{0}' is not a valid JSX element.", + "source": "generated" + }, + "2788": { + "body": "TypeScript reports this error: Its instance type '{0}' is not a valid JSX element.", + "category": "Error", + "code": 2788, + "message": "Its instance type '{0}' is not a valid JSX element.", + "source": "generated" + }, + "2789": { + "body": "TypeScript reports this error: Its element type '{0}' is not a valid JSX element.", + "category": "Error", + "code": 2789, + "message": "Its element type '{0}' is not a valid JSX element.", + "source": "generated" + }, + "2790": { + "body": "TypeScript reports this error: The operand of a 'delete' operator must be optional.", + "category": "Error", + "code": 2790, + "message": "The operand of a 'delete' operator must be optional.", + "source": "generated" + }, + "2791": { + "body": "TypeScript reports this error: Exponentiation cannot be performed on 'bigint' values unless the 'target' option is set to 'es2016' or later.", + "category": "Error", + "code": 2791, + "message": "Exponentiation cannot be performed on 'bigint' values unless the 'target' option is set to 'es2016' or later.", + "source": "generated" + }, + "2792": { + "body": "TypeScript reports this error: Cannot find module '{0}'. Did you mean to set the 'moduleResolution' option to 'nodenext', or to add aliases to the 'paths' option?", + "category": "Error", + "code": 2792, + "message": "Cannot find module '{0}'. Did you mean to set the 'moduleResolution' option to 'nodenext', or to add aliases to the 'paths' option?", + "source": "generated" + }, + "2793": { + "body": "TypeScript reports this error: The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible.", + "category": "Error", + "code": 2793, + "message": "The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible.", + "source": "generated" + }, + "2794": { + "body": "TypeScript reports this error: Expected {0} arguments, but got {1}. Did you forget to include 'void' in your type argument to 'Promise'?", + "category": "Error", + "code": 2794, + "message": "Expected {0} arguments, but got {1}. Did you forget to include 'void' in your type argument to 'Promise'?", + "source": "generated" + }, + "2795": { + "body": "TypeScript reports this error: The 'intrinsic' keyword can only be used to declare compiler provided intrinsic types.", + "category": "Error", + "code": 2795, + "message": "The 'intrinsic' keyword can only be used to declare compiler provided intrinsic types.", + "source": "generated" + }, + "2796": { + "body": "TypeScript reports this error: It is likely that you are missing a comma to separate these two template expressions. They form a tagged template expression which cannot be invoked.", + "category": "Error", + "code": 2796, + "message": "It is likely that you are missing a comma to separate these two template expressions. They form a tagged template expression which cannot be invoked.", + "source": "generated" + }, + "2797": { + "body": "TypeScript reports this error: A mixin class that extends from a type variable containing an abstract construct signature must also be declared 'abstract'.", + "category": "Error", + "code": 2797, + "message": "A mixin class that extends from a type variable containing an abstract construct signature must also be declared 'abstract'.", + "source": "generated" + }, + "2798": { + "body": "TypeScript reports this error: The declaration was marked as deprecated here.", + "category": "Error", + "code": 2798, + "message": "The declaration was marked as deprecated here.", + "source": "generated" + }, + "2799": { + "body": "TypeScript reports this error: Type produces a tuple type that is too large to represent.", + "category": "Error", + "code": 2799, + "message": "Type produces a tuple type that is too large to represent.", + "source": "generated" + }, + "2800": { + "body": "TypeScript reports this error: Expression produces a tuple type that is too large to represent.", + "category": "Error", + "code": 2800, + "message": "Expression produces a tuple type that is too large to represent.", + "source": "generated" + }, + "2801": { + "body": "TypeScript reports this error: This condition will always return true since this '{0}' is always defined.", + "category": "Error", + "code": 2801, + "message": "This condition will always return true since this '{0}' is always defined.", + "source": "generated" + }, + "2802": { + "body": "TypeScript reports this error: Type '{0}' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher.", + "category": "Error", + "code": 2802, + "message": "Type '{0}' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher.", + "source": "generated" + }, + "2803": { + "body": "TypeScript reports this error: Cannot assign to private method '{0}'. Private methods are not writable.", + "category": "Error", + "code": 2803, + "message": "Cannot assign to private method '{0}'. Private methods are not writable.", + "source": "generated" + }, + "2804": { + "body": "TypeScript reports this error: Duplicate identifier '{0}'. Static and instance elements cannot share the same private name.", + "category": "Error", + "code": 2804, + "message": "Duplicate identifier '{0}'. Static and instance elements cannot share the same private name.", + "source": "generated" + }, + "2806": { + "body": "TypeScript reports this error: Private accessor was defined without a getter.", + "category": "Error", + "code": 2806, + "message": "Private accessor was defined without a getter.", + "source": "generated" + }, + "2807": { + "body": "TypeScript reports this error: This syntax requires an imported helper named '{1}' with {2} parameters, which is not compatible with the one in '{0}'. Consider upgrading your version of '{0}'.", + "category": "Error", + "code": 2807, + "message": "This syntax requires an imported helper named '{1}' with {2} parameters, which is not compatible with the one in '{0}'. Consider upgrading your version of '{0}'.", + "source": "generated" + }, + "2808": { + "body": "TypeScript reports this error: A get accessor must be at least as accessible as the setter", + "category": "Error", + "code": 2808, + "message": "A get accessor must be at least as accessible as the setter", + "source": "generated" + }, + "2809": { + "body": "TypeScript reports this error: Declaration or statement expected. This '=' follows a block of statements, so if you intended to write a destructuring assignment, you might need to wrap the whole assignment in parentheses.", + "category": "Error", + "code": 2809, + "message": "Declaration or statement expected. This '=' follows a block of statements, so if you intended to write a destructuring assignment, you might need to wrap the whole assignment in parentheses.", + "source": "generated" + }, + "2810": { + "body": "TypeScript reports this error: Expected 1 argument, but got 0. 'new Promise()' needs a JSDoc hint to produce a 'resolve' that can be called without arguments.", + "category": "Error", + "code": 2810, + "message": "Expected 1 argument, but got 0. 'new Promise()' needs a JSDoc hint to produce a 'resolve' that can be called without arguments.", + "source": "generated" + }, + "2811": { + "body": "TypeScript reports this error: Initializer for property '{0}'", + "category": "Error", + "code": 2811, + "message": "Initializer for property '{0}'", + "source": "generated" + }, + "2812": { + "body": "TypeScript reports this error: Property '{0}' does not exist on type '{1}'. Try changing the 'lib' compiler option to include 'dom'.", + "category": "Error", + "code": 2812, + "message": "Property '{0}' does not exist on type '{1}'. Try changing the 'lib' compiler option to include 'dom'.", + "source": "generated" + }, + "2813": { + "body": "TypeScript reports this error: Class declaration cannot implement overload list for '{0}'.", + "category": "Error", + "code": 2813, + "message": "Class declaration cannot implement overload list for '{0}'.", + "source": "generated" + }, + "2814": { + "body": "TypeScript reports this error: Function with bodies can only merge with classes that are ambient.", + "category": "Error", + "code": 2814, + "message": "Function with bodies can only merge with classes that are ambient.", + "source": "generated" + }, + "2815": { + "body": "TypeScript reports this error: 'arguments' cannot be referenced in property initializers or class static initialization blocks.", + "category": "Error", + "code": 2815, + "message": "'arguments' cannot be referenced in property initializers or class static initialization blocks.", + "source": "generated" + }, + "2816": { + "body": "TypeScript reports this error: Cannot use 'this' in a static property initializer of a decorated class.", + "category": "Error", + "code": 2816, + "message": "Cannot use 'this' in a static property initializer of a decorated class.", + "source": "generated" + }, + "2817": { + "body": "TypeScript reports this error: Property '{0}' has no initializer and is not definitely assigned in a class static block.", + "category": "Error", + "code": 2817, + "message": "Property '{0}' has no initializer and is not definitely assigned in a class static block.", + "source": "generated" + }, + "2818": { + "body": "TypeScript reports this error: Duplicate identifier '{0}'. Compiler reserves name '{1}' when emitting 'super' references in static initializers.", + "category": "Error", + "code": 2818, + "message": "Duplicate identifier '{0}'. Compiler reserves name '{1}' when emitting 'super' references in static initializers.", + "source": "generated" + }, + "2819": { + "body": "TypeScript reports this error: Namespace name cannot be '{0}'.", + "category": "Error", + "code": 2819, + "message": "Namespace name cannot be '{0}'.", + "source": "generated" + }, + "2820": { + "body": "TypeScript reports this error: Type '{0}' is not assignable to type '{1}'. Did you mean '{2}'?", + "category": "Error", + "code": 2820, + "message": "Type '{0}' is not assignable to type '{1}'. Did you mean '{2}'?", + "source": "generated" + }, + "2821": { + "body": "TypeScript reports this error: Import assertions are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'.", + "category": "Error", + "code": 2821, + "message": "Import assertions are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'.", + "source": "generated" + }, + "2822": { + "body": "TypeScript reports this error: Import assertions cannot be used with type-only imports or exports.", + "category": "Error", + "code": 2822, + "message": "Import assertions cannot be used with type-only imports or exports.", + "source": "generated" + }, + "2823": { + "body": "TypeScript reports this error: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'.", + "category": "Error", + "code": 2823, + "message": "Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'.", + "source": "generated" + }, + "2833": { + "body": "TypeScript reports this error: Cannot find namespace '{0}'. Did you mean '{1}'?", + "category": "Error", + "code": 2833, + "message": "Cannot find namespace '{0}'. Did you mean '{1}'?", + "source": "generated" + }, + "2834": { + "body": "TypeScript reports this error: Relative import paths need explicit file extensions in ECMAScript imports when '--moduleResolution' is 'node16' or 'nodenext'. Consider adding an extension to the import path.", + "category": "Error", + "code": 2834, + "message": "Relative import paths need explicit file extensions in ECMAScript imports when '--moduleResolution' is 'node16' or 'nodenext'. Consider adding an extension to the import path.", + "source": "generated" + }, + "2835": { + "body": "TypeScript reports this error: Relative import paths need explicit file extensions in ECMAScript imports when '--moduleResolution' is 'node16' or 'nodenext'. Did you mean '{0}'?", + "category": "Error", + "code": 2835, + "message": "Relative import paths need explicit file extensions in ECMAScript imports when '--moduleResolution' is 'node16' or 'nodenext'. Did you mean '{0}'?", + "source": "generated" + }, + "2836": { + "body": "TypeScript reports this error: Import assertions are not allowed on statements that compile to CommonJS 'require' calls.", + "category": "Error", + "code": 2836, + "message": "Import assertions are not allowed on statements that compile to CommonJS 'require' calls.", + "source": "generated" + }, + "2837": { + "body": "TypeScript reports this error: Import assertion values must be string literal expressions.", + "category": "Error", + "code": 2837, + "message": "Import assertion values must be string literal expressions.", + "source": "generated" + }, + "2838": { + "body": "TypeScript reports this error: All declarations of '{0}' must have identical constraints.", + "category": "Error", + "code": 2838, + "message": "All declarations of '{0}' must have identical constraints.", + "source": "generated" + }, + "2839": { + "body": "TypeScript reports this error: This condition will always return '{0}' since JavaScript compares objects by reference, not value.", + "category": "Error", + "code": 2839, + "message": "This condition will always return '{0}' since JavaScript compares objects by reference, not value.", + "source": "generated" + }, + "2840": { + "body": "TypeScript reports this error: An interface cannot extend a primitive type like '{0}'. It can only extend other named object types.", + "category": "Error", + "code": 2840, + "message": "An interface cannot extend a primitive type like '{0}'. It can only extend other named object types.", + "source": "generated" + }, + "2842": { + "body": "TypeScript reports this error: '{0}' is an unused renaming of '{1}'. Did you intend to use it as a type annotation?", + "category": "Error", + "code": 2842, + "message": "'{0}' is an unused renaming of '{1}'. Did you intend to use it as a type annotation?", + "source": "generated" + }, + "2843": { + "body": "TypeScript reports this error: We can only write a type for '{0}' by adding a type for the entire parameter here.", + "category": "Error", + "code": 2843, + "message": "We can only write a type for '{0}' by adding a type for the entire parameter here.", + "source": "generated" + }, + "2844": { + "body": "TypeScript reports this error: Type of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor.", + "category": "Error", + "code": 2844, + "message": "Type of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor.", + "source": "generated" + }, + "2845": { + "body": "TypeScript reports this error: This condition will always return '{0}'.", + "category": "Error", + "code": 2845, + "message": "This condition will always return '{0}'.", + "source": "generated" + }, + "2846": { + "body": "TypeScript reports this error: A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file '{0}' instead?", + "category": "Error", + "code": 2846, + "message": "A declaration file cannot be imported without 'import type'. Did you mean to import an implementation file '{0}' instead?", + "source": "generated" + }, + "2848": { + "body": "TypeScript reports this error: The right-hand side of an 'instanceof' expression must not be an instantiation expression.", + "category": "Error", + "code": 2848, + "message": "The right-hand side of an 'instanceof' expression must not be an instantiation expression.", + "source": "generated" + }, + "2849": { + "body": "TypeScript reports this error: Target signature provides too few arguments. Expected {0} or more, but got {1}.", + "category": "Error", + "code": 2849, + "message": "Target signature provides too few arguments. Expected {0} or more, but got {1}.", + "source": "generated" + }, + "2850": { + "body": "TypeScript reports this error: The initializer of a 'using' declaration must be either an object with a '[Symbol.dispose]()' method, or be 'null' or 'undefined'.", + "category": "Error", + "code": 2850, + "message": "The initializer of a 'using' declaration must be either an object with a '[Symbol.dispose]()' method, or be 'null' or 'undefined'.", + "source": "generated" + }, + "2851": { + "body": "TypeScript reports this error: The initializer of an 'await using' declaration must be either an object with a '[Symbol.asyncDispose]()' or '[Symbol.dispose]()' method, or be 'null' or 'undefined'.", + "category": "Error", + "code": 2851, + "message": "The initializer of an 'await using' declaration must be either an object with a '[Symbol.asyncDispose]()' or '[Symbol.dispose]()' method, or be 'null' or 'undefined'.", + "source": "generated" + }, + "2852": { + "body": "TypeScript reports this error: 'await using' statements are only allowed within async functions and at the top levels of modules.", + "category": "Error", + "code": 2852, + "message": "'await using' statements are only allowed within async functions and at the top levels of modules.", + "source": "generated" + }, + "2853": { + "body": "TypeScript reports this error: 'await using' statements are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.", + "category": "Error", + "code": 2853, + "message": "'await using' statements are only allowed at the top level of a file when that file is a module, but this file has no imports or exports. Consider adding an empty 'export {}' to make this file a module.", + "source": "generated" + }, + "2854": { + "body": "TypeScript reports this error: Top-level 'await using' statements are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher.", + "category": "Error", + "code": 2854, + "message": "Top-level 'await using' statements are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', 'node18', 'node20', 'nodenext', or 'preserve', and the 'target' option is set to 'es2017' or higher.", + "source": "generated" + }, + "2855": { + "body": "TypeScript reports this error: Class field '{0}' defined by the parent class is not accessible in the child class via super.", + "category": "Error", + "code": 2855, + "message": "Class field '{0}' defined by the parent class is not accessible in the child class via super.", + "source": "generated" + }, + "2856": { + "body": "TypeScript reports this error: Import attributes are not allowed on statements that compile to CommonJS 'require' calls.", + "category": "Error", + "code": 2856, + "message": "Import attributes are not allowed on statements that compile to CommonJS 'require' calls.", + "source": "generated" + }, + "2857": { + "body": "TypeScript reports this error: Import attributes cannot be used with type-only imports or exports.", + "category": "Error", + "code": 2857, + "message": "Import attributes cannot be used with type-only imports or exports.", + "source": "generated" + }, + "2858": { + "body": "TypeScript reports this error: Import attribute values must be string literal expressions.", + "category": "Error", + "code": 2858, + "message": "Import attribute values must be string literal expressions.", + "source": "generated" + }, + "2859": { + "body": "TypeScript reports this error: Excessive complexity comparing types '{0}' and '{1}'.", + "category": "Error", + "code": 2859, + "message": "Excessive complexity comparing types '{0}' and '{1}'.", + "source": "generated" + }, + "2860": { + "body": "TypeScript reports this error: The left-hand side of an 'instanceof' expression must be assignable to the first argument of the right-hand side's '[Symbol.hasInstance]' method.", + "category": "Error", + "code": 2860, + "message": "The left-hand side of an 'instanceof' expression must be assignable to the first argument of the right-hand side's '[Symbol.hasInstance]' method.", + "source": "generated" + }, + "2861": { + "body": "TypeScript reports this error: An object's '[Symbol.hasInstance]' method must return a boolean value for it to be used on the right-hand side of an 'instanceof' expression.", + "category": "Error", + "code": 2861, + "message": "An object's '[Symbol.hasInstance]' method must return a boolean value for it to be used on the right-hand side of an 'instanceof' expression.", + "source": "generated" + }, + "2862": { + "body": "TypeScript reports this error: Type '{0}' is generic and can only be indexed for reading.", + "category": "Error", + "code": 2862, + "message": "Type '{0}' is generic and can only be indexed for reading.", + "source": "generated" + }, + "2863": { + "body": "TypeScript reports this error: A class cannot extend a primitive type like '{0}'. Classes can only extend constructable values.", + "category": "Error", + "code": 2863, + "message": "A class cannot extend a primitive type like '{0}'. Classes can only extend constructable values.", + "source": "generated" + }, + "2864": { + "body": "TypeScript reports this error: A class cannot implement a primitive type like '{0}'. It can only implement other named object types.", + "category": "Error", + "code": 2864, + "message": "A class cannot implement a primitive type like '{0}'. It can only implement other named object types.", + "source": "generated" + }, + "2865": { + "body": "TypeScript reports this error: Import '{0}' conflicts with local value, so must be declared with a type-only import when 'isolatedModules' is enabled.", + "category": "Error", + "code": 2865, + "message": "Import '{0}' conflicts with local value, so must be declared with a type-only import when 'isolatedModules' is enabled.", + "source": "generated" + }, + "2866": { + "body": "TypeScript reports this error: Import '{0}' conflicts with global value used in this file, so must be declared with a type-only import when 'isolatedModules' is enabled.", + "category": "Error", + "code": 2866, + "message": "Import '{0}' conflicts with global value used in this file, so must be declared with a type-only import when 'isolatedModules' is enabled.", + "source": "generated" + }, + "2867": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Do you need to install type definitions for Bun? Try `npm i --save-dev @types/bun`.", + "category": "Error", + "code": 2867, + "message": "Cannot find name '{0}'. Do you need to install type definitions for Bun? Try `npm i --save-dev @types/bun`.", + "source": "generated" + }, + "2868": { + "body": "TypeScript reports this error: Cannot find name '{0}'. Do you need to install type definitions for Bun? Try `npm i --save-dev @types/bun` and then add 'bun' to the types field in your tsconfig.", + "category": "Error", + "code": 2868, + "message": "Cannot find name '{0}'. Do you need to install type definitions for Bun? Try `npm i --save-dev @types/bun` and then add 'bun' to the types field in your tsconfig.", + "source": "generated" + }, + "2869": { + "body": "TypeScript reports this error: Right operand of ?? is unreachable because the left operand is never nullish.", + "category": "Error", + "code": 2869, + "message": "Right operand of ?? is unreachable because the left operand is never nullish.", + "source": "generated" + }, + "2870": { + "body": "TypeScript reports this error: This binary expression is never nullish. Are you missing parentheses?", + "category": "Error", + "code": 2870, + "message": "This binary expression is never nullish. Are you missing parentheses?", + "source": "generated" + }, + "2871": { + "body": "TypeScript reports this error: This expression is always nullish.", + "category": "Error", + "code": 2871, + "message": "This expression is always nullish.", + "source": "generated" + }, + "2872": { + "body": "TypeScript reports this error: This kind of expression is always truthy.", + "category": "Error", + "code": 2872, + "message": "This kind of expression is always truthy.", + "source": "generated" + }, + "2873": { + "body": "TypeScript reports this error: This kind of expression is always falsy.", + "category": "Error", + "code": 2873, + "message": "This kind of expression is always falsy.", + "source": "generated" + }, + "2874": { + "body": "TypeScript reports this error: This JSX tag requires '{0}' to be in scope, but it could not be found.", + "category": "Error", + "code": 2874, + "message": "This JSX tag requires '{0}' to be in scope, but it could not be found.", + "source": "generated" + }, + "2875": { + "body": "TypeScript reports this error: This JSX tag requires the module path '{0}' to exist, but none could be found. Make sure you have types for the appropriate package installed.", + "category": "Error", + "code": 2875, + "message": "This JSX tag requires the module path '{0}' to exist, but none could be found. Make sure you have types for the appropriate package installed.", + "source": "generated" + }, + "2876": { + "body": "TypeScript reports this error: This relative import path is unsafe to rewrite because it looks like a file name, but actually resolves to \"{0}\".", + "category": "Error", + "code": 2876, + "message": "This relative import path is unsafe to rewrite because it looks like a file name, but actually resolves to \"{0}\".", + "source": "generated" + }, + "2877": { + "body": "TypeScript reports this error: This import uses a '{0}' extension to resolve to an input TypeScript file, but will not be rewritten during emit because it is not a relative path.", + "category": "Error", + "code": 2877, + "message": "This import uses a '{0}' extension to resolve to an input TypeScript file, but will not be rewritten during emit because it is not a relative path.", + "source": "generated" + }, + "2878": { + "body": "TypeScript reports this error: This import path is unsafe to rewrite because it resolves to another project, and the relative path between the projects' output files is not the same as the relative path between its input files.", + "category": "Error", + "code": 2878, + "message": "This import path is unsafe to rewrite because it resolves to another project, and the relative path between the projects' output files is not the same as the relative path between its input files.", + "source": "generated" + }, + "2879": { + "body": "TypeScript reports this error: Using JSX fragments requires fragment factory '{0}' to be in scope, but it could not be found.", + "category": "Error", + "code": 2879, + "message": "Using JSX fragments requires fragment factory '{0}' to be in scope, but it could not be found.", + "source": "generated" + }, + "2880": { + "body": "TypeScript reports this error: Import assertions have been replaced by import attributes. Use 'with' instead of 'assert'.", + "category": "Error", + "code": 2880, + "message": "Import assertions have been replaced by import attributes. Use 'with' instead of 'assert'.", + "source": "generated" + }, + "2881": { + "body": "TypeScript reports this error: This expression is never nullish.", + "category": "Error", + "code": 2881, + "message": "This expression is never nullish.", + "source": "generated" + }, + "2882": { + "body": "TypeScript reports this error: Cannot find module or type declarations for side-effect import of '{0}'.", + "category": "Error", + "code": 2882, + "message": "Cannot find module or type declarations for side-effect import of '{0}'.", + "source": "generated" + }, + "2883": { + "body": "TypeScript reports this error: The inferred type of '{0}' cannot be named without a reference to '{2}' from '{1}'. This is likely not portable. A type annotation is necessary.", + "category": "Error", + "code": 2883, + "message": "The inferred type of '{0}' cannot be named without a reference to '{2}' from '{1}'. This is likely not portable. A type annotation is necessary.", + "source": "generated" + }, + "4000": { + "body": "TypeScript reports this error: Import declaration '{0}' is using private name '{1}'.", + "category": "Error", + "code": 4000, + "message": "Import declaration '{0}' is using private name '{1}'.", + "source": "generated" + }, + "4002": { + "body": "TypeScript reports this error: Type parameter '{0}' of exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4002, + "message": "Type parameter '{0}' of exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4004": { + "body": "TypeScript reports this error: Type parameter '{0}' of exported interface has or is using private name '{1}'.", + "category": "Error", + "code": 4004, + "message": "Type parameter '{0}' of exported interface has or is using private name '{1}'.", + "source": "generated" + }, + "4006": { + "body": "TypeScript reports this error: Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'.", + "category": "Error", + "code": 4006, + "message": "Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'.", + "source": "generated" + }, + "4008": { + "body": "TypeScript reports this error: Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'.", + "category": "Error", + "code": 4008, + "message": "Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'.", + "source": "generated" + }, + "4010": { + "body": "TypeScript reports this error: Type parameter '{0}' of public static method from exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4010, + "message": "Type parameter '{0}' of public static method from exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4012": { + "body": "TypeScript reports this error: Type parameter '{0}' of public method from exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4012, + "message": "Type parameter '{0}' of public method from exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4014": { + "body": "TypeScript reports this error: Type parameter '{0}' of method from exported interface has or is using private name '{1}'.", + "category": "Error", + "code": 4014, + "message": "Type parameter '{0}' of method from exported interface has or is using private name '{1}'.", + "source": "generated" + }, + "4016": { + "body": "TypeScript reports this error: Type parameter '{0}' of exported function has or is using private name '{1}'.", + "category": "Error", + "code": 4016, + "message": "Type parameter '{0}' of exported function has or is using private name '{1}'.", + "source": "generated" + }, + "4019": { + "body": "TypeScript reports this error: Implements clause of exported class '{0}' has or is using private name '{1}'.", + "category": "Error", + "code": 4019, + "message": "Implements clause of exported class '{0}' has or is using private name '{1}'.", + "source": "generated" + }, + "4020": { + "body": "TypeScript reports this error: 'extends' clause of exported class '{0}' has or is using private name '{1}'.", + "category": "Error", + "code": 4020, + "message": "'extends' clause of exported class '{0}' has or is using private name '{1}'.", + "source": "generated" + }, + "4021": { + "body": "TypeScript reports this error: 'extends' clause of exported class has or is using private name '{0}'.", + "category": "Error", + "code": 4021, + "message": "'extends' clause of exported class has or is using private name '{0}'.", + "source": "generated" + }, + "4022": { + "body": "TypeScript reports this error: 'extends' clause of exported interface '{0}' has or is using private name '{1}'.", + "category": "Error", + "code": 4022, + "message": "'extends' clause of exported interface '{0}' has or is using private name '{1}'.", + "source": "generated" + }, + "4023": { + "body": "TypeScript reports this error: Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named.", + "category": "Error", + "code": 4023, + "message": "Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named.", + "source": "generated" + }, + "4024": { + "body": "TypeScript reports this error: Exported variable '{0}' has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4024, + "message": "Exported variable '{0}' has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4025": { + "body": "TypeScript reports this error: Exported variable '{0}' has or is using private name '{1}'.", + "category": "Error", + "code": 4025, + "message": "Exported variable '{0}' has or is using private name '{1}'.", + "source": "generated" + }, + "4026": { + "body": "TypeScript reports this error: Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.", + "category": "Error", + "code": 4026, + "message": "Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.", + "source": "generated" + }, + "4027": { + "body": "TypeScript reports this error: Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4027, + "message": "Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4028": { + "body": "TypeScript reports this error: Public static property '{0}' of exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4028, + "message": "Public static property '{0}' of exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4029": { + "body": "TypeScript reports this error: Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.", + "category": "Error", + "code": 4029, + "message": "Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.", + "source": "generated" + }, + "4030": { + "body": "TypeScript reports this error: Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4030, + "message": "Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4031": { + "body": "TypeScript reports this error: Public property '{0}' of exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4031, + "message": "Public property '{0}' of exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4032": { + "body": "TypeScript reports this error: Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4032, + "message": "Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4033": { + "body": "TypeScript reports this error: Property '{0}' of exported interface has or is using private name '{1}'.", + "category": "Error", + "code": 4033, + "message": "Property '{0}' of exported interface has or is using private name '{1}'.", + "source": "generated" + }, + "4034": { + "body": "TypeScript reports this error: Parameter type of public static setter '{0}' from exported class has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4034, + "message": "Parameter type of public static setter '{0}' from exported class has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4035": { + "body": "TypeScript reports this error: Parameter type of public static setter '{0}' from exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4035, + "message": "Parameter type of public static setter '{0}' from exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4036": { + "body": "TypeScript reports this error: Parameter type of public setter '{0}' from exported class has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4036, + "message": "Parameter type of public setter '{0}' from exported class has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4037": { + "body": "TypeScript reports this error: Parameter type of public setter '{0}' from exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4037, + "message": "Parameter type of public setter '{0}' from exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4038": { + "body": "TypeScript reports this error: Return type of public static getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named.", + "category": "Error", + "code": 4038, + "message": "Return type of public static getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named.", + "source": "generated" + }, + "4039": { + "body": "TypeScript reports this error: Return type of public static getter '{0}' from exported class has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4039, + "message": "Return type of public static getter '{0}' from exported class has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4040": { + "body": "TypeScript reports this error: Return type of public static getter '{0}' from exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4040, + "message": "Return type of public static getter '{0}' from exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4041": { + "body": "TypeScript reports this error: Return type of public getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named.", + "category": "Error", + "code": 4041, + "message": "Return type of public getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named.", + "source": "generated" + }, + "4042": { + "body": "TypeScript reports this error: Return type of public getter '{0}' from exported class has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4042, + "message": "Return type of public getter '{0}' from exported class has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4043": { + "body": "TypeScript reports this error: Return type of public getter '{0}' from exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4043, + "message": "Return type of public getter '{0}' from exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4044": { + "body": "TypeScript reports this error: Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'.", + "category": "Error", + "code": 4044, + "message": "Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'.", + "source": "generated" + }, + "4045": { + "body": "TypeScript reports this error: Return type of constructor signature from exported interface has or is using private name '{0}'.", + "category": "Error", + "code": 4045, + "message": "Return type of constructor signature from exported interface has or is using private name '{0}'.", + "source": "generated" + }, + "4046": { + "body": "TypeScript reports this error: Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'.", + "category": "Error", + "code": 4046, + "message": "Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'.", + "source": "generated" + }, + "4047": { + "body": "TypeScript reports this error: Return type of call signature from exported interface has or is using private name '{0}'.", + "category": "Error", + "code": 4047, + "message": "Return type of call signature from exported interface has or is using private name '{0}'.", + "source": "generated" + }, + "4048": { + "body": "TypeScript reports this error: Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'.", + "category": "Error", + "code": 4048, + "message": "Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'.", + "source": "generated" + }, + "4049": { + "body": "TypeScript reports this error: Return type of index signature from exported interface has or is using private name '{0}'.", + "category": "Error", + "code": 4049, + "message": "Return type of index signature from exported interface has or is using private name '{0}'.", + "source": "generated" + }, + "4050": { + "body": "TypeScript reports this error: Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named.", + "category": "Error", + "code": 4050, + "message": "Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named.", + "source": "generated" + }, + "4051": { + "body": "TypeScript reports this error: Return type of public static method from exported class has or is using name '{0}' from private module '{1}'.", + "category": "Error", + "code": 4051, + "message": "Return type of public static method from exported class has or is using name '{0}' from private module '{1}'.", + "source": "generated" + }, + "4052": { + "body": "TypeScript reports this error: Return type of public static method from exported class has or is using private name '{0}'.", + "category": "Error", + "code": 4052, + "message": "Return type of public static method from exported class has or is using private name '{0}'.", + "source": "generated" + }, + "4053": { + "body": "TypeScript reports this error: Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named.", + "category": "Error", + "code": 4053, + "message": "Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named.", + "source": "generated" + }, + "4054": { + "body": "TypeScript reports this error: Return type of public method from exported class has or is using name '{0}' from private module '{1}'.", + "category": "Error", + "code": 4054, + "message": "Return type of public method from exported class has or is using name '{0}' from private module '{1}'.", + "source": "generated" + }, + "4055": { + "body": "TypeScript reports this error: Return type of public method from exported class has or is using private name '{0}'.", + "category": "Error", + "code": 4055, + "message": "Return type of public method from exported class has or is using private name '{0}'.", + "source": "generated" + }, + "4056": { + "body": "TypeScript reports this error: Return type of method from exported interface has or is using name '{0}' from private module '{1}'.", + "category": "Error", + "code": 4056, + "message": "Return type of method from exported interface has or is using name '{0}' from private module '{1}'.", + "source": "generated" + }, + "4057": { + "body": "TypeScript reports this error: Return type of method from exported interface has or is using private name '{0}'.", + "category": "Error", + "code": 4057, + "message": "Return type of method from exported interface has or is using private name '{0}'.", + "source": "generated" + }, + "4058": { + "body": "TypeScript reports this error: Return type of exported function has or is using name '{0}' from external module {1} but cannot be named.", + "category": "Error", + "code": 4058, + "message": "Return type of exported function has or is using name '{0}' from external module {1} but cannot be named.", + "source": "generated" + }, + "4059": { + "body": "TypeScript reports this error: Return type of exported function has or is using name '{0}' from private module '{1}'.", + "category": "Error", + "code": 4059, + "message": "Return type of exported function has or is using name '{0}' from private module '{1}'.", + "source": "generated" + }, + "4060": { + "body": "TypeScript reports this error: Return type of exported function has or is using private name '{0}'.", + "category": "Error", + "code": 4060, + "message": "Return type of exported function has or is using private name '{0}'.", + "source": "generated" + }, + "4061": { + "body": "TypeScript reports this error: Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named.", + "category": "Error", + "code": 4061, + "message": "Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named.", + "source": "generated" + }, + "4062": { + "body": "TypeScript reports this error: Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4062, + "message": "Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4063": { + "body": "TypeScript reports this error: Parameter '{0}' of constructor from exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4063, + "message": "Parameter '{0}' of constructor from exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4064": { + "body": "TypeScript reports this error: Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4064, + "message": "Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4065": { + "body": "TypeScript reports this error: Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'.", + "category": "Error", + "code": 4065, + "message": "Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'.", + "source": "generated" + }, + "4066": { + "body": "TypeScript reports this error: Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4066, + "message": "Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4067": { + "body": "TypeScript reports this error: Parameter '{0}' of call signature from exported interface has or is using private name '{1}'.", + "category": "Error", + "code": 4067, + "message": "Parameter '{0}' of call signature from exported interface has or is using private name '{1}'.", + "source": "generated" + }, + "4068": { + "body": "TypeScript reports this error: Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named.", + "category": "Error", + "code": 4068, + "message": "Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named.", + "source": "generated" + }, + "4069": { + "body": "TypeScript reports this error: Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4069, + "message": "Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4070": { + "body": "TypeScript reports this error: Parameter '{0}' of public static method from exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4070, + "message": "Parameter '{0}' of public static method from exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4071": { + "body": "TypeScript reports this error: Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named.", + "category": "Error", + "code": 4071, + "message": "Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named.", + "source": "generated" + }, + "4072": { + "body": "TypeScript reports this error: Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4072, + "message": "Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4073": { + "body": "TypeScript reports this error: Parameter '{0}' of public method from exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4073, + "message": "Parameter '{0}' of public method from exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4074": { + "body": "TypeScript reports this error: Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4074, + "message": "Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4075": { + "body": "TypeScript reports this error: Parameter '{0}' of method from exported interface has or is using private name '{1}'.", + "category": "Error", + "code": 4075, + "message": "Parameter '{0}' of method from exported interface has or is using private name '{1}'.", + "source": "generated" + }, + "4076": { + "body": "TypeScript reports this error: Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named.", + "category": "Error", + "code": 4076, + "message": "Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named.", + "source": "generated" + }, + "4077": { + "body": "TypeScript reports this error: Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4077, + "message": "Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4078": { + "body": "TypeScript reports this error: Parameter '{0}' of exported function has or is using private name '{1}'.", + "category": "Error", + "code": 4078, + "message": "Parameter '{0}' of exported function has or is using private name '{1}'.", + "source": "generated" + }, + "4081": { + "body": "TypeScript reports this error: Exported type alias '{0}' has or is using private name '{1}'.", + "category": "Error", + "code": 4081, + "message": "Exported type alias '{0}' has or is using private name '{1}'.", + "source": "generated" + }, + "4082": { + "body": "TypeScript reports this error: Default export of the module has or is using private name '{0}'.", + "category": "Error", + "code": 4082, + "message": "Default export of the module has or is using private name '{0}'.", + "source": "generated" + }, + "4083": { + "body": "TypeScript reports this error: Type parameter '{0}' of exported type alias has or is using private name '{1}'.", + "category": "Error", + "code": 4083, + "message": "Type parameter '{0}' of exported type alias has or is using private name '{1}'.", + "source": "generated" + }, + "4084": { + "body": "TypeScript reports this error: Exported type alias '{0}' has or is using private name '{1}' from module {2}.", + "category": "Error", + "code": 4084, + "message": "Exported type alias '{0}' has or is using private name '{1}' from module {2}.", + "source": "generated" + }, + "4085": { + "body": "TypeScript reports this error: Extends clause for inferred type '{0}' has or is using private name '{1}'.", + "category": "Error", + "code": 4085, + "message": "Extends clause for inferred type '{0}' has or is using private name '{1}'.", + "source": "generated" + }, + "4091": { + "body": "TypeScript reports this error: Parameter '{0}' of index signature from exported interface has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4091, + "message": "Parameter '{0}' of index signature from exported interface has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4092": { + "body": "TypeScript reports this error: Parameter '{0}' of index signature from exported interface has or is using private name '{1}'.", + "category": "Error", + "code": 4092, + "message": "Parameter '{0}' of index signature from exported interface has or is using private name '{1}'.", + "source": "generated" + }, + "4094": { + "body": "TypeScript reports this error: Property '{0}' of exported anonymous class type may not be private or protected.", + "category": "Error", + "code": 4094, + "message": "Property '{0}' of exported anonymous class type may not be private or protected.", + "source": "generated" + }, + "4095": { + "body": "TypeScript reports this error: Public static method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.", + "category": "Error", + "code": 4095, + "message": "Public static method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.", + "source": "generated" + }, + "4096": { + "body": "TypeScript reports this error: Public static method '{0}' of exported class has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4096, + "message": "Public static method '{0}' of exported class has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4097": { + "body": "TypeScript reports this error: Public static method '{0}' of exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4097, + "message": "Public static method '{0}' of exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4098": { + "body": "TypeScript reports this error: Public method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.", + "category": "Error", + "code": 4098, + "message": "Public method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named.", + "source": "generated" + }, + "4099": { + "body": "TypeScript reports this error: Public method '{0}' of exported class has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4099, + "message": "Public method '{0}' of exported class has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4100": { + "body": "TypeScript reports this error: Public method '{0}' of exported class has or is using private name '{1}'.", + "category": "Error", + "code": 4100, + "message": "Public method '{0}' of exported class has or is using private name '{1}'.", + "source": "generated" + }, + "4101": { + "body": "TypeScript reports this error: Method '{0}' of exported interface has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4101, + "message": "Method '{0}' of exported interface has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4102": { + "body": "TypeScript reports this error: Method '{0}' of exported interface has or is using private name '{1}'.", + "category": "Error", + "code": 4102, + "message": "Method '{0}' of exported interface has or is using private name '{1}'.", + "source": "generated" + }, + "4103": { + "body": "TypeScript reports this error: Type parameter '{0}' of exported mapped object type is using private name '{1}'.", + "category": "Error", + "code": 4103, + "message": "Type parameter '{0}' of exported mapped object type is using private name '{1}'.", + "source": "generated" + }, + "4104": { + "body": "TypeScript reports this error: The type '{0}' is 'readonly' and cannot be assigned to the mutable type '{1}'.", + "category": "Error", + "code": 4104, + "message": "The type '{0}' is 'readonly' and cannot be assigned to the mutable type '{1}'.", + "source": "generated" + }, + "4105": { + "body": "TypeScript reports this error: Private or protected member '{0}' cannot be accessed on a type parameter.", + "category": "Error", + "code": 4105, + "message": "Private or protected member '{0}' cannot be accessed on a type parameter.", + "source": "generated" + }, + "4106": { + "body": "TypeScript reports this error: Parameter '{0}' of accessor has or is using private name '{1}'.", + "category": "Error", + "code": 4106, + "message": "Parameter '{0}' of accessor has or is using private name '{1}'.", + "source": "generated" + }, + "4107": { + "body": "TypeScript reports this error: Parameter '{0}' of accessor has or is using name '{1}' from private module '{2}'.", + "category": "Error", + "code": 4107, + "message": "Parameter '{0}' of accessor has or is using name '{1}' from private module '{2}'.", + "source": "generated" + }, + "4108": { + "body": "TypeScript reports this error: Parameter '{0}' of accessor has or is using name '{1}' from external module '{2}' but cannot be named.", + "category": "Error", + "code": 4108, + "message": "Parameter '{0}' of accessor has or is using name '{1}' from external module '{2}' but cannot be named.", + "source": "generated" + }, + "4109": { + "body": "TypeScript reports this error: Type arguments for '{0}' circularly reference themselves.", + "category": "Error", + "code": 4109, + "message": "Type arguments for '{0}' circularly reference themselves.", + "source": "generated" + }, + "4110": { + "body": "TypeScript reports this error: Tuple type arguments circularly reference themselves.", + "category": "Error", + "code": 4110, + "message": "Tuple type arguments circularly reference themselves.", + "source": "generated" + }, + "4111": { + "body": "TypeScript reports this error: Property '{0}' comes from an index signature, so it must be accessed with ['{0}'].", + "category": "Error", + "code": 4111, + "message": "Property '{0}' comes from an index signature, so it must be accessed with ['{0}'].", + "source": "generated" + }, + "4112": { + "body": "TypeScript reports this error: This member cannot have an 'override' modifier because its containing class '{0}' does not extend another class.", + "category": "Error", + "code": 4112, + "message": "This member cannot have an 'override' modifier because its containing class '{0}' does not extend another class.", + "source": "generated" + }, + "4113": { + "body": "TypeScript reports this error: This member cannot have an 'override' modifier because it is not declared in the base class '{0}'.", + "category": "Error", + "code": 4113, + "message": "This member cannot have an 'override' modifier because it is not declared in the base class '{0}'.", + "source": "generated" + }, + "4114": { + "body": "TypeScript reports this error: This member must have an 'override' modifier because it overrides a member in the base class '{0}'.", + "category": "Error", + "code": 4114, + "message": "This member must have an 'override' modifier because it overrides a member in the base class '{0}'.", + "source": "generated" + }, + "4115": { + "body": "TypeScript reports this error: This parameter property must have an 'override' modifier because it overrides a member in base class '{0}'.", + "category": "Error", + "code": 4115, + "message": "This parameter property must have an 'override' modifier because it overrides a member in base class '{0}'.", + "source": "generated" + }, + "4116": { + "body": "TypeScript reports this error: This member must have an 'override' modifier because it overrides an abstract method that is declared in the base class '{0}'.", + "category": "Error", + "code": 4116, + "message": "This member must have an 'override' modifier because it overrides an abstract method that is declared in the base class '{0}'.", + "source": "generated" + }, + "4117": { + "body": "TypeScript reports this error: This member cannot have an 'override' modifier because it is not declared in the base class '{0}'. Did you mean '{1}'?", + "category": "Error", + "code": 4117, + "message": "This member cannot have an 'override' modifier because it is not declared in the base class '{0}'. Did you mean '{1}'?", + "source": "generated" + }, + "4118": { + "body": "TypeScript reports this error: The type of this node cannot be serialized because its property '{0}' cannot be serialized.", + "category": "Error", + "code": 4118, + "message": "The type of this node cannot be serialized because its property '{0}' cannot be serialized.", + "source": "generated" + }, + "4119": { + "body": "TypeScript reports this error: This member must have a JSDoc comment with an '@override' tag because it overrides a member in the base class '{0}'.", + "category": "Error", + "code": 4119, + "message": "This member must have a JSDoc comment with an '@override' tag because it overrides a member in the base class '{0}'.", + "source": "generated" + }, + "4120": { + "body": "TypeScript reports this error: This parameter property must have a JSDoc comment with an '@override' tag because it overrides a member in the base class '{0}'.", + "category": "Error", + "code": 4120, + "message": "This parameter property must have a JSDoc comment with an '@override' tag because it overrides a member in the base class '{0}'.", + "source": "generated" + }, + "4121": { + "body": "TypeScript reports this error: This member cannot have a JSDoc comment with an '@override' tag because its containing class '{0}' does not extend another class.", + "category": "Error", + "code": 4121, + "message": "This member cannot have a JSDoc comment with an '@override' tag because its containing class '{0}' does not extend another class.", + "source": "generated" + }, + "4122": { + "body": "TypeScript reports this error: This member cannot have a JSDoc comment with an '@override' tag because it is not declared in the base class '{0}'.", + "category": "Error", + "code": 4122, + "message": "This member cannot have a JSDoc comment with an '@override' tag because it is not declared in the base class '{0}'.", + "source": "generated" + }, + "4123": { + "body": "TypeScript reports this error: This member cannot have a JSDoc comment with an 'override' tag because it is not declared in the base class '{0}'. Did you mean '{1}'?", + "category": "Error", + "code": 4123, + "message": "This member cannot have a JSDoc comment with an 'override' tag because it is not declared in the base class '{0}'. Did you mean '{1}'?", + "source": "generated" + }, + "4124": { + "body": "TypeScript reports this error: Compiler option '{0}' of value '{1}' is unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'.", + "category": "Error", + "code": 4124, + "message": "Compiler option '{0}' of value '{1}' is unstable. Use nightly TypeScript to silence this error. Try updating with 'npm install -D typescript@next'.", + "source": "generated" + }, + "4125": { + "body": "TypeScript reports this error: Each declaration of '{0}.{1}' differs in its value, where '{2}' was expected but '{3}' was given.", + "category": "Error", + "code": 4125, + "message": "Each declaration of '{0}.{1}' differs in its value, where '{2}' was expected but '{3}' was given.", + "source": "generated" + }, + "4126": { + "body": "TypeScript reports this error: One value of '{0}.{1}' is the string '{2}', and the other is assumed to be an unknown numeric value.", + "category": "Error", + "code": 4126, + "message": "One value of '{0}.{1}' is the string '{2}', and the other is assumed to be an unknown numeric value.", + "source": "generated" + }, + "4127": { + "body": "TypeScript reports this error: This member cannot have an 'override' modifier because its name is dynamic.", + "category": "Error", + "code": 4127, + "message": "This member cannot have an 'override' modifier because its name is dynamic.", + "source": "generated" + }, + "4128": { + "body": "TypeScript reports this error: This member cannot have a JSDoc comment with an '@override' tag because its name is dynamic.", + "category": "Error", + "code": 4128, + "message": "This member cannot have a JSDoc comment with an '@override' tag because its name is dynamic.", + "source": "generated" + }, + "5001": { + "body": "TypeScript reports this error: The current host does not support the '{0}' option.", + "category": "Error", + "code": 5001, + "message": "The current host does not support the '{0}' option.", + "source": "generated" + }, + "5009": { + "body": "TypeScript reports this error: Cannot find the common subdirectory path for the input files.", + "category": "Error", + "code": 5009, + "message": "Cannot find the common subdirectory path for the input files.", + "source": "generated" + }, + "5010": { + "body": "TypeScript reports this error: File specification cannot end in a recursive directory wildcard ('**'): '{0}'.", + "category": "Error", + "code": 5010, + "message": "File specification cannot end in a recursive directory wildcard ('**'): '{0}'.", + "source": "generated" + }, + "5011": { + "body": "TypeScript reports this error: The common source directory of '{0}' is '{1}'. The 'rootDir' setting must be explicitly set to this or another path to adjust your output's file layout.", + "category": "Error", + "code": 5011, + "message": "The common source directory of '{0}' is '{1}'. The 'rootDir' setting must be explicitly set to this or another path to adjust your output's file layout.", + "source": "generated" + }, + "5012": { + "body": "TypeScript reports this error: Cannot read file '{0}': {1}.", + "category": "Error", + "code": 5012, + "message": "Cannot read file '{0}': {1}.", + "source": "generated" + }, + "5023": { + "body": "TypeScript reports this error: Unknown compiler option '{0}'.", + "category": "Error", + "code": 5023, + "message": "Unknown compiler option '{0}'.", + "source": "generated" + }, + "5024": { + "body": "TypeScript reports this error: Compiler option '{0}' requires a value of type {1}.", + "category": "Error", + "code": 5024, + "message": "Compiler option '{0}' requires a value of type {1}.", + "source": "generated" + }, + "5025": { + "body": "TypeScript reports this error: Unknown compiler option '{0}'. Did you mean '{1}'?", + "category": "Error", + "code": 5025, + "message": "Unknown compiler option '{0}'. Did you mean '{1}'?", + "source": "generated" + }, + "5033": { + "body": "TypeScript reports this error: Could not write file '{0}': {1}.", + "category": "Error", + "code": 5033, + "message": "Could not write file '{0}': {1}.", + "source": "generated" + }, + "5042": { + "body": "TypeScript reports this error: Option 'project' cannot be mixed with source files on a command line.", + "category": "Error", + "code": 5042, + "message": "Option 'project' cannot be mixed with source files on a command line.", + "source": "generated" + }, + "5047": { + "body": "TypeScript reports this error: Option 'isolatedModules' can only be used when either option '--module' is provided or option 'target' is 'ES2015' or higher.", + "category": "Error", + "code": 5047, + "message": "Option 'isolatedModules' can only be used when either option '--module' is provided or option 'target' is 'ES2015' or higher.", + "source": "generated" + }, + "5051": { + "body": "TypeScript reports this error: Option '{0} can only be used when either option '--inlineSourceMap' or option '--sourceMap' is provided.", + "category": "Error", + "code": 5051, + "message": "Option '{0} can only be used when either option '--inlineSourceMap' or option '--sourceMap' is provided.", + "source": "generated" + }, + "5052": { + "body": "TypeScript reports this error: Option '{0}' cannot be specified without specifying option '{1}'.", + "category": "Error", + "code": 5052, + "message": "Option '{0}' cannot be specified without specifying option '{1}'.", + "source": "generated" + }, + "5053": { + "body": "TypeScript reports this error: Option '{0}' cannot be specified with option '{1}'.", + "category": "Error", + "code": 5053, + "message": "Option '{0}' cannot be specified with option '{1}'.", + "source": "generated" + }, + "5054": { + "body": "TypeScript reports this error: A 'tsconfig.json' file is already defined at: '{0}'.", + "category": "Error", + "code": 5054, + "message": "A 'tsconfig.json' file is already defined at: '{0}'.", + "source": "generated" + }, + "5055": { + "body": "TypeScript reports this error: Cannot write file '{0}' because it would overwrite input file.", + "category": "Error", + "code": 5055, + "message": "Cannot write file '{0}' because it would overwrite input file.", + "source": "generated" + }, + "5056": { + "body": "TypeScript reports this error: Cannot write file '{0}' because it would be overwritten by multiple input files.", + "category": "Error", + "code": 5056, + "message": "Cannot write file '{0}' because it would be overwritten by multiple input files.", + "source": "generated" + }, + "5057": { + "body": "TypeScript reports this error: Cannot find a tsconfig.json file at the specified directory: '{0}'.", + "category": "Error", + "code": 5057, + "message": "Cannot find a tsconfig.json file at the specified directory: '{0}'.", + "source": "generated" + }, + "5058": { + "body": "TypeScript reports this error: The specified path does not exist: '{0}'.", + "category": "Error", + "code": 5058, + "message": "The specified path does not exist: '{0}'.", + "source": "generated" + }, + "5059": { + "body": "TypeScript reports this error: Invalid value for '--reactNamespace'. '{0}' is not a valid identifier.", + "category": "Error", + "code": 5059, + "message": "Invalid value for '--reactNamespace'. '{0}' is not a valid identifier.", + "source": "generated" + }, + "5061": { + "body": "TypeScript reports this error: Pattern '{0}' can have at most one '*' character.", + "category": "Error", + "code": 5061, + "message": "Pattern '{0}' can have at most one '*' character.", + "source": "generated" + }, + "5062": { + "body": "TypeScript reports this error: Substitution '{0}' in pattern '{1}' can have at most one '*' character.", + "category": "Error", + "code": 5062, + "message": "Substitution '{0}' in pattern '{1}' can have at most one '*' character.", + "source": "generated" + }, + "5063": { + "body": "TypeScript reports this error: Substitutions for pattern '{0}' should be an array.", + "category": "Error", + "code": 5063, + "message": "Substitutions for pattern '{0}' should be an array.", + "source": "generated" + }, + "5064": { + "body": "TypeScript reports this error: Substitution '{0}' for pattern '{1}' has incorrect type, expected 'string', got '{2}'.", + "category": "Error", + "code": 5064, + "message": "Substitution '{0}' for pattern '{1}' has incorrect type, expected 'string', got '{2}'.", + "source": "generated" + }, + "5065": { + "body": "TypeScript reports this error: File specification cannot contain a parent directory ('..') that appears after a recursive directory wildcard ('**'): '{0}'.", + "category": "Error", + "code": 5065, + "message": "File specification cannot contain a parent directory ('..') that appears after a recursive directory wildcard ('**'): '{0}'.", + "source": "generated" + }, + "5066": { + "body": "TypeScript reports this error: Substitutions for pattern '{0}' shouldn't be an empty array.", + "category": "Error", + "code": 5066, + "message": "Substitutions for pattern '{0}' shouldn't be an empty array.", + "source": "generated" + }, + "5067": { + "body": "TypeScript reports this error: Invalid value for 'jsxFactory'. '{0}' is not a valid identifier or qualified-name.", + "category": "Error", + "code": 5067, + "message": "Invalid value for 'jsxFactory'. '{0}' is not a valid identifier or qualified-name.", + "source": "generated" + }, + "5068": { + "body": "TypeScript reports this error: Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.", + "category": "Error", + "code": 5068, + "message": "Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig.", + "source": "generated" + }, + "5069": { + "body": "TypeScript reports this error: Option '{0}' cannot be specified without specifying option '{1}' or option '{2}'.", + "category": "Error", + "code": 5069, + "message": "Option '{0}' cannot be specified without specifying option '{1}' or option '{2}'.", + "source": "generated" + }, + "5070": { + "body": "TypeScript reports this error: Option '--resolveJsonModule' cannot be specified when 'moduleResolution' is set to 'classic'.", + "category": "Error", + "code": 5070, + "message": "Option '--resolveJsonModule' cannot be specified when 'moduleResolution' is set to 'classic'.", + "source": "generated" + }, + "5071": { + "body": "TypeScript reports this error: Option '--resolveJsonModule' cannot be specified when 'module' is set to 'none', 'system', or 'umd'.", + "category": "Error", + "code": 5071, + "message": "Option '--resolveJsonModule' cannot be specified when 'module' is set to 'none', 'system', or 'umd'.", + "source": "generated" + }, + "5072": { + "body": "TypeScript reports this error: Unknown build option '{0}'.", + "category": "Error", + "code": 5072, + "message": "Unknown build option '{0}'.", + "source": "generated" + }, + "5073": { + "body": "TypeScript reports this error: Build option '{0}' requires a value of type {1}.", + "category": "Error", + "code": 5073, + "message": "Build option '{0}' requires a value of type {1}.", + "source": "generated" + }, + "5074": { + "body": "TypeScript reports this error: Option '--incremental' can only be specified using tsconfig, emitting to single file or when option '--tsBuildInfoFile' is specified.", + "category": "Error", + "code": 5074, + "message": "Option '--incremental' can only be specified using tsconfig, emitting to single file or when option '--tsBuildInfoFile' is specified.", + "source": "generated" + }, + "5075": { + "body": "You're passing a type '{0}' into a slot which is too narrow. It could be as wide as anything assignable to '{2}'.", + "category": "Error", + "code": 5075, + "message": "'{0}' is assignable to the constraint of type '{1}', but '{1}' could be instantiated with a different subtype of constraint '{2}'.", + "source": "curated" + }, + "5076": { + "body": "TypeScript reports this error: '{0}' and '{1}' operations cannot be mixed without parentheses.", + "category": "Error", + "code": 5076, + "message": "'{0}' and '{1}' operations cannot be mixed without parentheses.", + "source": "generated" + }, + "5077": { + "body": "TypeScript reports this error: Unknown build option '{0}'. Did you mean '{1}'?", + "category": "Error", + "code": 5077, + "message": "Unknown build option '{0}'. Did you mean '{1}'?", + "source": "generated" + }, + "5078": { + "body": "TypeScript reports this error: Unknown watch option '{0}'.", + "category": "Error", + "code": 5078, + "message": "Unknown watch option '{0}'.", + "source": "generated" + }, + "5079": { + "body": "TypeScript reports this error: Unknown watch option '{0}'. Did you mean '{1}'?", + "category": "Error", + "code": 5079, + "message": "Unknown watch option '{0}'. Did you mean '{1}'?", + "source": "generated" + }, + "5080": { + "body": "TypeScript reports this error: Watch option '{0}' requires a value of type {1}.", + "category": "Error", + "code": 5080, + "message": "Watch option '{0}' requires a value of type {1}.", + "source": "generated" + }, + "5081": { + "body": "TypeScript reports this error: Cannot find a tsconfig.json file at the current directory: {0}.", + "category": "Error", + "code": 5081, + "message": "Cannot find a tsconfig.json file at the current directory: {0}.", + "source": "generated" + }, + "5082": { + "body": "TypeScript reports this error: '{0}' could be instantiated with an arbitrary type which could be unrelated to '{1}'.", + "category": "Error", + "code": 5082, + "message": "'{0}' could be instantiated with an arbitrary type which could be unrelated to '{1}'.", + "source": "generated" + }, + "5083": { + "body": "TypeScript reports this error: Cannot read file '{0}'.", + "category": "Error", + "code": 5083, + "message": "Cannot read file '{0}'.", + "source": "generated" + }, + "5085": { + "body": "TypeScript reports this error: A tuple member cannot be both optional and rest.", + "category": "Error", + "code": 5085, + "message": "A tuple member cannot be both optional and rest.", + "source": "generated" + }, + "5086": { + "body": "TypeScript reports this error: A labeled tuple element is declared as optional with a question mark after the name and before the colon, rather than after the type.", + "category": "Error", + "code": 5086, + "message": "A labeled tuple element is declared as optional with a question mark after the name and before the colon, rather than after the type.", + "source": "generated" + }, + "5087": { + "body": "TypeScript reports this error: A labeled tuple element is declared as rest with a '...' before the name, rather than before the type.", + "category": "Error", + "code": 5087, + "message": "A labeled tuple element is declared as rest with a '...' before the name, rather than before the type.", + "source": "generated" + }, + "5088": { + "body": "TypeScript reports this error: The inferred type of '{0}' references a type with a cyclic structure which cannot be trivially serialized. A type annotation is necessary.", + "category": "Error", + "code": 5088, + "message": "The inferred type of '{0}' references a type with a cyclic structure which cannot be trivially serialized. A type annotation is necessary.", + "source": "generated" + }, + "5089": { + "body": "TypeScript reports this error: Option '{0}' cannot be specified when option 'jsx' is '{1}'.", + "category": "Error", + "code": 5089, + "message": "Option '{0}' cannot be specified when option 'jsx' is '{1}'.", + "source": "generated" + }, + "5090": { + "body": "TypeScript reports this error: Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?", + "category": "Error", + "code": 5090, + "message": "Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?", + "source": "generated" + }, + "5091": { + "body": "TypeScript reports this error: Option 'preserveConstEnums' cannot be disabled when '{0}' is enabled.", + "category": "Error", + "code": 5091, + "message": "Option 'preserveConstEnums' cannot be disabled when '{0}' is enabled.", + "source": "generated" + }, + "5092": { + "body": "TypeScript reports this error: The root value of a '{0}' file must be an object.", + "category": "Error", + "code": 5092, + "message": "The root value of a '{0}' file must be an object.", + "source": "generated" + }, + "5093": { + "body": "TypeScript reports this error: Compiler option '--{0}' may only be used with '--build'.", + "category": "Error", + "code": 5093, + "message": "Compiler option '--{0}' may only be used with '--build'.", + "source": "generated" + }, + "5094": { + "body": "TypeScript reports this error: Compiler option '--{0}' may not be used with '--build'.", + "category": "Error", + "code": 5094, + "message": "Compiler option '--{0}' may not be used with '--build'.", + "source": "generated" + }, + "5095": { + "body": "TypeScript reports this error: Option '{0}' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.", + "category": "Error", + "code": 5095, + "message": "Option '{0}' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.", + "source": "generated" + }, + "5096": { + "body": "TypeScript reports this error: Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set.", + "category": "Error", + "code": 5096, + "message": "Option 'allowImportingTsExtensions' can only be used when one of 'noEmit', 'emitDeclarationOnly', or 'rewriteRelativeImportExtensions' is set.", + "source": "generated" + }, + "5097": { + "body": "TypeScript reports this error: An import path can only end with a '{0}' extension when 'allowImportingTsExtensions' is enabled.", + "category": "Error", + "code": 5097, + "message": "An import path can only end with a '{0}' extension when 'allowImportingTsExtensions' is enabled.", + "source": "generated" + }, + "5098": { + "body": "TypeScript reports this error: Option '{0}' can only be used when 'moduleResolution' is set to 'node16', 'nodenext', or 'bundler'.", + "category": "Error", + "code": 5098, + "message": "Option '{0}' can only be used when 'moduleResolution' is set to 'node16', 'nodenext', or 'bundler'.", + "source": "generated" + }, + "5101": { + "body": "TypeScript reports this error: Option '{0}' is deprecated and will stop functioning in TypeScript {1}. Specify compilerOption '\"ignoreDeprecations\": \"{2}\"' to silence this error.", + "category": "Error", + "code": 5101, + "message": "Option '{0}' is deprecated and will stop functioning in TypeScript {1}. Specify compilerOption '\"ignoreDeprecations\": \"{2}\"' to silence this error.", + "source": "generated" + }, + "5102": { + "body": "TypeScript reports this error: Option '{0}' has been removed. Please remove it from your configuration.", + "category": "Error", + "code": 5102, + "message": "Option '{0}' has been removed. Please remove it from your configuration.", + "source": "generated" + }, + "5103": { + "body": "TypeScript reports this error: Invalid value for '--ignoreDeprecations'.", + "category": "Error", + "code": 5103, + "message": "Invalid value for '--ignoreDeprecations'.", + "source": "generated" + }, + "5104": { + "body": "TypeScript reports this error: Option '{0}' is redundant and cannot be specified with option '{1}'.", + "category": "Error", + "code": 5104, + "message": "Option '{0}' is redundant and cannot be specified with option '{1}'.", + "source": "generated" + }, + "5105": { + "body": "TypeScript reports this error: Option 'verbatimModuleSyntax' cannot be used when 'module' is set to 'UMD', 'AMD', or 'System'.", + "category": "Error", + "code": 5105, + "message": "Option 'verbatimModuleSyntax' cannot be used when 'module' is set to 'UMD', 'AMD', or 'System'.", + "source": "generated" + }, + "5106": { + "body": "TypeScript reports: Use '{0}' instead.", + "category": "Message", + "code": 5106, + "message": "Use '{0}' instead.", + "source": "generated" + }, + "5107": { + "body": "TypeScript reports this error: Option '{0}={1}' is deprecated and will stop functioning in TypeScript {2}. Specify compilerOption '\"ignoreDeprecations\": \"{3}\"' to silence this error.", + "category": "Error", + "code": 5107, + "message": "Option '{0}={1}' is deprecated and will stop functioning in TypeScript {2}. Specify compilerOption '\"ignoreDeprecations\": \"{3}\"' to silence this error.", + "source": "generated" + }, + "5108": { + "body": "TypeScript reports this error: Option '{0}={1}' has been removed. Please remove it from your configuration.", + "category": "Error", + "code": 5108, + "message": "Option '{0}={1}' has been removed. Please remove it from your configuration.", + "source": "generated" + }, + "5109": { + "body": "TypeScript reports this error: Option 'moduleResolution' must be set to '{0}' (or left unspecified) when option 'module' is set to '{1}'.", + "category": "Error", + "code": 5109, + "message": "Option 'moduleResolution' must be set to '{0}' (or left unspecified) when option 'module' is set to '{1}'.", + "source": "generated" + }, + "5110": { + "body": "TypeScript reports this error: Option 'module' must be set to '{0}' when option 'moduleResolution' is set to '{1}'.", + "category": "Error", + "code": 5110, + "message": "Option 'module' must be set to '{0}' when option 'moduleResolution' is set to '{1}'.", + "source": "generated" + }, + "5111": { + "body": "TypeScript reports: Visit https://aka.ms/ts6 for migration information.", + "category": "Message", + "code": 5111, + "message": "Visit https://aka.ms/ts6 for migration information.", + "source": "generated" + }, + "5112": { + "body": "TypeScript reports this error: tsconfig.json is present but will not be loaded if files are specified on commandline. Use '--ignoreConfig' to skip this error.", + "category": "Error", + "code": 5112, + "message": "tsconfig.json is present but will not be loaded if files are specified on commandline. Use '--ignoreConfig' to skip this error.", + "source": "generated" + }, + "6000": { + "body": "TypeScript reports: Generates a sourcemap for each corresponding '.d.ts' file.", + "category": "Message", + "code": 6000, + "message": "Generates a sourcemap for each corresponding '.d.ts' file.", + "source": "generated" + }, + "6001": { + "body": "TypeScript reports: Concatenate and emit output to single file.", + "category": "Message", + "code": 6001, + "message": "Concatenate and emit output to single file.", + "source": "generated" + }, + "6002": { + "body": "TypeScript reports: Generates corresponding '.d.ts' file.", + "category": "Message", + "code": 6002, + "message": "Generates corresponding '.d.ts' file.", + "source": "generated" + }, + "6004": { + "body": "TypeScript reports: Specify the location where debugger should locate TypeScript files instead of source locations.", + "category": "Message", + "code": 6004, + "message": "Specify the location where debugger should locate TypeScript files instead of source locations.", + "source": "generated" + }, + "6005": { + "body": "TypeScript reports: Watch input files.", + "category": "Message", + "code": 6005, + "message": "Watch input files.", + "source": "generated" + }, + "6006": { + "body": "TypeScript reports: Redirect output structure to the directory.", + "category": "Message", + "code": 6006, + "message": "Redirect output structure to the directory.", + "source": "generated" + }, + "6007": { + "body": "TypeScript reports: Do not erase const enum declarations in generated code.", + "category": "Message", + "code": 6007, + "message": "Do not erase const enum declarations in generated code.", + "source": "generated" + }, + "6008": { + "body": "TypeScript reports: Do not emit outputs if any errors were reported.", + "category": "Message", + "code": 6008, + "message": "Do not emit outputs if any errors were reported.", + "source": "generated" + }, + "6009": { + "body": "TypeScript reports: Do not emit comments to output.", + "category": "Message", + "code": 6009, + "message": "Do not emit comments to output.", + "source": "generated" + }, + "6010": { + "body": "TypeScript reports: Do not emit outputs.", + "category": "Message", + "code": 6010, + "message": "Do not emit outputs.", + "source": "generated" + }, + "6011": { + "body": "TypeScript reports: Allow default imports from modules with no default export. This does not affect code emit, just typechecking.", + "category": "Message", + "code": 6011, + "message": "Allow default imports from modules with no default export. This does not affect code emit, just typechecking.", + "source": "generated" + }, + "6012": { + "body": "TypeScript reports: Skip type checking of declaration files.", + "category": "Message", + "code": 6012, + "message": "Skip type checking of declaration files.", + "source": "generated" + }, + "6013": { + "body": "TypeScript reports: Do not resolve the real path of symlinks.", + "category": "Message", + "code": 6013, + "message": "Do not resolve the real path of symlinks.", + "source": "generated" + }, + "6014": { + "body": "TypeScript reports: Only emit '.d.ts' declaration files.", + "category": "Message", + "code": 6014, + "message": "Only emit '.d.ts' declaration files.", + "source": "generated" + }, + "6015": { + "body": "TypeScript reports: Specify ECMAScript target version.", + "category": "Message", + "code": 6015, + "message": "Specify ECMAScript target version.", + "source": "generated" + }, + "6016": { + "body": "TypeScript reports: Specify module code generation.", + "category": "Message", + "code": 6016, + "message": "Specify module code generation.", + "source": "generated" + }, + "6017": { + "body": "TypeScript reports: Print this message.", + "category": "Message", + "code": 6017, + "message": "Print this message.", + "source": "generated" + }, + "6019": { + "body": "TypeScript reports: Print the compiler's version.", + "category": "Message", + "code": 6019, + "message": "Print the compiler's version.", + "source": "generated" + }, + "6020": { + "body": "TypeScript reports: Compile the project given the path to its configuration file, or to a folder with a 'tsconfig.json'.", + "category": "Message", + "code": 6020, + "message": "Compile the project given the path to its configuration file, or to a folder with a 'tsconfig.json'.", + "source": "generated" + }, + "6023": { + "body": "TypeScript reports: Syntax: {0}", + "category": "Message", + "code": 6023, + "message": "Syntax: {0}", + "source": "generated" + }, + "6024": { + "body": "TypeScript reports: options", + "category": "Message", + "code": 6024, + "message": "options", + "source": "generated" + }, + "6025": { + "body": "TypeScript reports: file", + "category": "Message", + "code": 6025, + "message": "file", + "source": "generated" + }, + "6026": { + "body": "TypeScript reports: Examples: {0}", + "category": "Message", + "code": 6026, + "message": "Examples: {0}", + "source": "generated" + }, + "6027": { + "body": "TypeScript reports: Options:", + "category": "Message", + "code": 6027, + "message": "Options:", + "source": "generated" + }, + "6029": { + "body": "TypeScript reports: Version {0}", + "category": "Message", + "code": 6029, + "message": "Version {0}", + "source": "generated" + }, + "6030": { + "body": "TypeScript reports: Insert command line options and files from a file.", + "category": "Message", + "code": 6030, + "message": "Insert command line options and files from a file.", + "source": "generated" + }, + "6031": { + "body": "TypeScript reports: Starting compilation in watch mode...", + "category": "Message", + "code": 6031, + "message": "Starting compilation in watch mode...", + "source": "generated" + }, + "6032": { + "body": "TypeScript reports: File change detected. Starting incremental compilation...", + "category": "Message", + "code": 6032, + "message": "File change detected. Starting incremental compilation...", + "source": "generated" + }, + "6034": { + "body": "TypeScript reports: KIND", + "category": "Message", + "code": 6034, + "message": "KIND", + "source": "generated" + }, + "6035": { + "body": "TypeScript reports: FILE", + "category": "Message", + "code": 6035, + "message": "FILE", + "source": "generated" + }, + "6036": { + "body": "TypeScript reports: VERSION", + "category": "Message", + "code": 6036, + "message": "VERSION", + "source": "generated" + }, + "6037": { + "body": "TypeScript reports: LOCATION", + "category": "Message", + "code": 6037, + "message": "LOCATION", + "source": "generated" + }, + "6038": { + "body": "TypeScript reports: DIRECTORY", + "category": "Message", + "code": 6038, + "message": "DIRECTORY", + "source": "generated" + }, + "6039": { + "body": "TypeScript reports: STRATEGY", + "category": "Message", + "code": 6039, + "message": "STRATEGY", + "source": "generated" + }, + "6040": { + "body": "TypeScript reports: FILE OR DIRECTORY", + "category": "Message", + "code": 6040, + "message": "FILE OR DIRECTORY", + "source": "generated" + }, + "6041": { + "body": "TypeScript reports: Errors Files", + "category": "Message", + "code": 6041, + "message": "Errors Files", + "source": "generated" + }, + "6043": { + "body": "TypeScript reports: Generates corresponding '.map' file.", + "category": "Message", + "code": 6043, + "message": "Generates corresponding '.map' file.", + "source": "generated" + }, + "6044": { + "body": "TypeScript reports this error: Compiler option '{0}' expects an argument.", + "category": "Error", + "code": 6044, + "message": "Compiler option '{0}' expects an argument.", + "source": "generated" + }, + "6045": { + "body": "TypeScript reports this error: Unterminated quoted string in response file '{0}'.", + "category": "Error", + "code": 6045, + "message": "Unterminated quoted string in response file '{0}'.", + "source": "generated" + }, + "6046": { + "body": "TypeScript reports this error: Argument for '{0}' option must be: {1}.", + "category": "Error", + "code": 6046, + "message": "Argument for '{0}' option must be: {1}.", + "source": "generated" + }, + "6048": { + "body": "TypeScript reports this error: Locale must be of the form or -. For example '{0}' or '{1}'.", + "category": "Error", + "code": 6048, + "message": "Locale must be of the form or -. For example '{0}' or '{1}'.", + "source": "generated" + }, + "6050": { + "body": "TypeScript reports this error: Unable to open file '{0}'.", + "category": "Error", + "code": 6050, + "message": "Unable to open file '{0}'.", + "source": "generated" + }, + "6051": { + "body": "TypeScript reports this error: Corrupted locale file {0}.", + "category": "Error", + "code": 6051, + "message": "Corrupted locale file {0}.", + "source": "generated" + }, + "6052": { + "body": "TypeScript reports: Raise error on expressions and declarations with an implied 'any' type.", + "category": "Message", + "code": 6052, + "message": "Raise error on expressions and declarations with an implied 'any' type.", + "source": "generated" + }, + "6053": { + "body": "TypeScript reports this error: File '{0}' not found.", + "category": "Error", + "code": 6053, + "message": "File '{0}' not found.", + "source": "generated" + }, + "6054": { + "body": "TypeScript reports this error: File '{0}' has an unsupported extension. The only supported extensions are {1}.", + "category": "Error", + "code": 6054, + "message": "File '{0}' has an unsupported extension. The only supported extensions are {1}.", + "source": "generated" + }, + "6055": { + "body": "TypeScript reports: Suppress noImplicitAny errors for indexing objects lacking index signatures.", + "category": "Message", + "code": 6055, + "message": "Suppress noImplicitAny errors for indexing objects lacking index signatures.", + "source": "generated" + }, + "6056": { + "body": "TypeScript reports: Do not emit declarations for code that has an '@internal' annotation.", + "category": "Message", + "code": 6056, + "message": "Do not emit declarations for code that has an '@internal' annotation.", + "source": "generated" + }, + "6058": { + "body": "TypeScript reports: Specify the root directory of input files. Use to control the output directory structure with --outDir.", + "category": "Message", + "code": 6058, + "message": "Specify the root directory of input files. Use to control the output directory structure with --outDir.", + "source": "generated" + }, + "6059": { + "body": "TypeScript reports this error: File '{0}' is not under 'rootDir' '{1}'. 'rootDir' is expected to contain all source files.", + "category": "Error", + "code": 6059, + "message": "File '{0}' is not under 'rootDir' '{1}'. 'rootDir' is expected to contain all source files.", + "source": "generated" + }, + "6060": { + "body": "TypeScript reports: Specify the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix).", + "category": "Message", + "code": 6060, + "message": "Specify the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix).", + "source": "generated" + }, + "6061": { + "body": "TypeScript reports: NEWLINE", + "category": "Message", + "code": 6061, + "message": "NEWLINE", + "source": "generated" + }, + "6064": { + "body": "TypeScript reports this error: Option '{0}' can only be specified in 'tsconfig.json' file or set to 'null' on command line.", + "category": "Error", + "code": 6064, + "message": "Option '{0}' can only be specified in 'tsconfig.json' file or set to 'null' on command line.", + "source": "generated" + }, + "6065": { + "body": "TypeScript reports: Enables experimental support for ES7 decorators.", + "category": "Message", + "code": 6065, + "message": "Enables experimental support for ES7 decorators.", + "source": "generated" + }, + "6066": { + "body": "TypeScript reports: Enables experimental support for emitting type metadata for decorators.", + "category": "Message", + "code": 6066, + "message": "Enables experimental support for emitting type metadata for decorators.", + "source": "generated" + }, + "6070": { + "body": "TypeScript reports: Initializes a TypeScript project and creates a tsconfig.json file.", + "category": "Message", + "code": 6070, + "message": "Initializes a TypeScript project and creates a tsconfig.json file.", + "source": "generated" + }, + "6071": { + "body": "TypeScript reports: Successfully created a tsconfig.json file.", + "category": "Message", + "code": 6071, + "message": "Successfully created a tsconfig.json file.", + "source": "generated" + }, + "6072": { + "body": "TypeScript reports: Suppress excess property checks for object literals.", + "category": "Message", + "code": 6072, + "message": "Suppress excess property checks for object literals.", + "source": "generated" + }, + "6073": { + "body": "TypeScript reports: Stylize errors and messages using color and context (experimental).", + "category": "Message", + "code": 6073, + "message": "Stylize errors and messages using color and context (experimental).", + "source": "generated" + }, + "6074": { + "body": "TypeScript reports: Do not report errors on unused labels.", + "category": "Message", + "code": 6074, + "message": "Do not report errors on unused labels.", + "source": "generated" + }, + "6075": { + "body": "TypeScript reports: Report error when not all code paths in function return a value.", + "category": "Message", + "code": 6075, + "message": "Report error when not all code paths in function return a value.", + "source": "generated" + }, + "6076": { + "body": "TypeScript reports: Report errors for fallthrough cases in switch statement.", + "category": "Message", + "code": 6076, + "message": "Report errors for fallthrough cases in switch statement.", + "source": "generated" + }, + "6077": { + "body": "TypeScript reports: Do not report errors on unreachable code.", + "category": "Message", + "code": 6077, + "message": "Do not report errors on unreachable code.", + "source": "generated" + }, + "6078": { + "body": "TypeScript reports: Disallow inconsistently-cased references to the same file.", + "category": "Message", + "code": 6078, + "message": "Disallow inconsistently-cased references to the same file.", + "source": "generated" + }, + "6079": { + "body": "TypeScript reports: Specify library files to be included in the compilation.", + "category": "Message", + "code": 6079, + "message": "Specify library files to be included in the compilation.", + "source": "generated" + }, + "6080": { + "body": "TypeScript reports: Specify JSX code generation.", + "category": "Message", + "code": 6080, + "message": "Specify JSX code generation.", + "source": "generated" + }, + "6082": { + "body": "TypeScript reports this error: Only 'amd' and 'system' modules are supported alongside --{0}.", + "category": "Error", + "code": 6082, + "message": "Only 'amd' and 'system' modules are supported alongside --{0}.", + "source": "generated" + }, + "6083": { + "body": "TypeScript reports: Base directory to resolve non-absolute module names.", + "category": "Message", + "code": 6083, + "message": "Base directory to resolve non-absolute module names.", + "source": "generated" + }, + "6084": { + "body": "TypeScript reports: [Deprecated] Use '--jsxFactory' instead. Specify the object invoked for createElement when targeting 'react' JSX emit", + "category": "Message", + "code": 6084, + "message": "[Deprecated] Use '--jsxFactory' instead. Specify the object invoked for createElement when targeting 'react' JSX emit", + "source": "generated" + }, + "6085": { + "body": "TypeScript reports: Enable tracing of the name resolution process.", + "category": "Message", + "code": 6085, + "message": "Enable tracing of the name resolution process.", + "source": "generated" + }, + "6086": { + "body": "TypeScript reports: ======== Resolving module '{0}' from '{1}'. ========", + "category": "Message", + "code": 6086, + "message": "======== Resolving module '{0}' from '{1}'. ========", + "source": "generated" + }, + "6087": { + "body": "TypeScript reports: Explicitly specified module resolution kind: '{0}'.", + "category": "Message", + "code": 6087, + "message": "Explicitly specified module resolution kind: '{0}'.", + "source": "generated" + }, + "6088": { + "body": "TypeScript reports: Module resolution kind is not specified, using '{0}'.", + "category": "Message", + "code": 6088, + "message": "Module resolution kind is not specified, using '{0}'.", + "source": "generated" + }, + "6089": { + "body": "TypeScript reports: ======== Module name '{0}' was successfully resolved to '{1}'. ========", + "category": "Message", + "code": 6089, + "message": "======== Module name '{0}' was successfully resolved to '{1}'. ========", + "source": "generated" + }, + "6090": { + "body": "TypeScript reports: ======== Module name '{0}' was not resolved. ========", + "category": "Message", + "code": 6090, + "message": "======== Module name '{0}' was not resolved. ========", + "source": "generated" + }, + "6091": { + "body": "TypeScript reports: 'paths' option is specified, looking for a pattern to match module name '{0}'.", + "category": "Message", + "code": 6091, + "message": "'paths' option is specified, looking for a pattern to match module name '{0}'.", + "source": "generated" + }, + "6092": { + "body": "TypeScript reports: Module name '{0}', matched pattern '{1}'.", + "category": "Message", + "code": 6092, + "message": "Module name '{0}', matched pattern '{1}'.", + "source": "generated" + }, + "6093": { + "body": "TypeScript reports: Trying substitution '{0}', candidate module location: '{1}'.", + "category": "Message", + "code": 6093, + "message": "Trying substitution '{0}', candidate module location: '{1}'.", + "source": "generated" + }, + "6094": { + "body": "TypeScript reports: Resolving module name '{0}' relative to base url '{1}' - '{2}'.", + "category": "Message", + "code": 6094, + "message": "Resolving module name '{0}' relative to base url '{1}' - '{2}'.", + "source": "generated" + }, + "6095": { + "body": "TypeScript reports: Loading module as file / folder, candidate module location '{0}', target file types: {1}.", + "category": "Message", + "code": 6095, + "message": "Loading module as file / folder, candidate module location '{0}', target file types: {1}.", + "source": "generated" + }, + "6096": { + "body": "TypeScript reports: File '{0}' does not exist.", + "category": "Message", + "code": 6096, + "message": "File '{0}' does not exist.", + "source": "generated" + }, + "6097": { + "body": "TypeScript reports: File '{0}' exists - use it as a name resolution result.", + "category": "Message", + "code": 6097, + "message": "File '{0}' exists - use it as a name resolution result.", + "source": "generated" + }, + "6098": { + "body": "TypeScript reports: Loading module '{0}' from 'node_modules' folder, target file types: {1}.", + "category": "Message", + "code": 6098, + "message": "Loading module '{0}' from 'node_modules' folder, target file types: {1}.", + "source": "generated" + }, + "6099": { + "body": "TypeScript reports: Found 'package.json' at '{0}'.", + "category": "Message", + "code": 6099, + "message": "Found 'package.json' at '{0}'.", + "source": "generated" + }, + "6100": { + "body": "TypeScript reports: 'package.json' does not have a '{0}' field.", + "category": "Message", + "code": 6100, + "message": "'package.json' does not have a '{0}' field.", + "source": "generated" + }, + "6101": { + "body": "TypeScript reports: 'package.json' has '{0}' field '{1}' that references '{2}'.", + "category": "Message", + "code": 6101, + "message": "'package.json' has '{0}' field '{1}' that references '{2}'.", + "source": "generated" + }, + "6102": { + "body": "TypeScript reports: Allow javascript files to be compiled.", + "category": "Message", + "code": 6102, + "message": "Allow javascript files to be compiled.", + "source": "generated" + }, + "6104": { + "body": "TypeScript reports: Checking if '{0}' is the longest matching prefix for '{1}' - '{2}'.", + "category": "Message", + "code": 6104, + "message": "Checking if '{0}' is the longest matching prefix for '{1}' - '{2}'.", + "source": "generated" + }, + "6105": { + "body": "TypeScript reports: Expected type of '{0}' field in 'package.json' to be '{1}', got '{2}'.", + "category": "Message", + "code": 6105, + "message": "Expected type of '{0}' field in 'package.json' to be '{1}', got '{2}'.", + "source": "generated" + }, + "6106": { + "body": "TypeScript reports: 'baseUrl' option is set to '{0}', using this value to resolve non-relative module name '{1}'.", + "category": "Message", + "code": 6106, + "message": "'baseUrl' option is set to '{0}', using this value to resolve non-relative module name '{1}'.", + "source": "generated" + }, + "6107": { + "body": "TypeScript reports: 'rootDirs' option is set, using it to resolve relative module name '{0}'.", + "category": "Message", + "code": 6107, + "message": "'rootDirs' option is set, using it to resolve relative module name '{0}'.", + "source": "generated" + }, + "6108": { + "body": "TypeScript reports: Longest matching prefix for '{0}' is '{1}'.", + "category": "Message", + "code": 6108, + "message": "Longest matching prefix for '{0}' is '{1}'.", + "source": "generated" + }, + "6109": { + "body": "TypeScript reports: Loading '{0}' from the root dir '{1}', candidate location '{2}'.", + "category": "Message", + "code": 6109, + "message": "Loading '{0}' from the root dir '{1}', candidate location '{2}'.", + "source": "generated" + }, + "6110": { + "body": "TypeScript reports: Trying other entries in 'rootDirs'.", + "category": "Message", + "code": 6110, + "message": "Trying other entries in 'rootDirs'.", + "source": "generated" + }, + "6111": { + "body": "TypeScript reports: Module resolution using 'rootDirs' has failed.", + "category": "Message", + "code": 6111, + "message": "Module resolution using 'rootDirs' has failed.", + "source": "generated" + }, + "6112": { + "body": "TypeScript reports: Do not emit 'use strict' directives in module output.", + "category": "Message", + "code": 6112, + "message": "Do not emit 'use strict' directives in module output.", + "source": "generated" + }, + "6113": { + "body": "TypeScript reports: Enable strict null checks.", + "category": "Message", + "code": 6113, + "message": "Enable strict null checks.", + "source": "generated" + }, + "6114": { + "body": "TypeScript reports this error: Unknown option 'excludes'. Did you mean 'exclude'?", + "category": "Error", + "code": 6114, + "message": "Unknown option 'excludes'. Did you mean 'exclude'?", + "source": "generated" + }, + "6115": { + "body": "TypeScript reports: Raise error on 'this' expressions with an implied 'any' type.", + "category": "Message", + "code": 6115, + "message": "Raise error on 'this' expressions with an implied 'any' type.", + "source": "generated" + }, + "6116": { + "body": "TypeScript reports: ======== Resolving type reference directive '{0}', containing file '{1}', root directory '{2}'. ========", + "category": "Message", + "code": 6116, + "message": "======== Resolving type reference directive '{0}', containing file '{1}', root directory '{2}'. ========", + "source": "generated" + }, + "6119": { + "body": "TypeScript reports: ======== Type reference directive '{0}' was successfully resolved to '{1}', primary: {2}. ========", + "category": "Message", + "code": 6119, + "message": "======== Type reference directive '{0}' was successfully resolved to '{1}', primary: {2}. ========", + "source": "generated" + }, + "6120": { + "body": "TypeScript reports: ======== Type reference directive '{0}' was not resolved. ========", + "category": "Message", + "code": 6120, + "message": "======== Type reference directive '{0}' was not resolved. ========", + "source": "generated" + }, + "6121": { + "body": "TypeScript reports: Resolving with primary search path '{0}'.", + "category": "Message", + "code": 6121, + "message": "Resolving with primary search path '{0}'.", + "source": "generated" + }, + "6122": { + "body": "TypeScript reports: Root directory cannot be determined, skipping primary search paths.", + "category": "Message", + "code": 6122, + "message": "Root directory cannot be determined, skipping primary search paths.", + "source": "generated" + }, + "6123": { + "body": "TypeScript reports: ======== Resolving type reference directive '{0}', containing file '{1}', root directory not set. ========", + "category": "Message", + "code": 6123, + "message": "======== Resolving type reference directive '{0}', containing file '{1}', root directory not set. ========", + "source": "generated" + }, + "6124": { + "body": "TypeScript reports: Type declaration files to be included in compilation.", + "category": "Message", + "code": 6124, + "message": "Type declaration files to be included in compilation.", + "source": "generated" + }, + "6125": { + "body": "TypeScript reports: Looking up in 'node_modules' folder, initial location '{0}'.", + "category": "Message", + "code": 6125, + "message": "Looking up in 'node_modules' folder, initial location '{0}'.", + "source": "generated" + }, + "6126": { + "body": "TypeScript reports: Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder.", + "category": "Message", + "code": 6126, + "message": "Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder.", + "source": "generated" + }, + "6127": { + "body": "TypeScript reports: ======== Resolving type reference directive '{0}', containing file not set, root directory '{1}'. ========", + "category": "Message", + "code": 6127, + "message": "======== Resolving type reference directive '{0}', containing file not set, root directory '{1}'. ========", + "source": "generated" + }, + "6128": { + "body": "TypeScript reports: ======== Resolving type reference directive '{0}', containing file not set, root directory not set. ========", + "category": "Message", + "code": 6128, + "message": "======== Resolving type reference directive '{0}', containing file not set, root directory not set. ========", + "source": "generated" + }, + "6130": { + "body": "TypeScript reports: Resolving real path for '{0}', result '{1}'.", + "category": "Message", + "code": 6130, + "message": "Resolving real path for '{0}', result '{1}'.", + "source": "generated" + }, + "6131": { + "body": "TypeScript reports this error: Cannot compile modules using option '{0}' unless the '--module' flag is 'amd' or 'system'.", + "category": "Error", + "code": 6131, + "message": "Cannot compile modules using option '{0}' unless the '--module' flag is 'amd' or 'system'.", + "source": "generated" + }, + "6132": { + "body": "TypeScript reports: File name '{0}' has a '{1}' extension - stripping it.", + "category": "Message", + "code": 6132, + "message": "File name '{0}' has a '{1}' extension - stripping it.", + "source": "generated" + }, + "6133": { + "body": "I noticed that '{0}' has been declared, but it's never used in the code.", + "category": "Error", + "code": 6133, + "message": "'{0}' is declared but its value is never read.", + "source": "curated" + }, + "6134": { + "body": "TypeScript reports: Report errors on unused locals.", + "category": "Message", + "code": 6134, + "message": "Report errors on unused locals.", + "source": "generated" + }, + "6135": { + "body": "TypeScript reports: Report errors on unused parameters.", + "category": "Message", + "code": 6135, + "message": "Report errors on unused parameters.", + "source": "generated" + }, + "6136": { + "body": "TypeScript reports: The maximum dependency depth to search under node_modules and load JavaScript files.", + "category": "Message", + "code": 6136, + "message": "The maximum dependency depth to search under node_modules and load JavaScript files.", + "source": "generated" + }, + "6137": { + "body": "TypeScript reports this error: Cannot import type declaration files. Consider importing '{0}' instead of '{1}'.", + "category": "Error", + "code": 6137, + "message": "Cannot import type declaration files. Consider importing '{0}' instead of '{1}'.", + "source": "generated" + }, + "6138": { + "body": "TypeScript reports this error: Property '{0}' is declared but its value is never read.", + "category": "Error", + "code": 6138, + "message": "Property '{0}' is declared but its value is never read.", + "source": "generated" + }, + "6139": { + "body": "TypeScript reports: Import emit helpers from 'tslib'.", + "category": "Message", + "code": 6139, + "message": "Import emit helpers from 'tslib'.", + "source": "generated" + }, + "6140": { + "body": "TypeScript reports this error: Auto discovery for typings is enabled in project '{0}'. Running extra resolution pass for module '{1}' using cache location '{2}'.", + "category": "Error", + "code": 6140, + "message": "Auto discovery for typings is enabled in project '{0}'. Running extra resolution pass for module '{1}' using cache location '{2}'.", + "source": "generated" + }, + "6141": { + "body": "TypeScript reports: Parse in strict mode and emit \"use strict\" for each source file.", + "category": "Message", + "code": 6141, + "message": "Parse in strict mode and emit \"use strict\" for each source file.", + "source": "generated" + }, + "6142": { + "body": "You can't import `.jsx` or `.tsx` files until you set `jsx` in your `tsconfig.json`.", + "category": "Error", + "code": 6142, + "message": "Module '{0}' was resolved to '{1}', but '--jsx' is not set.", + "source": "curated" + }, + "6144": { + "body": "TypeScript reports: Module '{0}' was resolved as locally declared ambient module in file '{1}'.", + "category": "Message", + "code": 6144, + "message": "Module '{0}' was resolved as locally declared ambient module in file '{1}'.", + "source": "generated" + }, + "6146": { + "body": "TypeScript reports: Specify the JSX factory function to use when targeting 'react' JSX emit, e.g. 'React.createElement' or 'h'.", + "category": "Message", + "code": 6146, + "message": "Specify the JSX factory function to use when targeting 'react' JSX emit, e.g. 'React.createElement' or 'h'.", + "source": "generated" + }, + "6147": { + "body": "TypeScript reports: Resolution for module '{0}' was found in cache from location '{1}'.", + "category": "Message", + "code": 6147, + "message": "Resolution for module '{0}' was found in cache from location '{1}'.", + "source": "generated" + }, + "6148": { + "body": "TypeScript reports: Directory '{0}' does not exist, skipping all lookups in it.", + "category": "Message", + "code": 6148, + "message": "Directory '{0}' does not exist, skipping all lookups in it.", + "source": "generated" + }, + "6149": { + "body": "TypeScript reports: Show diagnostic information.", + "category": "Message", + "code": 6149, + "message": "Show diagnostic information.", + "source": "generated" + }, + "6150": { + "body": "TypeScript reports: Show verbose diagnostic information.", + "category": "Message", + "code": 6150, + "message": "Show verbose diagnostic information.", + "source": "generated" + }, + "6151": { + "body": "TypeScript reports: Emit a single file with source maps instead of having a separate file.", + "category": "Message", + "code": 6151, + "message": "Emit a single file with source maps instead of having a separate file.", + "source": "generated" + }, + "6152": { + "body": "TypeScript reports: Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set.", + "category": "Message", + "code": 6152, + "message": "Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set.", + "source": "generated" + }, + "6153": { + "body": "TypeScript reports: Transpile each file as a separate module (similar to 'ts.transpileModule').", + "category": "Message", + "code": 6153, + "message": "Transpile each file as a separate module (similar to 'ts.transpileModule').", + "source": "generated" + }, + "6154": { + "body": "TypeScript reports: Print names of generated files part of the compilation.", + "category": "Message", + "code": 6154, + "message": "Print names of generated files part of the compilation.", + "source": "generated" + }, + "6155": { + "body": "TypeScript reports: Print names of files part of the compilation.", + "category": "Message", + "code": 6155, + "message": "Print names of files part of the compilation.", + "source": "generated" + }, + "6156": { + "body": "TypeScript reports: The locale used when displaying messages to the user (e.g. 'en-us')", + "category": "Message", + "code": 6156, + "message": "The locale used when displaying messages to the user (e.g. 'en-us')", + "source": "generated" + }, + "6157": { + "body": "TypeScript reports: Do not generate custom helper functions like '__extends' in compiled output.", + "category": "Message", + "code": 6157, + "message": "Do not generate custom helper functions like '__extends' in compiled output.", + "source": "generated" + }, + "6158": { + "body": "TypeScript reports: Do not include the default library file (lib.d.ts).", + "category": "Message", + "code": 6158, + "message": "Do not include the default library file (lib.d.ts).", + "source": "generated" + }, + "6159": { + "body": "TypeScript reports: Do not add triple-slash references or imported modules to the list of compiled files.", + "category": "Message", + "code": 6159, + "message": "Do not add triple-slash references or imported modules to the list of compiled files.", + "source": "generated" + }, + "6160": { + "body": "TypeScript reports: [Deprecated] Use '--skipLibCheck' instead. Skip type checking of default library declaration files.", + "category": "Message", + "code": 6160, + "message": "[Deprecated] Use '--skipLibCheck' instead. Skip type checking of default library declaration files.", + "source": "generated" + }, + "6161": { + "body": "TypeScript reports: List of folders to include type definitions from.", + "category": "Message", + "code": 6161, + "message": "List of folders to include type definitions from.", + "source": "generated" + }, + "6162": { + "body": "TypeScript reports: Disable size limitations on JavaScript projects.", + "category": "Message", + "code": 6162, + "message": "Disable size limitations on JavaScript projects.", + "source": "generated" + }, + "6163": { + "body": "TypeScript reports: The character set of the input files.", + "category": "Message", + "code": 6163, + "message": "The character set of the input files.", + "source": "generated" + }, + "6164": { + "body": "TypeScript reports: Skipping module '{0}' that looks like an absolute URI, target file types: {1}.", + "category": "Message", + "code": 6164, + "message": "Skipping module '{0}' that looks like an absolute URI, target file types: {1}.", + "source": "generated" + }, + "6165": { + "body": "TypeScript reports: Do not truncate error messages.", + "category": "Message", + "code": 6165, + "message": "Do not truncate error messages.", + "source": "generated" + }, + "6166": { + "body": "TypeScript reports: Output directory for generated declaration files.", + "category": "Message", + "code": 6166, + "message": "Output directory for generated declaration files.", + "source": "generated" + }, + "6167": { + "body": "TypeScript reports: A series of entries which re-map imports to lookup locations relative to the 'baseUrl'.", + "category": "Message", + "code": 6167, + "message": "A series of entries which re-map imports to lookup locations relative to the 'baseUrl'.", + "source": "generated" + }, + "6168": { + "body": "TypeScript reports: List of root folders whose combined content represents the structure of the project at runtime.", + "category": "Message", + "code": 6168, + "message": "List of root folders whose combined content represents the structure of the project at runtime.", + "source": "generated" + }, + "6169": { + "body": "TypeScript reports: Show all compiler options.", + "category": "Message", + "code": 6169, + "message": "Show all compiler options.", + "source": "generated" + }, + "6170": { + "body": "TypeScript reports: [Deprecated] Use '--outFile' instead. Concatenate and emit output to single file", + "category": "Message", + "code": 6170, + "message": "[Deprecated] Use '--outFile' instead. Concatenate and emit output to single file", + "source": "generated" + }, + "6171": { + "body": "TypeScript reports: Command-line Options", + "category": "Message", + "code": 6171, + "message": "Command-line Options", + "source": "generated" + }, + "6179": { + "body": "TypeScript reports: Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5'.", + "category": "Message", + "code": 6179, + "message": "Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5'.", + "source": "generated" + }, + "6180": { + "body": "TypeScript reports: Enable all strict type-checking options.", + "category": "Message", + "code": 6180, + "message": "Enable all strict type-checking options.", + "source": "generated" + }, + "6182": { + "body": "TypeScript reports: Scoped package detected, looking in '{0}'", + "category": "Message", + "code": 6182, + "message": "Scoped package detected, looking in '{0}'", + "source": "generated" + }, + "6183": { + "body": "TypeScript reports: Reusing resolution of module '{0}' from '{1}' of old program, it was successfully resolved to '{2}'.", + "category": "Message", + "code": 6183, + "message": "Reusing resolution of module '{0}' from '{1}' of old program, it was successfully resolved to '{2}'.", + "source": "generated" + }, + "6184": { + "body": "TypeScript reports: Reusing resolution of module '{0}' from '{1}' of old program, it was successfully resolved to '{2}' with Package ID '{3}'.", + "category": "Message", + "code": 6184, + "message": "Reusing resolution of module '{0}' from '{1}' of old program, it was successfully resolved to '{2}' with Package ID '{3}'.", + "source": "generated" + }, + "6186": { + "body": "TypeScript reports: Enable strict checking of function types.", + "category": "Message", + "code": 6186, + "message": "Enable strict checking of function types.", + "source": "generated" + }, + "6187": { + "body": "TypeScript reports: Enable strict checking of property initialization in classes.", + "category": "Message", + "code": 6187, + "message": "Enable strict checking of property initialization in classes.", + "source": "generated" + }, + "6188": { + "body": "TypeScript reports this error: Numeric separators are not allowed here.", + "category": "Error", + "code": 6188, + "message": "Numeric separators are not allowed here.", + "source": "generated" + }, + "6189": { + "body": "TypeScript reports this error: Multiple consecutive numeric separators are not permitted.", + "category": "Error", + "code": 6189, + "message": "Multiple consecutive numeric separators are not permitted.", + "source": "generated" + }, + "6191": { + "body": "TypeScript reports: Whether to keep outdated console output in watch mode instead of clearing the screen.", + "category": "Message", + "code": 6191, + "message": "Whether to keep outdated console output in watch mode instead of clearing the screen.", + "source": "generated" + }, + "6192": { + "body": "TypeScript reports this error: All imports in import declaration are unused.", + "category": "Error", + "code": 6192, + "message": "All imports in import declaration are unused.", + "source": "generated" + }, + "6193": { + "body": "TypeScript reports: Found 1 error. Watching for file changes.", + "category": "Message", + "code": 6193, + "message": "Found 1 error. Watching for file changes.", + "source": "generated" + }, + "6194": { + "body": "TypeScript reports: Found {0} errors. Watching for file changes.", + "category": "Message", + "code": 6194, + "message": "Found {0} errors. Watching for file changes.", + "source": "generated" + }, + "6195": { + "body": "TypeScript reports: Resolve 'keyof' to string valued property names only (no numbers or symbols).", + "category": "Message", + "code": 6195, + "message": "Resolve 'keyof' to string valued property names only (no numbers or symbols).", + "source": "generated" + }, + "6196": { + "body": "TypeScript reports this error: '{0}' is declared but never used.", + "category": "Error", + "code": 6196, + "message": "'{0}' is declared but never used.", + "source": "generated" + }, + "6197": { + "body": "TypeScript reports: Include modules imported with '.json' extension", + "category": "Message", + "code": 6197, + "message": "Include modules imported with '.json' extension", + "source": "generated" + }, + "6198": { + "body": "TypeScript reports this error: All destructured elements are unused.", + "category": "Error", + "code": 6198, + "message": "All destructured elements are unused.", + "source": "generated" + }, + "6199": { + "body": "TypeScript reports this error: All variables are unused.", + "category": "Error", + "code": 6199, + "message": "All variables are unused.", + "source": "generated" + }, + "6200": { + "body": "TypeScript reports this error: Definitions of the following identifiers conflict with those in another file: {0}", + "category": "Error", + "code": 6200, + "message": "Definitions of the following identifiers conflict with those in another file: {0}", + "source": "generated" + }, + "6201": { + "body": "TypeScript reports: Conflicts are in this file.", + "category": "Message", + "code": 6201, + "message": "Conflicts are in this file.", + "source": "generated" + }, + "6202": { + "body": "TypeScript reports this error: Project references may not form a circular graph. Cycle detected: {0}", + "category": "Error", + "code": 6202, + "message": "Project references may not form a circular graph. Cycle detected: {0}", + "source": "generated" + }, + "6203": { + "body": "TypeScript reports: '{0}' was also declared here.", + "category": "Message", + "code": 6203, + "message": "'{0}' was also declared here.", + "source": "generated" + }, + "6204": { + "body": "TypeScript reports: and here.", + "category": "Message", + "code": 6204, + "message": "and here.", + "source": "generated" + }, + "6205": { + "body": "TypeScript reports this error: All type parameters are unused.", + "category": "Error", + "code": 6205, + "message": "All type parameters are unused.", + "source": "generated" + }, + "6206": { + "body": "TypeScript reports: 'package.json' has a 'typesVersions' field with version-specific path mappings.", + "category": "Message", + "code": 6206, + "message": "'package.json' has a 'typesVersions' field with version-specific path mappings.", + "source": "generated" + }, + "6207": { + "body": "TypeScript reports: 'package.json' does not have a 'typesVersions' entry that matches version '{0}'.", + "category": "Message", + "code": 6207, + "message": "'package.json' does not have a 'typesVersions' entry that matches version '{0}'.", + "source": "generated" + }, + "6208": { + "body": "TypeScript reports: 'package.json' has a 'typesVersions' entry '{0}' that matches compiler version '{1}', looking for a pattern to match module name '{2}'.", + "category": "Message", + "code": 6208, + "message": "'package.json' has a 'typesVersions' entry '{0}' that matches compiler version '{1}', looking for a pattern to match module name '{2}'.", + "source": "generated" + }, + "6209": { + "body": "TypeScript reports: 'package.json' has a 'typesVersions' entry '{0}' that is not a valid semver range.", + "category": "Message", + "code": 6209, + "message": "'package.json' has a 'typesVersions' entry '{0}' that is not a valid semver range.", + "source": "generated" + }, + "6210": { + "body": "TypeScript reports: An argument for '{0}' was not provided.", + "category": "Message", + "code": 6210, + "message": "An argument for '{0}' was not provided.", + "source": "generated" + }, + "6211": { + "body": "TypeScript reports: An argument matching this binding pattern was not provided.", + "category": "Message", + "code": 6211, + "message": "An argument matching this binding pattern was not provided.", + "source": "generated" + }, + "6212": { + "body": "TypeScript reports: Did you mean to call this expression?", + "category": "Message", + "code": 6212, + "message": "Did you mean to call this expression?", + "source": "generated" + }, + "6213": { + "body": "TypeScript reports: Did you mean to use 'new' with this expression?", + "category": "Message", + "code": 6213, + "message": "Did you mean to use 'new' with this expression?", + "source": "generated" + }, + "6214": { + "body": "TypeScript reports: Enable strict 'bind', 'call', and 'apply' methods on functions.", + "category": "Message", + "code": 6214, + "message": "Enable strict 'bind', 'call', and 'apply' methods on functions.", + "source": "generated" + }, + "6215": { + "body": "TypeScript reports: Using compiler options of project reference redirect '{0}'.", + "category": "Message", + "code": 6215, + "message": "Using compiler options of project reference redirect '{0}'.", + "source": "generated" + }, + "6216": { + "body": "TypeScript reports: Found 1 error.", + "category": "Message", + "code": 6216, + "message": "Found 1 error.", + "source": "generated" + }, + "6217": { + "body": "TypeScript reports: Found {0} errors.", + "category": "Message", + "code": 6217, + "message": "Found {0} errors.", + "source": "generated" + }, + "6218": { + "body": "TypeScript reports: ======== Module name '{0}' was successfully resolved to '{1}' with Package ID '{2}'. ========", + "category": "Message", + "code": 6218, + "message": "======== Module name '{0}' was successfully resolved to '{1}' with Package ID '{2}'. ========", + "source": "generated" + }, + "6219": { + "body": "TypeScript reports: ======== Type reference directive '{0}' was successfully resolved to '{1}' with Package ID '{2}', primary: {3}. ========", + "category": "Message", + "code": 6219, + "message": "======== Type reference directive '{0}' was successfully resolved to '{1}' with Package ID '{2}', primary: {3}. ========", + "source": "generated" + }, + "6220": { + "body": "TypeScript reports: 'package.json' had a falsy '{0}' field.", + "category": "Message", + "code": 6220, + "message": "'package.json' had a falsy '{0}' field.", + "source": "generated" + }, + "6221": { + "body": "TypeScript reports: Disable use of source files instead of declaration files from referenced projects.", + "category": "Message", + "code": 6221, + "message": "Disable use of source files instead of declaration files from referenced projects.", + "source": "generated" + }, + "6222": { + "body": "TypeScript reports: Emit class fields with Define instead of Set.", + "category": "Message", + "code": 6222, + "message": "Emit class fields with Define instead of Set.", + "source": "generated" + }, + "6223": { + "body": "TypeScript reports: Generates a CPU profile.", + "category": "Message", + "code": 6223, + "message": "Generates a CPU profile.", + "source": "generated" + }, + "6224": { + "body": "TypeScript reports: Disable solution searching for this project.", + "category": "Message", + "code": 6224, + "message": "Disable solution searching for this project.", + "source": "generated" + }, + "6225": { + "body": "TypeScript reports: Specify strategy for watching file: 'FixedPollingInterval' (default), 'PriorityPollingInterval', 'DynamicPriorityPolling', 'FixedChunkSizePolling', 'UseFsEvents', 'UseFsEventsOnParentDirectory'.", + "category": "Message", + "code": 6225, + "message": "Specify strategy for watching file: 'FixedPollingInterval' (default), 'PriorityPollingInterval', 'DynamicPriorityPolling', 'FixedChunkSizePolling', 'UseFsEvents', 'UseFsEventsOnParentDirectory'.", + "source": "generated" + }, + "6226": { + "body": "TypeScript reports: Specify strategy for watching directory on platforms that don't support recursive watching natively: 'UseFsEvents' (default), 'FixedPollingInterval', 'DynamicPriorityPolling', 'FixedChunkSizePolling'.", + "category": "Message", + "code": 6226, + "message": "Specify strategy for watching directory on platforms that don't support recursive watching natively: 'UseFsEvents' (default), 'FixedPollingInterval', 'DynamicPriorityPolling', 'FixedChunkSizePolling'.", + "source": "generated" + }, + "6227": { + "body": "TypeScript reports: Specify strategy for creating a polling watch when it fails to create using file system events: 'FixedInterval' (default), 'PriorityInterval', 'DynamicPriority', 'FixedChunkSize'.", + "category": "Message", + "code": 6227, + "message": "Specify strategy for creating a polling watch when it fails to create using file system events: 'FixedInterval' (default), 'PriorityInterval', 'DynamicPriority', 'FixedChunkSize'.", + "source": "generated" + }, + "6229": { + "body": "TypeScript reports this error: Tag '{0}' expects at least '{1}' arguments, but the JSX factory '{2}' provides at most '{3}'.", + "category": "Error", + "code": 6229, + "message": "Tag '{0}' expects at least '{1}' arguments, but the JSX factory '{2}' provides at most '{3}'.", + "source": "generated" + }, + "6230": { + "body": "TypeScript reports this error: Option '{0}' can only be specified in 'tsconfig.json' file or set to 'false' or 'null' on command line.", + "category": "Error", + "code": 6230, + "message": "Option '{0}' can only be specified in 'tsconfig.json' file or set to 'false' or 'null' on command line.", + "source": "generated" + }, + "6231": { + "body": "TypeScript reports this error: Could not resolve the path '{0}' with the extensions: {1}.", + "category": "Error", + "code": 6231, + "message": "Could not resolve the path '{0}' with the extensions: {1}.", + "source": "generated" + }, + "6232": { + "body": "TypeScript reports this error: Declaration augments declaration in another file. This cannot be serialized.", + "category": "Error", + "code": 6232, + "message": "Declaration augments declaration in another file. This cannot be serialized.", + "source": "generated" + }, + "6233": { + "body": "TypeScript reports this error: This is the declaration being augmented. Consider moving the augmenting declaration into the same file.", + "category": "Error", + "code": 6233, + "message": "This is the declaration being augmented. Consider moving the augmenting declaration into the same file.", + "source": "generated" + }, + "6234": { + "body": "TypeScript reports this error: This expression is not callable because it is a 'get' accessor. Did you mean to use it without '()'?", + "category": "Error", + "code": 6234, + "message": "This expression is not callable because it is a 'get' accessor. Did you mean to use it without '()'?", + "source": "generated" + }, + "6235": { + "body": "TypeScript reports: Disable loading referenced projects.", + "category": "Message", + "code": 6235, + "message": "Disable loading referenced projects.", + "source": "generated" + }, + "6236": { + "body": "TypeScript reports this error: Arguments for the rest parameter '{0}' were not provided.", + "category": "Error", + "code": 6236, + "message": "Arguments for the rest parameter '{0}' were not provided.", + "source": "generated" + }, + "6237": { + "body": "TypeScript reports: Generates an event trace and a list of types.", + "category": "Message", + "code": 6237, + "message": "Generates an event trace and a list of types.", + "source": "generated" + }, + "6238": { + "body": "TypeScript reports this error: Specify the module specifier to be used to import the 'jsx' and 'jsxs' factory functions from. eg, react", + "category": "Error", + "code": 6238, + "message": "Specify the module specifier to be used to import the 'jsx' and 'jsxs' factory functions from. eg, react", + "source": "generated" + }, + "6239": { + "body": "TypeScript reports: File '{0}' exists according to earlier cached lookups.", + "category": "Message", + "code": 6239, + "message": "File '{0}' exists according to earlier cached lookups.", + "source": "generated" + }, + "6240": { + "body": "TypeScript reports: File '{0}' does not exist according to earlier cached lookups.", + "category": "Message", + "code": 6240, + "message": "File '{0}' does not exist according to earlier cached lookups.", + "source": "generated" + }, + "6241": { + "body": "TypeScript reports: Resolution for type reference directive '{0}' was found in cache from location '{1}'.", + "category": "Message", + "code": 6241, + "message": "Resolution for type reference directive '{0}' was found in cache from location '{1}'.", + "source": "generated" + }, + "6242": { + "body": "TypeScript reports: ======== Resolving type reference directive '{0}', containing file '{1}'. ========", + "category": "Message", + "code": 6242, + "message": "======== Resolving type reference directive '{0}', containing file '{1}'. ========", + "source": "generated" + }, + "6243": { + "body": "TypeScript reports: Interpret optional property types as written, rather than adding 'undefined'.", + "category": "Message", + "code": 6243, + "message": "Interpret optional property types as written, rather than adding 'undefined'.", + "source": "generated" + }, + "6244": { + "body": "TypeScript reports: Modules", + "category": "Message", + "code": 6244, + "message": "Modules", + "source": "generated" + }, + "6245": { + "body": "TypeScript reports: File Management", + "category": "Message", + "code": 6245, + "message": "File Management", + "source": "generated" + }, + "6246": { + "body": "TypeScript reports: Emit", + "category": "Message", + "code": 6246, + "message": "Emit", + "source": "generated" + }, + "6247": { + "body": "TypeScript reports: JavaScript Support", + "category": "Message", + "code": 6247, + "message": "JavaScript Support", + "source": "generated" + }, + "6248": { + "body": "TypeScript reports: Type Checking", + "category": "Message", + "code": 6248, + "message": "Type Checking", + "source": "generated" + }, + "6249": { + "body": "TypeScript reports: Editor Support", + "category": "Message", + "code": 6249, + "message": "Editor Support", + "source": "generated" + }, + "6250": { + "body": "TypeScript reports: Watch and Build Modes", + "category": "Message", + "code": 6250, + "message": "Watch and Build Modes", + "source": "generated" + }, + "6251": { + "body": "TypeScript reports: Compiler Diagnostics", + "category": "Message", + "code": 6251, + "message": "Compiler Diagnostics", + "source": "generated" + }, + "6252": { + "body": "TypeScript reports: Interop Constraints", + "category": "Message", + "code": 6252, + "message": "Interop Constraints", + "source": "generated" + }, + "6253": { + "body": "TypeScript reports: Backwards Compatibility", + "category": "Message", + "code": 6253, + "message": "Backwards Compatibility", + "source": "generated" + }, + "6254": { + "body": "TypeScript reports: Language and Environment", + "category": "Message", + "code": 6254, + "message": "Language and Environment", + "source": "generated" + }, + "6255": { + "body": "TypeScript reports: Projects", + "category": "Message", + "code": 6255, + "message": "Projects", + "source": "generated" + }, + "6256": { + "body": "TypeScript reports: Output Formatting", + "category": "Message", + "code": 6256, + "message": "Output Formatting", + "source": "generated" + }, + "6257": { + "body": "TypeScript reports: Completeness", + "category": "Message", + "code": 6257, + "message": "Completeness", + "source": "generated" + }, + "6258": { + "body": "TypeScript reports this error: '{0}' should be set inside the 'compilerOptions' object of the config json file", + "category": "Error", + "code": 6258, + "message": "'{0}' should be set inside the 'compilerOptions' object of the config json file", + "source": "generated" + }, + "6259": { + "body": "TypeScript reports: Found 1 error in {0}", + "category": "Message", + "code": 6259, + "message": "Found 1 error in {0}", + "source": "generated" + }, + "6260": { + "body": "TypeScript reports: Found {0} errors in the same file, starting at: {1}", + "category": "Message", + "code": 6260, + "message": "Found {0} errors in the same file, starting at: {1}", + "source": "generated" + }, + "6261": { + "body": "TypeScript reports: Found {0} errors in {1} files.", + "category": "Message", + "code": 6261, + "message": "Found {0} errors in {1} files.", + "source": "generated" + }, + "6262": { + "body": "TypeScript reports: File name '{0}' has a '{1}' extension - looking up '{2}' instead.", + "category": "Message", + "code": 6262, + "message": "File name '{0}' has a '{1}' extension - looking up '{2}' instead.", + "source": "generated" + }, + "6263": { + "body": "TypeScript reports this error: Module '{0}' was resolved to '{1}', but '--allowArbitraryExtensions' is not set.", + "category": "Error", + "code": 6263, + "message": "Module '{0}' was resolved to '{1}', but '--allowArbitraryExtensions' is not set.", + "source": "generated" + }, + "6264": { + "body": "TypeScript reports: Enable importing files with any extension, provided a declaration file is present.", + "category": "Message", + "code": 6264, + "message": "Enable importing files with any extension, provided a declaration file is present.", + "source": "generated" + }, + "6265": { + "body": "TypeScript reports: Resolving type reference directive for program that specifies custom typeRoots, skipping lookup in 'node_modules' folder.", + "category": "Message", + "code": 6265, + "message": "Resolving type reference directive for program that specifies custom typeRoots, skipping lookup in 'node_modules' folder.", + "source": "generated" + }, + "6266": { + "body": "TypeScript reports this error: Option '{0}' can only be specified on command line.", + "category": "Error", + "code": 6266, + "message": "Option '{0}' can only be specified on command line.", + "source": "generated" + }, + "6270": { + "body": "TypeScript reports: Directory '{0}' has no containing package.json scope. Imports will not resolve.", + "category": "Message", + "code": 6270, + "message": "Directory '{0}' has no containing package.json scope. Imports will not resolve.", + "source": "generated" + }, + "6271": { + "body": "TypeScript reports: Import specifier '{0}' does not exist in package.json scope at path '{1}'.", + "category": "Message", + "code": 6271, + "message": "Import specifier '{0}' does not exist in package.json scope at path '{1}'.", + "source": "generated" + }, + "6272": { + "body": "TypeScript reports: Invalid import specifier '{0}' has no possible resolutions.", + "category": "Message", + "code": 6272, + "message": "Invalid import specifier '{0}' has no possible resolutions.", + "source": "generated" + }, + "6273": { + "body": "TypeScript reports: package.json scope '{0}' has no imports defined.", + "category": "Message", + "code": 6273, + "message": "package.json scope '{0}' has no imports defined.", + "source": "generated" + }, + "6274": { + "body": "TypeScript reports: package.json scope '{0}' explicitly maps specifier '{1}' to null.", + "category": "Message", + "code": 6274, + "message": "package.json scope '{0}' explicitly maps specifier '{1}' to null.", + "source": "generated" + }, + "6275": { + "body": "TypeScript reports: package.json scope '{0}' has invalid type for target of specifier '{1}'", + "category": "Message", + "code": 6275, + "message": "package.json scope '{0}' has invalid type for target of specifier '{1}'", + "source": "generated" + }, + "6276": { + "body": "TypeScript reports: Export specifier '{0}' does not exist in package.json scope at path '{1}'.", + "category": "Message", + "code": 6276, + "message": "Export specifier '{0}' does not exist in package.json scope at path '{1}'.", + "source": "generated" + }, + "6277": { + "body": "TypeScript reports: Resolution of non-relative name failed; trying with modern Node resolution features disabled to see if npm library needs configuration update.", + "category": "Message", + "code": 6277, + "message": "Resolution of non-relative name failed; trying with modern Node resolution features disabled to see if npm library needs configuration update.", + "source": "generated" + }, + "6278": { + "body": "TypeScript reports: There are types at '{0}', but this result could not be resolved when respecting package.json \"exports\". The '{1}' library may need to update its package.json or typings.", + "category": "Message", + "code": 6278, + "message": "There are types at '{0}', but this result could not be resolved when respecting package.json \"exports\". The '{1}' library may need to update its package.json or typings.", + "source": "generated" + }, + "6279": { + "body": "TypeScript reports: Resolution of non-relative name failed; trying with '--moduleResolution bundler' to see if project may need configuration update.", + "category": "Message", + "code": 6279, + "message": "Resolution of non-relative name failed; trying with '--moduleResolution bundler' to see if project may need configuration update.", + "source": "generated" + }, + "6280": { + "body": "TypeScript reports: There are types at '{0}', but this result could not be resolved under your current 'moduleResolution' setting. Consider updating to 'node16', 'nodenext', or 'bundler'.", + "category": "Message", + "code": 6280, + "message": "There are types at '{0}', but this result could not be resolved under your current 'moduleResolution' setting. Consider updating to 'node16', 'nodenext', or 'bundler'.", + "source": "generated" + }, + "6281": { + "body": "TypeScript reports: 'package.json' has a 'peerDependencies' field.", + "category": "Message", + "code": 6281, + "message": "'package.json' has a 'peerDependencies' field.", + "source": "generated" + }, + "6282": { + "body": "TypeScript reports: Found peerDependency '{0}' with '{1}' version.", + "category": "Message", + "code": 6282, + "message": "Found peerDependency '{0}' with '{1}' version.", + "source": "generated" + }, + "6283": { + "body": "TypeScript reports: Failed to find peerDependency '{0}'.", + "category": "Message", + "code": 6283, + "message": "Failed to find peerDependency '{0}'.", + "source": "generated" + }, + "6284": { + "body": "TypeScript reports: File Layout", + "category": "Message", + "code": 6284, + "message": "File Layout", + "source": "generated" + }, + "6285": { + "body": "TypeScript reports: Environment Settings", + "category": "Message", + "code": 6285, + "message": "Environment Settings", + "source": "generated" + }, + "6286": { + "body": "TypeScript reports: See also https://aka.ms/tsconfig/module", + "category": "Message", + "code": 6286, + "message": "See also https://aka.ms/tsconfig/module", + "source": "generated" + }, + "6287": { + "body": "TypeScript reports: For nodejs:", + "category": "Message", + "code": 6287, + "message": "For nodejs:", + "source": "generated" + }, + "6290": { + "body": "TypeScript reports: and npm install -D @types/node", + "category": "Message", + "code": 6290, + "message": "and npm install -D @types/node", + "source": "generated" + }, + "6291": { + "body": "TypeScript reports: Other Outputs", + "category": "Message", + "code": 6291, + "message": "Other Outputs", + "source": "generated" + }, + "6292": { + "body": "TypeScript reports: Stricter Typechecking Options", + "category": "Message", + "code": 6292, + "message": "Stricter Typechecking Options", + "source": "generated" + }, + "6293": { + "body": "TypeScript reports: Style Options", + "category": "Message", + "code": 6293, + "message": "Style Options", + "source": "generated" + }, + "6294": { + "body": "TypeScript reports: Recommended Options", + "category": "Message", + "code": 6294, + "message": "Recommended Options", + "source": "generated" + }, + "6302": { + "body": "TypeScript reports: Enable project compilation", + "category": "Message", + "code": 6302, + "message": "Enable project compilation", + "source": "generated" + }, + "6304": { + "body": "TypeScript reports this error: Composite projects may not disable declaration emit.", + "category": "Error", + "code": 6304, + "message": "Composite projects may not disable declaration emit.", + "source": "generated" + }, + "6305": { + "body": "TypeScript reports this error: Output file '{0}' has not been built from source file '{1}'.", + "category": "Error", + "code": 6305, + "message": "Output file '{0}' has not been built from source file '{1}'.", + "source": "generated" + }, + "6306": { + "body": "TypeScript reports this error: Referenced project '{0}' must have setting \"composite\": true.", + "category": "Error", + "code": 6306, + "message": "Referenced project '{0}' must have setting \"composite\": true.", + "source": "generated" + }, + "6307": { + "body": "TypeScript reports this error: File '{0}' is not listed within the file list of project '{1}'. Projects must list all files or use an 'include' pattern.", + "category": "Error", + "code": 6307, + "message": "File '{0}' is not listed within the file list of project '{1}'. Projects must list all files or use an 'include' pattern.", + "source": "generated" + }, + "6310": { + "body": "TypeScript reports this error: Referenced project '{0}' may not disable emit.", + "category": "Error", + "code": 6310, + "message": "Referenced project '{0}' may not disable emit.", + "source": "generated" + }, + "6350": { + "body": "TypeScript reports: Project '{0}' is out of date because output '{1}' is older than input '{2}'", + "category": "Message", + "code": 6350, + "message": "Project '{0}' is out of date because output '{1}' is older than input '{2}'", + "source": "generated" + }, + "6351": { + "body": "TypeScript reports: Project '{0}' is up to date because newest input '{1}' is older than output '{2}'", + "category": "Message", + "code": 6351, + "message": "Project '{0}' is up to date because newest input '{1}' is older than output '{2}'", + "source": "generated" + }, + "6352": { + "body": "TypeScript reports: Project '{0}' is out of date because output file '{1}' does not exist", + "category": "Message", + "code": 6352, + "message": "Project '{0}' is out of date because output file '{1}' does not exist", + "source": "generated" + }, + "6353": { + "body": "TypeScript reports: Project '{0}' is out of date because its dependency '{1}' is out of date", + "category": "Message", + "code": 6353, + "message": "Project '{0}' is out of date because its dependency '{1}' is out of date", + "source": "generated" + }, + "6354": { + "body": "TypeScript reports: Project '{0}' is up to date with .d.ts files from its dependencies", + "category": "Message", + "code": 6354, + "message": "Project '{0}' is up to date with .d.ts files from its dependencies", + "source": "generated" + }, + "6355": { + "body": "TypeScript reports: Projects in this build: {0}", + "category": "Message", + "code": 6355, + "message": "Projects in this build: {0}", + "source": "generated" + }, + "6356": { + "body": "TypeScript reports: A non-dry build would delete the following files: {0}", + "category": "Message", + "code": 6356, + "message": "A non-dry build would delete the following files: {0}", + "source": "generated" + }, + "6357": { + "body": "TypeScript reports: A non-dry build would build project '{0}'", + "category": "Message", + "code": 6357, + "message": "A non-dry build would build project '{0}'", + "source": "generated" + }, + "6358": { + "body": "TypeScript reports: Building project '{0}'...", + "category": "Message", + "code": 6358, + "message": "Building project '{0}'...", + "source": "generated" + }, + "6359": { + "body": "TypeScript reports: Updating output timestamps of project '{0}'...", + "category": "Message", + "code": 6359, + "message": "Updating output timestamps of project '{0}'...", + "source": "generated" + }, + "6361": { + "body": "TypeScript reports: Project '{0}' is up to date", + "category": "Message", + "code": 6361, + "message": "Project '{0}' is up to date", + "source": "generated" + }, + "6362": { + "body": "TypeScript reports: Skipping build of project '{0}' because its dependency '{1}' has errors", + "category": "Message", + "code": 6362, + "message": "Skipping build of project '{0}' because its dependency '{1}' has errors", + "source": "generated" + }, + "6363": { + "body": "TypeScript reports: Project '{0}' can't be built because its dependency '{1}' has errors", + "category": "Message", + "code": 6363, + "message": "Project '{0}' can't be built because its dependency '{1}' has errors", + "source": "generated" + }, + "6364": { + "body": "TypeScript reports: Build one or more projects and their dependencies, if out of date", + "category": "Message", + "code": 6364, + "message": "Build one or more projects and their dependencies, if out of date", + "source": "generated" + }, + "6365": { + "body": "TypeScript reports: Delete the outputs of all projects.", + "category": "Message", + "code": 6365, + "message": "Delete the outputs of all projects.", + "source": "generated" + }, + "6367": { + "body": "TypeScript reports: Show what would be built (or deleted, if specified with '--clean')", + "category": "Message", + "code": 6367, + "message": "Show what would be built (or deleted, if specified with '--clean')", + "source": "generated" + }, + "6369": { + "body": "TypeScript reports this error: Option '--build' must be the first command line argument.", + "category": "Error", + "code": 6369, + "message": "Option '--build' must be the first command line argument.", + "source": "generated" + }, + "6370": { + "body": "TypeScript reports this error: Options '{0}' and '{1}' cannot be combined.", + "category": "Error", + "code": 6370, + "message": "Options '{0}' and '{1}' cannot be combined.", + "source": "generated" + }, + "6371": { + "body": "TypeScript reports: Updating unchanged output timestamps of project '{0}'...", + "category": "Message", + "code": 6371, + "message": "Updating unchanged output timestamps of project '{0}'...", + "source": "generated" + }, + "6374": { + "body": "TypeScript reports: A non-dry build would update timestamps for output of project '{0}'", + "category": "Message", + "code": 6374, + "message": "A non-dry build would update timestamps for output of project '{0}'", + "source": "generated" + }, + "6377": { + "body": "TypeScript reports this error: Cannot write file '{0}' because it will overwrite '.tsbuildinfo' file generated by referenced project '{1}'", + "category": "Error", + "code": 6377, + "message": "Cannot write file '{0}' because it will overwrite '.tsbuildinfo' file generated by referenced project '{1}'", + "source": "generated" + }, + "6379": { + "body": "TypeScript reports this error: Composite projects may not disable incremental compilation.", + "category": "Error", + "code": 6379, + "message": "Composite projects may not disable incremental compilation.", + "source": "generated" + }, + "6380": { + "body": "TypeScript reports: Specify file to store incremental compilation information", + "category": "Message", + "code": 6380, + "message": "Specify file to store incremental compilation information", + "source": "generated" + }, + "6381": { + "body": "TypeScript reports: Project '{0}' is out of date because output for it was generated with version '{1}' that differs with current version '{2}'", + "category": "Message", + "code": 6381, + "message": "Project '{0}' is out of date because output for it was generated with version '{1}' that differs with current version '{2}'", + "source": "generated" + }, + "6382": { + "body": "TypeScript reports: Skipping build of project '{0}' because its dependency '{1}' was not built", + "category": "Message", + "code": 6382, + "message": "Skipping build of project '{0}' because its dependency '{1}' was not built", + "source": "generated" + }, + "6383": { + "body": "TypeScript reports: Project '{0}' can't be built because its dependency '{1}' was not built", + "category": "Message", + "code": 6383, + "message": "Project '{0}' can't be built because its dependency '{1}' was not built", + "source": "generated" + }, + "6384": { + "body": "TypeScript reports: Have recompiles in '--incremental' and '--watch' assume that changes within a file will only affect files directly depending on it.", + "category": "Message", + "code": 6384, + "message": "Have recompiles in '--incremental' and '--watch' assume that changes within a file will only affect files directly depending on it.", + "source": "generated" + }, + "6385": { + "body": "TypeScript suggests: '{0}' is deprecated.", + "category": "Suggestion", + "code": 6385, + "message": "'{0}' is deprecated.", + "source": "generated" + }, + "6386": { + "body": "TypeScript reports: Performance timings for '--diagnostics' or '--extendedDiagnostics' are not available in this session. A native implementation of the Web Performance API could not be found.", + "category": "Message", + "code": 6386, + "message": "Performance timings for '--diagnostics' or '--extendedDiagnostics' are not available in this session. A native implementation of the Web Performance API could not be found.", + "source": "generated" + }, + "6387": { + "body": "TypeScript suggests: The signature '{0}' of '{1}' is deprecated.", + "category": "Suggestion", + "code": 6387, + "message": "The signature '{0}' of '{1}' is deprecated.", + "source": "generated" + }, + "6388": { + "body": "TypeScript reports: Project '{0}' is being forcibly rebuilt", + "category": "Message", + "code": 6388, + "message": "Project '{0}' is being forcibly rebuilt", + "source": "generated" + }, + "6389": { + "body": "TypeScript reports: Reusing resolution of module '{0}' from '{1}' of old program, it was not resolved.", + "category": "Message", + "code": 6389, + "message": "Reusing resolution of module '{0}' from '{1}' of old program, it was not resolved.", + "source": "generated" + }, + "6390": { + "body": "TypeScript reports: Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was successfully resolved to '{2}'.", + "category": "Message", + "code": 6390, + "message": "Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was successfully resolved to '{2}'.", + "source": "generated" + }, + "6391": { + "body": "TypeScript reports: Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was successfully resolved to '{2}' with Package ID '{3}'.", + "category": "Message", + "code": 6391, + "message": "Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was successfully resolved to '{2}' with Package ID '{3}'.", + "source": "generated" + }, + "6392": { + "body": "TypeScript reports: Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was not resolved.", + "category": "Message", + "code": 6392, + "message": "Reusing resolution of type reference directive '{0}' from '{1}' of old program, it was not resolved.", + "source": "generated" + }, + "6393": { + "body": "TypeScript reports: Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}'.", + "category": "Message", + "code": 6393, + "message": "Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}'.", + "source": "generated" + }, + "6394": { + "body": "TypeScript reports: Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}' with Package ID '{4}'.", + "category": "Message", + "code": 6394, + "message": "Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}' with Package ID '{4}'.", + "source": "generated" + }, + "6395": { + "body": "TypeScript reports: Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was not resolved.", + "category": "Message", + "code": 6395, + "message": "Reusing resolution of module '{0}' from '{1}' found in cache from location '{2}', it was not resolved.", + "source": "generated" + }, + "6396": { + "body": "TypeScript reports: Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}'.", + "category": "Message", + "code": 6396, + "message": "Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}'.", + "source": "generated" + }, + "6397": { + "body": "TypeScript reports: Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}' with Package ID '{4}'.", + "category": "Message", + "code": 6397, + "message": "Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was successfully resolved to '{3}' with Package ID '{4}'.", + "source": "generated" + }, + "6398": { + "body": "TypeScript reports: Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was not resolved.", + "category": "Message", + "code": 6398, + "message": "Reusing resolution of type reference directive '{0}' from '{1}' found in cache from location '{2}', it was not resolved.", + "source": "generated" + }, + "6399": { + "body": "TypeScript reports: Project '{0}' is out of date because buildinfo file '{1}' indicates that some of the changes were not emitted", + "category": "Message", + "code": 6399, + "message": "Project '{0}' is out of date because buildinfo file '{1}' indicates that some of the changes were not emitted", + "source": "generated" + }, + "6400": { + "body": "TypeScript reports: Project '{0}' is up to date but needs to update timestamps of output files that are older than input files", + "category": "Message", + "code": 6400, + "message": "Project '{0}' is up to date but needs to update timestamps of output files that are older than input files", + "source": "generated" + }, + "6401": { + "body": "TypeScript reports: Project '{0}' is out of date because there was error reading file '{1}'", + "category": "Message", + "code": 6401, + "message": "Project '{0}' is out of date because there was error reading file '{1}'", + "source": "generated" + }, + "6402": { + "body": "TypeScript reports: Resolving in {0} mode with conditions {1}.", + "category": "Message", + "code": 6402, + "message": "Resolving in {0} mode with conditions {1}.", + "source": "generated" + }, + "6403": { + "body": "TypeScript reports: Matched '{0}' condition '{1}'.", + "category": "Message", + "code": 6403, + "message": "Matched '{0}' condition '{1}'.", + "source": "generated" + }, + "6404": { + "body": "TypeScript reports: Using '{0}' subpath '{1}' with target '{2}'.", + "category": "Message", + "code": 6404, + "message": "Using '{0}' subpath '{1}' with target '{2}'.", + "source": "generated" + }, + "6405": { + "body": "TypeScript reports: Saw non-matching condition '{0}'.", + "category": "Message", + "code": 6405, + "message": "Saw non-matching condition '{0}'.", + "source": "generated" + }, + "6406": { + "body": "TypeScript reports: Project '{0}' is out of date because buildinfo file '{1}' indicates there is change in compilerOptions", + "category": "Message", + "code": 6406, + "message": "Project '{0}' is out of date because buildinfo file '{1}' indicates there is change in compilerOptions", + "source": "generated" + }, + "6407": { + "body": "TypeScript reports: Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set.", + "category": "Message", + "code": 6407, + "message": "Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set.", + "source": "generated" + }, + "6408": { + "body": "TypeScript reports: Use the package.json 'exports' field when resolving package imports.", + "category": "Message", + "code": 6408, + "message": "Use the package.json 'exports' field when resolving package imports.", + "source": "generated" + }, + "6409": { + "body": "TypeScript reports: Use the package.json 'imports' field when resolving imports.", + "category": "Message", + "code": 6409, + "message": "Use the package.json 'imports' field when resolving imports.", + "source": "generated" + }, + "6410": { + "body": "TypeScript reports: Conditions to set in addition to the resolver-specific defaults when resolving imports.", + "category": "Message", + "code": 6410, + "message": "Conditions to set in addition to the resolver-specific defaults when resolving imports.", + "source": "generated" + }, + "6411": { + "body": "TypeScript reports: `true` when 'moduleResolution' is 'node16', 'nodenext', or 'bundler'; otherwise `false`.", + "category": "Message", + "code": 6411, + "message": "`true` when 'moduleResolution' is 'node16', 'nodenext', or 'bundler'; otherwise `false`.", + "source": "generated" + }, + "6412": { + "body": "TypeScript reports: Project '{0}' is out of date because buildinfo file '{1}' indicates that file '{2}' was root file of compilation but not any more.", + "category": "Message", + "code": 6412, + "message": "Project '{0}' is out of date because buildinfo file '{1}' indicates that file '{2}' was root file of compilation but not any more.", + "source": "generated" + }, + "6413": { + "body": "TypeScript reports: Entering conditional exports.", + "category": "Message", + "code": 6413, + "message": "Entering conditional exports.", + "source": "generated" + }, + "6414": { + "body": "TypeScript reports: Resolved under condition '{0}'.", + "category": "Message", + "code": 6414, + "message": "Resolved under condition '{0}'.", + "source": "generated" + }, + "6415": { + "body": "TypeScript reports: Failed to resolve under condition '{0}'.", + "category": "Message", + "code": 6415, + "message": "Failed to resolve under condition '{0}'.", + "source": "generated" + }, + "6416": { + "body": "TypeScript reports: Exiting conditional exports.", + "category": "Message", + "code": 6416, + "message": "Exiting conditional exports.", + "source": "generated" + }, + "6417": { + "body": "TypeScript reports: Searching all ancestor node_modules directories for preferred extensions: {0}.", + "category": "Message", + "code": 6417, + "message": "Searching all ancestor node_modules directories for preferred extensions: {0}.", + "source": "generated" + }, + "6418": { + "body": "TypeScript reports: Searching all ancestor node_modules directories for fallback extensions: {0}.", + "category": "Message", + "code": 6418, + "message": "Searching all ancestor node_modules directories for fallback extensions: {0}.", + "source": "generated" + }, + "6419": { + "body": "TypeScript reports: Project '{0}' is out of date because buildinfo file '{1}' indicates that program needs to report errors.", + "category": "Message", + "code": 6419, + "message": "Project '{0}' is out of date because buildinfo file '{1}' indicates that program needs to report errors.", + "source": "generated" + }, + "6420": { + "body": "TypeScript reports: Project '{0}' is out of date because {1}.", + "category": "Message", + "code": 6420, + "message": "Project '{0}' is out of date because {1}.", + "source": "generated" + }, + "6421": { + "body": "TypeScript reports: Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files.", + "category": "Message", + "code": 6421, + "message": "Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files.", + "source": "generated" + }, + "6500": { + "body": "TypeScript reports: The expected type comes from property '{0}' which is declared here on type '{1}'", + "category": "Message", + "code": 6500, + "message": "The expected type comes from property '{0}' which is declared here on type '{1}'", + "source": "generated" + }, + "6501": { + "body": "TypeScript reports: The expected type comes from this index signature.", + "category": "Message", + "code": 6501, + "message": "The expected type comes from this index signature.", + "source": "generated" + }, + "6502": { + "body": "TypeScript reports: The expected type comes from the return type of this signature.", + "category": "Message", + "code": 6502, + "message": "The expected type comes from the return type of this signature.", + "source": "generated" + }, + "6503": { + "body": "TypeScript reports: Print names of files that are part of the compilation and then stop processing.", + "category": "Message", + "code": 6503, + "message": "Print names of files that are part of the compilation and then stop processing.", + "source": "generated" + }, + "6504": { + "body": "TypeScript reports this error: File '{0}' is a JavaScript file. Did you mean to enable the 'allowJs' option?", + "category": "Error", + "code": 6504, + "message": "File '{0}' is a JavaScript file. Did you mean to enable the 'allowJs' option?", + "source": "generated" + }, + "6505": { + "body": "TypeScript reports: Print names of files and the reason they are part of the compilation.", + "category": "Message", + "code": 6505, + "message": "Print names of files and the reason they are part of the compilation.", + "source": "generated" + }, + "6506": { + "body": "TypeScript reports: Consider adding a 'declare' modifier to this class.", + "category": "Message", + "code": 6506, + "message": "Consider adding a 'declare' modifier to this class.", + "source": "generated" + }, + "6600": { + "body": "TypeScript reports: Allow JavaScript files to be a part of your program. Use the 'checkJs' option to get errors from these files.", + "category": "Message", + "code": 6600, + "message": "Allow JavaScript files to be a part of your program. Use the 'checkJs' option to get errors from these files.", + "source": "generated" + }, + "6601": { + "body": "TypeScript reports: Allow 'import x from y' when a module doesn't have a default export.", + "category": "Message", + "code": 6601, + "message": "Allow 'import x from y' when a module doesn't have a default export.", + "source": "generated" + }, + "6602": { + "body": "TypeScript reports: Allow accessing UMD globals from modules.", + "category": "Message", + "code": 6602, + "message": "Allow accessing UMD globals from modules.", + "source": "generated" + }, + "6603": { + "body": "TypeScript reports: Disable error reporting for unreachable code.", + "category": "Message", + "code": 6603, + "message": "Disable error reporting for unreachable code.", + "source": "generated" + }, + "6604": { + "body": "TypeScript reports: Disable error reporting for unused labels.", + "category": "Message", + "code": 6604, + "message": "Disable error reporting for unused labels.", + "source": "generated" + }, + "6605": { + "body": "TypeScript reports: Ensure 'use strict' is always emitted.", + "category": "Message", + "code": 6605, + "message": "Ensure 'use strict' is always emitted.", + "source": "generated" + }, + "6606": { + "body": "TypeScript reports: Have recompiles in projects that use 'incremental' and 'watch' mode assume that changes within a file will only affect files directly depending on it.", + "category": "Message", + "code": 6606, + "message": "Have recompiles in projects that use 'incremental' and 'watch' mode assume that changes within a file will only affect files directly depending on it.", + "source": "generated" + }, + "6607": { + "body": "TypeScript reports: Specify the base directory to resolve non-relative module names.", + "category": "Message", + "code": 6607, + "message": "Specify the base directory to resolve non-relative module names.", + "source": "generated" + }, + "6608": { + "body": "TypeScript reports: No longer supported. In early versions, manually set the text encoding for reading files.", + "category": "Message", + "code": 6608, + "message": "No longer supported. In early versions, manually set the text encoding for reading files.", + "source": "generated" + }, + "6609": { + "body": "TypeScript reports: Enable error reporting in type-checked JavaScript files.", + "category": "Message", + "code": 6609, + "message": "Enable error reporting in type-checked JavaScript files.", + "source": "generated" + }, + "6611": { + "body": "TypeScript reports: Enable constraints that allow a TypeScript project to be used with project references.", + "category": "Message", + "code": 6611, + "message": "Enable constraints that allow a TypeScript project to be used with project references.", + "source": "generated" + }, + "6612": { + "body": "TypeScript reports: Generate .d.ts files from TypeScript and JavaScript files in your project.", + "category": "Message", + "code": 6612, + "message": "Generate .d.ts files from TypeScript and JavaScript files in your project.", + "source": "generated" + }, + "6613": { + "body": "TypeScript reports: Specify the output directory for generated declaration files.", + "category": "Message", + "code": 6613, + "message": "Specify the output directory for generated declaration files.", + "source": "generated" + }, + "6614": { + "body": "TypeScript reports: Create sourcemaps for d.ts files.", + "category": "Message", + "code": 6614, + "message": "Create sourcemaps for d.ts files.", + "source": "generated" + }, + "6615": { + "body": "TypeScript reports: Output compiler performance information after building.", + "category": "Message", + "code": 6615, + "message": "Output compiler performance information after building.", + "source": "generated" + }, + "6616": { + "body": "TypeScript reports: Disables inference for type acquisition by looking at filenames in a project.", + "category": "Message", + "code": 6616, + "message": "Disables inference for type acquisition by looking at filenames in a project.", + "source": "generated" + }, + "6617": { + "body": "TypeScript reports: Reduce the number of projects loaded automatically by TypeScript.", + "category": "Message", + "code": 6617, + "message": "Reduce the number of projects loaded automatically by TypeScript.", + "source": "generated" + }, + "6618": { + "body": "TypeScript reports: Remove the 20mb cap on total source code size for JavaScript files in the TypeScript language server.", + "category": "Message", + "code": 6618, + "message": "Remove the 20mb cap on total source code size for JavaScript files in the TypeScript language server.", + "source": "generated" + }, + "6619": { + "body": "TypeScript reports: Opt a project out of multi-project reference checking when editing.", + "category": "Message", + "code": 6619, + "message": "Opt a project out of multi-project reference checking when editing.", + "source": "generated" + }, + "6620": { + "body": "TypeScript reports: Disable preferring source files instead of declaration files when referencing composite projects.", + "category": "Message", + "code": 6620, + "message": "Disable preferring source files instead of declaration files when referencing composite projects.", + "source": "generated" + }, + "6621": { + "body": "TypeScript reports: Emit more compliant, but verbose and less performant JavaScript for iteration.", + "category": "Message", + "code": 6621, + "message": "Emit more compliant, but verbose and less performant JavaScript for iteration.", + "source": "generated" + }, + "6622": { + "body": "TypeScript reports: Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files.", + "category": "Message", + "code": 6622, + "message": "Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files.", + "source": "generated" + }, + "6623": { + "body": "TypeScript reports: Only output d.ts files and not JavaScript files.", + "category": "Message", + "code": 6623, + "message": "Only output d.ts files and not JavaScript files.", + "source": "generated" + }, + "6624": { + "body": "TypeScript reports: Emit design-type metadata for decorated declarations in source files.", + "category": "Message", + "code": 6624, + "message": "Emit design-type metadata for decorated declarations in source files.", + "source": "generated" + }, + "6625": { + "body": "TypeScript reports: Disable the type acquisition for JavaScript projects", + "category": "Message", + "code": 6625, + "message": "Disable the type acquisition for JavaScript projects", + "source": "generated" + }, + "6626": { + "body": "TypeScript reports: Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility.", + "category": "Message", + "code": 6626, + "message": "Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility.", + "source": "generated" + }, + "6627": { + "body": "TypeScript reports: Filters results from the `include` option.", + "category": "Message", + "code": 6627, + "message": "Filters results from the `include` option.", + "source": "generated" + }, + "6628": { + "body": "TypeScript reports: Remove a list of directories from the watch process.", + "category": "Message", + "code": 6628, + "message": "Remove a list of directories from the watch process.", + "source": "generated" + }, + "6629": { + "body": "TypeScript reports: Remove a list of files from the watch mode's processing.", + "category": "Message", + "code": 6629, + "message": "Remove a list of files from the watch mode's processing.", + "source": "generated" + }, + "6630": { + "body": "TypeScript reports: Enable experimental support for legacy experimental decorators.", + "category": "Message", + "code": 6630, + "message": "Enable experimental support for legacy experimental decorators.", + "source": "generated" + }, + "6631": { + "body": "TypeScript reports: Print files read during the compilation including why it was included.", + "category": "Message", + "code": 6631, + "message": "Print files read during the compilation including why it was included.", + "source": "generated" + }, + "6632": { + "body": "TypeScript reports: Output more detailed compiler performance information after building.", + "category": "Message", + "code": 6632, + "message": "Output more detailed compiler performance information after building.", + "source": "generated" + }, + "6633": { + "body": "TypeScript reports: Specify one or more path or node module references to base configuration files from which settings are inherited.", + "category": "Message", + "code": 6633, + "message": "Specify one or more path or node module references to base configuration files from which settings are inherited.", + "source": "generated" + }, + "6634": { + "body": "TypeScript reports: Specify what approach the watcher should use if the system runs out of native file watchers.", + "category": "Message", + "code": 6634, + "message": "Specify what approach the watcher should use if the system runs out of native file watchers.", + "source": "generated" + }, + "6635": { + "body": "TypeScript reports: Include a list of files. This does not support glob patterns, as opposed to `include`.", + "category": "Message", + "code": 6635, + "message": "Include a list of files. This does not support glob patterns, as opposed to `include`.", + "source": "generated" + }, + "6636": { + "body": "TypeScript reports: Build all projects, including those that appear to be up to date.", + "category": "Message", + "code": 6636, + "message": "Build all projects, including those that appear to be up to date.", + "source": "generated" + }, + "6637": { + "body": "TypeScript reports: Ensure that casing is correct in imports.", + "category": "Message", + "code": 6637, + "message": "Ensure that casing is correct in imports.", + "source": "generated" + }, + "6638": { + "body": "TypeScript reports: Emit a v8 CPU profile of the compiler run for debugging.", + "category": "Message", + "code": 6638, + "message": "Emit a v8 CPU profile of the compiler run for debugging.", + "source": "generated" + }, + "6639": { + "body": "TypeScript reports: Allow importing helper functions from tslib once per project, instead of including them per-file.", + "category": "Message", + "code": 6639, + "message": "Allow importing helper functions from tslib once per project, instead of including them per-file.", + "source": "generated" + }, + "6640": { + "body": "TypeScript reports: Skip building downstream projects on error in upstream project.", + "category": "Message", + "code": 6640, + "message": "Skip building downstream projects on error in upstream project.", + "source": "generated" + }, + "6641": { + "body": "TypeScript reports: Specify a list of glob patterns that match files to be included in compilation.", + "category": "Message", + "code": 6641, + "message": "Specify a list of glob patterns that match files to be included in compilation.", + "source": "generated" + }, + "6642": { + "body": "TypeScript reports: Save .tsbuildinfo files to allow for incremental compilation of projects.", + "category": "Message", + "code": 6642, + "message": "Save .tsbuildinfo files to allow for incremental compilation of projects.", + "source": "generated" + }, + "6643": { + "body": "TypeScript reports: Include sourcemap files inside the emitted JavaScript.", + "category": "Message", + "code": 6643, + "message": "Include sourcemap files inside the emitted JavaScript.", + "source": "generated" + }, + "6644": { + "body": "TypeScript reports: Include source code in the sourcemaps inside the emitted JavaScript.", + "category": "Message", + "code": 6644, + "message": "Include source code in the sourcemaps inside the emitted JavaScript.", + "source": "generated" + }, + "6645": { + "body": "TypeScript reports: Ensure that each file can be safely transpiled without relying on other imports.", + "category": "Message", + "code": 6645, + "message": "Ensure that each file can be safely transpiled without relying on other imports.", + "source": "generated" + }, + "6646": { + "body": "TypeScript reports: Specify what JSX code is generated.", + "category": "Message", + "code": 6646, + "message": "Specify what JSX code is generated.", + "source": "generated" + }, + "6647": { + "body": "TypeScript reports: Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'.", + "category": "Message", + "code": 6647, + "message": "Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'.", + "source": "generated" + }, + "6648": { + "body": "TypeScript reports: Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'.", + "category": "Message", + "code": 6648, + "message": "Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'.", + "source": "generated" + }, + "6649": { + "body": "TypeScript reports: Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'.", + "category": "Message", + "code": 6649, + "message": "Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'.", + "source": "generated" + }, + "6650": { + "body": "TypeScript reports: Make keyof only return strings instead of string, numbers or symbols. Legacy option.", + "category": "Message", + "code": 6650, + "message": "Make keyof only return strings instead of string, numbers or symbols. Legacy option.", + "source": "generated" + }, + "6651": { + "body": "TypeScript reports: Specify a set of bundled library declaration files that describe the target runtime environment.", + "category": "Message", + "code": 6651, + "message": "Specify a set of bundled library declaration files that describe the target runtime environment.", + "source": "generated" + }, + "6652": { + "body": "TypeScript reports: Print the names of emitted files after a compilation.", + "category": "Message", + "code": 6652, + "message": "Print the names of emitted files after a compilation.", + "source": "generated" + }, + "6653": { + "body": "TypeScript reports: Print all of the files read during the compilation.", + "category": "Message", + "code": 6653, + "message": "Print all of the files read during the compilation.", + "source": "generated" + }, + "6654": { + "body": "TypeScript reports: Set the language of the messaging from TypeScript. This does not affect emit.", + "category": "Message", + "code": 6654, + "message": "Set the language of the messaging from TypeScript. This does not affect emit.", + "source": "generated" + }, + "6655": { + "body": "TypeScript reports: Specify the location where debugger should locate map files instead of generated locations.", + "category": "Message", + "code": 6655, + "message": "Specify the location where debugger should locate map files instead of generated locations.", + "source": "generated" + }, + "6656": { + "body": "TypeScript reports: Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'.", + "category": "Message", + "code": 6656, + "message": "Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'.", + "source": "generated" + }, + "6657": { + "body": "TypeScript reports: Specify what module code is generated.", + "category": "Message", + "code": 6657, + "message": "Specify what module code is generated.", + "source": "generated" + }, + "6658": { + "body": "TypeScript reports: Specify how TypeScript looks up a file from a given module specifier.", + "category": "Message", + "code": 6658, + "message": "Specify how TypeScript looks up a file from a given module specifier.", + "source": "generated" + }, + "6659": { + "body": "TypeScript reports: Set the newline character for emitting files.", + "category": "Message", + "code": 6659, + "message": "Set the newline character for emitting files.", + "source": "generated" + }, + "6660": { + "body": "TypeScript reports: Disable emitting files from a compilation.", + "category": "Message", + "code": 6660, + "message": "Disable emitting files from a compilation.", + "source": "generated" + }, + "6661": { + "body": "TypeScript reports: Disable generating custom helper functions like '__extends' in compiled output.", + "category": "Message", + "code": 6661, + "message": "Disable generating custom helper functions like '__extends' in compiled output.", + "source": "generated" + }, + "6662": { + "body": "TypeScript reports: Disable emitting files if any type checking errors are reported.", + "category": "Message", + "code": 6662, + "message": "Disable emitting files if any type checking errors are reported.", + "source": "generated" + }, + "6663": { + "body": "TypeScript reports: Disable truncating types in error messages.", + "category": "Message", + "code": 6663, + "message": "Disable truncating types in error messages.", + "source": "generated" + }, + "6664": { + "body": "TypeScript reports: Enable error reporting for fallthrough cases in switch statements.", + "category": "Message", + "code": 6664, + "message": "Enable error reporting for fallthrough cases in switch statements.", + "source": "generated" + }, + "6665": { + "body": "TypeScript reports: Enable error reporting for expressions and declarations with an implied 'any' type.", + "category": "Message", + "code": 6665, + "message": "Enable error reporting for expressions and declarations with an implied 'any' type.", + "source": "generated" + }, + "6666": { + "body": "TypeScript reports: Ensure overriding members in derived classes are marked with an override modifier.", + "category": "Message", + "code": 6666, + "message": "Ensure overriding members in derived classes are marked with an override modifier.", + "source": "generated" + }, + "6667": { + "body": "TypeScript reports: Enable error reporting for codepaths that do not explicitly return in a function.", + "category": "Message", + "code": 6667, + "message": "Enable error reporting for codepaths that do not explicitly return in a function.", + "source": "generated" + }, + "6668": { + "body": "TypeScript reports: Enable error reporting when 'this' is given the type 'any'.", + "category": "Message", + "code": 6668, + "message": "Enable error reporting when 'this' is given the type 'any'.", + "source": "generated" + }, + "6669": { + "body": "TypeScript reports: Disable adding 'use strict' directives in emitted JavaScript files.", + "category": "Message", + "code": 6669, + "message": "Disable adding 'use strict' directives in emitted JavaScript files.", + "source": "generated" + }, + "6670": { + "body": "TypeScript reports: Disable including any library files, including the default lib.d.ts.", + "category": "Message", + "code": 6670, + "message": "Disable including any library files, including the default lib.d.ts.", + "source": "generated" + }, + "6671": { + "body": "TypeScript reports: Enforces using indexed accessors for keys declared using an indexed type.", + "category": "Message", + "code": 6671, + "message": "Enforces using indexed accessors for keys declared using an indexed type.", + "source": "generated" + }, + "6672": { + "body": "TypeScript reports: Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project.", + "category": "Message", + "code": 6672, + "message": "Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project.", + "source": "generated" + }, + "6673": { + "body": "TypeScript reports: Disable strict checking of generic signatures in function types.", + "category": "Message", + "code": 6673, + "message": "Disable strict checking of generic signatures in function types.", + "source": "generated" + }, + "6674": { + "body": "TypeScript reports: Add 'undefined' to a type when accessed using an index.", + "category": "Message", + "code": 6674, + "message": "Add 'undefined' to a type when accessed using an index.", + "source": "generated" + }, + "6675": { + "body": "TypeScript reports: Enable error reporting when local variables aren't read.", + "category": "Message", + "code": 6675, + "message": "Enable error reporting when local variables aren't read.", + "source": "generated" + }, + "6676": { + "body": "TypeScript reports: Raise an error when a function parameter isn't read.", + "category": "Message", + "code": 6676, + "message": "Raise an error when a function parameter isn't read.", + "source": "generated" + }, + "6677": { + "body": "TypeScript reports: Deprecated setting. Use 'outFile' instead.", + "category": "Message", + "code": 6677, + "message": "Deprecated setting. Use 'outFile' instead.", + "source": "generated" + }, + "6678": { + "body": "TypeScript reports: Specify an output folder for all emitted files.", + "category": "Message", + "code": 6678, + "message": "Specify an output folder for all emitted files.", + "source": "generated" + }, + "6679": { + "body": "TypeScript reports: Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output.", + "category": "Message", + "code": 6679, + "message": "Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output.", + "source": "generated" + }, + "6680": { + "body": "TypeScript reports: Specify a set of entries that re-map imports to additional lookup locations.", + "category": "Message", + "code": 6680, + "message": "Specify a set of entries that re-map imports to additional lookup locations.", + "source": "generated" + }, + "6681": { + "body": "TypeScript reports: Specify a list of language service plugins to include.", + "category": "Message", + "code": 6681, + "message": "Specify a list of language service plugins to include.", + "source": "generated" + }, + "6682": { + "body": "TypeScript reports: Disable erasing 'const enum' declarations in generated code.", + "category": "Message", + "code": 6682, + "message": "Disable erasing 'const enum' declarations in generated code.", + "source": "generated" + }, + "6683": { + "body": "TypeScript reports: Disable resolving symlinks to their realpath. This correlates to the same flag in node.", + "category": "Message", + "code": 6683, + "message": "Disable resolving symlinks to their realpath. This correlates to the same flag in node.", + "source": "generated" + }, + "6684": { + "body": "TypeScript reports: Disable wiping the console in watch mode.", + "category": "Message", + "code": 6684, + "message": "Disable wiping the console in watch mode.", + "source": "generated" + }, + "6685": { + "body": "TypeScript reports: Enable color and formatting in TypeScript's output to make compiler errors easier to read.", + "category": "Message", + "code": 6685, + "message": "Enable color and formatting in TypeScript's output to make compiler errors easier to read.", + "source": "generated" + }, + "6686": { + "body": "TypeScript reports: Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit.", + "category": "Message", + "code": 6686, + "message": "Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit.", + "source": "generated" + }, + "6687": { + "body": "TypeScript reports: Specify an array of objects that specify paths for projects. Used in project references.", + "category": "Message", + "code": 6687, + "message": "Specify an array of objects that specify paths for projects. Used in project references.", + "source": "generated" + }, + "6688": { + "body": "TypeScript reports: Disable emitting comments.", + "category": "Message", + "code": 6688, + "message": "Disable emitting comments.", + "source": "generated" + }, + "6689": { + "body": "TypeScript reports: Enable importing .json files.", + "category": "Message", + "code": 6689, + "message": "Enable importing .json files.", + "source": "generated" + }, + "6690": { + "body": "TypeScript reports: Specify the root folder within your source files.", + "category": "Message", + "code": 6690, + "message": "Specify the root folder within your source files.", + "source": "generated" + }, + "6691": { + "body": "TypeScript reports: Allow multiple folders to be treated as one when resolving modules.", + "category": "Message", + "code": 6691, + "message": "Allow multiple folders to be treated as one when resolving modules.", + "source": "generated" + }, + "6692": { + "body": "TypeScript reports: Skip type checking .d.ts files that are included with TypeScript.", + "category": "Message", + "code": 6692, + "message": "Skip type checking .d.ts files that are included with TypeScript.", + "source": "generated" + }, + "6693": { + "body": "TypeScript reports: Skip type checking all .d.ts files.", + "category": "Message", + "code": 6693, + "message": "Skip type checking all .d.ts files.", + "source": "generated" + }, + "6694": { + "body": "TypeScript reports: Create source map files for emitted JavaScript files.", + "category": "Message", + "code": 6694, + "message": "Create source map files for emitted JavaScript files.", + "source": "generated" + }, + "6695": { + "body": "TypeScript reports: Specify the root path for debuggers to find the reference source code.", + "category": "Message", + "code": 6695, + "message": "Specify the root path for debuggers to find the reference source code.", + "source": "generated" + }, + "6697": { + "body": "TypeScript reports: Check that the arguments for 'bind', 'call', and 'apply' methods match the original function.", + "category": "Message", + "code": 6697, + "message": "Check that the arguments for 'bind', 'call', and 'apply' methods match the original function.", + "source": "generated" + }, + "6698": { + "body": "TypeScript reports: When assigning functions, check to ensure parameters and the return values are subtype-compatible.", + "category": "Message", + "code": 6698, + "message": "When assigning functions, check to ensure parameters and the return values are subtype-compatible.", + "source": "generated" + }, + "6699": { + "body": "TypeScript reports: When type checking, take into account 'null' and 'undefined'.", + "category": "Message", + "code": 6699, + "message": "When type checking, take into account 'null' and 'undefined'.", + "source": "generated" + }, + "6700": { + "body": "TypeScript reports: Check for class properties that are declared but not set in the constructor.", + "category": "Message", + "code": 6700, + "message": "Check for class properties that are declared but not set in the constructor.", + "source": "generated" + }, + "6701": { + "body": "TypeScript reports: Disable emitting declarations that have '@internal' in their JSDoc comments.", + "category": "Message", + "code": 6701, + "message": "Disable emitting declarations that have '@internal' in their JSDoc comments.", + "source": "generated" + }, + "6702": { + "body": "TypeScript reports: Disable reporting of excess property errors during the creation of object literals.", + "category": "Message", + "code": 6702, + "message": "Disable reporting of excess property errors during the creation of object literals.", + "source": "generated" + }, + "6703": { + "body": "TypeScript reports: Suppress 'noImplicitAny' errors when indexing objects that lack index signatures.", + "category": "Message", + "code": 6703, + "message": "Suppress 'noImplicitAny' errors when indexing objects that lack index signatures.", + "source": "generated" + }, + "6704": { + "body": "TypeScript reports: Synchronously call callbacks and update the state of directory watchers on platforms that don`t support recursive watching natively.", + "category": "Message", + "code": 6704, + "message": "Synchronously call callbacks and update the state of directory watchers on platforms that don`t support recursive watching natively.", + "source": "generated" + }, + "6705": { + "body": "TypeScript reports: Set the JavaScript language version for emitted JavaScript and include compatible library declarations.", + "category": "Message", + "code": 6705, + "message": "Set the JavaScript language version for emitted JavaScript and include compatible library declarations.", + "source": "generated" + }, + "6706": { + "body": "TypeScript reports: Log paths used during the 'moduleResolution' process.", + "category": "Message", + "code": 6706, + "message": "Log paths used during the 'moduleResolution' process.", + "source": "generated" + }, + "6707": { + "body": "TypeScript reports: Specify the path to .tsbuildinfo incremental compilation file.", + "category": "Message", + "code": 6707, + "message": "Specify the path to .tsbuildinfo incremental compilation file.", + "source": "generated" + }, + "6709": { + "body": "TypeScript reports: Specify options for automatic acquisition of declaration files.", + "category": "Message", + "code": 6709, + "message": "Specify options for automatic acquisition of declaration files.", + "source": "generated" + }, + "6710": { + "body": "TypeScript reports: Specify multiple folders that act like './node_modules/@types'.", + "category": "Message", + "code": 6710, + "message": "Specify multiple folders that act like './node_modules/@types'.", + "source": "generated" + }, + "6711": { + "body": "TypeScript reports: Specify type package names to be included without being referenced in a source file.", + "category": "Message", + "code": 6711, + "message": "Specify type package names to be included without being referenced in a source file.", + "source": "generated" + }, + "6712": { + "body": "TypeScript reports: Emit ECMAScript-standard-compliant class fields.", + "category": "Message", + "code": 6712, + "message": "Emit ECMAScript-standard-compliant class fields.", + "source": "generated" + }, + "6713": { + "body": "TypeScript reports: Enable verbose logging.", + "category": "Message", + "code": 6713, + "message": "Enable verbose logging.", + "source": "generated" + }, + "6714": { + "body": "TypeScript reports: Specify how directories are watched on systems that lack recursive file-watching functionality.", + "category": "Message", + "code": 6714, + "message": "Specify how directories are watched on systems that lack recursive file-watching functionality.", + "source": "generated" + }, + "6715": { + "body": "TypeScript reports: Specify how the TypeScript watch mode works.", + "category": "Message", + "code": 6715, + "message": "Specify how the TypeScript watch mode works.", + "source": "generated" + }, + "6717": { + "body": "TypeScript reports: Require undeclared properties from index signatures to use element accesses.", + "category": "Message", + "code": 6717, + "message": "Require undeclared properties from index signatures to use element accesses.", + "source": "generated" + }, + "6718": { + "body": "TypeScript reports: Specify emit/checking behavior for imports that are only used for types.", + "category": "Message", + "code": 6718, + "message": "Specify emit/checking behavior for imports that are only used for types.", + "source": "generated" + }, + "6719": { + "body": "TypeScript reports: Require sufficient annotation on exports so other tools can trivially generate declaration files.", + "category": "Message", + "code": 6719, + "message": "Require sufficient annotation on exports so other tools can trivially generate declaration files.", + "source": "generated" + }, + "6720": { + "body": "TypeScript reports: Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'.", + "category": "Message", + "code": 6720, + "message": "Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'.", + "source": "generated" + }, + "6721": { + "body": "TypeScript reports: Do not allow runtime constructs that are not part of ECMAScript.", + "category": "Message", + "code": 6721, + "message": "Do not allow runtime constructs that are not part of ECMAScript.", + "source": "generated" + }, + "6803": { + "body": "TypeScript reports: Default catch clause variables as 'unknown' instead of 'any'.", + "category": "Message", + "code": 6803, + "message": "Default catch clause variables as 'unknown' instead of 'any'.", + "source": "generated" + }, + "6804": { + "body": "TypeScript reports: Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting.", + "category": "Message", + "code": 6804, + "message": "Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting.", + "source": "generated" + }, + "6805": { + "body": "TypeScript reports: Disable full type checking (only critical parse and emit errors will be reported).", + "category": "Message", + "code": 6805, + "message": "Disable full type checking (only critical parse and emit errors will be reported).", + "source": "generated" + }, + "6806": { + "body": "TypeScript reports: Check side effect imports.", + "category": "Message", + "code": 6806, + "message": "Check side effect imports.", + "source": "generated" + }, + "6807": { + "body": "TypeScript reports this error: This operation can be simplified. This shift is identical to `{0} {1} {2}`.", + "category": "Error", + "code": 6807, + "message": "This operation can be simplified. This shift is identical to `{0} {1} {2}`.", + "source": "generated" + }, + "6808": { + "body": "TypeScript reports: Enable lib replacement.", + "category": "Message", + "code": 6808, + "message": "Enable lib replacement.", + "source": "generated" + }, + "6809": { + "body": "TypeScript reports: Ensure types are ordered stably and deterministically across compilations.", + "category": "Message", + "code": 6809, + "message": "Ensure types are ordered stably and deterministically across compilations.", + "source": "generated" + }, + "6900": { + "body": "TypeScript reports: one of:", + "category": "Message", + "code": 6900, + "message": "one of:", + "source": "generated" + }, + "6901": { + "body": "TypeScript reports: one or more:", + "category": "Message", + "code": 6901, + "message": "one or more:", + "source": "generated" + }, + "6902": { + "body": "TypeScript reports: type:", + "category": "Message", + "code": 6902, + "message": "type:", + "source": "generated" + }, + "6903": { + "body": "TypeScript reports: default:", + "category": "Message", + "code": 6903, + "message": "default:", + "source": "generated" + }, + "6905": { + "body": "TypeScript reports: `true`, unless `strict` is `false`", + "category": "Message", + "code": 6905, + "message": "`true`, unless `strict` is `false`", + "source": "generated" + }, + "6906": { + "body": "TypeScript reports: `false`, unless `composite` is set", + "category": "Message", + "code": 6906, + "message": "`false`, unless `composite` is set", + "source": "generated" + }, + "6907": { + "body": "TypeScript reports: `[\"node_modules\", \"bower_components\", \"jspm_packages\"]`, plus the value of `outDir` if one is specified.", + "category": "Message", + "code": 6907, + "message": "`[\"node_modules\", \"bower_components\", \"jspm_packages\"]`, plus the value of `outDir` if one is specified.", + "source": "generated" + }, + "6908": { + "body": "TypeScript reports: `[]` if `files` is specified, otherwise `[\"**/*\"]`", + "category": "Message", + "code": 6908, + "message": "`[]` if `files` is specified, otherwise `[\"**/*\"]`", + "source": "generated" + }, + "6909": { + "body": "TypeScript reports: `true` if `composite`, `false` otherwise", + "category": "Message", + "code": 6909, + "message": "`true` if `composite`, `false` otherwise", + "source": "generated" + }, + "6911": { + "body": "TypeScript reports: Computed from the list of input files", + "category": "Message", + "code": 6911, + "message": "Computed from the list of input files", + "source": "generated" + }, + "6912": { + "body": "TypeScript reports: Platform specific", + "category": "Message", + "code": 6912, + "message": "Platform specific", + "source": "generated" + }, + "6913": { + "body": "TypeScript reports: You can learn about all of the compiler options at {0}", + "category": "Message", + "code": 6913, + "message": "You can learn about all of the compiler options at {0}", + "source": "generated" + }, + "6914": { + "body": "TypeScript reports: Including --watch, -w will start watching the current project for the file changes. Once set, you can config watch mode with:", + "category": "Message", + "code": 6914, + "message": "Including --watch, -w will start watching the current project for the file changes. Once set, you can config watch mode with:", + "source": "generated" + }, + "6915": { + "body": "TypeScript reports: Using --build, -b will make tsc behave more like a build orchestrator than a compiler. This is used to trigger building composite projects which you can learn more about at {0}", + "category": "Message", + "code": 6915, + "message": "Using --build, -b will make tsc behave more like a build orchestrator than a compiler. This is used to trigger building composite projects which you can learn more about at {0}", + "source": "generated" + }, + "6916": { + "body": "TypeScript reports: COMMON COMMANDS", + "category": "Message", + "code": 6916, + "message": "COMMON COMMANDS", + "source": "generated" + }, + "6917": { + "body": "TypeScript reports: ALL COMPILER OPTIONS", + "category": "Message", + "code": 6917, + "message": "ALL COMPILER OPTIONS", + "source": "generated" + }, + "6918": { + "body": "TypeScript reports: WATCH OPTIONS", + "category": "Message", + "code": 6918, + "message": "WATCH OPTIONS", + "source": "generated" + }, + "6919": { + "body": "TypeScript reports: BUILD OPTIONS", + "category": "Message", + "code": 6919, + "message": "BUILD OPTIONS", + "source": "generated" + }, + "6920": { + "body": "TypeScript reports: COMMON COMPILER OPTIONS", + "category": "Message", + "code": 6920, + "message": "COMMON COMPILER OPTIONS", + "source": "generated" + }, + "6921": { + "body": "TypeScript reports: COMMAND LINE FLAGS", + "category": "Message", + "code": 6921, + "message": "COMMAND LINE FLAGS", + "source": "generated" + }, + "6922": { + "body": "TypeScript reports: tsc: The TypeScript Compiler", + "category": "Message", + "code": 6922, + "message": "tsc: The TypeScript Compiler", + "source": "generated" + }, + "6923": { + "body": "TypeScript reports: Compiles the current project (tsconfig.json in the working directory.)", + "category": "Message", + "code": 6923, + "message": "Compiles the current project (tsconfig.json in the working directory.)", + "source": "generated" + }, + "6924": { + "body": "TypeScript reports: Ignoring tsconfig.json, compiles the specified files with default compiler options.", + "category": "Message", + "code": 6924, + "message": "Ignoring tsconfig.json, compiles the specified files with default compiler options.", + "source": "generated" + }, + "6925": { + "body": "TypeScript reports: Build a composite project in the working directory.", + "category": "Message", + "code": 6925, + "message": "Build a composite project in the working directory.", + "source": "generated" + }, + "6926": { + "body": "TypeScript reports: Creates a tsconfig.json with the recommended settings in the working directory.", + "category": "Message", + "code": 6926, + "message": "Creates a tsconfig.json with the recommended settings in the working directory.", + "source": "generated" + }, + "6927": { + "body": "TypeScript reports: Compiles the TypeScript project located at the specified path.", + "category": "Message", + "code": 6927, + "message": "Compiles the TypeScript project located at the specified path.", + "source": "generated" + }, + "6928": { + "body": "TypeScript reports: An expanded version of this information, showing all possible compiler options", + "category": "Message", + "code": 6928, + "message": "An expanded version of this information, showing all possible compiler options", + "source": "generated" + }, + "6929": { + "body": "TypeScript reports: Compiles the current project, with additional settings.", + "category": "Message", + "code": 6929, + "message": "Compiles the current project, with additional settings.", + "source": "generated" + }, + "6930": { + "body": "TypeScript reports: `true` for ES2022 and above, including ESNext.", + "category": "Message", + "code": 6930, + "message": "`true` for ES2022 and above, including ESNext.", + "source": "generated" + }, + "6931": { + "body": "TypeScript reports this error: List of file name suffixes to search when resolving a module.", + "category": "Error", + "code": 6931, + "message": "List of file name suffixes to search when resolving a module.", + "source": "generated" + }, + "6932": { + "body": "TypeScript reports: `false`, unless `checkJs` is set", + "category": "Message", + "code": 6932, + "message": "`false`, unless `checkJs` is set", + "source": "generated" + }, + "7005": { + "body": "TypeScript reports this error: Variable '{0}' implicitly has an '{1}' type.", + "category": "Error", + "code": 7005, + "message": "Variable '{0}' implicitly has an '{1}' type.", + "source": "generated" + }, + "7006": { + "body": "I don't know what type '{0}' is supposed to be, so I've defaulted it to '{1}'. Your `tsconfig.json` file says I should throw an error here. [Learn more](https://www.totaltypescript.com/tutorials/beginners-typescript/beginner-s-typescript-section/implicit-any-type-error).", + "category": "Error", + "code": 7006, + "message": "Parameter '{0}' implicitly has an '{1}' type.", + "source": "curated" + }, + "7008": { + "body": "TypeScript reports this error: Member '{0}' implicitly has an '{1}' type.", + "category": "Error", + "code": 7008, + "message": "Member '{0}' implicitly has an '{1}' type.", + "source": "generated" + }, + "7009": { + "body": "TypeScript reports this error: 'new' expression, whose target lacks a construct signature, implicitly has an 'any' type.", + "category": "Error", + "code": 7009, + "message": "'new' expression, whose target lacks a construct signature, implicitly has an 'any' type.", + "source": "generated" + }, + "7010": { + "body": "TypeScript reports this error: '{0}', which lacks return-type annotation, implicitly has an '{1}' return type.", + "category": "Error", + "code": 7010, + "message": "'{0}', which lacks return-type annotation, implicitly has an '{1}' return type.", + "source": "generated" + }, + "7011": { + "body": "TypeScript reports this error: Function expression, which lacks return-type annotation, implicitly has an '{0}' return type.", + "category": "Error", + "code": 7011, + "message": "Function expression, which lacks return-type annotation, implicitly has an '{0}' return type.", + "source": "generated" + }, + "7012": { + "body": "TypeScript reports this error: This overload implicitly returns the type '{0}' because it lacks a return type annotation.", + "category": "Error", + "code": 7012, + "message": "This overload implicitly returns the type '{0}' because it lacks a return type annotation.", + "source": "generated" + }, + "7013": { + "body": "TypeScript reports this error: Construct signature, which lacks return-type annotation, implicitly has an 'any' return type.", + "category": "Error", + "code": 7013, + "message": "Construct signature, which lacks return-type annotation, implicitly has an 'any' return type.", + "source": "generated" + }, + "7014": { + "body": "TypeScript reports this error: Function type, which lacks return-type annotation, implicitly has an '{0}' return type.", + "category": "Error", + "code": 7014, + "message": "Function type, which lacks return-type annotation, implicitly has an '{0}' return type.", + "source": "generated" + }, + "7015": { + "body": "TypeScript reports this error: Element implicitly has an 'any' type because index expression is not of type 'number'.", + "category": "Error", + "code": 7015, + "message": "Element implicitly has an 'any' type because index expression is not of type 'number'.", + "source": "generated" + }, + "7016": { + "body": "TypeScript reports this error: Could not find a declaration file for module '{0}'. '{1}' implicitly has an 'any' type.", + "category": "Error", + "code": 7016, + "message": "Could not find a declaration file for module '{0}'. '{1}' implicitly has an 'any' type.", + "source": "generated" + }, + "7017": { + "body": "TypeScript reports this error: Element implicitly has an 'any' type because type '{0}' has no index signature.", + "category": "Error", + "code": 7017, + "message": "Element implicitly has an 'any' type because type '{0}' has no index signature.", + "source": "generated" + }, + "7018": { + "body": "TypeScript reports this error: Object literal's property '{0}' implicitly has an '{1}' type.", + "category": "Error", + "code": 7018, + "message": "Object literal's property '{0}' implicitly has an '{1}' type.", + "source": "generated" + }, + "7019": { + "body": "TypeScript reports this error: Rest parameter '{0}' implicitly has an 'any[]' type.", + "category": "Error", + "code": 7019, + "message": "Rest parameter '{0}' implicitly has an 'any[]' type.", + "source": "generated" + }, + "7020": { + "body": "TypeScript reports this error: Call signature, which lacks return-type annotation, implicitly has an 'any' return type.", + "category": "Error", + "code": 7020, + "message": "Call signature, which lacks return-type annotation, implicitly has an 'any' return type.", + "source": "generated" + }, + "7022": { + "body": "TypeScript reports this error: '{0}' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "category": "Error", + "code": 7022, + "message": "'{0}' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.", + "source": "generated" + }, + "7023": { + "body": "TypeScript reports this error: '{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.", + "category": "Error", + "code": 7023, + "message": "'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.", + "source": "generated" + }, + "7024": { + "body": "TypeScript reports this error: Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.", + "category": "Error", + "code": 7024, + "message": "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions.", + "source": "generated" + }, + "7025": { + "body": "TypeScript reports this error: Generator implicitly has yield type '{0}'. Consider supplying a return type annotation.", + "category": "Error", + "code": 7025, + "message": "Generator implicitly has yield type '{0}'. Consider supplying a return type annotation.", + "source": "generated" + }, + "7026": { + "body": "`JSX.IntrinsicElements` has not been declared in the global scope. [Learn more](https://www.totaltypescript.com/what-is-jsx-intrinsicelements).", + "category": "Error", + "code": 7026, + "message": "JSX element implicitly has type 'any' because no interface 'JSX.{0}' exists.", + "source": "curated" + }, + "7027": { + "body": "TypeScript reports this error: Unreachable code detected.", + "category": "Error", + "code": 7027, + "message": "Unreachable code detected.", + "source": "generated" + }, + "7028": { + "body": "TypeScript reports this error: Unused label.", + "category": "Error", + "code": 7028, + "message": "Unused label.", + "source": "generated" + }, + "7029": { + "body": "TypeScript reports this error: Fallthrough case in switch.", + "category": "Error", + "code": 7029, + "message": "Fallthrough case in switch.", + "source": "generated" + }, + "7030": { + "body": "TypeScript reports this error: Not all code paths return a value.", + "category": "Error", + "code": 7030, + "message": "Not all code paths return a value.", + "source": "generated" + }, + "7031": { + "body": "TypeScript reports this error: Binding element '{0}' implicitly has an '{1}' type.", + "category": "Error", + "code": 7031, + "message": "Binding element '{0}' implicitly has an '{1}' type.", + "source": "generated" + }, + "7032": { + "body": "TypeScript reports this error: Property '{0}' implicitly has type 'any', because its set accessor lacks a parameter type annotation.", + "category": "Error", + "code": 7032, + "message": "Property '{0}' implicitly has type 'any', because its set accessor lacks a parameter type annotation.", + "source": "generated" + }, + "7033": { + "body": "TypeScript reports this error: Property '{0}' implicitly has type 'any', because its get accessor lacks a return type annotation.", + "category": "Error", + "code": 7033, + "message": "Property '{0}' implicitly has type 'any', because its get accessor lacks a return type annotation.", + "source": "generated" + }, + "7034": { + "body": "TypeScript reports this error: Variable '{0}' implicitly has type '{1}' in some locations where its type cannot be determined.", + "category": "Error", + "code": 7034, + "message": "Variable '{0}' implicitly has type '{1}' in some locations where its type cannot be determined.", + "source": "generated" + }, + "7035": { + "body": "TypeScript reports this error: Try `npm i --save-dev @types/{1}` if it exists or add a new declaration (.d.ts) file containing `declare module '{0}';`", + "category": "Error", + "code": 7035, + "message": "Try `npm i --save-dev @types/{1}` if it exists or add a new declaration (.d.ts) file containing `declare module '{0}';`", + "source": "generated" + }, + "7036": { + "body": "TypeScript reports this error: Dynamic import's specifier must be of type 'string', but here has type '{0}'.", + "category": "Error", + "code": 7036, + "message": "Dynamic import's specifier must be of type 'string', but here has type '{0}'.", + "source": "generated" + }, + "7037": { + "body": "TypeScript reports: Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'.", + "category": "Message", + "code": 7037, + "message": "Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'.", + "source": "generated" + }, + "7038": { + "body": "TypeScript reports: Type originates at this import. A namespace-style import cannot be called or constructed, and will cause a failure at runtime. Consider using a default import or import require here instead.", + "category": "Message", + "code": 7038, + "message": "Type originates at this import. A namespace-style import cannot be called or constructed, and will cause a failure at runtime. Consider using a default import or import require here instead.", + "source": "generated" + }, + "7039": { + "body": "TypeScript reports this error: Mapped object type implicitly has an 'any' template type.", + "category": "Error", + "code": 7039, + "message": "Mapped object type implicitly has an 'any' template type.", + "source": "generated" + }, + "7040": { + "body": "TypeScript reports this error: If the '{0}' package actually exposes this module, consider sending a pull request to amend 'https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/{1}'", + "category": "Error", + "code": 7040, + "message": "If the '{0}' package actually exposes this module, consider sending a pull request to amend 'https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/{1}'", + "source": "generated" + }, + "7041": { + "body": "TypeScript reports this error: The containing arrow function captures the global value of 'this'.", + "category": "Error", + "code": 7041, + "message": "The containing arrow function captures the global value of 'this'.", + "source": "generated" + }, + "7042": { + "body": "TypeScript reports this error: Module '{0}' was resolved to '{1}', but '--resolveJsonModule' is not used.", + "category": "Error", + "code": 7042, + "message": "Module '{0}' was resolved to '{1}', but '--resolveJsonModule' is not used.", + "source": "generated" + }, + "7043": { + "body": "TypeScript suggests: Variable '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.", + "category": "Suggestion", + "code": 7043, + "message": "Variable '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.", + "source": "generated" + }, + "7044": { + "body": "TypeScript suggests: Parameter '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.", + "category": "Suggestion", + "code": 7044, + "message": "Parameter '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.", + "source": "generated" + }, + "7045": { + "body": "TypeScript suggests: Member '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.", + "category": "Suggestion", + "code": 7045, + "message": "Member '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage.", + "source": "generated" + }, + "7046": { + "body": "TypeScript suggests: Variable '{0}' implicitly has type '{1}' in some locations, but a better type may be inferred from usage.", + "category": "Suggestion", + "code": 7046, + "message": "Variable '{0}' implicitly has type '{1}' in some locations, but a better type may be inferred from usage.", + "source": "generated" + }, + "7047": { + "body": "TypeScript suggests: Rest parameter '{0}' implicitly has an 'any[]' type, but a better type may be inferred from usage.", + "category": "Suggestion", + "code": 7047, + "message": "Rest parameter '{0}' implicitly has an 'any[]' type, but a better type may be inferred from usage.", + "source": "generated" + }, + "7048": { + "body": "TypeScript suggests: Property '{0}' implicitly has type 'any', but a better type for its get accessor may be inferred from usage.", + "category": "Suggestion", + "code": 7048, + "message": "Property '{0}' implicitly has type 'any', but a better type for its get accessor may be inferred from usage.", + "source": "generated" + }, + "7049": { + "body": "TypeScript suggests: Property '{0}' implicitly has type 'any', but a better type for its set accessor may be inferred from usage.", + "category": "Suggestion", + "code": 7049, + "message": "Property '{0}' implicitly has type 'any', but a better type for its set accessor may be inferred from usage.", + "source": "generated" + }, + "7050": { + "body": "TypeScript suggests: '{0}' implicitly has an '{1}' return type, but a better type may be inferred from usage.", + "category": "Suggestion", + "code": 7050, + "message": "'{0}' implicitly has an '{1}' return type, but a better type may be inferred from usage.", + "source": "generated" + }, + "7051": { + "body": "TypeScript reports this error: Parameter has a name but no type. Did you mean '{0}: {1}'?", + "category": "Error", + "code": 7051, + "message": "Parameter has a name but no type. Did you mean '{0}: {1}'?", + "source": "generated" + }, + "7052": { + "body": "TypeScript reports this error: Element implicitly has an 'any' type because type '{0}' has no index signature. Did you mean to call '{1}'?", + "category": "Error", + "code": 7052, + "message": "Element implicitly has an 'any' type because type '{0}' has no index signature. Did you mean to call '{1}'?", + "source": "generated" + }, + "7053": { + "body": "You can't use '{0}' to index into '{1}'. [This article](https://www.totaltypescript.com/concepts/type-string-cannot-be-used-to-index-type) might help.", + "category": "Error", + "code": 7053, + "message": "Element implicitly has an 'any' type because expression of type '{0}' can't be used to index type '{1}'.", + "source": "curated" + }, + "7054": { + "body": "TypeScript reports this error: No index signature with a parameter of type '{0}' was found on type '{1}'.", + "category": "Error", + "code": 7054, + "message": "No index signature with a parameter of type '{0}' was found on type '{1}'.", + "source": "generated" + }, + "7055": { + "body": "TypeScript reports this error: '{0}', which lacks return-type annotation, implicitly has an '{1}' yield type.", + "category": "Error", + "code": 7055, + "message": "'{0}', which lacks return-type annotation, implicitly has an '{1}' yield type.", + "source": "generated" + }, + "7056": { + "body": "TypeScript reports this error: The inferred type of this node exceeds the maximum length the compiler will serialize. An explicit type annotation is needed.", + "category": "Error", + "code": 7056, + "message": "The inferred type of this node exceeds the maximum length the compiler will serialize. An explicit type annotation is needed.", + "source": "generated" + }, + "7057": { + "body": "I don't know enough about your generator function's return type to safely infer here.", + "category": "Error", + "code": 7057, + "message": "'yield' expression implicitly results in an 'any' type because its containing generator lacks a return-type annotation.", + "source": "curated" + }, + "7058": { + "body": "TypeScript reports this error: If the '{0}' package actually exposes this module, try adding a new declaration (.d.ts) file containing `declare module '{1}';`", + "category": "Error", + "code": 7058, + "message": "If the '{0}' package actually exposes this module, try adding a new declaration (.d.ts) file containing `declare module '{1}';`", + "source": "generated" + }, + "7059": { + "body": "TypeScript reports this error: This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.", + "category": "Error", + "code": 7059, + "message": "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.", + "source": "generated" + }, + "7060": { + "body": "TypeScript reports this error: This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma or explicit constraint.", + "category": "Error", + "code": 7060, + "message": "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma or explicit constraint.", + "source": "generated" + }, + "7061": { + "body": "You're trying to create a mapped type with both static and dynamic properties.", + "category": "Error", + "code": 7061, + "message": "A mapped type may not declare properties or methods.", + "source": "curated" + }, + "8000": { + "body": "TypeScript reports this error: You cannot rename this element.", + "category": "Error", + "code": 8000, + "message": "You cannot rename this element.", + "source": "generated" + }, + "8001": { + "body": "TypeScript reports this error: You cannot rename elements that are defined in the standard TypeScript library.", + "category": "Error", + "code": 8001, + "message": "You cannot rename elements that are defined in the standard TypeScript library.", + "source": "generated" + }, + "8002": { + "body": "TypeScript reports this error: 'import ... =' can only be used in TypeScript files.", + "category": "Error", + "code": 8002, + "message": "'import ... =' can only be used in TypeScript files.", + "source": "generated" + }, + "8003": { + "body": "TypeScript reports this error: 'export =' can only be used in TypeScript files.", + "category": "Error", + "code": 8003, + "message": "'export =' can only be used in TypeScript files.", + "source": "generated" + }, + "8004": { + "body": "TypeScript reports this error: Type parameter declarations can only be used in TypeScript files.", + "category": "Error", + "code": 8004, + "message": "Type parameter declarations can only be used in TypeScript files.", + "source": "generated" + }, + "8005": { + "body": "TypeScript reports this error: 'implements' clauses can only be used in TypeScript files.", + "category": "Error", + "code": 8005, + "message": "'implements' clauses can only be used in TypeScript files.", + "source": "generated" + }, + "8006": { + "body": "TypeScript reports this error: '{0}' declarations can only be used in TypeScript files.", + "category": "Error", + "code": 8006, + "message": "'{0}' declarations can only be used in TypeScript files.", + "source": "generated" + }, + "8008": { + "body": "TypeScript reports this error: Type aliases can only be used in TypeScript files.", + "category": "Error", + "code": 8008, + "message": "Type aliases can only be used in TypeScript files.", + "source": "generated" + }, + "8009": { + "body": "TypeScript reports this error: The '{0}' modifier can only be used in TypeScript files.", + "category": "Error", + "code": 8009, + "message": "The '{0}' modifier can only be used in TypeScript files.", + "source": "generated" + }, + "8010": { + "body": "TypeScript reports this error: Type annotations can only be used in TypeScript files.", + "category": "Error", + "code": 8010, + "message": "Type annotations can only be used in TypeScript files.", + "source": "generated" + }, + "8011": { + "body": "TypeScript reports this error: Type arguments can only be used in TypeScript files.", + "category": "Error", + "code": 8011, + "message": "Type arguments can only be used in TypeScript files.", + "source": "generated" + }, + "8012": { + "body": "TypeScript reports this error: Parameter modifiers can only be used in TypeScript files.", + "category": "Error", + "code": 8012, + "message": "Parameter modifiers can only be used in TypeScript files.", + "source": "generated" + }, + "8013": { + "body": "TypeScript reports this error: Non-null assertions can only be used in TypeScript files.", + "category": "Error", + "code": 8013, + "message": "Non-null assertions can only be used in TypeScript files.", + "source": "generated" + }, + "8016": { + "body": "You can't use type assertions because this isn't a TypeScript file.", + "category": "Error", + "code": 8016, + "message": "Type assertion expressions can only be used in TypeScript files.", + "source": "curated" + }, + "8017": { + "body": "TypeScript reports this error: Signature declarations can only be used in TypeScript files.", + "category": "Error", + "code": 8017, + "message": "Signature declarations can only be used in TypeScript files.", + "source": "generated" + }, + "8019": { + "body": "TypeScript reports: Report errors in .js files.", + "category": "Message", + "code": 8019, + "message": "Report errors in .js files.", + "source": "generated" + }, + "8020": { + "body": "TypeScript reports this error: JSDoc types can only be used inside documentation comments.", + "category": "Error", + "code": 8020, + "message": "JSDoc types can only be used inside documentation comments.", + "source": "generated" + }, + "8021": { + "body": "TypeScript reports this error: JSDoc '@typedef' tag should either have a type annotation or be followed by '@property' or '@member' tags.", + "category": "Error", + "code": 8021, + "message": "JSDoc '@typedef' tag should either have a type annotation or be followed by '@property' or '@member' tags.", + "source": "generated" + }, + "8022": { + "body": "TypeScript reports this error: JSDoc '@{0}' is not attached to a class.", + "category": "Error", + "code": 8022, + "message": "JSDoc '@{0}' is not attached to a class.", + "source": "generated" + }, + "8023": { + "body": "TypeScript reports this error: JSDoc '@{0} {1}' does not match the 'extends {2}' clause.", + "category": "Error", + "code": 8023, + "message": "JSDoc '@{0} {1}' does not match the 'extends {2}' clause.", + "source": "generated" + }, + "8024": { + "body": "TypeScript reports this error: JSDoc '@param' tag has name '{0}', but there is no parameter with that name.", + "category": "Error", + "code": 8024, + "message": "JSDoc '@param' tag has name '{0}', but there is no parameter with that name.", + "source": "generated" + }, + "8025": { + "body": "TypeScript reports this error: Class declarations cannot have more than one '@augments' or '@extends' tag.", + "category": "Error", + "code": 8025, + "message": "Class declarations cannot have more than one '@augments' or '@extends' tag.", + "source": "generated" + }, + "8026": { + "body": "TypeScript reports this error: Expected {0} type arguments; provide these with an '@extends' tag.", + "category": "Error", + "code": 8026, + "message": "Expected {0} type arguments; provide these with an '@extends' tag.", + "source": "generated" + }, + "8027": { + "body": "TypeScript reports this error: Expected {0}-{1} type arguments; provide these with an '@extends' tag.", + "category": "Error", + "code": 8027, + "message": "Expected {0}-{1} type arguments; provide these with an '@extends' tag.", + "source": "generated" + }, + "8028": { + "body": "TypeScript reports this error: JSDoc '...' may only appear in the last parameter of a signature.", + "category": "Error", + "code": 8028, + "message": "JSDoc '...' may only appear in the last parameter of a signature.", + "source": "generated" + }, + "8029": { + "body": "TypeScript reports this error: JSDoc '@param' tag has name '{0}', but there is no parameter with that name. It would match 'arguments' if it had an array type.", + "category": "Error", + "code": 8029, + "message": "JSDoc '@param' tag has name '{0}', but there is no parameter with that name. It would match 'arguments' if it had an array type.", + "source": "generated" + }, + "8030": { + "body": "TypeScript reports this error: The type of a function declaration must match the function's signature.", + "category": "Error", + "code": 8030, + "message": "The type of a function declaration must match the function's signature.", + "source": "generated" + }, + "8031": { + "body": "TypeScript reports this error: You cannot rename a module via a global import.", + "category": "Error", + "code": 8031, + "message": "You cannot rename a module via a global import.", + "source": "generated" + }, + "8032": { + "body": "TypeScript reports this error: Qualified name '{0}' is not allowed without a leading '@param {object} {1}'.", + "category": "Error", + "code": 8032, + "message": "Qualified name '{0}' is not allowed without a leading '@param {object} {1}'.", + "source": "generated" + }, + "8033": { + "body": "TypeScript reports this error: A JSDoc '@typedef' comment may not contain multiple '@type' tags.", + "category": "Error", + "code": 8033, + "message": "A JSDoc '@typedef' comment may not contain multiple '@type' tags.", + "source": "generated" + }, + "8034": { + "body": "TypeScript reports this error: The tag was first specified here.", + "category": "Error", + "code": 8034, + "message": "The tag was first specified here.", + "source": "generated" + }, + "8035": { + "body": "TypeScript reports this error: You cannot rename elements that are defined in a 'node_modules' folder.", + "category": "Error", + "code": 8035, + "message": "You cannot rename elements that are defined in a 'node_modules' folder.", + "source": "generated" + }, + "8036": { + "body": "TypeScript reports this error: You cannot rename elements that are defined in another 'node_modules' folder.", + "category": "Error", + "code": 8036, + "message": "You cannot rename elements that are defined in another 'node_modules' folder.", + "source": "generated" + }, + "8037": { + "body": "TypeScript reports this error: Type satisfaction expressions can only be used in TypeScript files.", + "category": "Error", + "code": 8037, + "message": "Type satisfaction expressions can only be used in TypeScript files.", + "source": "generated" + }, + "8038": { + "body": "TypeScript reports this error: Decorators may not appear after 'export' or 'export default' if they also appear before 'export'.", + "category": "Error", + "code": 8038, + "message": "Decorators may not appear after 'export' or 'export default' if they also appear before 'export'.", + "source": "generated" + }, + "8039": { + "body": "TypeScript reports this error: A JSDoc '@template' tag may not follow a '@typedef', '@callback', or '@overload' tag", + "category": "Error", + "code": 8039, + "message": "A JSDoc '@template' tag may not follow a '@typedef', '@callback', or '@overload' tag", + "source": "generated" + }, + "9005": { + "body": "TypeScript reports this error: Declaration emit for this file requires using private name '{0}'. An explicit type annotation may unblock declaration emit.", + "category": "Error", + "code": 9005, + "message": "Declaration emit for this file requires using private name '{0}'. An explicit type annotation may unblock declaration emit.", + "source": "generated" + }, + "9006": { + "body": "TypeScript reports this error: Declaration emit for this file requires using private name '{0}' from module '{1}'. An explicit type annotation may unblock declaration emit.", + "category": "Error", + "code": 9006, + "message": "Declaration emit for this file requires using private name '{0}' from module '{1}'. An explicit type annotation may unblock declaration emit.", + "source": "generated" + }, + "9007": { + "body": "TypeScript reports this error: Function must have an explicit return type annotation with --isolatedDeclarations.", + "category": "Error", + "code": 9007, + "message": "Function must have an explicit return type annotation with --isolatedDeclarations.", + "source": "generated" + }, + "9008": { + "body": "TypeScript reports this error: Method must have an explicit return type annotation with --isolatedDeclarations.", + "category": "Error", + "code": 9008, + "message": "Method must have an explicit return type annotation with --isolatedDeclarations.", + "source": "generated" + }, + "9009": { + "body": "TypeScript reports this error: At least one accessor must have an explicit type annotation with --isolatedDeclarations.", + "category": "Error", + "code": 9009, + "message": "At least one accessor must have an explicit type annotation with --isolatedDeclarations.", + "source": "generated" + }, + "9010": { + "body": "TypeScript reports this error: Variable must have an explicit type annotation with --isolatedDeclarations.", + "category": "Error", + "code": 9010, + "message": "Variable must have an explicit type annotation with --isolatedDeclarations.", + "source": "generated" + }, + "9011": { + "body": "TypeScript reports this error: Parameter must have an explicit type annotation with --isolatedDeclarations.", + "category": "Error", + "code": 9011, + "message": "Parameter must have an explicit type annotation with --isolatedDeclarations.", + "source": "generated" + }, + "9012": { + "body": "TypeScript reports this error: Property must have an explicit type annotation with --isolatedDeclarations.", + "category": "Error", + "code": 9012, + "message": "Property must have an explicit type annotation with --isolatedDeclarations.", + "source": "generated" + }, + "9013": { + "body": "TypeScript reports this error: Expression type can't be inferred with --isolatedDeclarations.", + "category": "Error", + "code": 9013, + "message": "Expression type can't be inferred with --isolatedDeclarations.", + "source": "generated" + }, + "9014": { + "body": "TypeScript reports this error: Computed properties must be number or string literals, variables or dotted expressions with --isolatedDeclarations.", + "category": "Error", + "code": 9014, + "message": "Computed properties must be number or string literals, variables or dotted expressions with --isolatedDeclarations.", + "source": "generated" + }, + "9015": { + "body": "TypeScript reports this error: Objects that contain spread assignments can't be inferred with --isolatedDeclarations.", + "category": "Error", + "code": 9015, + "message": "Objects that contain spread assignments can't be inferred with --isolatedDeclarations.", + "source": "generated" + }, + "9016": { + "body": "TypeScript reports this error: Objects that contain shorthand properties can't be inferred with --isolatedDeclarations.", + "category": "Error", + "code": 9016, + "message": "Objects that contain shorthand properties can't be inferred with --isolatedDeclarations.", + "source": "generated" + }, + "9017": { + "body": "TypeScript reports this error: Only const arrays can be inferred with --isolatedDeclarations.", + "category": "Error", + "code": 9017, + "message": "Only const arrays can be inferred with --isolatedDeclarations.", + "source": "generated" + }, + "9018": { + "body": "TypeScript reports this error: Arrays with spread elements can't inferred with --isolatedDeclarations.", + "category": "Error", + "code": 9018, + "message": "Arrays with spread elements can't inferred with --isolatedDeclarations.", + "source": "generated" + }, + "9019": { + "body": "TypeScript reports this error: Binding elements can't be exported directly with --isolatedDeclarations.", + "category": "Error", + "code": 9019, + "message": "Binding elements can't be exported directly with --isolatedDeclarations.", + "source": "generated" + }, + "9020": { + "body": "TypeScript reports this error: Enum member initializers must be computable without references to external symbols with --isolatedDeclarations.", + "category": "Error", + "code": 9020, + "message": "Enum member initializers must be computable without references to external symbols with --isolatedDeclarations.", + "source": "generated" + }, + "9021": { + "body": "TypeScript reports this error: Extends clause can't contain an expression with --isolatedDeclarations.", + "category": "Error", + "code": 9021, + "message": "Extends clause can't contain an expression with --isolatedDeclarations.", + "source": "generated" + }, + "9022": { + "body": "TypeScript reports this error: Inference from class expressions is not supported with --isolatedDeclarations.", + "category": "Error", + "code": 9022, + "message": "Inference from class expressions is not supported with --isolatedDeclarations.", + "source": "generated" + }, + "9023": { + "body": "TypeScript reports this error: Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function.", + "category": "Error", + "code": 9023, + "message": "Assigning properties to functions without declaring them is not supported with --isolatedDeclarations. Add an explicit declaration for the properties assigned to this function.", + "source": "generated" + }, + "9025": { + "body": "TypeScript reports this error: Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations.", + "category": "Error", + "code": 9025, + "message": "Declaration emit for this parameter requires implicitly adding undefined to its type. This is not supported with --isolatedDeclarations.", + "source": "generated" + }, + "9026": { + "body": "TypeScript reports this error: Declaration emit for this file requires preserving this import for augmentations. This is not supported with --isolatedDeclarations.", + "category": "Error", + "code": 9026, + "message": "Declaration emit for this file requires preserving this import for augmentations. This is not supported with --isolatedDeclarations.", + "source": "generated" + }, + "9027": { + "body": "TypeScript reports this error: Add a type annotation to the variable {0}.", + "category": "Error", + "code": 9027, + "message": "Add a type annotation to the variable {0}.", + "source": "generated" + }, + "9028": { + "body": "TypeScript reports this error: Add a type annotation to the parameter {0}.", + "category": "Error", + "code": 9028, + "message": "Add a type annotation to the parameter {0}.", + "source": "generated" + }, + "9029": { + "body": "TypeScript reports this error: Add a type annotation to the property {0}.", + "category": "Error", + "code": 9029, + "message": "Add a type annotation to the property {0}.", + "source": "generated" + }, + "9030": { + "body": "TypeScript reports this error: Add a return type to the function expression.", + "category": "Error", + "code": 9030, + "message": "Add a return type to the function expression.", + "source": "generated" + }, + "9031": { + "body": "TypeScript reports this error: Add a return type to the function declaration.", + "category": "Error", + "code": 9031, + "message": "Add a return type to the function declaration.", + "source": "generated" + }, + "9032": { + "body": "TypeScript reports this error: Add a return type to the get accessor declaration.", + "category": "Error", + "code": 9032, + "message": "Add a return type to the get accessor declaration.", + "source": "generated" + }, + "9033": { + "body": "TypeScript reports this error: Add a type to parameter of the set accessor declaration.", + "category": "Error", + "code": 9033, + "message": "Add a type to parameter of the set accessor declaration.", + "source": "generated" + }, + "9034": { + "body": "TypeScript reports this error: Add a return type to the method", + "category": "Error", + "code": 9034, + "message": "Add a return type to the method", + "source": "generated" + }, + "9035": { + "body": "TypeScript reports this error: Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit.", + "category": "Error", + "code": 9035, + "message": "Add satisfies and a type assertion to this expression (satisfies T as T) to make the type explicit.", + "source": "generated" + }, + "9036": { + "body": "TypeScript reports this error: Move the expression in default export to a variable and add a type annotation to it.", + "category": "Error", + "code": 9036, + "message": "Move the expression in default export to a variable and add a type annotation to it.", + "source": "generated" + }, + "9037": { + "body": "TypeScript reports this error: Default exports can't be inferred with --isolatedDeclarations.", + "category": "Error", + "code": 9037, + "message": "Default exports can't be inferred with --isolatedDeclarations.", + "source": "generated" + }, + "9038": { + "body": "TypeScript reports this error: Computed property names on class or object literals cannot be inferred with --isolatedDeclarations.", + "category": "Error", + "code": 9038, + "message": "Computed property names on class or object literals cannot be inferred with --isolatedDeclarations.", + "source": "generated" + }, + "9039": { + "body": "TypeScript reports this error: Type containing private name '{0}' can't be used with --isolatedDeclarations.", + "category": "Error", + "code": 9039, + "message": "Type containing private name '{0}' can't be used with --isolatedDeclarations.", + "source": "generated" + }, + "17000": { + "body": "TypeScript reports this error: JSX attributes must only be assigned a non-empty 'expression'.", + "category": "Error", + "code": 17000, + "message": "JSX attributes must only be assigned a non-empty 'expression'.", + "source": "generated" + }, + "17001": { + "body": "TypeScript reports this error: JSX elements cannot have multiple attributes with the same name.", + "category": "Error", + "code": 17001, + "message": "JSX elements cannot have multiple attributes with the same name.", + "source": "generated" + }, + "17002": { + "body": "TypeScript reports this error: Expected corresponding JSX closing tag for '{0}'.", + "category": "Error", + "code": 17002, + "message": "Expected corresponding JSX closing tag for '{0}'.", + "source": "generated" + }, + "17004": { + "body": "You can't use JSX yet because you haven't added `jsx` to your `tsconfig.json`. [Learn more](https://www.totaltypescript.com/cannot-use-jsx-unless-the-jsx-flag-is-provided).", + "category": "Error", + "code": 17004, + "message": "Cannot use JSX unless the '--jsx' flag is provided.", + "source": "curated" + }, + "17005": { + "body": "TypeScript reports this error: A constructor cannot contain a 'super' call when its class extends 'null'.", + "category": "Error", + "code": 17005, + "message": "A constructor cannot contain a 'super' call when its class extends 'null'.", + "source": "generated" + }, + "17006": { + "body": "TypeScript reports this error: An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses.", + "category": "Error", + "code": 17006, + "message": "An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses.", + "source": "generated" + }, + "17007": { + "body": "TypeScript reports this error: A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses.", + "category": "Error", + "code": 17007, + "message": "A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses.", + "source": "generated" + }, + "17008": { + "body": "TypeScript reports this error: JSX element '{0}' has no corresponding closing tag.", + "category": "Error", + "code": 17008, + "message": "JSX element '{0}' has no corresponding closing tag.", + "source": "generated" + }, + "17009": { + "body": "TypeScript reports this error: 'super' must be called before accessing 'this' in the constructor of a derived class.", + "category": "Error", + "code": 17009, + "message": "'super' must be called before accessing 'this' in the constructor of a derived class.", + "source": "generated" + }, + "17010": { + "body": "TypeScript reports this error: Unknown type acquisition option '{0}'.", + "category": "Error", + "code": 17010, + "message": "Unknown type acquisition option '{0}'.", + "source": "generated" + }, + "17011": { + "body": "TypeScript reports this error: 'super' must be called before accessing a property of 'super' in the constructor of a derived class.", + "category": "Error", + "code": 17011, + "message": "'super' must be called before accessing a property of 'super' in the constructor of a derived class.", + "source": "generated" + }, + "17012": { + "body": "TypeScript reports this error: '{0}' is not a valid meta-property for keyword '{1}'. Did you mean '{2}'?", + "category": "Error", + "code": 17012, + "message": "'{0}' is not a valid meta-property for keyword '{1}'. Did you mean '{2}'?", + "source": "generated" + }, + "17013": { + "body": "TypeScript reports this error: Meta-property '{0}' is only allowed in the body of a function declaration, function expression, or constructor.", + "category": "Error", + "code": 17013, + "message": "Meta-property '{0}' is only allowed in the body of a function declaration, function expression, or constructor.", + "source": "generated" + }, + "17014": { + "body": "TypeScript reports this error: JSX fragment has no corresponding closing tag.", + "category": "Error", + "code": 17014, + "message": "JSX fragment has no corresponding closing tag.", + "source": "generated" + }, + "17015": { + "body": "TypeScript reports this error: Expected corresponding closing tag for JSX fragment.", + "category": "Error", + "code": 17015, + "message": "Expected corresponding closing tag for JSX fragment.", + "source": "generated" + }, + "17016": { + "body": "TypeScript reports this error: The 'jsxFragmentFactory' compiler option must be provided to use JSX fragments with the 'jsxFactory' compiler option.", + "category": "Error", + "code": 17016, + "message": "The 'jsxFragmentFactory' compiler option must be provided to use JSX fragments with the 'jsxFactory' compiler option.", + "source": "generated" + }, + "17017": { + "body": "TypeScript reports this error: An @jsxFrag pragma is required when using an @jsx pragma with JSX fragments.", + "category": "Error", + "code": 17017, + "message": "An @jsxFrag pragma is required when using an @jsx pragma with JSX fragments.", + "source": "generated" + }, + "17018": { + "body": "TypeScript reports this error: Unknown type acquisition option '{0}'. Did you mean '{1}'?", + "category": "Error", + "code": 17018, + "message": "Unknown type acquisition option '{0}'. Did you mean '{1}'?", + "source": "generated" + }, + "17019": { + "body": "TypeScript reports this error: '{0}' at the end of a type is not valid TypeScript syntax. Did you mean to write '{1}'?", + "category": "Error", + "code": 17019, + "message": "'{0}' at the end of a type is not valid TypeScript syntax. Did you mean to write '{1}'?", + "source": "generated" + }, + "17020": { + "body": "TypeScript reports this error: '{0}' at the start of a type is not valid TypeScript syntax. Did you mean to write '{1}'?", + "category": "Error", + "code": 17020, + "message": "'{0}' at the start of a type is not valid TypeScript syntax. Did you mean to write '{1}'?", + "source": "generated" + }, + "17021": { + "body": "TypeScript reports this error: Unicode escape sequence cannot appear here.", + "category": "Error", + "code": 17021, + "message": "Unicode escape sequence cannot appear here.", + "source": "generated" + }, + "18000": { + "body": "TypeScript reports this error: Circularity detected while resolving configuration: {0}", + "category": "Error", + "code": 18000, + "message": "Circularity detected while resolving configuration: {0}", + "source": "generated" + }, + "18002": { + "body": "TypeScript reports this error: The 'files' list in config file '{0}' is empty.", + "category": "Error", + "code": 18002, + "message": "The 'files' list in config file '{0}' is empty.", + "source": "generated" + }, + "18003": { + "body": "TypeScript reports this error: No inputs were found in config file '{0}'. Specified 'include' paths were '{1}' and 'exclude' paths were '{2}'.", + "category": "Error", + "code": 18003, + "message": "No inputs were found in config file '{0}'. Specified 'include' paths were '{1}' and 'exclude' paths were '{2}'.", + "source": "generated" + }, + "18004": { + "body": "You're trying to pass '{0}' as a key AND value to this object using a shorthand. You'll need to declare '{0}' as a variable first.", + "category": "Error", + "code": 18004, + "message": "No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer.", + "source": "curated" + }, + "18006": { + "body": "TypeScript reports this error: Classes may not have a field named 'constructor'.", + "category": "Error", + "code": 18006, + "message": "Classes may not have a field named 'constructor'.", + "source": "generated" + }, + "18007": { + "body": "TypeScript reports this error: JSX expressions may not use the comma operator. Did you mean to write an array?", + "category": "Error", + "code": 18007, + "message": "JSX expressions may not use the comma operator. Did you mean to write an array?", + "source": "generated" + }, + "18009": { + "body": "TypeScript reports this error: Private identifiers cannot be used as parameters.", + "category": "Error", + "code": 18009, + "message": "Private identifiers cannot be used as parameters.", + "source": "generated" + }, + "18010": { + "body": "TypeScript reports this error: An accessibility modifier cannot be used with a private identifier.", + "category": "Error", + "code": 18010, + "message": "An accessibility modifier cannot be used with a private identifier.", + "source": "generated" + }, + "18011": { + "body": "TypeScript reports this error: The operand of a 'delete' operator cannot be a private identifier.", + "category": "Error", + "code": 18011, + "message": "The operand of a 'delete' operator cannot be a private identifier.", + "source": "generated" + }, + "18012": { + "body": "TypeScript reports this error: '#constructor' is a reserved word.", + "category": "Error", + "code": 18012, + "message": "'#constructor' is a reserved word.", + "source": "generated" + }, + "18013": { + "body": "TypeScript reports this error: Property '{0}' is not accessible outside class '{1}' because it has a private identifier.", + "category": "Error", + "code": 18013, + "message": "Property '{0}' is not accessible outside class '{1}' because it has a private identifier.", + "source": "generated" + }, + "18014": { + "body": "TypeScript reports this error: The property '{0}' cannot be accessed on type '{1}' within this class because it is shadowed by another private identifier with the same spelling.", + "category": "Error", + "code": 18014, + "message": "The property '{0}' cannot be accessed on type '{1}' within this class because it is shadowed by another private identifier with the same spelling.", + "source": "generated" + }, + "18015": { + "body": "TypeScript reports this error: Property '{0}' in type '{1}' refers to a different member that cannot be accessed from within type '{2}'.", + "category": "Error", + "code": 18015, + "message": "Property '{0}' in type '{1}' refers to a different member that cannot be accessed from within type '{2}'.", + "source": "generated" + }, + "18016": { + "body": "TypeScript reports this error: Private identifiers are not allowed outside class bodies.", + "category": "Error", + "code": 18016, + "message": "Private identifiers are not allowed outside class bodies.", + "source": "generated" + }, + "18017": { + "body": "TypeScript reports this error: The shadowing declaration of '{0}' is defined here", + "category": "Error", + "code": 18017, + "message": "The shadowing declaration of '{0}' is defined here", + "source": "generated" + }, + "18018": { + "body": "TypeScript reports this error: The declaration of '{0}' that you probably intended to use is defined here", + "category": "Error", + "code": 18018, + "message": "The declaration of '{0}' that you probably intended to use is defined here", + "source": "generated" + }, + "18019": { + "body": "TypeScript reports this error: '{0}' modifier cannot be used with a private identifier.", + "category": "Error", + "code": 18019, + "message": "'{0}' modifier cannot be used with a private identifier.", + "source": "generated" + }, + "18024": { + "body": "TypeScript reports this error: An enum member cannot be named with a private identifier.", + "category": "Error", + "code": 18024, + "message": "An enum member cannot be named with a private identifier.", + "source": "generated" + }, + "18026": { + "body": "TypeScript reports this error: '#!' can only be used at the start of a file.", + "category": "Error", + "code": 18026, + "message": "'#!' can only be used at the start of a file.", + "source": "generated" + }, + "18027": { + "body": "TypeScript reports this error: Compiler reserves name '{0}' when emitting private identifier downlevel.", + "category": "Error", + "code": 18027, + "message": "Compiler reserves name '{0}' when emitting private identifier downlevel.", + "source": "generated" + }, + "18028": { + "body": "TypeScript reports this error: Private identifiers are only available when targeting ECMAScript 2015 and higher.", + "category": "Error", + "code": 18028, + "message": "Private identifiers are only available when targeting ECMAScript 2015 and higher.", + "source": "generated" + }, + "18029": { + "body": "TypeScript reports this error: Private identifiers are not allowed in variable declarations.", + "category": "Error", + "code": 18029, + "message": "Private identifiers are not allowed in variable declarations.", + "source": "generated" + }, + "18030": { + "body": "TypeScript reports this error: An optional chain cannot contain private identifiers.", + "category": "Error", + "code": 18030, + "message": "An optional chain cannot contain private identifiers.", + "source": "generated" + }, + "18031": { + "body": "TypeScript reports this error: The intersection '{0}' was reduced to 'never' because property '{1}' has conflicting types in some constituents.", + "category": "Error", + "code": 18031, + "message": "The intersection '{0}' was reduced to 'never' because property '{1}' has conflicting types in some constituents.", + "source": "generated" + }, + "18032": { + "body": "TypeScript reports this error: The intersection '{0}' was reduced to 'never' because property '{1}' exists in multiple constituents and is private in some.", + "category": "Error", + "code": 18032, + "message": "The intersection '{0}' was reduced to 'never' because property '{1}' exists in multiple constituents and is private in some.", + "source": "generated" + }, + "18033": { + "body": "TypeScript reports this error: Type '{0}' is not assignable to type '{1}' as required for computed enum member values.", + "category": "Error", + "code": 18033, + "message": "Type '{0}' is not assignable to type '{1}' as required for computed enum member values.", + "source": "generated" + }, + "18034": { + "body": "TypeScript reports: Specify the JSX fragment factory function to use when targeting 'react' JSX emit with 'jsxFactory' compiler option is specified, e.g. 'Fragment'.", + "category": "Message", + "code": 18034, + "message": "Specify the JSX fragment factory function to use when targeting 'react' JSX emit with 'jsxFactory' compiler option is specified, e.g. 'Fragment'.", + "source": "generated" + }, + "18035": { + "body": "TypeScript reports this error: Invalid value for 'jsxFragmentFactory'. '{0}' is not a valid identifier or qualified-name.", + "category": "Error", + "code": 18035, + "message": "Invalid value for 'jsxFragmentFactory'. '{0}' is not a valid identifier or qualified-name.", + "source": "generated" + }, + "18036": { + "body": "TypeScript reports this error: Class decorators can't be used with static private identifier. Consider removing the experimental decorator.", + "category": "Error", + "code": 18036, + "message": "Class decorators can't be used with static private identifier. Consider removing the experimental decorator.", + "source": "generated" + }, + "18037": { + "body": "TypeScript reports this error: 'await' expression cannot be used inside a class static block.", + "category": "Error", + "code": 18037, + "message": "'await' expression cannot be used inside a class static block.", + "source": "generated" + }, + "18038": { + "body": "TypeScript reports this error: 'for await' loops cannot be used inside a class static block.", + "category": "Error", + "code": 18038, + "message": "'for await' loops cannot be used inside a class static block.", + "source": "generated" + }, + "18039": { + "body": "TypeScript reports this error: Invalid use of '{0}'. It cannot be used inside a class static block.", + "category": "Error", + "code": 18039, + "message": "Invalid use of '{0}'. It cannot be used inside a class static block.", + "source": "generated" + }, + "18041": { + "body": "TypeScript reports this error: A 'return' statement cannot be used inside a class static block.", + "category": "Error", + "code": 18041, + "message": "A 'return' statement cannot be used inside a class static block.", + "source": "generated" + }, + "18042": { + "body": "TypeScript reports this error: '{0}' is a type and cannot be imported in JavaScript files. Use '{1}' in a JSDoc type annotation.", + "category": "Error", + "code": 18042, + "message": "'{0}' is a type and cannot be imported in JavaScript files. Use '{1}' in a JSDoc type annotation.", + "source": "generated" + }, + "18043": { + "body": "TypeScript reports this error: Types cannot appear in export declarations in JavaScript files.", + "category": "Error", + "code": 18043, + "message": "Types cannot appear in export declarations in JavaScript files.", + "source": "generated" + }, + "18044": { + "body": "TypeScript reports: '{0}' is automatically exported here.", + "category": "Message", + "code": 18044, + "message": "'{0}' is automatically exported here.", + "source": "generated" + }, + "18045": { + "body": "TypeScript reports this error: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher.", + "category": "Error", + "code": 18045, + "message": "Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher.", + "source": "generated" + }, + "18046": { + "body": "TypeScript reports this error: '{0}' is of type 'unknown'.", + "category": "Error", + "code": 18046, + "message": "'{0}' is of type 'unknown'.", + "source": "generated" + }, + "18047": { + "body": "TypeScript reports this error: '{0}' is possibly 'null'.", + "category": "Error", + "code": 18047, + "message": "'{0}' is possibly 'null'.", + "source": "generated" + }, + "18048": { + "body": "TypeScript reports this error: '{0}' is possibly 'undefined'.", + "category": "Error", + "code": 18048, + "message": "'{0}' is possibly 'undefined'.", + "source": "generated" + }, + "18049": { + "body": "TypeScript reports this error: '{0}' is possibly 'null' or 'undefined'.", + "category": "Error", + "code": 18049, + "message": "'{0}' is possibly 'null' or 'undefined'.", + "source": "generated" + }, + "18050": { + "body": "TypeScript reports this error: The value '{0}' cannot be used here.", + "category": "Error", + "code": 18050, + "message": "The value '{0}' cannot be used here.", + "source": "generated" + }, + "18051": { + "body": "TypeScript reports this error: Compiler option '{0}' cannot be given an empty string.", + "category": "Error", + "code": 18051, + "message": "Compiler option '{0}' cannot be given an empty string.", + "source": "generated" + }, + "18053": { + "body": "TypeScript reports this error: Its type '{0}' is not a valid JSX element type.", + "category": "Error", + "code": 18053, + "message": "Its type '{0}' is not a valid JSX element type.", + "source": "generated" + }, + "18054": { + "body": "TypeScript reports this error: 'await using' statements cannot be used inside a class static block.", + "category": "Error", + "code": 18054, + "message": "'await using' statements cannot be used inside a class static block.", + "source": "generated" + }, + "18055": { + "body": "TypeScript reports this error: '{0}' has a string type, but must have syntactically recognizable string syntax when 'isolatedModules' is enabled.", + "category": "Error", + "code": 18055, + "message": "'{0}' has a string type, but must have syntactically recognizable string syntax when 'isolatedModules' is enabled.", + "source": "generated" + }, + "18056": { + "body": "TypeScript reports this error: Enum member following a non-literal numeric member must have an initializer when 'isolatedModules' is enabled.", + "category": "Error", + "code": 18056, + "message": "Enum member following a non-literal numeric member must have an initializer when 'isolatedModules' is enabled.", + "source": "generated" + }, + "18057": { + "body": "TypeScript reports this error: String literal import and export names are not supported when the '--module' flag is set to 'es2015' or 'es2020'.", + "category": "Error", + "code": 18057, + "message": "String literal import and export names are not supported when the '--module' flag is set to 'es2015' or 'es2020'.", + "source": "generated" + }, + "18058": { + "body": "TypeScript reports this error: Default imports are not allowed in a deferred import.", + "category": "Error", + "code": 18058, + "message": "Default imports are not allowed in a deferred import.", + "source": "generated" + }, + "18059": { + "body": "TypeScript reports this error: Named imports are not allowed in a deferred import.", + "category": "Error", + "code": 18059, + "message": "Named imports are not allowed in a deferred import.", + "source": "generated" + }, + "18060": { + "body": "TypeScript reports this error: Deferred imports are only supported when the '--module' flag is set to 'esnext' or 'preserve'.", + "category": "Error", + "code": 18060, + "message": "Deferred imports are only supported when the '--module' flag is set to 'esnext' or 'preserve'.", + "source": "generated" + }, + "18061": { + "body": "TypeScript reports this error: '{0}' is not a valid meta-property for keyword 'import'. Did you mean 'meta' or 'defer'?", + "category": "Error", + "code": 18061, + "message": "'{0}' is not a valid meta-property for keyword 'import'. Did you mean 'meta' or 'defer'?", + "source": "generated" + }, + "69010": { + "body": "TypeScript reports: `nodenext` if `module` is `nodenext`; `node16` if `module` is `node16` or `node18`; otherwise, `bundler`.", + "category": "Message", + "code": 69010, + "message": "`nodenext` if `module` is `nodenext`; `node16` if `module` is `node16` or `node18`; otherwise, `bundler`.", + "source": "generated" + }, + "80001": { + "body": "TypeScript suggests: File is a CommonJS module; it may be converted to an ES module.", + "category": "Suggestion", + "code": 80001, + "message": "File is a CommonJS module; it may be converted to an ES module.", + "source": "generated" + }, + "80002": { + "body": "TypeScript suggests: This constructor function may be converted to a class declaration.", + "category": "Suggestion", + "code": 80002, + "message": "This constructor function may be converted to a class declaration.", + "source": "generated" + }, + "80003": { + "body": "TypeScript suggests: Import may be converted to a default import.", + "category": "Suggestion", + "code": 80003, + "message": "Import may be converted to a default import.", + "source": "generated" + }, + "80004": { + "body": "TypeScript suggests: JSDoc types may be moved to TypeScript types.", + "category": "Suggestion", + "code": 80004, + "message": "JSDoc types may be moved to TypeScript types.", + "source": "generated" + }, + "80005": { + "body": "TypeScript suggests: 'require' call may be converted to an import.", + "category": "Suggestion", + "code": 80005, + "message": "'require' call may be converted to an import.", + "source": "generated" + }, + "80006": { + "body": "TypeScript suggests: This may be converted to an async function.", + "category": "Suggestion", + "code": 80006, + "message": "This may be converted to an async function.", + "source": "generated" + }, + "80007": { + "body": "TypeScript suggests: 'await' has no effect on the type of this expression.", + "category": "Suggestion", + "code": 80007, + "message": "'await' has no effect on the type of this expression.", + "source": "generated" + }, + "80008": { + "body": "TypeScript suggests: Numeric literals with absolute values equal to 2^53 or greater are too large to be represented accurately as integers.", + "category": "Suggestion", + "code": 80008, + "message": "Numeric literals with absolute values equal to 2^53 or greater are too large to be represented accurately as integers.", + "source": "generated" + }, + "80009": { + "body": "TypeScript suggests: JSDoc typedef may be converted to TypeScript type.", + "category": "Suggestion", + "code": 80009, + "message": "JSDoc typedef may be converted to TypeScript type.", + "source": "generated" + }, + "80010": { + "body": "TypeScript suggests: JSDoc typedefs may be converted to TypeScript types.", + "category": "Suggestion", + "code": 80010, + "message": "JSDoc typedefs may be converted to TypeScript types.", + "source": "generated" + }, + "90001": { + "body": "TypeScript reports: Add missing 'super()' call", + "category": "Message", + "code": 90001, + "message": "Add missing 'super()' call", + "source": "generated" + }, + "90002": { + "body": "TypeScript reports: Make 'super()' call the first statement in the constructor", + "category": "Message", + "code": 90002, + "message": "Make 'super()' call the first statement in the constructor", + "source": "generated" + }, + "90003": { + "body": "TypeScript reports: Change 'extends' to 'implements'", + "category": "Message", + "code": 90003, + "message": "Change 'extends' to 'implements'", + "source": "generated" + }, + "90004": { + "body": "TypeScript reports: Remove unused declaration for: '{0}'", + "category": "Message", + "code": 90004, + "message": "Remove unused declaration for: '{0}'", + "source": "generated" + }, + "90005": { + "body": "TypeScript reports: Remove import from '{0}'", + "category": "Message", + "code": 90005, + "message": "Remove import from '{0}'", + "source": "generated" + }, + "90006": { + "body": "TypeScript reports: Implement interface '{0}'", + "category": "Message", + "code": 90006, + "message": "Implement interface '{0}'", + "source": "generated" + }, + "90007": { + "body": "TypeScript reports: Implement inherited abstract class", + "category": "Message", + "code": 90007, + "message": "Implement inherited abstract class", + "source": "generated" + }, + "90008": { + "body": "TypeScript reports: Add '{0}.' to unresolved variable", + "category": "Message", + "code": 90008, + "message": "Add '{0}.' to unresolved variable", + "source": "generated" + }, + "90010": { + "body": "TypeScript reports: Remove variable statement", + "category": "Message", + "code": 90010, + "message": "Remove variable statement", + "source": "generated" + }, + "90011": { + "body": "TypeScript reports: Remove template tag", + "category": "Message", + "code": 90011, + "message": "Remove template tag", + "source": "generated" + }, + "90012": { + "body": "TypeScript reports: Remove type parameters", + "category": "Message", + "code": 90012, + "message": "Remove type parameters", + "source": "generated" + }, + "90013": { + "body": "TypeScript reports: Import '{0}' from \"{1}\"", + "category": "Message", + "code": 90013, + "message": "Import '{0}' from \"{1}\"", + "source": "generated" + }, + "90014": { + "body": "TypeScript reports: Change '{0}' to '{1}'", + "category": "Message", + "code": 90014, + "message": "Change '{0}' to '{1}'", + "source": "generated" + }, + "90016": { + "body": "TypeScript reports: Declare property '{0}'", + "category": "Message", + "code": 90016, + "message": "Declare property '{0}'", + "source": "generated" + }, + "90017": { + "body": "TypeScript reports: Add index signature for property '{0}'", + "category": "Message", + "code": 90017, + "message": "Add index signature for property '{0}'", + "source": "generated" + }, + "90018": { + "body": "TypeScript reports: Disable checking for this file", + "category": "Message", + "code": 90018, + "message": "Disable checking for this file", + "source": "generated" + }, + "90019": { + "body": "TypeScript reports: Ignore this error message", + "category": "Message", + "code": 90019, + "message": "Ignore this error message", + "source": "generated" + }, + "90020": { + "body": "TypeScript reports: Initialize property '{0}' in the constructor", + "category": "Message", + "code": 90020, + "message": "Initialize property '{0}' in the constructor", + "source": "generated" + }, + "90021": { + "body": "TypeScript reports: Initialize static property '{0}'", + "category": "Message", + "code": 90021, + "message": "Initialize static property '{0}'", + "source": "generated" + }, + "90022": { + "body": "TypeScript reports: Change spelling to '{0}'", + "category": "Message", + "code": 90022, + "message": "Change spelling to '{0}'", + "source": "generated" + }, + "90023": { + "body": "TypeScript reports: Declare method '{0}'", + "category": "Message", + "code": 90023, + "message": "Declare method '{0}'", + "source": "generated" + }, + "90024": { + "body": "TypeScript reports: Declare static method '{0}'", + "category": "Message", + "code": 90024, + "message": "Declare static method '{0}'", + "source": "generated" + }, + "90025": { + "body": "TypeScript reports: Prefix '{0}' with an underscore", + "category": "Message", + "code": 90025, + "message": "Prefix '{0}' with an underscore", + "source": "generated" + }, + "90026": { + "body": "TypeScript reports: Rewrite as the indexed access type '{0}'", + "category": "Message", + "code": 90026, + "message": "Rewrite as the indexed access type '{0}'", + "source": "generated" + }, + "90027": { + "body": "TypeScript reports: Declare static property '{0}'", + "category": "Message", + "code": 90027, + "message": "Declare static property '{0}'", + "source": "generated" + }, + "90028": { + "body": "TypeScript reports: Call decorator expression", + "category": "Message", + "code": 90028, + "message": "Call decorator expression", + "source": "generated" + }, + "90029": { + "body": "TypeScript reports: Add async modifier to containing function", + "category": "Message", + "code": 90029, + "message": "Add async modifier to containing function", + "source": "generated" + }, + "90030": { + "body": "TypeScript reports: Replace 'infer {0}' with 'unknown'", + "category": "Message", + "code": 90030, + "message": "Replace 'infer {0}' with 'unknown'", + "source": "generated" + }, + "90031": { + "body": "TypeScript reports: Replace all unused 'infer' with 'unknown'", + "category": "Message", + "code": 90031, + "message": "Replace all unused 'infer' with 'unknown'", + "source": "generated" + }, + "90034": { + "body": "TypeScript reports: Add parameter name", + "category": "Message", + "code": 90034, + "message": "Add parameter name", + "source": "generated" + }, + "90035": { + "body": "TypeScript reports: Declare private property '{0}'", + "category": "Message", + "code": 90035, + "message": "Declare private property '{0}'", + "source": "generated" + }, + "90036": { + "body": "TypeScript reports: Replace '{0}' with 'Promise<{1}>'", + "category": "Message", + "code": 90036, + "message": "Replace '{0}' with 'Promise<{1}>'", + "source": "generated" + }, + "90037": { + "body": "TypeScript reports: Fix all incorrect return type of an async functions", + "category": "Message", + "code": 90037, + "message": "Fix all incorrect return type of an async functions", + "source": "generated" + }, + "90038": { + "body": "TypeScript reports: Declare private method '{0}'", + "category": "Message", + "code": 90038, + "message": "Declare private method '{0}'", + "source": "generated" + }, + "90039": { + "body": "TypeScript reports: Remove unused destructuring declaration", + "category": "Message", + "code": 90039, + "message": "Remove unused destructuring declaration", + "source": "generated" + }, + "90041": { + "body": "TypeScript reports: Remove unused declarations for: '{0}'", + "category": "Message", + "code": 90041, + "message": "Remove unused declarations for: '{0}'", + "source": "generated" + }, + "90053": { + "body": "TypeScript reports: Declare a private field named '{0}'.", + "category": "Message", + "code": 90053, + "message": "Declare a private field named '{0}'.", + "source": "generated" + }, + "90054": { + "body": "TypeScript reports: Includes imports of types referenced by '{0}'", + "category": "Message", + "code": 90054, + "message": "Includes imports of types referenced by '{0}'", + "source": "generated" + }, + "90055": { + "body": "TypeScript reports: Remove 'type' from import declaration from \"{0}\"", + "category": "Message", + "code": 90055, + "message": "Remove 'type' from import declaration from \"{0}\"", + "source": "generated" + }, + "90056": { + "body": "TypeScript reports: Remove 'type' from import of '{0}' from \"{1}\"", + "category": "Message", + "code": 90056, + "message": "Remove 'type' from import of '{0}' from \"{1}\"", + "source": "generated" + }, + "90057": { + "body": "TypeScript reports: Add import from \"{0}\"", + "category": "Message", + "code": 90057, + "message": "Add import from \"{0}\"", + "source": "generated" + }, + "90058": { + "body": "TypeScript reports: Update import from \"{0}\"", + "category": "Message", + "code": 90058, + "message": "Update import from \"{0}\"", + "source": "generated" + }, + "90059": { + "body": "TypeScript reports: Export '{0}' from module '{1}'", + "category": "Message", + "code": 90059, + "message": "Export '{0}' from module '{1}'", + "source": "generated" + }, + "90060": { + "body": "TypeScript reports: Export all referenced locals", + "category": "Message", + "code": 90060, + "message": "Export all referenced locals", + "source": "generated" + }, + "90061": { + "body": "TypeScript reports: Update modifiers of '{0}'", + "category": "Message", + "code": 90061, + "message": "Update modifiers of '{0}'", + "source": "generated" + }, + "90062": { + "body": "TypeScript reports: Add annotation of type '{0}'", + "category": "Message", + "code": 90062, + "message": "Add annotation of type '{0}'", + "source": "generated" + }, + "90063": { + "body": "TypeScript reports: Add return type '{0}'", + "category": "Message", + "code": 90063, + "message": "Add return type '{0}'", + "source": "generated" + }, + "90064": { + "body": "TypeScript reports: Extract base class to variable", + "category": "Message", + "code": 90064, + "message": "Extract base class to variable", + "source": "generated" + }, + "90065": { + "body": "TypeScript reports: Extract default export to variable", + "category": "Message", + "code": 90065, + "message": "Extract default export to variable", + "source": "generated" + }, + "90066": { + "body": "TypeScript reports: Extract binding expressions to variable", + "category": "Message", + "code": 90066, + "message": "Extract binding expressions to variable", + "source": "generated" + }, + "90067": { + "body": "TypeScript reports: Add all missing type annotations", + "category": "Message", + "code": 90067, + "message": "Add all missing type annotations", + "source": "generated" + }, + "90068": { + "body": "TypeScript reports: Add satisfies and an inline type assertion with '{0}'", + "category": "Message", + "code": 90068, + "message": "Add satisfies and an inline type assertion with '{0}'", + "source": "generated" + }, + "90069": { + "body": "TypeScript reports: Extract to variable and replace with '{0} as typeof {0}'", + "category": "Message", + "code": 90069, + "message": "Extract to variable and replace with '{0} as typeof {0}'", + "source": "generated" + }, + "90070": { + "body": "TypeScript reports: Mark array literal as const", + "category": "Message", + "code": 90070, + "message": "Mark array literal as const", + "source": "generated" + }, + "90071": { + "body": "TypeScript reports: Annotate types of properties expando function in a namespace", + "category": "Message", + "code": 90071, + "message": "Annotate types of properties expando function in a namespace", + "source": "generated" + }, + "95001": { + "body": "TypeScript reports: Convert function to an ES2015 class", + "category": "Message", + "code": 95001, + "message": "Convert function to an ES2015 class", + "source": "generated" + }, + "95003": { + "body": "TypeScript reports: Convert '{0}' to '{1} in {0}'", + "category": "Message", + "code": 95003, + "message": "Convert '{0}' to '{1} in {0}'", + "source": "generated" + }, + "95004": { + "body": "TypeScript reports: Extract to {0} in {1}", + "category": "Message", + "code": 95004, + "message": "Extract to {0} in {1}", + "source": "generated" + }, + "95005": { + "body": "TypeScript reports: Extract function", + "category": "Message", + "code": 95005, + "message": "Extract function", + "source": "generated" + }, + "95006": { + "body": "TypeScript reports: Extract constant", + "category": "Message", + "code": 95006, + "message": "Extract constant", + "source": "generated" + }, + "95007": { + "body": "TypeScript reports: Extract to {0} in enclosing scope", + "category": "Message", + "code": 95007, + "message": "Extract to {0} in enclosing scope", + "source": "generated" + }, + "95008": { + "body": "TypeScript reports: Extract to {0} in {1} scope", + "category": "Message", + "code": 95008, + "message": "Extract to {0} in {1} scope", + "source": "generated" + }, + "95009": { + "body": "TypeScript reports: Annotate with type from JSDoc", + "category": "Message", + "code": 95009, + "message": "Annotate with type from JSDoc", + "source": "generated" + }, + "95011": { + "body": "TypeScript reports: Infer type of '{0}' from usage", + "category": "Message", + "code": 95011, + "message": "Infer type of '{0}' from usage", + "source": "generated" + }, + "95012": { + "body": "TypeScript reports: Infer parameter types from usage", + "category": "Message", + "code": 95012, + "message": "Infer parameter types from usage", + "source": "generated" + }, + "95013": { + "body": "TypeScript reports: Convert to default import", + "category": "Message", + "code": 95013, + "message": "Convert to default import", + "source": "generated" + }, + "95014": { + "body": "TypeScript reports: Install '{0}'", + "category": "Message", + "code": 95014, + "message": "Install '{0}'", + "source": "generated" + }, + "95015": { + "body": "TypeScript reports: Replace import with '{0}'.", + "category": "Message", + "code": 95015, + "message": "Replace import with '{0}'.", + "source": "generated" + }, + "95016": { + "body": "TypeScript reports: Use synthetic 'default' member.", + "category": "Message", + "code": 95016, + "message": "Use synthetic 'default' member.", + "source": "generated" + }, + "95017": { + "body": "TypeScript reports: Convert to ES module", + "category": "Message", + "code": 95017, + "message": "Convert to ES module", + "source": "generated" + }, + "95018": { + "body": "TypeScript reports: Add 'undefined' type to property '{0}'", + "category": "Message", + "code": 95018, + "message": "Add 'undefined' type to property '{0}'", + "source": "generated" + }, + "95019": { + "body": "TypeScript reports: Add initializer to property '{0}'", + "category": "Message", + "code": 95019, + "message": "Add initializer to property '{0}'", + "source": "generated" + }, + "95020": { + "body": "TypeScript reports: Add definite assignment assertion to property '{0}'", + "category": "Message", + "code": 95020, + "message": "Add definite assignment assertion to property '{0}'", + "source": "generated" + }, + "95021": { + "body": "TypeScript reports: Convert all type literals to mapped type", + "category": "Message", + "code": 95021, + "message": "Convert all type literals to mapped type", + "source": "generated" + }, + "95022": { + "body": "TypeScript reports: Add all missing members", + "category": "Message", + "code": 95022, + "message": "Add all missing members", + "source": "generated" + }, + "95023": { + "body": "TypeScript reports: Infer all types from usage", + "category": "Message", + "code": 95023, + "message": "Infer all types from usage", + "source": "generated" + }, + "95024": { + "body": "TypeScript reports: Delete all unused declarations", + "category": "Message", + "code": 95024, + "message": "Delete all unused declarations", + "source": "generated" + }, + "95025": { + "body": "TypeScript reports: Prefix all unused declarations with '_' where possible", + "category": "Message", + "code": 95025, + "message": "Prefix all unused declarations with '_' where possible", + "source": "generated" + }, + "95026": { + "body": "TypeScript reports: Fix all detected spelling errors", + "category": "Message", + "code": 95026, + "message": "Fix all detected spelling errors", + "source": "generated" + }, + "95027": { + "body": "TypeScript reports: Add initializers to all uninitialized properties", + "category": "Message", + "code": 95027, + "message": "Add initializers to all uninitialized properties", + "source": "generated" + }, + "95028": { + "body": "TypeScript reports: Add definite assignment assertions to all uninitialized properties", + "category": "Message", + "code": 95028, + "message": "Add definite assignment assertions to all uninitialized properties", + "source": "generated" + }, + "95029": { + "body": "TypeScript reports: Add undefined type to all uninitialized properties", + "category": "Message", + "code": 95029, + "message": "Add undefined type to all uninitialized properties", + "source": "generated" + }, + "95030": { + "body": "TypeScript reports: Change all jsdoc-style types to TypeScript", + "category": "Message", + "code": 95030, + "message": "Change all jsdoc-style types to TypeScript", + "source": "generated" + }, + "95031": { + "body": "TypeScript reports: Change all jsdoc-style types to TypeScript (and add '| undefined' to nullable types)", + "category": "Message", + "code": 95031, + "message": "Change all jsdoc-style types to TypeScript (and add '| undefined' to nullable types)", + "source": "generated" + }, + "95032": { + "body": "TypeScript reports: Implement all unimplemented interfaces", + "category": "Message", + "code": 95032, + "message": "Implement all unimplemented interfaces", + "source": "generated" + }, + "95033": { + "body": "TypeScript reports: Install all missing types packages", + "category": "Message", + "code": 95033, + "message": "Install all missing types packages", + "source": "generated" + }, + "95034": { + "body": "TypeScript reports: Rewrite all as indexed access types", + "category": "Message", + "code": 95034, + "message": "Rewrite all as indexed access types", + "source": "generated" + }, + "95035": { + "body": "TypeScript reports: Convert all to default imports", + "category": "Message", + "code": 95035, + "message": "Convert all to default imports", + "source": "generated" + }, + "95036": { + "body": "TypeScript reports: Make all 'super()' calls the first statement in their constructor", + "category": "Message", + "code": 95036, + "message": "Make all 'super()' calls the first statement in their constructor", + "source": "generated" + }, + "95037": { + "body": "TypeScript reports: Add qualifier to all unresolved variables matching a member name", + "category": "Message", + "code": 95037, + "message": "Add qualifier to all unresolved variables matching a member name", + "source": "generated" + }, + "95038": { + "body": "TypeScript reports: Change all extended interfaces to 'implements'", + "category": "Message", + "code": 95038, + "message": "Change all extended interfaces to 'implements'", + "source": "generated" + }, + "95039": { + "body": "TypeScript reports: Add all missing super calls", + "category": "Message", + "code": 95039, + "message": "Add all missing super calls", + "source": "generated" + }, + "95040": { + "body": "TypeScript reports: Implement all inherited abstract classes", + "category": "Message", + "code": 95040, + "message": "Implement all inherited abstract classes", + "source": "generated" + }, + "95041": { + "body": "TypeScript reports: Add all missing 'async' modifiers", + "category": "Message", + "code": 95041, + "message": "Add all missing 'async' modifiers", + "source": "generated" + }, + "95042": { + "body": "TypeScript reports: Add '@ts-ignore' to all error messages", + "category": "Message", + "code": 95042, + "message": "Add '@ts-ignore' to all error messages", + "source": "generated" + }, + "95043": { + "body": "TypeScript reports: Annotate everything with types from JSDoc", + "category": "Message", + "code": 95043, + "message": "Annotate everything with types from JSDoc", + "source": "generated" + }, + "95044": { + "body": "TypeScript reports: Add '()' to all uncalled decorators", + "category": "Message", + "code": 95044, + "message": "Add '()' to all uncalled decorators", + "source": "generated" + }, + "95045": { + "body": "TypeScript reports: Convert all constructor functions to classes", + "category": "Message", + "code": 95045, + "message": "Convert all constructor functions to classes", + "source": "generated" + }, + "95046": { + "body": "TypeScript reports: Generate 'get' and 'set' accessors", + "category": "Message", + "code": 95046, + "message": "Generate 'get' and 'set' accessors", + "source": "generated" + }, + "95047": { + "body": "TypeScript reports: Convert 'require' to 'import'", + "category": "Message", + "code": 95047, + "message": "Convert 'require' to 'import'", + "source": "generated" + }, + "95048": { + "body": "TypeScript reports: Convert all 'require' to 'import'", + "category": "Message", + "code": 95048, + "message": "Convert all 'require' to 'import'", + "source": "generated" + }, + "95049": { + "body": "TypeScript reports: Move to a new file", + "category": "Message", + "code": 95049, + "message": "Move to a new file", + "source": "generated" + }, + "95050": { + "body": "I've spotted a bit of code that will never be run.", + "category": "Message", + "code": 95050, + "message": "Remove unreachable code", + "source": "curated" + }, + "95051": { + "body": "TypeScript reports: Remove all unreachable code", + "category": "Message", + "code": 95051, + "message": "Remove all unreachable code", + "source": "generated" + }, + "95052": { + "body": "TypeScript reports: Add missing 'typeof'", + "category": "Message", + "code": 95052, + "message": "Add missing 'typeof'", + "source": "generated" + }, + "95053": { + "body": "TypeScript reports: Remove unused label", + "category": "Message", + "code": 95053, + "message": "Remove unused label", + "source": "generated" + }, + "95054": { + "body": "TypeScript reports: Remove all unused labels", + "category": "Message", + "code": 95054, + "message": "Remove all unused labels", + "source": "generated" + }, + "95055": { + "body": "TypeScript reports: Convert '{0}' to mapped object type", + "category": "Message", + "code": 95055, + "message": "Convert '{0}' to mapped object type", + "source": "generated" + }, + "95056": { + "body": "TypeScript reports: Convert namespace import to named imports", + "category": "Message", + "code": 95056, + "message": "Convert namespace import to named imports", + "source": "generated" + }, + "95057": { + "body": "TypeScript reports: Convert named imports to namespace import", + "category": "Message", + "code": 95057, + "message": "Convert named imports to namespace import", + "source": "generated" + }, + "95058": { + "body": "TypeScript reports: Add or remove braces in an arrow function", + "category": "Message", + "code": 95058, + "message": "Add or remove braces in an arrow function", + "source": "generated" + }, + "95059": { + "body": "TypeScript reports: Add braces to arrow function", + "category": "Message", + "code": 95059, + "message": "Add braces to arrow function", + "source": "generated" + }, + "95060": { + "body": "TypeScript reports: Remove braces from arrow function", + "category": "Message", + "code": 95060, + "message": "Remove braces from arrow function", + "source": "generated" + }, + "95061": { + "body": "TypeScript reports: Convert default export to named export", + "category": "Message", + "code": 95061, + "message": "Convert default export to named export", + "source": "generated" + }, + "95062": { + "body": "TypeScript reports: Convert named export to default export", + "category": "Message", + "code": 95062, + "message": "Convert named export to default export", + "source": "generated" + }, + "95063": { + "body": "TypeScript reports: Add missing enum member '{0}'", + "category": "Message", + "code": 95063, + "message": "Add missing enum member '{0}'", + "source": "generated" + }, + "95064": { + "body": "TypeScript reports: Add all missing imports", + "category": "Message", + "code": 95064, + "message": "Add all missing imports", + "source": "generated" + }, + "95065": { + "body": "TypeScript reports: Convert to async function", + "category": "Message", + "code": 95065, + "message": "Convert to async function", + "source": "generated" + }, + "95066": { + "body": "TypeScript reports: Convert all to async functions", + "category": "Message", + "code": 95066, + "message": "Convert all to async functions", + "source": "generated" + }, + "95067": { + "body": "TypeScript reports: Add missing call parentheses", + "category": "Message", + "code": 95067, + "message": "Add missing call parentheses", + "source": "generated" + }, + "95068": { + "body": "TypeScript reports: Add all missing call parentheses", + "category": "Message", + "code": 95068, + "message": "Add all missing call parentheses", + "source": "generated" + }, + "95069": { + "body": "TypeScript reports: Add 'unknown' conversion for non-overlapping types", + "category": "Message", + "code": 95069, + "message": "Add 'unknown' conversion for non-overlapping types", + "source": "generated" + }, + "95070": { + "body": "TypeScript reports: Add 'unknown' to all conversions of non-overlapping types", + "category": "Message", + "code": 95070, + "message": "Add 'unknown' to all conversions of non-overlapping types", + "source": "generated" + }, + "95071": { + "body": "TypeScript reports: Add missing 'new' operator to call", + "category": "Message", + "code": 95071, + "message": "Add missing 'new' operator to call", + "source": "generated" + }, + "95072": { + "body": "TypeScript reports: Add missing 'new' operator to all calls", + "category": "Message", + "code": 95072, + "message": "Add missing 'new' operator to all calls", + "source": "generated" + }, + "95073": { + "body": "TypeScript reports: Add names to all parameters without names", + "category": "Message", + "code": 95073, + "message": "Add names to all parameters without names", + "source": "generated" + }, + "95074": { + "body": "TypeScript reports: Enable the 'experimentalDecorators' option in your configuration file", + "category": "Message", + "code": 95074, + "message": "Enable the 'experimentalDecorators' option in your configuration file", + "source": "generated" + }, + "95075": { + "body": "TypeScript reports: Convert parameters to destructured object", + "category": "Message", + "code": 95075, + "message": "Convert parameters to destructured object", + "source": "generated" + }, + "95077": { + "body": "TypeScript reports: Extract type", + "category": "Message", + "code": 95077, + "message": "Extract type", + "source": "generated" + }, + "95078": { + "body": "TypeScript reports: Extract to type alias", + "category": "Message", + "code": 95078, + "message": "Extract to type alias", + "source": "generated" + }, + "95079": { + "body": "TypeScript reports: Extract to typedef", + "category": "Message", + "code": 95079, + "message": "Extract to typedef", + "source": "generated" + }, + "95080": { + "body": "TypeScript reports: Infer 'this' type of '{0}' from usage", + "category": "Message", + "code": 95080, + "message": "Infer 'this' type of '{0}' from usage", + "source": "generated" + }, + "95081": { + "body": "TypeScript reports: Add 'const' to unresolved variable", + "category": "Message", + "code": 95081, + "message": "Add 'const' to unresolved variable", + "source": "generated" + }, + "95082": { + "body": "TypeScript reports: Add 'const' to all unresolved variables", + "category": "Message", + "code": 95082, + "message": "Add 'const' to all unresolved variables", + "source": "generated" + }, + "95083": { + "body": "TypeScript reports: Add 'await'", + "category": "Message", + "code": 95083, + "message": "Add 'await'", + "source": "generated" + }, + "95084": { + "body": "TypeScript reports: Add 'await' to initializer for '{0}'", + "category": "Message", + "code": 95084, + "message": "Add 'await' to initializer for '{0}'", + "source": "generated" + }, + "95085": { + "body": "TypeScript reports: Fix all expressions possibly missing 'await'", + "category": "Message", + "code": 95085, + "message": "Fix all expressions possibly missing 'await'", + "source": "generated" + }, + "95086": { + "body": "TypeScript reports: Remove unnecessary 'await'", + "category": "Message", + "code": 95086, + "message": "Remove unnecessary 'await'", + "source": "generated" + }, + "95087": { + "body": "TypeScript reports: Remove all unnecessary uses of 'await'", + "category": "Message", + "code": 95087, + "message": "Remove all unnecessary uses of 'await'", + "source": "generated" + }, + "95088": { + "body": "TypeScript reports: Enable the '--jsx' flag in your configuration file", + "category": "Message", + "code": 95088, + "message": "Enable the '--jsx' flag in your configuration file", + "source": "generated" + }, + "95089": { + "body": "TypeScript reports: Add 'await' to initializers", + "category": "Message", + "code": 95089, + "message": "Add 'await' to initializers", + "source": "generated" + }, + "95090": { + "body": "TypeScript reports: Extract to interface", + "category": "Message", + "code": 95090, + "message": "Extract to interface", + "source": "generated" + }, + "95091": { + "body": "TypeScript reports: Convert to a bigint numeric literal", + "category": "Message", + "code": 95091, + "message": "Convert to a bigint numeric literal", + "source": "generated" + }, + "95092": { + "body": "TypeScript reports: Convert all to bigint numeric literals", + "category": "Message", + "code": 95092, + "message": "Convert all to bigint numeric literals", + "source": "generated" + }, + "95093": { + "body": "TypeScript reports: Convert 'const' to 'let'", + "category": "Message", + "code": 95093, + "message": "Convert 'const' to 'let'", + "source": "generated" + }, + "95094": { + "body": "TypeScript reports: Prefix with 'declare'", + "category": "Message", + "code": 95094, + "message": "Prefix with 'declare'", + "source": "generated" + }, + "95095": { + "body": "TypeScript reports: Prefix all incorrect property declarations with 'declare'", + "category": "Message", + "code": 95095, + "message": "Prefix all incorrect property declarations with 'declare'", + "source": "generated" + }, + "95096": { + "body": "TypeScript reports: Convert to template string", + "category": "Message", + "code": 95096, + "message": "Convert to template string", + "source": "generated" + }, + "95097": { + "body": "TypeScript reports: Add 'export {}' to make this file into a module", + "category": "Message", + "code": 95097, + "message": "Add 'export {}' to make this file into a module", + "source": "generated" + }, + "95098": { + "body": "TypeScript reports: Set the 'target' option in your configuration file to '{0}'", + "category": "Message", + "code": 95098, + "message": "Set the 'target' option in your configuration file to '{0}'", + "source": "generated" + }, + "95099": { + "body": "TypeScript reports: Set the 'module' option in your configuration file to '{0}'", + "category": "Message", + "code": 95099, + "message": "Set the 'module' option in your configuration file to '{0}'", + "source": "generated" + }, + "95100": { + "body": "TypeScript reports: Convert invalid character to its html entity code", + "category": "Message", + "code": 95100, + "message": "Convert invalid character to its html entity code", + "source": "generated" + }, + "95101": { + "body": "TypeScript reports: Convert all invalid characters to HTML entity code", + "category": "Message", + "code": 95101, + "message": "Convert all invalid characters to HTML entity code", + "source": "generated" + }, + "95102": { + "body": "TypeScript reports: Convert all 'const' to 'let'", + "category": "Message", + "code": 95102, + "message": "Convert all 'const' to 'let'", + "source": "generated" + }, + "95105": { + "body": "TypeScript reports: Convert function expression '{0}' to arrow function", + "category": "Message", + "code": 95105, + "message": "Convert function expression '{0}' to arrow function", + "source": "generated" + }, + "95106": { + "body": "TypeScript reports: Convert function declaration '{0}' to arrow function", + "category": "Message", + "code": 95106, + "message": "Convert function declaration '{0}' to arrow function", + "source": "generated" + }, + "95107": { + "body": "TypeScript reports: Fix all implicit-'this' errors", + "category": "Message", + "code": 95107, + "message": "Fix all implicit-'this' errors", + "source": "generated" + }, + "95108": { + "body": "TypeScript reports: Wrap invalid character in an expression container", + "category": "Message", + "code": 95108, + "message": "Wrap invalid character in an expression container", + "source": "generated" + }, + "95109": { + "body": "TypeScript reports: Wrap all invalid characters in an expression container", + "category": "Message", + "code": 95109, + "message": "Wrap all invalid characters in an expression container", + "source": "generated" + }, + "95110": { + "body": "TypeScript reports: Visit https://aka.ms/tsconfig to read more about this file", + "category": "Message", + "code": 95110, + "message": "Visit https://aka.ms/tsconfig to read more about this file", + "source": "generated" + }, + "95111": { + "body": "TypeScript reports: Add a return statement", + "category": "Message", + "code": 95111, + "message": "Add a return statement", + "source": "generated" + }, + "95112": { + "body": "TypeScript reports: Remove braces from arrow function body", + "category": "Message", + "code": 95112, + "message": "Remove braces from arrow function body", + "source": "generated" + }, + "95113": { + "body": "TypeScript reports: Wrap the following body with parentheses which should be an object literal", + "category": "Message", + "code": 95113, + "message": "Wrap the following body with parentheses which should be an object literal", + "source": "generated" + }, + "95114": { + "body": "TypeScript reports: Add all missing return statement", + "category": "Message", + "code": 95114, + "message": "Add all missing return statement", + "source": "generated" + }, + "95115": { + "body": "TypeScript reports: Remove braces from all arrow function bodies with relevant issues", + "category": "Message", + "code": 95115, + "message": "Remove braces from all arrow function bodies with relevant issues", + "source": "generated" + }, + "95116": { + "body": "TypeScript reports: Wrap all object literal with parentheses", + "category": "Message", + "code": 95116, + "message": "Wrap all object literal with parentheses", + "source": "generated" + }, + "95117": { + "body": "TypeScript reports: Move labeled tuple element modifiers to labels", + "category": "Message", + "code": 95117, + "message": "Move labeled tuple element modifiers to labels", + "source": "generated" + }, + "95118": { + "body": "TypeScript reports: Convert overload list to single signature", + "category": "Message", + "code": 95118, + "message": "Convert overload list to single signature", + "source": "generated" + }, + "95119": { + "body": "TypeScript reports: Generate 'get' and 'set' accessors for all overriding properties", + "category": "Message", + "code": 95119, + "message": "Generate 'get' and 'set' accessors for all overriding properties", + "source": "generated" + }, + "95120": { + "body": "TypeScript reports: Wrap in JSX fragment", + "category": "Message", + "code": 95120, + "message": "Wrap in JSX fragment", + "source": "generated" + }, + "95121": { + "body": "TypeScript reports: Wrap all unparented JSX in JSX fragment", + "category": "Message", + "code": 95121, + "message": "Wrap all unparented JSX in JSX fragment", + "source": "generated" + }, + "95122": { + "body": "TypeScript reports: Convert arrow function or function expression", + "category": "Message", + "code": 95122, + "message": "Convert arrow function or function expression", + "source": "generated" + }, + "95123": { + "body": "TypeScript reports: Convert to anonymous function", + "category": "Message", + "code": 95123, + "message": "Convert to anonymous function", + "source": "generated" + }, + "95124": { + "body": "TypeScript reports: Convert to named function", + "category": "Message", + "code": 95124, + "message": "Convert to named function", + "source": "generated" + }, + "95125": { + "body": "TypeScript reports: Convert to arrow function", + "category": "Message", + "code": 95125, + "message": "Convert to arrow function", + "source": "generated" + }, + "95126": { + "body": "TypeScript reports: Remove parentheses", + "category": "Message", + "code": 95126, + "message": "Remove parentheses", + "source": "generated" + }, + "95127": { + "body": "TypeScript reports: Could not find a containing arrow function", + "category": "Message", + "code": 95127, + "message": "Could not find a containing arrow function", + "source": "generated" + }, + "95128": { + "body": "TypeScript reports: Containing function is not an arrow function", + "category": "Message", + "code": 95128, + "message": "Containing function is not an arrow function", + "source": "generated" + }, + "95129": { + "body": "TypeScript reports: Could not find export statement", + "category": "Message", + "code": 95129, + "message": "Could not find export statement", + "source": "generated" + }, + "95130": { + "body": "TypeScript reports: This file already has a default export", + "category": "Message", + "code": 95130, + "message": "This file already has a default export", + "source": "generated" + }, + "95131": { + "body": "TypeScript reports: Could not find import clause", + "category": "Message", + "code": 95131, + "message": "Could not find import clause", + "source": "generated" + }, + "95132": { + "body": "TypeScript reports: Could not find namespace import or named imports", + "category": "Message", + "code": 95132, + "message": "Could not find namespace import or named imports", + "source": "generated" + }, + "95133": { + "body": "TypeScript reports: Selection is not a valid type node", + "category": "Message", + "code": 95133, + "message": "Selection is not a valid type node", + "source": "generated" + }, + "95134": { + "body": "TypeScript reports: No type could be extracted from this type node", + "category": "Message", + "code": 95134, + "message": "No type could be extracted from this type node", + "source": "generated" + }, + "95135": { + "body": "TypeScript reports: Could not find property for which to generate accessor", + "category": "Message", + "code": 95135, + "message": "Could not find property for which to generate accessor", + "source": "generated" + }, + "95136": { + "body": "TypeScript reports: Name is not valid", + "category": "Message", + "code": 95136, + "message": "Name is not valid", + "source": "generated" + }, + "95137": { + "body": "TypeScript reports: Can only convert property with modifier", + "category": "Message", + "code": 95137, + "message": "Can only convert property with modifier", + "source": "generated" + }, + "95138": { + "body": "TypeScript reports: Switch each misused '{0}' to '{1}'", + "category": "Message", + "code": 95138, + "message": "Switch each misused '{0}' to '{1}'", + "source": "generated" + }, + "95139": { + "body": "TypeScript reports: Convert to optional chain expression", + "category": "Message", + "code": 95139, + "message": "Convert to optional chain expression", + "source": "generated" + }, + "95140": { + "body": "TypeScript reports: Could not find convertible access expression", + "category": "Message", + "code": 95140, + "message": "Could not find convertible access expression", + "source": "generated" + }, + "95141": { + "body": "TypeScript reports: Could not find matching access expressions", + "category": "Message", + "code": 95141, + "message": "Could not find matching access expressions", + "source": "generated" + }, + "95142": { + "body": "TypeScript reports: Can only convert logical AND access chains", + "category": "Message", + "code": 95142, + "message": "Can only convert logical AND access chains", + "source": "generated" + }, + "95143": { + "body": "TypeScript reports: Add 'void' to Promise resolved without a value", + "category": "Message", + "code": 95143, + "message": "Add 'void' to Promise resolved without a value", + "source": "generated" + }, + "95144": { + "body": "TypeScript reports: Add 'void' to all Promises resolved without a value", + "category": "Message", + "code": 95144, + "message": "Add 'void' to all Promises resolved without a value", + "source": "generated" + }, + "95145": { + "body": "TypeScript reports: Use element access for '{0}'", + "category": "Message", + "code": 95145, + "message": "Use element access for '{0}'", + "source": "generated" + }, + "95146": { + "body": "TypeScript reports: Use element access for all undeclared properties.", + "category": "Message", + "code": 95146, + "message": "Use element access for all undeclared properties.", + "source": "generated" + }, + "95147": { + "body": "TypeScript reports: Delete all unused imports", + "category": "Message", + "code": 95147, + "message": "Delete all unused imports", + "source": "generated" + }, + "95148": { + "body": "TypeScript reports: Infer function return type", + "category": "Message", + "code": 95148, + "message": "Infer function return type", + "source": "generated" + }, + "95149": { + "body": "TypeScript reports: Return type must be inferred from a function", + "category": "Message", + "code": 95149, + "message": "Return type must be inferred from a function", + "source": "generated" + }, + "95150": { + "body": "TypeScript reports: Could not determine function return type", + "category": "Message", + "code": 95150, + "message": "Could not determine function return type", + "source": "generated" + }, + "95151": { + "body": "TypeScript reports: Could not convert to arrow function", + "category": "Message", + "code": 95151, + "message": "Could not convert to arrow function", + "source": "generated" + }, + "95152": { + "body": "TypeScript reports: Could not convert to named function", + "category": "Message", + "code": 95152, + "message": "Could not convert to named function", + "source": "generated" + }, + "95153": { + "body": "TypeScript reports: Could not convert to anonymous function", + "category": "Message", + "code": 95153, + "message": "Could not convert to anonymous function", + "source": "generated" + }, + "95154": { + "body": "TypeScript reports: Can only convert string concatenations and string literals", + "category": "Message", + "code": 95154, + "message": "Can only convert string concatenations and string literals", + "source": "generated" + }, + "95155": { + "body": "TypeScript reports: Selection is not a valid statement or statements", + "category": "Message", + "code": 95155, + "message": "Selection is not a valid statement or statements", + "source": "generated" + }, + "95156": { + "body": "TypeScript reports: Add missing function declaration '{0}'", + "category": "Message", + "code": 95156, + "message": "Add missing function declaration '{0}'", + "source": "generated" + }, + "95157": { + "body": "TypeScript reports: Add all missing function declarations", + "category": "Message", + "code": 95157, + "message": "Add all missing function declarations", + "source": "generated" + }, + "95158": { + "body": "TypeScript reports: Method not implemented.", + "category": "Message", + "code": 95158, + "message": "Method not implemented.", + "source": "generated" + }, + "95159": { + "body": "TypeScript reports: Function not implemented.", + "category": "Message", + "code": 95159, + "message": "Function not implemented.", + "source": "generated" + }, + "95160": { + "body": "TypeScript reports: Add 'override' modifier", + "category": "Message", + "code": 95160, + "message": "Add 'override' modifier", + "source": "generated" + }, + "95161": { + "body": "TypeScript reports: Remove 'override' modifier", + "category": "Message", + "code": 95161, + "message": "Remove 'override' modifier", + "source": "generated" + }, + "95162": { + "body": "TypeScript reports: Add all missing 'override' modifiers", + "category": "Message", + "code": 95162, + "message": "Add all missing 'override' modifiers", + "source": "generated" + }, + "95163": { + "body": "TypeScript reports: Remove all unnecessary 'override' modifiers", + "category": "Message", + "code": 95163, + "message": "Remove all unnecessary 'override' modifiers", + "source": "generated" + }, + "95164": { + "body": "TypeScript reports: Can only convert named export", + "category": "Message", + "code": 95164, + "message": "Can only convert named export", + "source": "generated" + }, + "95165": { + "body": "TypeScript reports: Add missing properties", + "category": "Message", + "code": 95165, + "message": "Add missing properties", + "source": "generated" + }, + "95166": { + "body": "TypeScript reports: Add all missing properties", + "category": "Message", + "code": 95166, + "message": "Add all missing properties", + "source": "generated" + }, + "95167": { + "body": "TypeScript reports: Add missing attributes", + "category": "Message", + "code": 95167, + "message": "Add missing attributes", + "source": "generated" + }, + "95168": { + "body": "TypeScript reports: Add all missing attributes", + "category": "Message", + "code": 95168, + "message": "Add all missing attributes", + "source": "generated" + }, + "95169": { + "body": "TypeScript reports: Add 'undefined' to optional property type", + "category": "Message", + "code": 95169, + "message": "Add 'undefined' to optional property type", + "source": "generated" + }, + "95170": { + "body": "TypeScript reports: Convert named imports to default import", + "category": "Message", + "code": 95170, + "message": "Convert named imports to default import", + "source": "generated" + }, + "95171": { + "body": "TypeScript reports: Delete unused '@param' tag '{0}'", + "category": "Message", + "code": 95171, + "message": "Delete unused '@param' tag '{0}'", + "source": "generated" + }, + "95172": { + "body": "TypeScript reports: Delete all unused '@param' tags", + "category": "Message", + "code": 95172, + "message": "Delete all unused '@param' tags", + "source": "generated" + }, + "95173": { + "body": "TypeScript reports: Rename '@param' tag name '{0}' to '{1}'", + "category": "Message", + "code": 95173, + "message": "Rename '@param' tag name '{0}' to '{1}'", + "source": "generated" + }, + "95174": { + "body": "TypeScript reports: Use `{0}`.", + "category": "Message", + "code": 95174, + "message": "Use `{0}`.", + "source": "generated" + }, + "95175": { + "body": "TypeScript reports: Use `Number.isNaN` in all conditions.", + "category": "Message", + "code": 95175, + "message": "Use `Number.isNaN` in all conditions.", + "source": "generated" + }, + "95176": { + "body": "TypeScript reports: Convert typedef to TypeScript type.", + "category": "Message", + "code": 95176, + "message": "Convert typedef to TypeScript type.", + "source": "generated" + }, + "95177": { + "body": "TypeScript reports: Convert all typedef to TypeScript types.", + "category": "Message", + "code": 95177, + "message": "Convert all typedef to TypeScript types.", + "source": "generated" + }, + "95178": { + "body": "TypeScript reports: Move to file", + "category": "Message", + "code": 95178, + "message": "Move to file", + "source": "generated" + }, + "95179": { + "body": "TypeScript reports: Cannot move to file, selected file is invalid", + "category": "Message", + "code": 95179, + "message": "Cannot move to file, selected file is invalid", + "source": "generated" + }, + "95180": { + "body": "TypeScript reports: Use 'import type'", + "category": "Message", + "code": 95180, + "message": "Use 'import type'", + "source": "generated" + }, + "95181": { + "body": "TypeScript reports: Use 'type {0}'", + "category": "Message", + "code": 95181, + "message": "Use 'type {0}'", + "source": "generated" + }, + "95182": { + "body": "TypeScript reports: Fix all with type-only imports", + "category": "Message", + "code": 95182, + "message": "Fix all with type-only imports", + "source": "generated" + }, + "95183": { + "body": "TypeScript reports: Cannot move statements to the selected file", + "category": "Message", + "code": 95183, + "message": "Cannot move statements to the selected file", + "source": "generated" + }, + "95184": { + "body": "TypeScript reports: Inline variable", + "category": "Message", + "code": 95184, + "message": "Inline variable", + "source": "generated" + }, + "95185": { + "body": "TypeScript reports: Could not find variable to inline.", + "category": "Message", + "code": 95185, + "message": "Could not find variable to inline.", + "source": "generated" + }, + "95186": { + "body": "TypeScript reports: Variables with multiple declarations cannot be inlined.", + "category": "Message", + "code": 95186, + "message": "Variables with multiple declarations cannot be inlined.", + "source": "generated" + }, + "95187": { + "body": "TypeScript reports: Add missing comma for object member completion '{0}'.", + "category": "Message", + "code": 95187, + "message": "Add missing comma for object member completion '{0}'.", + "source": "generated" + }, + "95188": { + "body": "TypeScript reports: Add missing parameter to '{0}'", + "category": "Message", + "code": 95188, + "message": "Add missing parameter to '{0}'", + "source": "generated" + }, + "95189": { + "body": "TypeScript reports: Add missing parameters to '{0}'", + "category": "Message", + "code": 95189, + "message": "Add missing parameters to '{0}'", + "source": "generated" + }, + "95190": { + "body": "TypeScript reports: Add all missing parameters", + "category": "Message", + "code": 95190, + "message": "Add all missing parameters", + "source": "generated" + }, + "95191": { + "body": "TypeScript reports: Add optional parameter to '{0}'", + "category": "Message", + "code": 95191, + "message": "Add optional parameter to '{0}'", + "source": "generated" + }, + "95192": { + "body": "TypeScript reports: Add optional parameters to '{0}'", + "category": "Message", + "code": 95192, + "message": "Add optional parameters to '{0}'", + "source": "generated" + }, + "95193": { + "body": "TypeScript reports: Add all optional parameters", + "category": "Message", + "code": 95193, + "message": "Add all optional parameters", + "source": "generated" + }, + "95194": { + "body": "TypeScript reports: Wrap in parentheses", + "category": "Message", + "code": 95194, + "message": "Wrap in parentheses", + "source": "generated" + }, + "95195": { + "body": "TypeScript reports: Wrap all invalid decorator expressions in parentheses", + "category": "Message", + "code": 95195, + "message": "Wrap all invalid decorator expressions in parentheses", + "source": "generated" + }, + "95196": { + "body": "TypeScript reports: Add 'resolution-mode' import attribute", + "category": "Message", + "code": 95196, + "message": "Add 'resolution-mode' import attribute", + "source": "generated" + }, + "95197": { + "body": "TypeScript reports: Add 'resolution-mode' import attribute to all type-only imports that need it", + "category": "Message", + "code": 95197, + "message": "Add 'resolution-mode' import attribute to all type-only imports that need it", + "source": "generated" } } diff --git a/packages/error-translator/src/parseErrors.ts b/packages/error-translator/src/parseErrors.ts index eed9ede..f5f4a9f 100644 --- a/packages/error-translator/src/parseErrors.ts +++ b/packages/error-translator/src/parseErrors.ts @@ -5,7 +5,7 @@ type TsErrorMessageDb = Record; interface TSDiagnosticMatcher { regexGlobal: RegExp; regexLocal: RegExp; - parameters: string[]; + parameterIndexes: number[]; } const DiagnosticHashMap = new Map(); @@ -16,8 +16,8 @@ function escapeRegExp(str: string) { return str.replace(escapeRegex, "\\$&"); } -const parameterRegex = /{(\d)}/g; -const escapedParameterRegex = /\\\{(\d)\\\}/g; +const parameterRegex = /{(\d+)}/g; +const escapedParameterRegex = /\\\{(\d+)\\\}/g; function isTsErrorMessageDb(value: unknown): value is TsErrorMessageDb { if (typeof value !== "object" || value === null) { @@ -52,12 +52,15 @@ function getDiagnosticMatcher(text: string): TSDiagnosticMatcher { const regexSource = escapeRegExp(text).replace(escapedParameterRegex, "(.+)"); const regexLocal = new RegExp(regexSource); const regexGlobal = new RegExp(regexSource, "g"); - const parameters = text.match(parameterRegex) ?? []; + const parameterIndexes = Array.from( + text.matchAll(parameterRegex), + ([, parameterIndex]) => Number(parameterIndex), + ); const diagnosticMatcher = { regexGlobal, regexLocal, - parameters, + parameterIndexes, }; DiagnosticHashMap.set(text, diagnosticMatcher); @@ -66,19 +69,31 @@ function getDiagnosticMatcher(text: string): TSDiagnosticMatcher { } function associateMatchedParameters( - parameters: string[], + parameterIndexes: number[], matchedParams: string[], ): (string | number)[] { - const params: Record = Object.create(null); + const paramsByIndex = new Map(); for (let i = 0; i < matchedParams.length; i++) { - const parameter = parameters[i]; - if (parameter !== undefined && !(parameter in params)) { - params[parameter] = matchedParams[i] ?? ""; + const parameterIndex = parameterIndexes[i]; + if ( + parameterIndex !== undefined && + Number.isInteger(parameterIndex) && + !paramsByIndex.has(parameterIndex) + ) { + paramsByIndex.set(parameterIndex, matchedParams[i] ?? ""); } } - return Object.values(params); + if (paramsByIndex.size === 0) { + return []; + } + + const highestParameterIndex = Math.max(...paramsByIndex.keys()); + + return Array.from({ length: highestParameterIndex + 1 }, (_unused, index) => { + return paramsByIndex.get(index) ?? ""; + }); } interface ParseInfo { @@ -110,7 +125,8 @@ export function parseErrorsWithDb( return; } - const { regexGlobal, regexLocal, parameters } = getDiagnosticMatcher(newError); + const { regexGlobal, regexLocal, parameterIndexes } = + getDiagnosticMatcher(newError); const matches = message.match(regexGlobal); if (matches === null) { @@ -129,7 +145,7 @@ export function parseErrorsWithDb( searchOffset = endIndex; const items = associateMatchedParameters( - parameters, + parameterIndexes, matchElem.match(regexLocal)?.slice(1) ?? [], ); diff --git a/packages/error-translator/src/translateDiagnosticMessage.ts b/packages/error-translator/src/translateDiagnosticMessage.ts index d58bbc4..c8b87a0 100644 --- a/packages/error-translator/src/translateDiagnosticMessage.ts +++ b/packages/error-translator/src/translateDiagnosticMessage.ts @@ -2,7 +2,18 @@ import bundleErrors from "./generated/bundleErrors.json"; import { fillBodyWithItems } from "./getImprovedMessage"; import { parseErrors } from "./parseErrors"; -type TranslationBundle = Record; +export type TranslationCategory = "Error" | "Message" | "Suggestion"; +export type TranslationSource = "curated" | "generated"; + +interface TranslationEntry { + body: string; + category: TranslationCategory; + code: number; + message: string; + source: TranslationSource; +} + +type TranslationBundle = Record; function isTranslationBundle(value: unknown): value is TranslationBundle { if (typeof value !== "object" || value === null) { @@ -15,8 +26,16 @@ function isTranslationBundle(value: unknown): value is TranslationBundle { entry !== null && "body" in entry && typeof entry.body === "string" && + "category" in entry && + (entry.category === "Error" || + entry.category === "Message" || + entry.category === "Suggestion") && "code" in entry && - typeof entry.code === "number" + typeof entry.code === "number" && + "message" in entry && + typeof entry.message === "string" && + "source" in entry && + (entry.source === "curated" || entry.source === "generated") ); }); } @@ -32,9 +51,15 @@ function ensureTranslationBundle(value: unknown): TranslationBundle { const translationBundle = ensureTranslationBundle(bundleErrors); export interface PlainEnglishTranslation { + category: TranslationCategory; code: number; rawError: string; - body: string | null; + body: string; + source: TranslationSource; +} + +function buildFallbackBody(message: string): string { + return `TypeScript reports this diagnostic: ${message}`; } export function hasTranslation(code: number): boolean { @@ -46,14 +71,15 @@ export function translateDiagnosticMessage( ): PlainEnglishTranslation[] { return parseErrors(message).map((error) => { const translation = translationBundle[String(error.code)]; + const bodyTemplate = + translation?.body ?? buildFallbackBody(error.parseInfo.rawError); return { + category: translation?.category ?? "Error", code: error.code, rawError: error.parseInfo.rawError, - body: - translation === undefined - ? null - : fillBodyWithItems(translation.body, error.parseInfo.items).body, + body: fillBodyWithItems(bodyTemplate, error.parseInfo.items).body, + source: translation?.source ?? "generated", }; }); } diff --git a/packages/error-translator/test/engine.test.ts b/packages/error-translator/test/engine.test.ts index 211ffcf..f3cd3f9 100644 --- a/packages/error-translator/test/engine.test.ts +++ b/packages/error-translator/test/engine.test.ts @@ -107,7 +107,7 @@ describe("parseErrors", () => { expect(result[0].parseInfo.items).toEqual(['A', 'B']); }); - it.skip("Should handle params in the incorrect order", () => { + it("Should handle params in the incorrect order", () => { const result = parseErrorsWithDb( { [`{2}, {0}, {1}`]: { @@ -120,6 +120,21 @@ describe("parseErrors", () => { expect(result[0].parseInfo.items).toEqual(['A', 'B', 'C']); }); + it("should parse current TypeScript diagnostics with out-of-order placeholders", () => { + const [result] = parseErrors( + "The parser expected to find a ')' to match the '(' token here.", + ); + + expect(result).toMatchObject({ + code: 1007, + parseInfo: { + items: ["(", ")"], + rawError: + "The parser expected to find a ')' to match the '(' token here.", + }, + }); + }); + it("Should handle params specified multiple times", () => { const result = parseErrorsWithDb( { @@ -180,10 +195,12 @@ describe("translateDiagnosticMessage", () => { "Type 'A' is not assignable to type 'B'.", ); - expect(translation).toEqual({ + expect(translation).toMatchObject({ + category: "Error", code: 2322, rawError: "Type 'A' is not assignable to type 'B'.", body: "I was expecting a type matching `B`, but instead you passed `A`.", + source: "curated", }); }); }); diff --git a/packages/error-translator/test/translationContract.test.ts b/packages/error-translator/test/translationContract.test.ts new file mode 100644 index 0000000..6799ff0 --- /dev/null +++ b/packages/error-translator/test/translationContract.test.ts @@ -0,0 +1,144 @@ +import { createRequire } from "node:module"; +import { readdir, readFile } from "node:fs/promises"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { describe, expect, it } from "vitest"; +import bundleErrors from "../src/generated/bundleErrors.json"; +import tsErrorMessages from "../src/generated/tsErrorMessages.json"; + +const require = createRequire(import.meta.url); +const ts = require("typescript"); + +const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); +const curatedErrorsDir = path.join(packageRoot, "vendor", "matt-pocock", "errors"); + +type TsDiagnostic = { + category: number; + code: number; + message: string; +}; + +type TsErrorMessageEntry = { + category: string; + code: number; +}; + +type BundleEntry = { + body: string; + category: string; + code: number; + message: string; + source: string; +}; + +function getCategoryName(category: number): string { + const categoryName = ts.DiagnosticCategory?.[category]; + return typeof categoryName === "string" ? categoryName : "Error"; +} + +function isTsDiagnostic(diagnostic: unknown): diagnostic is TsDiagnostic { + return ( + typeof diagnostic === "object" && + diagnostic !== null && + "code" in diagnostic && + typeof diagnostic.code === "number" && + "message" in diagnostic && + typeof diagnostic.message === "string" && + "category" in diagnostic && + typeof diagnostic.category === "number" + ); +} + +function getCurrentDiagnostics(): TsDiagnostic[] { + return Object.values(ts.Diagnostics) + .filter(isTsDiagnostic) + .sort((left, right) => left.code - right.code); +} + +function unwrapQuotedValue(value: string): string { + if ( + (value.startsWith('"') && value.endsWith('"')) || + (value.startsWith("'") && value.endsWith("'")) + ) { + return value.slice(1, -1); + } + + return value; +} + +function parseOriginalMessage(markdown: string, fileName: string): string { + const match = /^---\r?\n([\s\S]*?)\r?\n---/u.exec(markdown); + if (match === null) { + throw new Error(`Missing front matter in ${fileName}.`); + } + + const originalMatch = /^original:\s*(.+)$/mu.exec(match[1]); + if (originalMatch === null) { + throw new Error(`Missing original diagnostic message in ${fileName}.`); + } + + return unwrapQuotedValue(originalMatch[1].trim()); +} + +describe("translator contract", () => { + it("keeps tsErrorMessages.json aligned with the installed TypeScript diagnostics", () => { + const currentDiagnostics = getCurrentDiagnostics(); + const messageDb = tsErrorMessages as Record; + + expect(Object.keys(messageDb)).toHaveLength(currentDiagnostics.length); + + currentDiagnostics.forEach((diagnostic) => { + expect(messageDb[diagnostic.message]).toEqual({ + category: getCategoryName(diagnostic.category), + code: diagnostic.code, + }); + }); + }); + + it("keeps bundleErrors.json complete for all current TypeScript diagnostics", () => { + const currentDiagnostics = getCurrentDiagnostics(); + const diagnosticsByCode = new Map( + currentDiagnostics.map((diagnostic) => [diagnostic.code, diagnostic]), + ); + const bundle = bundleErrors as Record; + const bundleEntries = Object.values(bundle).sort((left, right) => { + return left.code - right.code; + }); + + expect(bundleEntries).toHaveLength(currentDiagnostics.length); + expect(bundleEntries.map((entry) => entry.code)).toEqual( + currentDiagnostics.map((diagnostic) => diagnostic.code), + ); + + bundleEntries.forEach((entry) => { + const diagnostic = diagnosticsByCode.get(entry.code); + expect(diagnostic).toBeDefined(); + expect(entry.body.length).toBeGreaterThan(0); + expect(entry.category).toBe(getCategoryName(diagnostic?.category ?? 1)); + expect(entry.message).toBe(diagnostic?.message); + expect(["curated", "generated"]).toContain(entry.source); + }); + }); + + it("keeps curated translation overrides aligned with current TypeScript messages", async () => { + const currentDiagnostics = new Map( + getCurrentDiagnostics().map((diagnostic) => [diagnostic.code, diagnostic]), + ); + const files = (await readdir(curatedErrorsDir)) + .filter((file) => file.endsWith(".md")) + .sort((left, right) => left.localeCompare(right, "en")); + + for (const fileName of files) { + const code = Number(path.parse(fileName).name); + expect(Number.isInteger(code)).toBe(true); + + const diagnostic = currentDiagnostics.get(code); + expect(diagnostic).toBeDefined(); + + const markdown = await readFile(path.join(curatedErrorsDir, fileName), "utf8"); + const original = parseOriginalMessage(markdown, fileName); + + expect(original).toBe(diagnostic?.message); + } + }); +}); diff --git a/packages/error-translator/vendor/matt-pocock/errors/1155.md b/packages/error-translator/vendor/matt-pocock/errors/1155.md index 5a035c0..f8b7b3d 100644 --- a/packages/error-translator/vendor/matt-pocock/errors/1155.md +++ b/packages/error-translator/vendor/matt-pocock/errors/1155.md @@ -1,5 +1,5 @@ --- -original: "'const' declarations must be initialized." +original: "'{0}' declarations must be initialized." --- -A `const` must be given a value when it's declared. +A `{0}` declaration must be given a value when it is declared. diff --git a/packages/error-translator/vendor/matt-pocock/errors/1208.md b/packages/error-translator/vendor/matt-pocock/errors/1208.md deleted file mode 100644 index 234ed14..0000000 --- a/packages/error-translator/vendor/matt-pocock/errors/1208.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -original: "'{0}' cannot be compiled under '--isolatedModules' because it is considered a global script file. Add an import, export, or an empty 'export {}' statement to make it a module." ---- - -You have set the 'isolatedModules' flag. Therefore all implementation files must be modules (which means it has some form of import/export). Add an import, export, or an empty 'export {}' statement to make it a module. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2355.md b/packages/error-translator/vendor/matt-pocock/errors/2355.md index 9215e72..f2c9881 100644 --- a/packages/error-translator/vendor/matt-pocock/errors/2355.md +++ b/packages/error-translator/vendor/matt-pocock/errors/2355.md @@ -1,5 +1,5 @@ --- -original: "A function whose declared type is neither 'void' nor 'any' must return a value." +original: "A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value." --- -You set the function return type but it is not returning anything. +This function says it returns a value, but at least one path does not return one. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2414.md b/packages/error-translator/vendor/matt-pocock/errors/2414.md index 807cc1f..174b9a8 100644 --- a/packages/error-translator/vendor/matt-pocock/errors/2414.md +++ b/packages/error-translator/vendor/matt-pocock/errors/2414.md @@ -1,5 +1,5 @@ --- -original: "Class name cannot be '{0}'" +original: "Class name cannot be '{0}'." --- You can't give a class the name of '{0}' because it's protected by TypeScript. diff --git a/packages/error-translator/vendor/matt-pocock/errors/2590.md b/packages/error-translator/vendor/matt-pocock/errors/2590.md index b3ffbb4..3e5c665 100644 --- a/packages/error-translator/vendor/matt-pocock/errors/2590.md +++ b/packages/error-translator/vendor/matt-pocock/errors/2590.md @@ -1,5 +1,5 @@ --- -original: 'undefined' +original: "Expression produces a union type that is too complex to represent." --- -You've created a union type that's too complex for me to handle! 🤯 I can only represent 100,000 combinations in the same union, and you've gone over that limit. +This union type has become so large that TypeScript cannot represent it any more. The usual fix is to simplify the type so it produces fewer possible combinations. diff --git a/packages/error-translator/vendor/matt-pocock/errors/6244.md b/packages/error-translator/vendor/matt-pocock/errors/6244.md deleted file mode 100644 index c7613ee..0000000 --- a/packages/error-translator/vendor/matt-pocock/errors/6244.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -original: "Cannot access ambient const enums when 'isolatedModules' is enabled." ---- - -You can't use const enums when `isolatedModules` is enabled. diff --git a/packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts b/packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts index fafa76c..6411516 100644 --- a/packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts +++ b/packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts @@ -90,7 +90,7 @@ export async function prettifyDiagnosticForHover( const translations = translateDiagnosticMessage(diagnostic.message); if (translations.length > 0) { - sections.push("", "**Plain English**"); + sections.push("", "**Local explanation**"); translations.forEach((translation) => { if (translations.length > 1 || translation.rawError !== diagnostic.message) { @@ -99,11 +99,7 @@ export async function prettifyDiagnosticForHover( sections.push("", `**TS${translation.code}**`); } - sections.push( - "", - translation.body ?? - `No local plain-English translation is available for TS${translation.code} yet.`, - ); + sections.push("", translation.body); }); } diff --git a/packages/vscode-formatter/src/format/renderPlainEnglishTranslations.ts b/packages/vscode-formatter/src/format/renderPlainEnglishTranslations.ts index a6bb236..ddb879e 100644 --- a/packages/vscode-formatter/src/format/renderPlainEnglishTranslations.ts +++ b/packages/vscode-formatter/src/format/renderPlainEnglishTranslations.ts @@ -70,14 +70,11 @@ export function renderPlainEnglishTranslations( const cards = translations .map((translation) => { - const body = - translation.body === null - ? `

No local plain-English translation is available for TS${translation.code} yet.

` - : renderTranslationBody(translation.body); + const body = renderTranslationBody(translation.body); return d /*html*/ `
-
Plain English · TS${translation.code}
+
Local explanation · TS${translation.code}
${body}
From 4bdde64740b807a43d55a8ef3b69e65c4b3a801e Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Wed, 24 Jun 2026 17:51:05 +0200 Subject: [PATCH 04/13] backup --- HANDOFF_O3_O1_LOCAL_TRANSLATOR.md | 828 ------------------ ...XTENSION_DELIVERY_TRANSLATOR_2026_06_24.md | 626 ------------- ..._DELIVERY_TRANSLATOR_SECURED_2026_06_24.md | 688 --------------- ...F_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md | 259 ------ README.md | 204 +++++ 5 files changed, 204 insertions(+), 2401 deletions(-) delete mode 100644 HANDOFF_O3_O1_LOCAL_TRANSLATOR.md delete mode 100644 HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md delete mode 100644 HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_SECURED_2026_06_24.md delete mode 100644 HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md diff --git a/HANDOFF_O3_O1_LOCAL_TRANSLATOR.md b/HANDOFF_O3_O1_LOCAL_TRANSLATOR.md deleted file mode 100644 index a6d2a0b..0000000 --- a/HANDOFF_O3_O1_LOCAL_TRANSLATOR.md +++ /dev/null @@ -1,828 +0,0 @@ -# Referenzdokument: O3/O1-Remediation und lokale Internalisierung des Matt-Pocock-Translators in `pretty-ts-errors` -[INTENT: KONTEXT] - ---- - -## 0. Quellenbasis & Scope-Grenzen -[INTENT: KONTEXT] - -**Quellemodus:** `CURRENT_CONTEXT_DEFAULT` mit expliziter externer Referenz auf `https://github.com/mattpocock/ts-error-translator` - -**Freigegebenes Source-Bundle:** - -- die aktuelle Task-Konversation bis zu diesem Stand -- die bereits geprueften lokalen Repo-Dateien in `pretty-ts-errors` -- die geprueften Web-Fakten zu `mattpocock/ts-error-translator`, `ts-error-translator.vercel.app`, `Decoded`, `dmmulroy/ts-error-translator.nvim` und `synoet/ts-error-translator-proxy` -- die lokal angelegte Upstream-Clone-Referenz in `tmp/ts-error-translator` - -**Explizit ausgeschlossen:** - -- `.git` -- die Themenbereiche `Y3` und `Y1` -- die spaetere `pnpm`-Migration -- jede autonome Suche ausserhalb der bereits geprueften lokalen Dateien, Web-Fakten und des lokal geklonten Upstream-Repos - -**Scope dieses Dokuments:** - -- dieses Dokument beschreibt ausschliesslich die O3- und O1-bezogene Zielrichtung -- O3 muss vollstaendig erklaeren, dass Trusted Diagnostic Content aktuell `HTML`- und `WebView`-Surfaces erreicht -- O1 muss vollstaendig erklaeren, dass der volle Fehlertext an einen Drittanbieter abfliessen kann -- O1 muss explizit festhalten, dass die Plain-English-Translator-Logik architektonisch aus Matt Pococks Projekt stammt -- dieses Dokument definiert den korrekten Hand-off fuer eine lokale, first-party Integration des Translators in das Monorepo - -**Nicht Ziel dieses Dokuments:** - -- keine Umsetzung der Aenderungen selbst -- keine Behandlung von `Y3`/`Y1` -- keine Vollanalyse aller sonstigen externen Links ausserhalb des hier explizit benoetigten Kontexts - ---- - -## 1. Aufgabenuebersicht -[INTENT: KONTEXT] - -Dieses Referenzdokument beschreibt den vollstaendigen Hand-off fuer zwei unmittelbar zusammenhaengende Themen in `pretty-ts-errors`: - -1. **O3 / Trusted Diagnostic Content erreicht HTML- und WebView-Surfaces** - Der aktuelle Rendering-Pfad materialisiert Diagnostic-Inhalte in HTML-Strings, transportiert diese in die Sidebar-WebView und setzt sie dort per `innerHTML` ein. Der korrekte Zielzustand ist ein strikt strukturierter, lokal gerenderter Datenfluss ohne diagnostikgetriebene HTML-Injektion. - -2. **O1 / Voller Fehlertext kann an einen Drittanbieter abfliessen** - Der aktuelle Translator-Pfad oeffnet `ts-error-translator.vercel.app` und uebergibt den kompletten Fehlertext als URL-Parameter. Der korrekte Zielzustand ist eine lokale Inhouse-Integration der Plain-English-Translator-Logik ohne externe Remote-Verbindung. - -Der Zielansatz fuer die O1-Remediation ist **nicht**, ein neues Remote-System zu waehlen, sondern **Matt Pococks Source-basierte Translator-Logik** lokal in das bestehende Monorepo zu uebernehmen, auf den benoetigten Kern zu reduzieren und als internes Package zu betreiben. - -Der Zielansatz fuer die O3-Remediation ist **nicht**, die bestehende HTML-String-Pipeline nur leicht zu kaschieren, sondern den Diagnose-zu-UI-Pfad so umzubauen, dass: - -- Diagnostic-Daten als strukturierte View-Modelle transportiert werden, -- WebView-Rendering ueber sichere DOM-/`textContent`-Pfade erfolgt, -- keine diagnostikgetriebenen Rohstrings mehr via `innerHTML` in die WebView gelangen, -- und lokale Translator-Daten nicht ueber externe Browser-Links oder Drittanbieter-Surfaces laufen. - -Das Dokument ist HCOA-ready und so strukturiert, dass ein neuer Agent in einem frischen Kontextfenster direkt mit der Umsetzung fortfahren kann. - ---- - -## 1.1 Status-Delta nach Umsetzung -[INTENT: KONTEXT] - -Der urspruengliche Handoff beschreibt den Zielzustand und den damals offenen O1/O3-Befund. Seitdem wurde der Produktpfad in `pretty-ts-errors` weitergezogen. - -**Aktueller Stand im Produkt-Workspace:** - -- der Remote-Translator-Pfad zu `ts-error-translator.vercel.app` wurde entfernt -- `lz-string` wurde aus dem Produktpfad entfernt -- die lokale first-party Translator-Integration lebt jetzt unter `packages/error-translator` -- `packages/error-translator/src/generated/tsErrorMessages.json` wurde gegen `typescript@6.0.3` aktualisiert -- die Sidebar-WebView rendert jetzt ueber ein strukturiertes Modell und DOM-APIs statt ueber `innerHTML` -- der Hover-Pfad trennt untrusted Diagnoseinhalt von trusted Command-Aktionen und verwendet kein `supportHtml` mehr fuer den Diagnoseblock - -**Wichtig fuer Leser dieses Dokuments:** - -- die darunterliegenden O1/O3-Beschreibungen bleiben als Architektur- und Audit-Referenz weiterhin wertvoll -- die dort beschriebenen "Ist-Zustand"-Probleme sind fuer den aktuellen Produktpfad jedoch nicht mehr in derselben Form aktuell -- `tmp/ts-error-translator` bleibt weiterhin nur die lokale Upstream-Referenz- und Attributionsbasis - ---- - -## 2. Informationsregister (INHALT-Einheiten) -[INTENT: REFERENZ] - -| ID | Typ | Beschreibung | Veraenderung | Status | -|----|-----|-------------|--------------|--------| -| REQ-001 | ANFORDERUNG | O3 muss vollstaendig dokumentieren, dass Trusted Diagnostic Content aktuell `HTML`- und `WebView`-Surfaces erreicht, und wie der sichere Zielzustand aussieht. | Ja | Festgelegt | -| INFO-001 | INFORMATION | Aktueller Repo-Zustand: Remote-Translator-Link, HTML-String-Pipeline und WebView-`innerHTML`-Pfad sind vorhanden. | Nein | Festgestellt | -| REQ-002 | ANFORDERUNG | O1 muss vollstaendig dokumentieren, dass der volle Fehlertext an einen Drittanbieter abfliessen kann, und dass die Translator-Logik architektonisch von Matt Pocock stammt. | Ja | Festgelegt | -| INFO-002 | INFORMATION | Das lokal geklonte Upstream-Repo von Matt Pocock ist ein Monorepo mit `packages/engine`, `packages/parser`, `packages/searcher` und `apps/vscode`. | Nein | Festgestellt | -| REQ-003 | ANFORDERUNG | Das Upstream-Repo muss in `tmp/` im Projekt liegen und als lokale Extraktionsbasis fuer den Folge-Agenten dienen. | Ja | Bereits vorbereitet | -| REQ-004 | ANFORDERUNG | Es duerfen nur die benoetigten Source-Daten uebernommen werden; Upstream-VS-Code-App und unnoetige Pakete duerfen nicht mit eingebunden werden. | Ja | Festgelegt | -| REQ-005 | ANFORDERUNG | Die korrekte Zielverortung im Monorepo ist `packages/`, nicht `apps/`. | Ja | Architektonisch festgelegt | -| REQ-006 | ANFORDERUNG | Es muss ein neues internes Translator-Package mit klarer, first-party API entstehen. | Ja | Architektonisch festgelegt | -| REQ-007 | ANFORDERUNG | Der bestehende Remote-Translator-Pfad muss komplett durch eine lokale Integration ersetzt werden. | Ja | Festgelegt | -| INFO-003 | INFORMATION | 2026 gibt es neuere GitHub-Projekte, aber keinen klar reifen VS-Code-/offline-/enterprise-tauglichen Drop-in-Ersatz fuer diesen Use-Case. | Nein | Festgestellt | -| WF-001 | WORKFLOW | Es gibt eine konkrete empfohlene Umsetzungsreihenfolge fuer Clone, Extraktion, Monorepo-Package, UI-Integration und O3-Haertung. | Ja | Festgelegt | -| CONST-001 | CONSTRAINT | Alle fuer den Translator relevanten Remote-Verbindungen muessen entfernt werden; `Y3` und `Y1` sind aus dem Scope ausgeschlossen. | Nein | Festgelegt | - ---- - -## 3. Informationseinheiten -[INTENT: SPEZIFIKATION] - -### 3.1 REQ-001: O3 vollstaendig dokumentieren und sichere Zielarchitektur festlegen -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Das Hand-off muss explizit und vollstaendig dokumentieren, dass Trusted Diagnostic Content aktuell bis in `HTML`- und `WebView`-Surfaces gelangt. Es muss ebenfalls den korrekten Zielzustand beschreiben: Der Diagnose-zu-UI-Pfad darf nicht mehr auf diagnostikgetriebenen HTML-Strings basieren, sondern muss auf einem strukturierten, first-party kontrollierten View-Model- und Safe-Render-Pfad beruhen. - -**Ist-Zustand:** - -- `apps/vscode-extension/src/diagnostics.ts` erstellt `MarkdownString`-Instanzen und setzt `isTrusted` sowie `supportHtml`. -- `packages/vscode-formatter/src/format/identSentences.ts` materialisiert diagnostiknahe Zeilen in HTML-Fragmenten. -- `packages/vscode-formatter/src/components/plainCodeBlock.ts` und `packages/vscode-formatter/src/components/htmlCodeBlock.ts` bauen HTML-Strings. -- `apps/vscode-extension/src/provider/webviewViewProvider.ts` sammelt `fullHtml` und sendet dieses per `webview.postMessage({ command: "update-content", html: fullHtml })` in die WebView. -- `apps/vscode-extension/webview/index.js` setzt `$content.innerHTML = message.html`. -- `apps/vscode-extension/src/provider/markdownWebviewProvider.ts` aktiviert `enableScripts` und rewritet die CSP in Richtung `unsafe-inline`. - -**Soll-Zustand:** - -- Keine diagnostikabgeleitete Zeichenkette darf ungeescaped in HTML interpoliert werden. -- Die Sidebar-WebView darf keine diagnostikabgeleiteten Payloads mehr per `innerHTML` einsetzen. -- Der Extension-Host muss strukturierte Datenmodelle erzeugen, zum Beispiel `DiagnosticSidebarModel`, `PlainEnglishTranslation` und `ActionDescriptor`. -- Die WebView muss daraus DOM-Knoten mit `textContent` oder aehnlich sicheren DOM-APIs aufbauen. -- HTML darf nur noch aus internen, vorgegebenen Template-Huellen stammen, nicht aus untrusted Diagnostic Content. -- Hover-/Markdown-Surfaces muessen diagnostikabgeleitete Inhalte nur escaped oder in plain markdown/text transportieren; keine rohen diagnostikgetriebenen HTML-Segmente. - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `apps/vscode-extension/src/diagnostics.ts` | Einstieg des Trusted-Diagnostic-Pfads | `registerOnDidChangeDiagnostics()`, `MarkdownString`, `supportHtml`, `isTrusted` | -| `packages/vscode-formatter/src/format/identSentences.ts` | Baut HTML-nahe Zeilenfragmente aus Diagnoseinhalt | `identSentences()` | -| `packages/vscode-formatter/src/components/plainCodeBlock.ts` | Interpoliert Content in HTML | `plainCodeBlock()` | -| `packages/vscode-formatter/src/components/htmlCodeBlock.ts` | Baut HTML fuer Sidebar-Codebloecke | `htmlCodeBlock()` | -| `apps/vscode-extension/src/provider/webviewViewProvider.ts` | Transportiert `fullHtml` in die WebView | `refresh()` | -| `apps/vscode-extension/webview/index.js` | Setzt HTML tatsaechlich in die DOM-Surface ein | `window.addEventListener("message", ...)`, `innerHTML` | -| `apps/vscode-extension/src/provider/markdownWebviewProvider.ts` | Aktiviert WebView-Capabilities und CSP-Rewrite | `getWebviewOptions()`, `patchCspSafeAttrs()` | - -**Positivbeispiel(e):** - -```ts -type PlainEnglishTranslation = { - code: number; - rawError: string; - body: string | null; -}; - -type DiagnosticSidebarModel = { - originalMessage: string; - translations: PlainEnglishTranslation[]; - actions: Array<{ kind: 'copy' | 'pin' | 'reveal' | 'showTranslation' }>; -}; -``` - -```js -const paragraph = document.createElement("p"); -paragraph.textContent = model.originalMessage; -container.appendChild(paragraph); -``` - -**Negativbeispiel(e):** - -```ts -const fullHtml = sections.join(""); -webview.postMessage({ command: "update-content", html: fullHtml }); -``` - -```js -$content.innerHTML = message.html; -``` - -**Warum falsch:** -Die beiden Muster transportieren und materialisieren diagnostikabgeleitete HTML-Strings direkt in die WebView-Surface. Genau das ist der O3-Pfad, der entfernt werden muss. - ---- - -### 3.2 INFO-001: Aktueller Repo-Zustand fuer O3 und O1 -[INTENT: SPEZIFIKATION] - -**Typ:** INFORMATION - -**Beschreibung:** -Der aktuelle Repo-Zustand kombiniert zwei Problemfelder: - -1. Der Translator fuer "plain English" ist nicht lokal integriert, sondern nur als externer Link vorhanden. -2. Die bestehende Sidebar-/Hover-Render-Pipeline arbeitet mit trusted HTML-/Markdown-Surfaces und einer WebView-`innerHTML`-Materialisierung. - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `packages/vscode-formatter/src/components/actions.ts` | enthaelt den externen Translator-Link | `errorMessageTranslationLink()` | -| `packages/vscode-formatter/package.json` | zeigt aktuelle lokale Translator-Abhaengigkeit | `lz-string` | -| `apps/vscode-extension/src/diagnostics.ts` | trusted Markdown-Pfad | `MarkdownString`, `supportHtml`, `isTrusted` | -| `apps/vscode-extension/src/provider/webviewViewProvider.ts` | HTML-Transport in WebView | `refresh()` | -| `apps/vscode-extension/webview/index.js` | `innerHTML`-Setzung | `update-content`-Handler | - ---- - -### 3.3 REQ-002: O1-Abfluss des vollen Fehlertexts entfernen und Matt-Pocock-Herkunft festhalten -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Das Hand-off muss vollstaendig dokumentieren, dass aktuell der volle Fehlertext an einen Drittanbieter abfliessen kann. Gleichzeitig muss es explizit festhalten, dass die Translator-Logik fachlich/architektonisch aus Matt Pococks Projekt stammt und lokal uebernommen werden soll, statt weiterhin ueber eine externe gehostete App zu laufen. - -**Ist-Zustand:** - -- `packages/vscode-formatter/src/components/actions.ts` komprimiert den kompletten `Diagnostic["message"]` mit `lz-string`. -- Danach wird `https://ts-error-translator.vercel.app/?error=...` gebaut. -- Die aktuelle Anwendung nutzt also **keinen lokalen Translator**, sondern nur einen Browser-Link auf eine gehostete Drittanbieter-App. -- Die Idee der Plain-English-Umformung stammt architektonisch von Matt Pococks Projekt `ts-error-translator` / `Total TypeScript`. - -**Soll-Zustand:** - -- Der Remote-Translator-Link muss vollstaendig entfernt werden. -- Stattdessen muss eine lokale first-party Translator-API verwendet werden. -- Die neue lokale Translator-Funktion muss 100% der aktuell aus Matt Pococks Source uebernehmbaren Uebersetzungsfunktionalitaet bereitstellen. -- Fuer nicht uebersetzte Error-Codes darf **kein** Remote-Fallback existieren. Stattdessen muss lokal angezeigt werden, dass fuer diesen Code keine Plain-English-Translation vorhanden ist. - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `packages/vscode-formatter/src/components/actions.ts` | aktueller O1-Egress-Punkt | `errorMessageTranslationLink()` | -| `packages/vscode-formatter/package.json` | enthaelt `lz-string` fuer den URL-Parameter-Pfad | `dependencies.lz-string` | -| `tmp/ts-error-translator/apps/vscode/src/humaniseDiagnostic.ts` | zeigt, wie Matt lokal Uebersetzungen ausliefert | `humaniseDiagnostic()` | -| `tmp/ts-error-translator/apps/vscode/src/bundleErrors.ts` | zeigt, wie Matt lokale Error-Markdown-Dateien in ein Bundle ueberfuehrt | `bundleErrors()` | - -**Positivbeispiel(e):** - -```ts -import { translateDiagnosticMessage } from '@pretty-ts-errors/error-translator'; - -const translations = translateDiagnosticMessage(diagnostic.message); -``` - -```ts -const actions = [ - { kind: 'showTranslation', diagnosticMessage: diagnostic.message }, -]; -``` - -**Negativbeispiel(e):** - -```ts -const encodedMessage = compressToEncodedURIComponent(message); -return `https://ts-error-translator.vercel.app/?error=${encodedMessage}`; -``` - -**Warum falsch:** -Dieses Muster uebergibt den kompletten Fehlertext an einen externen Web-Dienst und verletzt damit die Null-Remote-Vorgabe fuer den Translator-Pfad. - -**Wichtiger Zusatzhinweis:** -Im gleichen Action-Bereich existiert zusaetzlich ein externer Link zu `typescript.tv`. Dieser ist **nicht** der O1-Translator-Pfad, bleibt aber eine weitere externe Surface. Wenn "alle externen Remote-Verbindungen" wortwoertlich gilt, muss dieser Link gesondert mitentschieden werden. - ---- - -### 3.4 INFO-002: Upstream-Struktur des Matt-Pocock-Repos -[INTENT: SPEZIFIKATION] - -**Typ:** INFORMATION - -**Beschreibung:** -Das lokal geklonte Upstream-Repo `tmp/ts-error-translator` ist ein Monorepo mit einer klaren Trennung zwischen Engine, Parser/Tips, Search-Utility und VS-Code-App: - -- `packages/engine` - Kern fuer Error-Matching und Plain-English-Translation -- `packages/parser` - Tips-/Syntax-/Education-Parser, nicht der Kern der Error-Translation -- `packages/searcher` - Utility fuer Tip-Suche in Codebasen, nicht der Kern der Error-Translation -- `apps/vscode` - Matts eigene VS-Code-Extension mit Hover-/Diagnostic-Integration - -Zusatzfakten aus dem Clone: - -- `packages/engine/errors/*.md` enthaelt aktuell **67** kuratierte Error-Translation-Dateien -- `packages/engine/src/tsErrorMessages.json` enthaelt das groessere Diagnostic-Matching-Register -- `apps/vscode/src/humaniseDiagnostic.ts` zeigt die lokale Verwendung des Engines plus `bundleErrors.json` - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `tmp/ts-error-translator/package.json` | Upstream-Monorepo-Root | `workspaces`, Scripts | -| `tmp/ts-error-translator/packages/engine/package.json` | Kernpackage fuer Error-Translation | Package-Name, Dependencies | -| `tmp/ts-error-translator/packages/parser/package.json` | Tip-Parser, fuer O1 nicht zwingend notwendig | Package-Name | -| `tmp/ts-error-translator/packages/searcher/package.json` | Tip-Suche, fuer O1 nicht zwingend notwendig | Package-Name | -| `tmp/ts-error-translator/apps/vscode/package.json` | volle Upstream-VS-Code-App | `displayName`, Scripts | -| `tmp/ts-error-translator/packages/engine/errors/*.md` | kuratierte Translationen | 67 Markdown-Dateien | - ---- - -### 3.5 REQ-003: Upstream-Clone in `tmp/` als lokale Extraktionsbasis verwenden -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Das Upstream-Repo muss im Projekt unter `tmp/` liegen, damit der Folge-Agent die reale Source-Struktur lokal referenzieren und daraus die benoetigten Teile extrahieren kann. Dieses `tmp/`-Verzeichnis ist **Analyse-/Extraktionsbasis**, nicht Ziel des Runtime-Produkts. - -**Ist-Zustand:** - -- Das Repo wurde lokal geklont nach `tmp/ts-error-translator`. -- Der Clone ist bereits im Workspace vorhanden und kann vom Folge-Agenten direkt gelesen werden. - -**Soll-Zustand:** - -- Der Clone bleibt als lokale Referenz erhalten, bis die benoetigten Quellen in ein first-party Package uebernommen wurden. -- Der Folge-Agent darf den Clone fuer Dateivergleiche, Datenuebernahme und Attributionsarbeit benutzen. -- Der Clone darf **nicht** als Runtime-Abhaengigkeit, Git-Submodule oder finaler Shipping-Ort verwendet werden. - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `tmp/ts-error-translator/` | lokale Upstream-Quelle | gesamtes Upstream-Repo | - -**Positivbeispiel(e):** - -```powershell -git clone "https://github.com/mattpocock/ts-error-translator.git" "tmp/ts-error-translator" -``` - -**Negativbeispiel(e):** - -```text -Remote-Translator weiter ueber Browser-Link verwenden und gar keinen lokalen Source-Clone anlegen. -``` - -**Warum falsch:** -Ohne lokalen Clone gibt es keine first-party kontrollierte Extraktionsbasis. Der ganze Zweck der Inhouse-Integration waere dann verfehlt. - ---- - -### 3.6 REQ-004: Nur benoetigte Source-Daten uebernehmen, nicht die komplette Upstream-App -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Es duerfen nur die Teile von Matt Pococks Repo uebernommen werden, die fuer die lokale Plain-English-Translation wirklich benoetigt werden. Die komplette Upstream-VS-Code-App, das Tip-System und sonstige Release-/Workspace-Infrastruktur duerfen nicht mit in das Zielpaket wandern. - -**Ist-Zustand:** - -- Upstream enthaelt neben der Translation-Engine auch eine VS-Code-App und Tip-/Search-Pakete. -- Die aktuelle Zielanwendung `pretty-ts-errors` benoetigt fuer O1 nur die lokale Translator-Funktionalitaet, nicht Matts gesamtes Produkt. - -**Soll-Zustand:** - -**Zu uebernehmen:** - -- `tmp/ts-error-translator/packages/engine/src/parseErrors.ts` -- `tmp/ts-error-translator/packages/engine/src/tsErrorMessages.json` -- `tmp/ts-error-translator/packages/engine/errors/*.md` -- die in `tmp/ts-error-translator/apps/vscode/src/bundleErrors.ts` erkennbare Bundling-Idee, jedoch nur als lokale Build-/Sync-Mechanik -- die in `tmp/ts-error-translator/apps/vscode/src/humaniseDiagnostic.ts` erkennbare Verwendungslogik als Integrationsreferenz - -**Nicht zu uebernehmen:** - -- `tmp/ts-error-translator/apps/vscode/*` als ganze App -- `tmp/ts-error-translator/packages/parser/*` -- `tmp/ts-error-translator/packages/searcher/*` -- Husky-/Changesets-/Turbo-/Release-Scaffolding aus dem Upstream-Root -- externe "request translation"- oder Web-Link-Fallbacks - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `tmp/ts-error-translator/packages/engine/src/parseErrors.ts` | Kern-Matching | `parseErrors()`, `parseErrorsWithDb()` | -| `tmp/ts-error-translator/packages/engine/src/tsErrorMessages.json` | TypeScript-Diagnostic-Matching-DB | Diagnostic-Text -> Code | -| `tmp/ts-error-translator/packages/engine/errors/*.md` | kuratierte Plain-English-Source-Daten | 67 Markdown-Dateien | -| `tmp/ts-error-translator/apps/vscode/src/bundleErrors.ts` | Build-Idee fuer lokales Bundle | `bundleErrors()` | -| `tmp/ts-error-translator/apps/vscode/src/humaniseDiagnostic.ts` | Referenz fuer lokale Usage | `humaniseDiagnostic()` | - -**Positivbeispiel(e):** - -```text -Lokales Zielpaket = Engine-Matching + Translation-Content + first-party Adapter. -Nicht Ziel = Matts komplette VS-Code-Extension. -``` - -**Negativbeispiel(e):** - -```text -Das komplette Verzeichnis tmp/ts-error-translator/apps/vscode in apps/ oder packages/ kopieren und als Bestandteil des Produkts shippen. -``` - -**Warum falsch:** -Das waere keine gezielte Source-Uebernahme, sondern ein unnnoetiges Mitschleppen von Produktteilen, die `pretty-ts-errors` nicht braucht. - -**Wichtiger Vollstaendigkeits-Hinweis:** -Die aktuelle Upstream-Coverage fuer Plain-English-Translation besteht aus **67** kuratierten Markdown-Dateien. "100% Funktionalitaet" bedeutet hier: **100% Paritaet zur aktuell vorhandenen Matt-Pocock-Translation-Coverage**, nicht 100% aller denkbaren TypeScript-Fehlercodes. - ---- - -### 3.7 REQ-005: Die korrekte Zielverortung ist `packages/`, nicht `apps/` -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Die Frage `packages` oder `apps` ist fuer dieses Vorhaben architektonisch zu entscheiden. Die korrekte Zielverortung ist **`packages/`**, weil der Translator ein wiederverwendbares first-party Library-/Engine-Stueck ist und keine eigenstaendige App. - -**Ist-Zustand:** - -- `pretty-ts-errors` trennt bereits zwischen wiederverwendbaren Libraries in `packages/*` und der VS-Code-Extension in `apps/vscode-extension`. -- Es existiert noch kein internes Translator-Package. - -**Soll-Zustand:** - -- Neues Zielpaket unter `packages/error-translator/` -- Paketname: `@pretty-ts-errors/error-translator` -- Konsumenten: - - primaer `packages/vscode-formatter` - - indirekt `apps/vscode-extension` ueber den bereits vorhandenen Formatter-/Sidebar-Pfad - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `package.json` | bestaetigt Monorepo-Workspaces | `"workspaces": ["packages/*", "apps/*"]` | -| `packages/` | Ort fuer Libraries | vorhandene interne Packages | -| `apps/vscode-extension/` | Ort der Produkt-App, nicht des wiederverwendbaren Translators | Extension-App | -| `packages/error-translator/` | empfohlener Zielort | neu anzulegen | - -**Positivbeispiel(e):** - -```json -{ - "name": "@pretty-ts-errors/error-translator", - "private": true -} -``` - -**Negativbeispiel(e):** - -```text -apps/translator/ -apps/plain-english-translator/ -``` - -**Warum falsch:** -Eine `apps/`-Verortung macht aus der Translator-Logik ein eigenes Produktartefakt. Hier wird aber ein first-party, wiederverwendbares Monorepo-Library-Package benoetigt. - ---- - -### 3.8 REQ-006: Neues internes Translator-Package mit klarer first-party API aufbauen -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Es muss ein lokales Package entstehen, das Matts Translator-Logik als first-party API bereitstellt. Dieses Package darf keine Runtime-Netzwerkzugriffe und keine Runtime-Dateisystemabhaengigkeit benoetigen. - -**Ist-Zustand:** - -- Kein internes Translator-Package vorhanden -- Kein lokaler Plain-English-API-Vertrag vorhanden - -**Soll-Zustand:** - -**Empfohlene Zielstruktur:** - -```text -packages/error-translator/ - package.json - README.md - src/ - index.ts - parseErrors.ts - translateDiagnosticMessage.ts - generated/ - tsErrorMessages.json - bundleErrors.json - vendor/ - matt-pocock/ - errors/ - *.md - test/ - translator.vitest.ts -``` - -**Empfohlener API-Vertrag:** - -```ts -export interface ParsedError { - code: number; - error: string; - rawError: string; - items: Array; -} - -export interface PlainEnglishTranslation { - code: number; - rawError: string; - body: string | null; -} - -export function parseDiagnosticMessage(message: string): ParsedError[]; -export function translateDiagnosticMessage(message: string): PlainEnglishTranslation[]; -export function hasTranslation(code: number): boolean; -``` - -**Architekturregeln fuer das Paket:** - -- keine Runtime-`fetch`-Aufrufe -- kein Runtime-`fs.readFileSync()` fuer Translationen -- statisches, eingechecktes Datenbundle fuer die Laufzeit -- rohe Upstream-Markdown-Dateien duerfen als Vendor-/Attributions-Quelle liegen bleiben - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `packages/error-translator/package.json` | neues internes Package | neu anzulegen | -| `packages/error-translator/src/index.ts` | oeffentliche API | neu anzulegen | -| `packages/error-translator/src/parseErrors.ts` | Engine-Matching | neu anzulegen | -| `packages/error-translator/src/translateDiagnosticMessage.ts` | Plain-English-Adapter | neu anzulegen | -| `packages/error-translator/src/generated/tsErrorMessages.json` | statische Matching-DB | neu anzulegen | -| `packages/error-translator/src/generated/bundleErrors.json` | statische Translation-DB | neu anzulegen | -| `packages/error-translator/vendor/matt-pocock/errors/` | rohe Upstream-Quellen | neu anzulegen | - -**Positivbeispiel(e):** - -```ts -import { parseErrors } from './parseErrors'; -import bundleErrors from './generated/bundleErrors.json'; - -export function translateDiagnosticMessage(message: string) { - return parseErrors(message).map((error) => ({ - code: error.code, - rawError: error.parseInfo.rawError, - body: bundleErrors[String(error.code)]?.body ?? null, - })); -} -``` - -**Negativbeispiel(e):** - -```ts -export function translate(message: string) { - return fetch(`https://ts-error-translator.vercel.app/?error=${message}`); -} -``` - -```ts -const fileResult = fs.readFileSync(file, 'utf8'); -``` - -**Warum falsch:** -Der erste Fall fuehrt die Remote-Abhaengigkeit wieder ein. Der zweite Fall macht die Laufzeit von Dateisystem-Zugriffen abhaengig, obwohl das Zielpaket fuer first-party, statische Monorepo-Nutzung gedacht ist. - ---- - -### 3.9 REQ-007: Remote-Translator in `pretty-ts-errors` komplett durch lokale Integration ersetzen -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Der bestehende Remote-Translator muss komplett verschwinden. Die bestehende UI soll weiterhin Plain-English-Funktionalitaet anbieten, aber ueber lokale Engine-Daten, lokale Commands und lokale WebView-/Sidebar-Ausgabe. - -**Ist-Zustand:** - -- `packages/vscode-formatter/src/components/actions.ts` baut einen externen Translator-Link. -- `packages/vscode-formatter` haengt fuer diesen Pfad aktuell an `lz-string`. -- `apps/vscode-extension` hat keinen lokalen Command fuer "show plain English translation". - -**Soll-Zustand:** - -- `packages/vscode-formatter` verwendet `@pretty-ts-errors/error-translator` -- der externe Translator-Link wird ersetzt durch eine lokale Action/Command -- empfohlene UX: - - Hover behaelt einen Action-Button - - der Button oeffnet **nicht** den Browser - - der Button routet in die bestehende Sidebar / denselben lokal kontrollierten Surface-Pfad - - die Sidebar rendert die lokale Plain-English-Translation unter oder neben dem Originalfehler -- `lz-string` kann entfernt werden, wenn kein anderer Codepfad es mehr braucht - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `packages/vscode-formatter/src/components/actions.ts` | aktueller Remote-Link und neuer lokaler Action-Punkt | `errorMessageTranslationLink()` | -| `packages/vscode-formatter/package.json` | Abhaengigkeit auf `lz-string` und neue interne Package-Abhaengigkeit | `dependencies` | -| `packages/vscode-formatter/src/format/prettifyDiagnosticForSidebar.ts` | lokaler Sidebar-Integrationspunkt | `prettifyDiagnosticForSidebar()` | -| `packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts` | Hover-Aktionspunkt | `prettifyDiagnosticForHover()` | -| `apps/vscode-extension/src/extension.ts` | neuer Command-Registrierungspunkt | `activate()` | -| `apps/vscode-extension/src/provider/webviewViewProvider.ts` | Sidebar-State und lokale Translation-Ansicht | `lockToDiagnostic()`, `refresh()` | - -**Positivbeispiel(e):** - -```ts -export const showPlainEnglishTranslationLink = (range: Range, message: string) => { - const args = encodeURIComponent(JSON.stringify([range, message])); - return `command:prettyTsErrors.showPlainEnglishTranslation?${args}`; -}; -``` - -```ts -const translations = translateDiagnosticMessage(diagnostic.message); -``` - -**Negativbeispiel(e):** - -```ts -return d /*html*/ ` - -``` - -**Warum falsch:** -Damit bleibt der aktuelle Browser-/Drittanbieter-Pfad bestehen und O1 waere nicht remediiert. - ---- - -### 3.10 INFO-003: 2026-Alternativen sind fuer diesen Use-Case keine bessere Zielbasis -[INTENT: SPEZIFIKATION] - -**Typ:** INFORMATION - -**Beschreibung:** -Es wurden 2026-er Kandidaten geprueft, aber keiner ist fuer diesen speziellen Use-Case ein besserer Zielpfad als die lokale Uebernahme von Matt Pococks Engine-Daten: - -- `imsesayflisl-design/Decoded` - aktuell und 2026 aktiv, aber provider-/LLM-/API-basiert und damit nicht passend zur Null-Remote-Vorgabe -- `dmmulroy/ts-error-translator.nvim` - lokal/offline und 2026 gepflegt, aber editor-spezifisch fuer Neovim/Lua, nicht VS-Code-zentriert -- `synoet/ts-error-translator-proxy` - architektonisch interessant als LSP-Proxy, aber jung, wenig Adoption, kein klarer reifer Standard - -**Schlussfolgerung:** -Fuer `pretty-ts-errors` ist die korrekte Richtung eine first-party Package-Internalisierung auf Basis der Matt-Pocock-Source, nicht der Wechsel auf ein anderes Remote- oder fremdes Produktsystem. - ---- - -### 3.11 WF-001: Empfohlene Umsetzungsreihenfolge fuer den Folge-Agenten -[INTENT: SPEZIFIKATION] - -**Typ:** WORKFLOW - -**Beschreibung:** -Die folgende Reihenfolge minimiert Risiko und haelt O1 und O3 sauber getrennt, ohne den Gesamtzusammenhang zu verlieren. - -**Ist-Zustand:** - -- der lokale Upstream-Clone liegt vor -- der Bericht dokumentiert die Zielrichtung -- noch keine Code-Integration umgesetzt - -**Soll-Zustand:** - -1. **Upstream-Referenz einfrieren** - Von `tmp/ts-error-translator` nur die benoetigten Engine-/Translation-Teile als lokale Referenz benutzen. - -2. **Neues internes Package anlegen** - `packages/error-translator/` anlegen und mit first-party API versehen. - -3. **Translation-Daten bundlen** - Die 67 Markdown-Dateien plus Matching-DB in statische first-party JSON-/Code-Daten ueberfuehren. - -4. **Remote-Translator-Link entfernen** - In `packages/vscode-formatter/src/components/actions.ts` den externen Vercel-Link loeschen und lokale Command-/Action-Logik einsetzen. - -5. **Sidebar lokal verknuepfen** - Lokale Translator-Ergebnisse in die bestehende Sidebar fuehren, nicht in den Browser. - -6. **O3-Sidebar-Haertung umsetzen** - `webview.postMessage({ html })` + `innerHTML` durch strukturierte Modelle + sichere DOM-Renderlogik ersetzen. - -7. **Hover-Pfad haerten** - Hover-Rendering so umbauen, dass diagnostikabgeleitete Werte escaped bleiben und keine neue HTML-Rohsurface entsteht. - -8. **Tests ergaenzen** - Translator-API, Bundling-Paritaet, Sidebar-Rendering und O1-Null-Remote-Verhalten abdecken. - -9. **Adjazente externe Links pruefen** - `typescript.tv` separat nach der globalen "no remote" Policy entscheiden. - -**Positivbeispiel(e):** - -```text -Clone -> internes Package -> Datenbundle -> lokale UI-Integration -> O3-Haertung -> Tests -``` - -**Negativbeispiel(e):** - -```text -Zuerst die komplette Upstream-VS-Code-App einbauen und spaeter versuchen, unnoetige Teile wieder herauszuscheiden. -``` - -**Warum falsch:** -Das vergroessert Scope, Risiko und Drift unnnoetig. Das Ziel ist eine gezielte first-party Integration, kein Produkt-Fork der kompletten Upstream-App. - ---- - -### 3.12 CONST-001: Harte Constraints fuer den Folge-Agenten -[INTENT: SPEZIFIKATION] - -**Typ:** CONSTRAINT - -**Beschreibung:** - -- Kein externer Remote-Translator mehr -- Keine Drittanbieter-Fehlertext-Uebergabe mehr -- Keine Uebernahme der kompletten Upstream-VS-Code-App -- Keine Uebernahme von `packages/parser` oder `packages/searcher`, solange fuer Plain-English-Translation nicht zwingend benoetigt -- `Y3` und `Y1` sind explizit aus dem Scope ausgeschlossen -- `packages/` ist der Zielort, nicht `apps/` -- MIT-/Attributions-Pflichten fuer uebernommenen Upstream-Source muessen erhalten bleiben -- Nicht uebersetzte Codes bleiben lokal und duerfen keinen externen Fallback oeffnen - ---- - -## 4. Konventionen & Constraints -[INTENT: CONSTRAINT] - -- Das Ziel ist **first-party Integration**, nicht Browser-Delegation. -- O3 und O1 muessen als zusammenhaengender Trust-/Boundary-Fall behandelt werden. -- Der Translator wird als wiederverwendbares Monorepo-Package modelliert. -- Die bestehende VS-Code-App in `apps/vscode-extension` bleibt Produktoberflaeche; die Translator-Logik wandert **nicht** als eigene App nach `apps/`. -- Upstream-Source von Matt Pocock ist selektiv zu uebernehmen, nicht vollstaendig zu forken. -- Die im Upstream vorhandenen 67 kuratierten Translationen definieren die aktuelle Paritaetsbasis. -- `Y3` und `Y1` bleiben ausserhalb dieses Hand-offs. - ---- - -## 5. Dateipfad-Index -[INTENT: REFERENZ] - -| # | Dateipfad | Relevanz | Zugehoerige Einheit-IDs | -|---|-----------|----------|-------------------------| -| 1 | `HANDOFF_O3_O1_LOCAL_TRANSLATOR.md` | dieses Referenzdokument | alle | -| 2 | `packages/vscode-formatter/src/components/actions.ts` | aktueller Remote-Translator-Link, spaeter lokaler Action-Ersatz | INFO-001, REQ-002, REQ-007 | -| 3 | `packages/vscode-formatter/package.json` | `lz-string` heute, interne Package-Abhaengigkeit spaeter | INFO-001, REQ-002, REQ-007 | -| 4 | `packages/vscode-formatter/src/components/htmlCodeBlock.ts` | HTML-String-Erzeugung fuer Sidebar | REQ-001, INFO-001 | -| 5 | `packages/vscode-formatter/src/components/plainCodeBlock.ts` | HTML-Interpolation fuer Code-Content | REQ-001, INFO-001 | -| 6 | `packages/vscode-formatter/src/format/identSentences.ts` | HTML-nahe Materialisierung diagnostischer Zeilen | REQ-001 | -| 7 | `packages/vscode-formatter/src/format/prettifyDiagnosticForSidebar.ts` | Sidebar-Integrationspunkt fuer lokale Translation | REQ-007 | -| 8 | `packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts` | Hover-Integrationspunkt fuer lokale Action | REQ-007 | -| 9 | `apps/vscode-extension/src/diagnostics.ts` | Trusted-Markdown-Diagnostic-Pfad | REQ-001, INFO-001 | -| 10 | `apps/vscode-extension/src/provider/markdownWebviewProvider.ts` | WebView-Capabilities und CSP-Rewrite | REQ-001 | -| 11 | `apps/vscode-extension/src/provider/webviewViewProvider.ts` | HTML-Transport in die Sidebar und spaeter sichere Model-Render-Pipeline | REQ-001, REQ-007 | -| 12 | `apps/vscode-extension/webview/index.js` | `innerHTML`-Setzung, spaeter sichere DOM-Render-Logik | REQ-001 | -| 13 | `apps/vscode-extension/src/extension.ts` | neuer lokaler Translation-Command | REQ-007 | -| 14 | `package.json` | bestaetigt Monorepo-Workspaces | REQ-005 | -| 15 | `tmp/ts-error-translator/` | lokale Upstream-Extraktionsbasis | REQ-003 | -| 16 | `tmp/ts-error-translator/package.json` | Upstream-Monorepo-Root | INFO-002 | -| 17 | `tmp/ts-error-translator/apps/vscode/package.json` | bestaetigt, dass Upstream eine eigene VS-Code-App mitbringt | INFO-002, REQ-004 | -| 18 | `tmp/ts-error-translator/apps/vscode/src/humaniseDiagnostic.ts` | lokale Upstream-Nutzung von Engine + Bundle | REQ-002, REQ-004 | -| 19 | `tmp/ts-error-translator/apps/vscode/src/bundleErrors.ts` | Vorlage fuer lokales Error-Bundle | REQ-002, REQ-004 | -| 20 | `tmp/ts-error-translator/packages/engine/package.json` | bestaetigt Engine als separaten Kern | INFO-002, REQ-004 | -| 21 | `tmp/ts-error-translator/packages/engine/src/index.ts` | Engine-Exportflaeche | REQ-004 | -| 22 | `tmp/ts-error-translator/packages/engine/src/parseErrors.ts` | Matching-Algorithmus fuer Diagnostic-Parsing | REQ-004, REQ-006 | -| 23 | `tmp/ts-error-translator/packages/engine/src/getImprovedMessage.ts` | Upstream-Helfer fuer Template-Fuellung | REQ-004, REQ-006 | -| 24 | `tmp/ts-error-translator/packages/engine/src/tsErrorMessages.json` | TypeScript-Diagnostic-Matching-DB | INFO-002, REQ-004, REQ-006 | -| 25 | `tmp/ts-error-translator/packages/engine/errors/*.md` | 67 kuratierte Translation-Dateien | INFO-002, REQ-004, REQ-006 | -| 26 | `tmp/ts-error-translator/packages/parser/package.json` | Tip-System, nicht in den Zielscope uebernehmen | INFO-002, REQ-004 | -| 27 | `tmp/ts-error-translator/packages/searcher/package.json` | Search-Utility, nicht in den Zielscope uebernehmen | INFO-002, REQ-004 | -| 28 | `packages/error-translator/package.json` | neues internes Zielpackage | REQ-005, REQ-006 | -| 29 | `packages/error-translator/src/index.ts` | neue first-party API | REQ-006 | -| 30 | `packages/error-translator/src/parseErrors.ts` | lokale Portierung des Matching-Kerns | REQ-006 | -| 31 | `packages/error-translator/src/translateDiagnosticMessage.ts` | lokaler Plain-English-Adapter | REQ-006 | -| 32 | `packages/error-translator/src/generated/tsErrorMessages.json` | statische Matching-Daten | REQ-006 | -| 33 | `packages/error-translator/src/generated/bundleErrors.json` | statische Translation-Daten | REQ-006 | -| 34 | `packages/error-translator/vendor/matt-pocock/errors/` | rohe Upstream-Quellen fuer Attribution und Sync | REQ-006 | -| 35 | `packages/error-translator/test/translator.vitest.ts` | empfohlene Zieltests fuer lokale Translator-Paritaet | WF-001 | -| 36 | `packages/vscode-formatter/test/vscode-formatter.vitest.ts` | bestehender Testort fuer Formatter-Integration | WF-001 | - ---- - -## 6. Ausfuehrungskontext fuer LLM-Agents -[INTENT: KONTEXT] - -**Repo-Root:** `C:\Projects\development-platform\vs-code\extensions\pretty-ts-errors` - -**Bereits erledigt in diesem Hand-off-Kontext:** - -- O3- und O1-Pfade wurden lokal und anhand des aktuellen Repos nachvollzogen -- das Matt-Pocock-Upstream-Repo wurde nach `tmp/ts-error-translator` geklont -- die relevanten Upstream-Pakete und Dateien wurden identifiziert -- 2026-Alternativen wurden geprueft und fuer diesen Use-Case eingeordnet - -**Aktuell etablierter Zielzustand aus diesem Dokument:** - -- Plain-English-Translation wird first-party lokal in `packages/error-translator` integriert -- Matts Upstream-Source wird selektiv als Basis uebernommen -- die aktuelle Remote-Vercel-Translator-Delegation wird entfernt -- der O3-Pfad wird in Richtung strukturierter Datenmodelle und sicherem DOM-Rendering umgebaut - -**Wichtige Umsetzungsdetails fuer den Folge-Agenten:** - -- Das lokale Upstream-Repo in `tmp/ts-error-translator` ist **Referenzquelle**, nicht Zielsystem. -- Die 67 Upstream-Markdown-Dateien sind die aktuelle Paritaetsbasis fuer Plain-English-Translation. -- `packages/parser` und `packages/searcher` gehoeren nicht in den Zielscope, solange kein neuer, expliziter Bedarf entsteht. -- Der schnellste und sauberste Integrationspfad ist: - - neues internes Package, - - lokale Datenbundle-Erzeugung, - - lokaler Sidebar-/Hover-Action-Ersatz, - - WebView-Haertung gegen `innerHTML`. - -**Noch nicht umgesetzt, aber durch dieses Dokument festgelegt:** - -- Anlegen von `packages/error-translator` -- Portierung/Bundle der benoetigten Upstream-Source-Daten -- Entfernung des Remote-Translator-Links -- O3-Haertung der WebView-/HTML-Pipeline - -**Explizit offene Restklaerung fuer den Folge-Agenten:** - -- Ob der externe `typescript.tv`-Link im selben Arbeitsstrang mit entfernt/ersetzt wird, wenn "alle externen Remote-Verbindungen" wortwoertlich fuer die gesamte UI gelten soll. - Dieses Dokument markiert ihn bewusst als **adjazente externe Surface**, aber nicht als den eigentlichen O1-Translator-Pfad. - -**HCOA-Hinweis:** - -Der Folge-Agent kann auf Basis dieses Dokuments direkt eine mehrstufige Implementierung planen, ohne nochmals projektweit nach der O1-/O3-Ursache oder nach der Upstream-Paketstruktur suchen zu muessen. Alle dafuer benoetigten lokalen und externen Referenzpfade sind oben bereits gebunden. diff --git a/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md b/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md deleted file mode 100644 index b790e38..0000000 --- a/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md +++ /dev/null @@ -1,626 +0,0 @@ -# Referenzdokument: Workspace-Handoff zur PNPM-, Nx-, Extension-Delivery- und Local-Translator-Migration in `pretty-ts-errors` -[INTENT: KONTEXT] - ---- - -## 0. Quellenbasis und Scope-Grenzen -[INTENT: KONTEXT] - -**Workspace-Root:** `C:\Projects\development-platform\vs-code\extensions\pretty-ts-errors` - -**Quellemodus:** `CURRENT_CONTEXT_DEFAULT` mit expliziten Zusatzreferenzen aus dem laufenden Chat-Kontext. - -**Freigegebene Quellenbasis fuer diesen Handoff:** - -- die komplette aktuelle Konversation von Beginn bis zu diesem Stand -- der bestaetigte Migrationsplan `nx-pnpm-translator-migration_c751d78b.plan.md` als Arbeitsreferenz -- die in dieser Session gelesenen AI-Base-Referenzen fuer: - - PNPM Fortress Core / Monorepo Boilerplate / Omitted Properties / Trust-Downgrade Response Order - - Nx `project.json` Governance - - Nx TypeScript Workspace Governance - - Nx Shared Package Build Orchestration - - VS Code Extension PNPM-first Bundle-first Delivery -- die in dieser Session gelesenen bestehenden Handoff-Dokumente: - - `HANDOFF_O3_O1_LOCAL_TRANSLATOR.md` - - `HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md` -- die in dieser Session gelesenen und/oder geaenderten Workspace-Dateien -- die in dieser Session ausgefuehrten Validierungs- und Installationslaeufe - -**Explizit nicht Ziel dieses Dokuments:** - -- keine Neuinterpretation ausserhalb des aktuellen Kontexts -- keine autonome Projekt-Neusuche ausserhalb der bereits verwendeten Quellen -- keine Erfindung neuer Architekturziele, die nicht bereits im Kontext entstanden sind -- keine Bearbeitung oder Loeschung der zwei bestehenden Handoff-Berichte - -**Wichtig zur Scope-Treue:** - -- dieses Dokument ist der dritte Workspace-Handoff-Bericht -- die bestehenden zwei Handoffs wurden **nicht** bearbeitet -- dieser Bericht beschreibt den **aktuellen Stand** inkl. erledigter Arbeit, offener Themen, Blocker, Entscheidungen und Dateioberflaechen - ---- - -## 1. Aufgabenuebersicht -[INTENT: KONTEXT] - -Der Benutzer hat in dieser Session eine grosse Architektur- und Migrationsaufgabe fuer `pretty-ts-errors` gestartet. - -Die uebergeordnete Zielrichtung war: - -1. das aktuelle `npm`-/`turbo`-Workspace-Setup auf ein `pnpm@11.7.0`-basiertes Fortress-Monorepo umzustellen -2. `turbo` vollstaendig durch `nx` zu ersetzen -3. die VS Code Extension Delivery auf eine PNPM-first / bundle-first / offizielle `@vscode/vsce --no-dependencies`-Architektur umzustellen -4. die TypeScript-/ESM-Lane neu zu ordnen -5. den lokalen `ts-error-translator` aus `tmp/ts-error-translator` spaeter in ein internes Package unter `packages/` zu integrieren -6. O1/O3/Y1-bezogene Sicherheits- und Handoff-Folgeschritte erst **nach** der Monorepo-/Package-Manager-/Delivery-Umstellung anzugehen - -Der Benutzer hat spaeter zusaetzlich klargestellt: - -- Node-Toolchain fuer das Monorepo: `26.2.0` -- Package-Manager: `pnpm 11.7.0` -- ESM statt CommonJS -- `tsconfig` auf `ESNext` -- `@types/node` in der spaetesten durch Minimum-Release-Age erlaubten Linie -- Nx soll **nativ** genutzt werden -- im Nx-Monorepo sollen Leaf-`package.json`-Skripte nicht die Orchestrierung tragen; semantische Tasks sollen in `project.json` liegen -- `tmp/**` und `examples/**` sind keine produktiven Oberflaechen und duerfen nicht in die produktive App-Type-/Build-Oberflaeche hineinbluten - -Der Benutzer hat zusaetzlich bestaetigt: - -- eine unerwartet geaenderte Produktidentitaet in `apps/vscode-extension/package.json` (`publisher`, `repository.url`, `homepage`) soll als beabsichtigt behandelt und **beibehalten** werden - ---- - -## 2. Informationsregister -[INTENT: REFERENZ] - -| ID | Typ | Beschreibung | Veraenderung | Status | -|----|-----|--------------|--------------|--------| -| REQ-001 | ANFORDERUNG | Root-Control-Plane auf `pnpm@11.7.0` + Fortress-Workspace umstellen | Ja | Erledigt | -| REQ-002 | ANFORDERUNG | `turbo` vollstaendig durch `nx` ersetzen | Ja | Erledigt | -| REQ-003 | ANFORDERUNG | VS Code Extension Delivery auf PNPM-first / bundle-first / `@vscode/vsce --no-dependencies` umstellen | Ja | Grossteils erledigt | -| REQ-004 | ANFORDERUNG | Translator-Logik spaeter unter `packages/` statt `apps/` integrieren | Nein | Architektur festgelegt, Umsetzung offen | -| REQ-005 | ANFORDERUNG | TypeScript-/Tooling-Stand auf 2026 anheben | Ja | Teilweise erledigt | -| REQ-006 | ANFORDERUNG | `tmp/**` und `examples/**` nicht produktiv mitbauen / mittypechecken | Ja | Erledigt fuer die produktive App-Lane | -| REQ-007 | ANFORDERUNG | Leaf-`package.json`-Skripte duerfen im Nx-Monorepo nicht die Task-Orchestrierung tragen | Ja | Erledigt | -| DEC-001 | ENTSCHEIDUNG | Root-Toolchain bleibt `Node 26.2.0`, auch wenn VS Code Stable embedded Node `24.16.0` nutzt | Ja | Aktiv | -| DEC-002 | ENTSCHEIDUNG | ESM-Zielarchitektur fuer die Extension; Node-Extension-Host only | Ja | Aktiv | -| DEC-003 | ENTSCHEIDUNG | Build- und Typecheck-Lane der Extension werden getrennt gefuehrt | Ja | Aktiv | -| DEC-004 | ENTSCHEIDUNG | `trustPolicyExclude` fuer `semver@6.3.1` ist aktuell notwendig | Ja | Aktiv | -| DEC-005 | ENTSCHEIDUNG | `registrySupportsTimeField` bleibt gemaess Referenz und verifiziertem Registry-Verhalten auf `false` | Ja | Aktiv | -| DEC-006 | ENTSCHEIDUNG | `skipTypeCheck` wurde fuer `build` und `dev` auf `false` umgestellt | Ja | Aktiv | -| DEC-007 | ENTSCHEIDUNG | Lokale Translator-Integration laeuft jetzt first-party unter `packages/error-translator` | Ja | Aktiv | -| DEC-008 | ENTSCHEIDUNG | Die Translator-Matching-Datenbank wurde gegen `typescript@6.0.3` auf 2026-Stand aktualisiert | Ja | Aktiv | -| DEC-009 | ENTSCHEIDUNG | Sidebar-WebView und Hover wurden auf sichere O1/O3-Zielpfade umgebaut | Ja | Aktiv | -| INFO-001 | INFORMATION | `apps/vscode-extension/package.json` verwendet aktuell `CyberT33N`-Identitaet und wurde auf Benutzerbestaetigung hin beibehalten | Nein | Aktiv | -| INFO-002 | INFORMATION | Ein `.vsix` wurde bereits erfolgreich unter `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` erzeugt | Nein | Aktiv | - ---- - -## 3. Current-State-Handoff -[INTENT: SPEZIFIKATION] - -### 3.1 Root-Control-Plane und PNPM-Fortress-Status -[INTENT: SPEZIFIKATION] - -**Ist-Zustand vor der Migration:** - -- Root `package.json` war `npm`-/`turbo`-basiert -- `packageManager` stand auf `npm@10.0.0` -- `turbo.json` war die Root-Orchestrierung -- `package-lock.json` existierte -- es gab kein `pnpm-workspace.yaml` -- es gab kein `nx.json` - -**Jetzt umgesetzter Stand:** - -- Root `package.json` fuehrt jetzt nur noch die Root-Control-Plane: - - `packageManager: "pnpm@11.7.0"` - - `devEngines.packageManager` - - `devEngines.runtime` mit `node 26.2.0` -- Root-`scripts` wurden aus `package.json` entfernt; Root-Orchestrierung laeuft ueber `project.json` -- neues `pnpm-workspace.yaml` als Fortress-Monorepo-Oberflaeche wurde erstellt -- `package-lock.json` wurde geloescht -- `turbo.json` wurde geloescht - -**Wichtige PNPM-Fortress-Details im aktuellen Workspace:** - -- `minimumReleaseAge: 10080` -- `minimumReleaseAgeIgnoreMissingTime: false` -- `minimumReleaseAgeStrict: true` -- `trustPolicy: no-downgrade` -- `blockExoticSubdeps: true` -- `strictDepBuilds: true` -- `allowBuilds` ist explizit befuellt statt global offen -- `resolutionMode: time-based` -- `registrySupportsTimeField: false` -- `catalogMode: strict` - -**Verifizierter Installationsstatus:** - -- `pnpm install` laeuft erfolgreich unter `pnpm v11.7.0` -- der Workspace hat jetzt ein `pnpm-lock.yaml` -- `nx@23.0.0` ist explizit in `allowBuilds` freigegeben, weil dessen `postinstall` in diesem Install-Domain gebraucht wird - ---- - -### 3.2 Warum `trustPolicyExclude` statt `overrides` fuer `semver@6.3.1` -[INTENT: SPEZIFIKATION] - -Diese Session hat den Trust-Downgrade-Pfad gemaess Referenz abgearbeitet: - -1. **zuerst Updates / neuere freigegebene Versionen** -2. **dann** nur wenn moeglich ein enger Override-Repair -3. **erst danach** exakte `trustPolicyExclude` - -Das wurde konkret auf den relevanten Graphen angewendet: - -- `@nx/js@23.0.0` -- zieht `@babel/core@7.29.7` -- `@babel/core@7.29.7` deklariert `semver: ^6.3.1` -- in der relevanten `6.3.x`-Linie existieren nur: - - `6.3.0` - - `6.3.1` - -**Warum kein `override`:** - -- ein zulassiger Repair muesste contract-kompatibel innerhalb der erlaubten Linie liegen -- `6.3.0` ist **unterhalb** des Contract-Floors `^6.3.1` -- `6.3.1` ist genau die geblockte Version -- damit existiert **kein** erlaubter enger Patch-Repair - -**Daher ist die aktuelle korrekte Reaktion:** - -- `trustPolicyExclude: [semver@6.3.1]` - -Die Begruendung steht auch als Kommentar direkt in `pnpm-workspace.yaml`. - -**Wichtige Folgepflicht:** - -- sobald `@nx/js` / `@babel/core` einen trust-konformen Graphen liefern, muss diese Ausnahme wieder entfernt werden - ---- - -### 3.3 `registrySupportsTimeField` ist weiterhin `false` -[INTENT: SPEZIFIKATION] - -**Aktueller Status:** - -- `registrySupportsTimeField` steht aktuell weiterhin auf `false` - -**Warum diese Abweichung entstanden ist:** - -- die offizielle PNPM-Dokumentation und Live-Checks in dieser Session zeigen: - - `resolutionMode: time-based` braucht npm-**full metadata** - - `registrySupportsTimeField: true` ist nur korrekt, wenn die Registry das `time`-Feld bereits im **abbreviated metadata**-Pfad liefert - - fuer `registry.npmjs.org` ist das in dem hier verwendeten Metadatenpfad **nicht** gegeben -- ein Live-Check fuer `@eslint/js` zeigte: - - abbreviated metadata: **kein** `time` - - full metadata: `time` **vorhanden** - -**Konsequenz:** - -- mit `registrySupportsTimeField: true` brach der Workspace in dieser Session real mit `ERR_PNPM_MISSING_TIME` - -**Aktuelle Entscheidung:** - -- der Benutzer hat spaeter explizit bestaetigt, dass diese Property gemaess Referenz auf `false` bleiben soll -- das ist im aktuellen Registry-Setup mit `registry.npmjs.org` auch technisch die korrekte Haltung -- `true` waere erst dann wieder zulaessig, wenn eine andere Registry-/Mirror-Architektur oder ein verifizierter Metadatenpfad das `time`-Feld im abbreviated response konsistent liefert - ---- - -### 3.4 Nx-Control-Plane und Task-Semantik -[INTENT: SPEZIFIKATION] - -**Neue Root-Oberflaechen:** - -- `nx.json` -- `project.json` am Workspace-Root -- `project.json` fuer: - - `packages/utils` - - `packages/formatter` - - `packages/vscode-formatter` - - `apps/vscode-extension` - -**Wichtige Nx-Entscheidungen:** - -- `@nx/js/typescript` ist auf `packages/**/*` als standardisierte TypeScript-Governance aktiv -- Shared Packages nutzen jetzt explizite `@nx/js:tsc`-Build-Targets -- die VS Code Extension nutzt `@nx/esbuild:esbuild` -- Leaf-`package.json`-Skripte wurden als Orchestrierungsoberflaechen entfernt -- Root-Format-/Sync-Funktionen leben jetzt im Root-`project.json` - -**Verifizierter Nx-Status:** - -- `nx show projects` erkennt aktuell: - - `@pretty-ts-errors/utils` - - `@pretty-ts-errors/formatter` - - `@pretty-ts-errors/vscode-formatter` - - `pretty-ts-errors` - - `workspace-root` -- `nx sync:check` ist erfolgreich -- `nx build @pretty-ts-errors/utils` ist erfolgreich -- `nx build @pretty-ts-errors/formatter` ist erfolgreich -- `nx build @pretty-ts-errors/vscode-formatter` ist erfolgreich -- `nx build pretty-ts-errors` ist erfolgreich - ---- - -### 3.5 TypeScript-/ESM-Umstellung -[INTENT: SPEZIFIKATION] - -**Root-TS-Stand:** - -- `tsconfig.base.json` wurde auf: - - `target: ESNext` - - `module: ESNext` - - `moduleResolution: Bundler` - umgestellt - -**Shared Packages:** - -- `packages/utils` -- `packages/formatter` -- `packages/vscode-formatter` - -wurden auf buildbare Nx-Paketoberflaechen umgestellt: - -- `tsconfig.lib.json` -- `project.json` -- ESM-Package-Surface via `type: module` -- `exports`-Eintraege -- public `dist/index.*`-Vertrag - -**App-Surface:** - -- `apps/vscode-extension/package.json` hat jetzt `type: "module"` -- die App-Type-Surfaces wurden in zwei Rollen getrennt: - - `tsconfig.app.json` - - `tsconfig.test.json` - -**Wichtige App-Korrekturen:** - -- lokale LSP-Diagnostic-Konvertierung ueber `src/lspDiagnostic.ts` -- kein Runtime-Deep-Import mehr als Designentscheidung fuer diesen Pfad -- `tmp/**` und `examples/**` sind ueber `.nxignore` aus der Nx-Nebenflaeche ausgeschlossen - ---- - -### 3.6 VS Code Extension Delivery -[INTENT: SPEZIFIKATION] - -**Manifest-/Produktoberflaeche:** - -- `displayName` ist jetzt: - - `Pretty TypeScript Errors [Secured]` -- `publisher`, `repository.url` und `homepage` sind aktuell: - - `CyberT33N` - - `https://github.com/CyberT33N/pretty-ts-errors` -- diese Identitaetsaenderung wurde nicht von mir initiiert, aber spaeter vom Benutzer explizit bestaetigt und daher beibehalten - -**Delivery-Oberflaechen:** - -- `.vscodeignore` fuer die VSIX-Strategie wurde eingefuehrt -- `.vscode/tasks.json` und `.vscode/launch.json` wurden auf Nx-Tasks / `dist/**`-Bundle-Vertrag umgestellt -- `apps/vscode-extension/scripts/build.js` wurde entfernt -- neues `apps/vscode-extension/scripts/package-vsix.mjs` wurde erstellt - -**Aktuelle Packaging-Logik:** - -- `pretty-ts-errors:typecheck` -- `pretty-ts-errors:build:production` -- `apps/vscode-extension/scripts/package-vsix.mjs` - -Das Packaging-Skript erledigt: - -- Stage-Directory -- Kopie von `dist/`, `assets/`, `syntaxes/`, `webview/` -- staged `package.json` -- Materialisierung von `catalog:`-Dependencies -- `NODE_PATH`- / `node_modules`-Bridge fuer `@vscode/vsce` -- offizielles `vsce package --no-dependencies` - -**Verifizierter Delivery-Status:** - -- `tsc -p apps/vscode-extension/tsconfig.app.json --noEmit` ist erfolgreich -- `tsc -p apps/vscode-extension/tsconfig.test.json --noEmit` ist erfolgreich -- `nx run pretty-ts-errors:build:production` ist erfolgreich -- `nx run pretty-ts-errors:package` ist erfolgreich -- vorhandenes Artefakt: - - `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` - -**Wichtige operative Beobachtung:** - -- vor dem final erfolgreichen Produktions-Build gab es ein `EPERM` auf `apps/vscode-extension/dist` -- die saubere Behebung war das rekursive Entfernen des alten `dist`-Verzeichnisses -- danach war `build:production` wieder gruen -- Nx markierte `pretty-ts-errors:build:production` als flaky task, weil in derselben Session ein frueherer Fehllauf existierte - ---- - -### 3.7 `skipTypeCheck` steht jetzt auf `false` -[INTENT: SPEZIFIKATION] - -**Aktueller Status:** - -- im App-`project.json` - - `build` - - `dev` - stehen jetzt beide auf: - - `skipTypeCheck: false` - -**Warum diese Umstellung jetzt tragfaehig ist:** - -- die App-Typecheck-Lane bleibt weiterhin explizit getrennt: - - `typecheck` target mit `tsconfig.app.json` - - Build/Bundle target mit `@nx/esbuild` - - Packaging target fuehrt `typecheck`, danach `build:production`, danach `package-vsix.mjs` aus -- nach der lokalen Translator-Integration und der Referenzbereinigung laeuft die Lane stabil mit aktivem Typecheck - -**Verifizierter Status:** - -- `pnpm exec nx run pretty-ts-errors:typecheck` ist erfolgreich -- `pnpm exec nx run pretty-ts-errors:package` ist erfolgreich - ---- - -### 3.8 `tmp/**` und `examples/**` -[INTENT: SPEZIFIKATION] - -Der Benutzer hat spaeter klargestellt: - -- `tmp` ist kein produktiver Teil des Produktbaus -- `examples` ist kein produktiver Teil des Produktbaus - -Der aktuelle Stand dazu: - -- `.nxignore` enthaelt: - - `tmp/**` - - `examples/**` -- die produktive App-Typecheck-Lane wurde auf `tsconfig.app.json` eingegrenzt -- die Test-Lane wurde auf `tsconfig.test.json` eingegrenzt - -**Wichtig:** - -- `tmp/ts-error-translator` ist weiterhin im Repository vorhanden -- das ist absichtlich so, weil die spaetere Translator-Extraktion aus diesem Clone noch aussteht - ---- - -### 3.9 Translator-Extraktion: aktueller Stand -[INTENT: SPEZIFIKATION] - -Der lokale Translator-Einbau ist jetzt **umgesetzt**. - -Was umgesetzt wurde: - -- `packages/error-translator/` wurde angelegt -- benoetigte Engine-Dateien, Translation-Markdowns und Build-Helfer wurden aus `tmp/ts-error-translator` uebernommen -- ein internes first-party Package mit `package.json`, `project.json`, `tsconfig`, `tsconfig.lib.json` und `vitest`-Tests existiert jetzt -- die lokale API exportiert: - - `parseErrors` - - `parseErrorsWithDb` - - `fillBodyWithItems` - - `translateDiagnosticMessage` - - `hasTranslation` -- der bisherige Remote-Translator-Egress ueber `ts-error-translator.vercel.app` wurde entfernt -- `lz-string` wurde aus dem Produktpfad entfernt - -**Aktuelle Zielverortung:** - -- `packages/error-translator/` -- `tmp/ts-error-translator/` bleibt weiter als lokale Referenz-/Attributionsbasis erhalten - ---- - -### 3.10 TypeScript-2026-Refresh: aktueller Stand -[INTENT: SPEZIFIKATION] - -**Bereits umgesetzt:** - -- Root `typescript` auf die aktuelle durch Minimum-Release-Age erlaubte Linie: - - `6.0.3` -- `@types/node` auf: - - `25.9.3` -- `eslint` auf: - - `10.5.0` -- `@eslint/js` auf: - - `10.0.1` -- `typescript-eslint` auf: - - `8.61.1` -- `@types/vscode` auf: - - `1.120.0` -- `@vscode/test-electron` auf: - - `3.0.0` -- `vscode-languageclient` auf: - - `10.0.0` -- `@vscode/vsce` auf: - - `3.9.2` - -**Jetzt ebenfalls umgesetzt:** - -- `packages/error-translator/scripts/refreshTsErrorMessages.mjs` materialisiert die aktuelle TypeScript-Diagnostic-Datenbank aus dem installierten `typescript` -- `packages/error-translator/src/generated/tsErrorMessages.json` wurde auf den 2026-Stand aktualisiert -- verifizierter Abgleich gegen `typescript@6.0.3`: - - `dbMessageEntries: 2130` - - `currentDiagnostics: 2130` - - `missingMessagesCount: 0` - - `missingCurrentCodesCount: 0` - - `staleDbCodesCount: 0` - ---- - -### 3.11 O1/O3-Haertung: aktueller Stand -[INTENT: SPEZIFIKATION] - -Die O1/O3-Arbeitspakete fuer das Produkt wurden jetzt umgesetzt: - -1. **Remote-Translator-Egress entfernt** - - kein `ts-error-translator.vercel.app`-Pfad mehr im Produkt - - kein `lz-string`-Pfad mehr im Produkt - - lokale Plain-English-Translation wird first-party erzeugt - -2. **Plain-English-Translator lokal integriert** - - neues internes `packages/error-translator` - - lokale Build-/Refresh-Lane fuer `bundleErrors` und `tsErrorMessages` - -3. **WebView-/Hover-Haertung umgesetzt** - - strukturierter Datenpfad statt HTML-String-Pipeline - - kein diagnostikgetriebener `innerHTML`-Pfad mehr - - WebView rendert ueber DOM-APIs - - Hover trennt untrusted Diagnoseinhalt von trusted Command-Aktionen - - `supportHtml` wurde im Hover-Pfad entfernt - -4. **Handoff-Refactor** - - `HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md` wurde auf den aktuellen technischen Stand nachgezogen - - die Y1-spezifische `tmp/`-Dokumentation bleibt als separate Referenz bestehen - ---- - -## 4. Dateiinventar der in dieser Session veraenderten Hauptoberflaechen -[INTENT: REFERENZ] - -### 4.1 Neu erstellt - -- `pnpm-workspace.yaml` -- `nx.json` -- `project.json` -- `.nxignore` -- `packages/utils/project.json` -- `packages/formatter/project.json` -- `packages/vscode-formatter/project.json` -- `packages/utils/tsconfig.lib.json` -- `packages/formatter/tsconfig.lib.json` -- `packages/vscode-formatter/tsconfig.lib.json` -- `apps/vscode-extension/project.json` -- `apps/vscode-extension/tsconfig.app.json` -- `apps/vscode-extension/tsconfig.test.json` -- `apps/vscode-extension/.vscodeignore` -- `apps/vscode-extension/scripts/package-vsix.mjs` -- `apps/vscode-extension/src/lspDiagnostic.ts` -- `HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md` (dieser Bericht) - -### 4.2 Aktualisiert - -- `package.json` -- `.gitignore` -- `tsconfig.base.json` -- `.vscode/tasks.json` -- `.vscode/launch.json` -- `.vscode/settings.json` -- `packages/utils/package.json` -- `packages/formatter/package.json` -- `packages/vscode-formatter/package.json` -- `packages/utils/src/index.ts` -- `packages/formatter/src/addMissingParentheses.ts` -- `apps/vscode-extension/package.json` -- `apps/vscode-extension/tsconfig.json` -- `apps/vscode-extension/src/diagnostics.ts` -- `apps/vscode-extension/src/provider/selectedTextHoverProvider.ts` -- `apps/vscode-extension/src/formattedDiagnosticsStore.ts` -- `apps/vscode-extension/src/provider/webviewViewProvider.ts` -- `apps/vscode-extension/src/test/runTest.ts` - -### 4.3 Geloescht - -- `turbo.json` -- `package-lock.json` -- `apps/vscode-extension/scripts/build.js` - ---- - -## 5. Aktueller Verifikationsstand -[INTENT: REFERENZ] - -**Erfolgreich verifiziert in dieser Session:** - -- `pnpm install` -- `nx sync:check` -- `nx build @pretty-ts-errors/utils` -- `nx build @pretty-ts-errors/formatter` -- `nx build @pretty-ts-errors/vscode-formatter` -- `nx build pretty-ts-errors` -- `tsc -p apps/vscode-extension/tsconfig.app.json --noEmit` -- `tsc -p apps/vscode-extension/tsconfig.test.json --noEmit` -- `nx run pretty-ts-errors:build:production` -- `nx run pretty-ts-errors:package` - -**Erzeugtes Release-Artefakt:** - -- `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` - -**Wichtiger Hinweis:** - -- der Package-/Build-Pfad war waehrend der Session temporär sensitiv gegen alte `dist`-Reste -- nach rekursivem Entfernen von `apps/vscode-extension/dist` war der Produktions-Build wieder gruen - ---- - -## 6. Offene Punkte und Blocker fuer die naechste Fortsetzung -[INTENT: SPEZIFIKATION] - -### 6.1 Noch offene fachliche Anforderungen - -Aktuell gibt es aus diesem Arbeitsstrang keine offenen Pflichtpunkte mehr fuer: - -- PNPM-Fortress-Control-Plane -- Nx-Monorepo-Orchestrierung -- lokale Translator-Integration -- 2026-Refresh der Translator-Matching-Daten -- O1/O3-Haertung im Produktpfad - -Getrennt davon bleibt nur die separat dokumentierte `tmp/`-/Y1-Referenzoberflaeche als eigener Nacharbeitsstrang. - -### 6.2 Konkrete naechste Resume-Reihenfolge - -1. **Optional: separate Y1-`tmp/`-Restarbeit** - - nur falls die geklonte Upstream-Referenz in `tmp/` selbst gehaertet werden soll - -2. **Optional: weitere Produktverbesserungen ausserhalb dieses Strangs** - - z. B. gezielte UX-Weiterentwicklung fuer strukturierte Sidebar-Modelle - ---- - -## 7. Resume-Hinweise fuer einen neuen Agenten -[INTENT: KONTEXT] - -Ein neuer Agent kann von diesem Stand aus direkt weiterarbeiten. - -**Wichtigste Resume-Fakten:** - -- der Workspace ist bereits auf PNPM + Nx migriert -- die Delivery-Lane ist funktional und hat eine VSIX erzeugt -- die Produktarbeit dieses Strangs ist funktional umgesetzt: - - lokale Translator-Integration - - 2026-Refresh der Translator-Matching-Daten - - O1/O3-Haertung im Produktpfad - -**Besonders wichtig fuer den Resume-Agenten:** - -- die bestehenden zwei Handoff-Berichte bleiben unangetastet -- `tmp/ts-error-translator` bleibt vorerst als lokale Extraktionsbasis erhalten -- `publisher` / `repository.url` / `homepage` in `apps/vscode-extension/package.json` sind aktuell absichtlich auf `CyberT33N` belassen -- `trustPolicyExclude: semver@6.3.1` ist absichtlich gesetzt und muss nicht als Zufallsrest fehlinterpretiert werden -- `registrySupportsTimeField: false` ist jetzt die explizit bestaetigte Zielhaltung -- `skipTypeCheck` steht jetzt in `build` und `dev` auf `false` -- die aktuelle VSIX wurde erfolgreich neu erzeugt - ---- - -## 8. Kurzfazit -[INTENT: KONTEXT] - -Die grossen Migrations- und Härtungsblöcke dieses Strangs sind jetzt umgesetzt: - -- PNPM Fortress Root -- Nx-Monorepo-Orchestrierung -- VS Code Extension Delivery Lane -- lokale Translator-Integration -- 2026-Refresh der Translator-Matching-Datenbasis -- O1/O3-Haertung im Produktpfad - -Der Workspace ist installierbar, synchronisiert, buildbar, typecheckt erfolgreich und kann eine `.vsix` erzeugen. - -Dieser Bericht ist als neuer dritter Workspace-Handoff gedacht und soll die zwei bestehenden Handoffs nicht ersetzen, sondern ergaenzen. diff --git a/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_SECURED_2026_06_24.md b/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_SECURED_2026_06_24.md deleted file mode 100644 index abeae6e..0000000 --- a/HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_SECURED_2026_06_24.md +++ /dev/null @@ -1,688 +0,0 @@ -# Referenzdokument: Vollstaendiger Workspace-Handoff zur PNPM-, Nx-, Extension-Delivery-, Translator- und Security-Haertung in `pretty-ts-errors` -[INTENT: KONTEXT] - ---- - -## 0. Quellenbasis und Scope-Grenzen -[INTENT: KONTEXT] - -**Workspace-Root:** `C:\Projects\development-platform\vs-code\extensions\pretty-ts-errors` - -**Quellemodus:** `CURRENT_CONTEXT_DEFAULT` mit expliziten Zusatzreferenzen aus dem laufenden Chat-Kontext. - -**Freigegebene Quellenbasis fuer diesen Handoff:** - -- die komplette aktuelle Konversation von Beginn bis zu diesem Stand -- die in dieser Session gelesenen AI-Base-Referenzen fuer: - - PNPM Fortress Core / Monorepo Boilerplate / Omitted Properties / Trust-Downgrade Response Order - - Nx `project.json` Governance - - Nx TypeScript Workspace Governance - - Nx Shared Package Build Orchestration - - Monorepo TypeScript Workspace Config Governance - - VS Code Extension PNPM-first Bundle-first Delivery -- die in dieser Session gelesenen bestehenden Handoff-Dokumente: - - `HANDOFF_O3_O1_LOCAL_TRANSLATOR.md` - - `HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md` - - `HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md` -- die in dieser Session gelesenen und/oder geaenderten Workspace-Dateien -- die in dieser Session ausgefuehrten Validierungs- und Installationslaeufe - -**Explizit nicht Ziel dieses Dokuments:** - -- keine Neuinterpretation ausserhalb des aktuellen Kontexts -- keine autonome Projekt-Neusuche ausserhalb der bereits verwendeten Quellen -- keine Erfindung neuer Architekturziele ausserhalb des bereits diskutierten oder implementierten Stands -- keine Bearbeitung oder Loeschung der drei bestehenden Handoff-Berichte - -**Wichtig zur Scope-Treue:** - -- dieses Dokument ist der **vierte** Workspace-Handoff-Bericht -- die drei bereits vorhandenen Handoffs bleiben bestehen -- dieses Dokument aggregiert den gesamten Stand von der initialen Root-Migration bis zur aktuellen Translator- und Security-Haertung -- das Dokument beschreibt nur den aktuellen Stand und die bereits identifizierten offenen Restpunkte - ---- - -## 1. Aufgabenuebersicht -[INTENT: KONTEXT] - -Der Benutzer hat in dieser Session eine mehrstufige Architektur- und Migrationsaufgabe fuer `pretty-ts-errors` verfolgt. Die Aufgabe lief nicht nur auf einen Package-Manager-Wechsel hinaus, sondern auf eine vollstaendige Umstellung des Monorepo-, Delivery- und Translator-Pfads. - -Die uebergeordnete Zielrichtung war: - -1. das bisherige `npm`-/`turbo`-Setup auf ein `pnpm@11.7.0`-basiertes Fortress-Monorepo umzustellen -2. `turbo` vollstaendig durch `nx` zu ersetzen -3. die VS Code Extension Delivery auf eine PNPM-first / bundle-first / offizielle `@vscode/vsce --no-dependencies`-Architektur umzustellen -4. die TypeScript-/ESM-Lane neu zu ordnen -5. den lokalen `ts-error-translator` aus `tmp/ts-error-translator` in ein internes Package unter `packages/` zu integrieren -6. die bisherigen O1/O3-Themen zu remedieren: - - kein externer Translator-Egress mehr - - keine diagnostikgetriebene HTML-String-Pipeline mehr in der Sidebar-WebView - - minimalerer Trust-Scope im Hover-Pfad -7. alle relevanten Oberflaechen auf den aktuellen TypeScript-Stand zu ziehen -8. am Ende die Produktbenennung auf den gesicherten Zielzustand mit `[Secured]` auszurichten - -Der Benutzer hat spaeter zusaetzlich explizit festgelegt: - -- Root-Toolchain: `Node 26.2.0` -- Package-Manager: `pnpm 11.7.0` -- ESM statt CommonJS -- `tsconfig`-Ziel auf `ESNext` -- `@types/node` in der spaetesten durch Minimum-Release-Age erlaubten Linie -- die AI-Base-Referenzen sind der verbindliche Referenzwert -- `registrySupportsTimeField` soll am Ende auf dem Referenzwert `false` bleiben - -Der Benutzer hat ausserdem spaeter explizit nachgezogen: - -- die lokale Translator-Integration muss zwar auf den aktuellen TypeScript-Stand ausgerichtet werden, aber die noch fehlende 100%-Abdeckung der **kuratierten Plain-English-Uebersetzungen** bleibt ein offener Restpunkt -- fuer den neuen Handoff muss der komplette bisherige Stand **vom Anfang des Kontextes bis zum Ende** zusammengefasst werden - ---- - -## 2. Informationsregister -[INTENT: REFERENZ] - -| ID | Typ | Beschreibung | Veraenderung | Status | -|----|-----|--------------|--------------|--------| -| REQ-001 | ANFORDERUNG | Root-Control-Plane auf `pnpm@11.7.0` + Fortress-Workspace umstellen | Ja | Erledigt | -| REQ-002 | ANFORDERUNG | `turbo` vollstaendig durch `nx` ersetzen | Ja | Erledigt | -| REQ-003 | ANFORDERUNG | VS Code Extension Delivery auf PNPM-first / bundle-first / `@vscode/vsce --no-dependencies` umstellen | Ja | Erledigt | -| REQ-004 | ANFORDERUNG | Translator-Logik intern unter `packages/` integrieren | Ja | Erledigt | -| REQ-005 | ANFORDERUNG | TypeScript-/Tooling-Stand auf 2026 heben | Ja | Teilweise erledigt | -| REQ-006 | ANFORDERUNG | `tmp/**` und `examples/**` nicht produktiv mitbauen / mittypechecken | Ja | Erledigt | -| REQ-007 | ANFORDERUNG | Leaf-`package.json`-Skripte duerfen im Nx-Monorepo nicht die Task-Orchestrierung tragen | Ja | Erledigt | -| REQ-008 | ANFORDERUNG | O1: externer Translator-Egress muss entfernt werden | Ja | Erledigt | -| REQ-009 | ANFORDERUNG | O3: Sidebar-WebView muss von `innerHTML`-/HTML-String-Pipeline weg | Ja | Erledigt | -| REQ-010 | ANFORDERUNG | Hover-Trust-Scope muss reduziert werden | Ja | Erledigt | -| REQ-011 | ANFORDERUNG | Produktname muss mit dem Suffix ` [Secured]` ausgerichtet werden | Ja | Teilweise erledigt, Restflaechen noch nachziehen | -| REQ-012 | ANFORDERUNG | Die Translator-Registry muss am Ende 100% vollstaendig werden | Nein | Offen | -| REQ-013 | ANFORDERUNG | Alle TypeScript-Error-Codes muessen in der Plain-English-Registry enthalten sein | Nein | Offen | -| REQ-014 | ANFORDERUNG | Die komplette Translator-Welt darf am Ende keine 2023-Legacy-Luecke mehr enthalten | Nein | Offen | -| DEC-001 | ENTSCHEIDUNG | Root-Toolchain bleibt `Node 26.2.0`, auch wenn VS Code Stable embedded Node `24.16.0` nutzt | Ja | Aktiv | -| DEC-002 | ENTSCHEIDUNG | ESM-Zielarchitektur fuer die Extension; Node-Extension-Host only | Ja | Aktiv | -| DEC-003 | ENTSCHEIDUNG | Build- und Typecheck-Lane der Extension werden getrennt gefuehrt | Ja | Aktiv | -| DEC-004 | ENTSCHEIDUNG | `trustPolicyExclude` fuer `semver@6.3.1` ist aktuell notwendig | Ja | Aktiv | -| DEC-005 | ENTSCHEIDUNG | `registrySupportsTimeField` bleibt gemaess Referenz und verifiziertem Registry-Verhalten auf `false` | Ja | Aktiv | -| DEC-006 | ENTSCHEIDUNG | `skipTypeCheck` wurde fuer `build` und `dev` auf `false` umgestellt | Ja | Aktiv | -| DEC-007 | ENTSCHEIDUNG | Lokale Translator-Integration laeuft first-party unter `packages/error-translator` | Ja | Aktiv | -| DEC-008 | ENTSCHEIDUNG | Die Translator-Matching-Datenbank wurde gegen `typescript@6.0.3` auf 2026-Stand aktualisiert | Ja | Aktiv | -| DEC-009 | ENTSCHEIDUNG | Sidebar-WebView und Hover wurden auf sichere O1/O3-Zielpfade umgebaut | Ja | Aktiv | -| DEC-010 | ENTSCHEIDUNG | `apps/vscode-extension/tsconfig.json` ist jetzt wieder reine Koordinations-/Referenzoberflaeche statt source-owning `NodeNext`-Leaf | Ja | Aktiv | -| INFO-001 | INFORMATION | `apps/vscode-extension/package.json` verwendet aktuell die bestaetigte `CyberT33N`-Identitaet | Nein | Aktiv | -| INFO-002 | INFORMATION | Ein `.vsix` wurde erfolgreich unter `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` erzeugt | Nein | Aktiv | -| INFO-003 | INFORMATION | Die aktuelle TypeScript-Matcher-DB hat `2130` Eintraege und deckt `typescript@6.0.3` vollstaendig ab | Nein | Aktiv | -| INFO-004 | INFORMATION | Das kuratierte Plain-English-Korpus umfasst aktuell nur `67` Markdown-Uebersetzungen | Nein | Aktiv | -| WARN-001 | WARNUNG | Die Plain-English-Registry ist **nicht** 100% vollstaendig; viele Fehlercodes haben noch keine kuratierte Uebersetzung | Nein | Offen | -| WARN-002 | WARNUNG | `trustPolicyExclude: semver@6.3.1` ist weiterhin eine temporare Fortress-Ausnahme | Nein | Offen | - ---- - -## 3. Current-State-Handoff -[INTENT: SPEZIFIKATION] - -### 3.1 Root-Control-Plane und PNPM-Fortress-Status -[INTENT: SPEZIFIKATION] - -**Ist-Zustand vor der Migration:** - -- Root `package.json` war `npm`-/`turbo`-basiert -- `packageManager` stand auf `npm@10.0.0` -- `turbo.json` war die Root-Orchestrierung -- `package-lock.json` existierte -- es gab kein `pnpm-workspace.yaml` -- es gab kein `nx.json` - -**Jetzt umgesetzter Stand:** - -- Root `package.json` fuehrt jetzt nur noch die Root-Control-Plane: - - `packageManager: "pnpm@11.7.0"` - - `devEngines.packageManager` - - `devEngines.runtime` mit `node 26.2.0` -- Root-`scripts` wurden aus `package.json` entfernt; Root-Orchestrierung laeuft ueber `project.json` -- `pnpm-workspace.yaml` existiert als Fortress-Monorepo-Oberflaeche -- `package-lock.json` wurde geloescht -- `turbo.json` wurde geloescht - -**Wichtige PNPM-Fortress-Details im aktuellen Workspace:** - -- `minimumReleaseAge: 10080` -- `minimumReleaseAgeIgnoreMissingTime: false` -- `minimumReleaseAgeStrict: true` -- `trustPolicy: no-downgrade` -- `blockExoticSubdeps: true` -- `strictDepBuilds: true` -- `allowBuilds` ist explizit befuellt statt global offen -- `resolutionMode: time-based` -- `registrySupportsTimeField: false` -- `catalogMode: strict` -- `saveExact: true` -- `savePrefix: ""` -- `nodeLinker: isolated` - -**Verifizierter Installationsstatus:** - -- `pnpm install` laeuft erfolgreich unter `pnpm v11.7.0` -- der Workspace hat ein `pnpm-lock.yaml` -- der Lockfile erfuellt die Supply-Chain-Policies - ---- - -### 3.2 Warum `trustPolicyExclude` statt `overrides` fuer `semver@6.3.1` -[INTENT: SPEZIFIKATION] - -Der Trust-Downgrade-Pfad wurde gemaess Referenz abgearbeitet: - -1. zuerst Updates / neuere freigegebene Versionen -2. dann nur wenn moeglich ein enger Override-Repair -3. erst danach exakte `trustPolicyExclude` - -Der relevante Graph: - -- `@nx/js@23.0.0` -- zieht `@babel/core@7.29.7` -- `@babel/core@7.29.7` deklariert `semver: ^6.3.1` -- in der relevanten `6.3.x`-Linie existieren nur: - - `6.3.0` - - `6.3.1` - -**Warum kein `override`:** - -- `6.3.0` liegt unterhalb des Contract-Floors `^6.3.1` -- `6.3.1` ist genau die geblockte Version -- damit existiert kein zulaessiger enger Patch-Repair - -**Daher bleibt korrekt:** - -- `trustPolicyExclude: [semver@6.3.1]` - -**Folgepflicht:** - -- sobald `@nx/js` / `@babel/core` einen trust-konformen Graphen liefern, muss diese Ausnahme entfernt werden - ---- - -### 3.3 `registrySupportsTimeField` bleibt auf `false` -[INTENT: SPEZIFIKATION] - -**Warum:** - -- `resolutionMode: time-based` braucht die korrekte Zeitmetadaten-Surface -- `registrySupportsTimeField: true` ist nur korrekt, wenn die Registry das `time`-Feld bereits im **abbreviated metadata**-Pfad liefert -- fuer `registry.npmjs.org` ist das im verwendeten Pfad nicht gegeben - -**Verifizierte Live-Beobachtung:** - -Getestete Pakete: - -- `esbuild` -- `typescript` -- `@eslint/js` -- `@nx/js` - -Ergebnis: - -- full metadata: `time` vorhanden -- abbreviated metadata: `time` **nicht** vorhanden - -**Konsequenz:** - -- `registrySupportsTimeField: false` ist technisch korrekt -- `true` waere im aktuellen Setup ein falscher globaler Registry-Claim - ---- - -### 3.4 Nx-Control-Plane und Task-Semantik -[INTENT: SPEZIFIKATION] - -**Neue Root-Oberflaechen:** - -- `nx.json` -- `project.json` am Workspace-Root -- `project.json` fuer: - - `packages/utils` - - `packages/formatter` - - `packages/vscode-formatter` - - `packages/error-translator` - - `apps/vscode-extension` - -**Wichtige Nx-Entscheidungen:** - -- `@nx/js/typescript` ist auf `packages/**/*` als standardisierte TypeScript-Governance aktiv -- Shared Packages nutzen explizite `@nx/js:tsc`-Build-Targets -- das neue Translator-Paket nutzt ebenfalls `@nx/js:tsc` -- die VS Code Extension nutzt `@nx/esbuild:esbuild` -- Leaf-`package.json`-Skripte wurden als Orchestrierungsoberflaechen entfernt -- Root-Format-/Sync-Funktionen leben im Root-`project.json` - -**Verifizierter Nx-Status:** - -- `nx show projects` erkennt aktuell: - - `@pretty-ts-errors/error-translator` - - `@pretty-ts-errors/utils` - - `@pretty-ts-errors/formatter` - - `pretty-ts-errors` - - `workspace-root` -- `pnpm exec nx sync` ist erfolgreich -- `pnpm exec nx sync:check` ist erfolgreich - ---- - -### 3.5 TypeScript-/ESM-Umstellung -[INTENT: SPEZIFIKATION] - -**Root-TS-Stand:** - -- `tsconfig.base.json` ist auf: - - `target: ESNext` - - `module: ESNext` - - `moduleResolution: Bundler` - gestellt - -**Workspace-Rollenaufteilung:** - -- Root-`tsconfig.json` ist die Koordinations-/Referenzoberflaeche -- `apps/vscode-extension/tsconfig.json` ist jetzt ebenfalls wieder Koordinationsoberflaeche: - - `files: []` - - `references` auf `tsconfig.app.json` und `tsconfig.test.json` -- `apps/vscode-extension/tsconfig.app.json` ist die produktive App-Rolle: - - `module: ESNext` - - `moduleResolution: Bundler` - - `noEmit: true` -- `apps/vscode-extension/tsconfig.test.json` bleibt die Test-Rolle - -**Wichtige Folge dieser Korrektur:** - -- die zuvor im Editor sichtbaren `TS2835`-Fehler mit verpflichtenden `.js`-Suffixen kamen aus einer source-owning `NodeNext`-Fehlklassifikation der Leaf-`tsconfig.json` -- diese Ursache wurde beseitigt -- es war **nicht** notwendig, die ganzen App-Imports kuenstlich auf `.js` umzuschreiben - -**Verifizierter Status:** - -- `pnpm exec tsc -p apps/vscode-extension/tsconfig.json --noEmit` ist erfolgreich -- `pnpm exec tsc -p apps/vscode-extension/tsconfig.app.json --noEmit` ist erfolgreich -- `pnpm exec tsc -p apps/vscode-extension/tsconfig.test.json --noEmit` ist erfolgreich -- `pnpm exec nx run pretty-ts-errors:typecheck` ist erfolgreich - ---- - -### 3.6 VS Code Extension Delivery -[INTENT: SPEZIFIKATION] - -**Manifest-/Produktoberflaeche:** - -- `displayName` ist aktuell: - - `Pretty TypeScript Errors [Secured]` -- `publisher`, `repository.url` und `homepage` sind aktuell: - - `CyberT33N` - - `https://github.com/CyberT33N/pretty-ts-errors` -- diese Identitaetsaenderung wurde im Chat bestaetigt und beibehalten - -**Delivery-Oberflaechen:** - -- `.vscodeignore` fuer die VSIX-Strategie wurde eingefuehrt -- `.vscode/tasks.json` und `.vscode/launch.json` wurden auf Nx-Tasks / `dist/**`-Bundle-Vertrag umgestellt -- `apps/vscode-extension/scripts/build.js` wurde entfernt -- `apps/vscode-extension/scripts/package-vsix.mjs` materialisiert `catalog:`-Dependencies in einen Stage-Manifest-Pfad - -**Aktueller Packaging-Status:** - -- `pnpm exec nx run pretty-ts-errors:package` ist erfolgreich -- Artefakt: - - `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` - -**Wichtige operative Beobachtung:** - -- der bekannte Windows-`EPERM` auf `apps/vscode-extension/dist` kann weiterhin auftreten, wenn alte Artefakte oder ein Watcher die Surface halten -- der saubere Workaround bleibt: - - altes `apps/vscode-extension/dist` entfernen - - Packaging-Lane erneut starten - ---- - -### 3.7 Produktname / `[Secured]`-Zielbild -[INTENT: SPEZIFIKATION] - -**Bereits korrekt gesetzt:** - -- `apps/vscode-extension/package.json#displayName` - - `Pretty TypeScript Errors [Secured]` - -**Noch offene user-facing Restflaechen zum Nachziehen:** - -- `apps/vscode-extension/package.json#contributes.viewsContainers.activitybar[0].title` - - aktuell: `Pretty TypeScript Errors` -- `apps/vscode-extension/package.json#contributes.commands[*].category` - - aktuell: `Pretty TS Errors` -- `apps/vscode-extension/src/logger.ts` - - aktueller Output-Channel-Name: `Pretty TypeScript Errors` -- `apps/vscode-extension/webview/index.html` - - aktueller Title: `Pretty TS Errors - Markdown Preview` - -**Architektonische Interpretation:** - -- der Kernname ist bereits mit `[Secured]` auf der Extension-Manifest-Oberflaeche gesetzt -- einzelne user-facing Restflaechen koennen noch nachgezogen werden, wenn eine vollstaendig konsistente Benennungsoberflaeche gewuenscht ist - ---- - -### 3.8 Translator-Architektur: aktueller Zustand -[INTENT: SPEZIFIKATION] - -Der lokale Translator-Einbau ist jetzt **technisch integriert**, aber **inhaltlich noch nicht 100% fertig**. - -**Was jetzt existiert:** - -- neues internes Package: - - `packages/error-translator/` -- lokale first-party API: - - `parseErrors` - - `parseErrorsWithDb` - - `fillBodyWithItems` - - `translateDiagnosticMessage` - - `hasTranslation` -- lokale generated data surfaces: - - `packages/error-translator/src/generated/tsErrorMessages.json` - - `packages/error-translator/src/generated/bundleErrors.json` -- Upstream-Attributions-/Rohdatenbasis: - - `packages/error-translator/vendor/matt-pocock/errors/*.md` - -**Was bewusst nicht uebernommen wurde:** - -- keine komplette Upstream-VS-Code-App -- keine Upstream-Workspace- oder Turbo-Oberflaeche -- keine Upstream-Parser-/Searcher-Pakete als Produktbestandteil - -**Aktuelle Produktintegration:** - -- `packages/vscode-formatter` konsumiert den lokalen Translator -- die Sidebar rendert die lokale Plain-English-Translation direkt im Produkt -- kein externer Remote-Fallback mehr - ---- - -### 3.9 Translator-Skripte / No-Code-Operations / Shims -[INTENT: SPEZIFIKATION] - -Der Benutzer hat explizit gefragt, ob hier zusaetzliche Migrations-, Shims- oder No-Code-Kompatibilitaetsoberflaechen eingefuehrt wurden. - -**Ja, es gibt zwei neue Build-/Maintenance-Skripte:** - -1. `packages/error-translator/scripts/refreshTsErrorMessages.mjs` - - liest die aktuell installierte TypeScript-Diagnostic-Datenbasis direkt aus `typescript` - - generiert daraus `src/generated/tsErrorMessages.json` - - Zweck: die **Matcher-/Erkennungsdatenbank** auf den aktuellen TS-Stand ziehen - -2. `packages/error-translator/scripts/bundleErrors.mjs` - - liest die kuratierten Markdown-Dateien unter `vendor/matt-pocock/errors/*.md` - - materialisiert daraus `src/generated/bundleErrors.json` - - Zweck: die **Runtime-Uebersetzungsdaten** lokal als statisches Bundle bereitstellen - -**Wichtig:** - -- das sind **keine Runtime-Shims** -- das sind **keine Abwaertskompatibilitaets-Layer** -- das sind **keine No-Code-Fallback-Systeme** -- das sind **Build-/Refresh-Skripte fuer Datenmaterialisierung** - -**Was explizit nicht existiert:** - -- kein externer Service-Fallback -- kein Legacy-Translator-Proxy -- kein Runtime-FS-Zugriff auf die rohen Markdown-Dateien -- kein network-basierter Translator - ---- - -### 3.10 TypeScript-2026-Refresh: was erledigt ist und was nicht -[INTENT: SPEZIFIKATION] - -Hier ist die praezise Trennung entscheidend. - -**Erledigt:** - -- die **technische Fehlererkennung** wurde gegen `typescript@6.0.3` aktualisiert -- `packages/error-translator/src/generated/tsErrorMessages.json` wurde neu generiert -- verifizierter Abgleich: - - `dbMessageEntries: 2130` - - `currentDiagnostics: 2130` - - `missingMessagesCount: 0` - - `missingCurrentCodesCount: 0` - - `staleDbCodesCount: 0` - -**Nicht erledigt:** - -- die **kuratierten Plain-English-Uebersetzungen** sind **nicht** 100% vollstaendig -- das aktuelle Markdown-Korpus unter `vendor/matt-pocock/errors` umfasst nur `67` Uebersetzungsdateien -- damit sind zwar alle aktuellen TS-Diagnostics **erkennbar**, aber nicht alle haben schon einen kuratierten Plain-English-Text - -**Das bedeutet architektonisch:** - -- die 2026-Kompatibilitaet der **Matching-Ebene** ist hergestellt -- die 2026-Komplettheit der **Translation-Registry** ist **noch offen** - ---- - -### 3.11 O1/O3-Haertung: aktueller Stand -[INTENT: SPEZIFIKATION] - -**O1 / Remote-Egress:** - -- der bisherige Translator-Egress zu `ts-error-translator.vercel.app` wurde entfernt -- `lz-string` wurde aus dem Produktpfad entfernt -- die Produktoberflaeche uebersetzt lokal - -**O3 / Sidebar-WebView:** - -- die alte Pipeline: - - HTML-Strings aufbauen - - via `postMessage({ html })` transportieren - - im WebView per `innerHTML` einsetzen -- wurde ersetzt durch: - - strukturiertes Sidebar-View-Model - - DOM-Knoten-Erzeugung im WebView - - kein diagnostikgetriebener `innerHTML`-Transport mehr - -**Hover / Trust-Scope:** - -- Hover-Inhalt und Hover-Aktionen wurden getrennt -- der untrusted Diagnoseinhalt wird als normales Markdown ohne `supportHtml` transportiert -- trusted bleibt nur noch die Command-Aktionsoberflaeche - ---- - -### 3.12 Offene Restarbeit fuer den Translator -[INTENT: SPEZIFIKATION] - -Die folgenden Punkte sind **inhaltlich offen** und muessen fuer den gewuenschten Endzustand noch umgesetzt werden: - -1. **Die Translation-Registry muss 100% vollstaendig werden** - - aktuell nur `67` kuratierte Plain-English-Uebersetzungen - - Ziel: alle relevanten aktuellen TS-Error-Codes muessen eine kuratierte Uebersetzung erhalten - -2. **Alle Error-Codes muessen herausgefunden und abgedeckt werden** - - die aktuelle Matcher-DB kennt bereits alle aktuellen Diagnostics - - die kuratierte Registry muss auf diese Menge hochgezogen werden - -3. **Die Legacy-Welt des 2023er-Korpus darf inhaltlich nicht als Endzustand stehen bleiben** - - aktuelle Vendor-Basis ist ein Startpunkt, nicht der Zielzustand - - am Ende muss die eigene Registry den aktuellen TypeScript-Stand 100% abbilden - -4. **Bei spaeteren TypeScript-Upgrades muss der Refresh erneut gefahren werden** - - `refreshTsErrorMessages.mjs` ist die technische Refresh-Oberflaeche - - neue oder geaenderte TS-Diagnostics muessen danach wieder in die kuratierte Registry gezogen werden - ---- - -## 4. Dateiinventar der wichtigsten Oberflaechen -[INTENT: REFERENZ] - -### 4.1 Neue bzw. neue Hauptoberflaechen - -- `pnpm-workspace.yaml` -- `nx.json` -- `project.json` -- `.nxignore` -- `apps/vscode-extension/project.json` -- `apps/vscode-extension/.vscodeignore` -- `apps/vscode-extension/scripts/package-vsix.mjs` -- `apps/vscode-extension/src/lspDiagnostic.ts` -- `apps/vscode-extension/src/hoverContent.ts` -- `apps/vscode-extension/src/provider/sidebarViewModel.ts` -- `packages/error-translator/package.json` -- `packages/error-translator/project.json` -- `packages/error-translator/tsconfig.json` -- `packages/error-translator/tsconfig.lib.json` -- `packages/error-translator/src/index.ts` -- `packages/error-translator/src/parseErrors.ts` -- `packages/error-translator/src/getImprovedMessage.ts` -- `packages/error-translator/src/translateDiagnosticMessage.ts` -- `packages/error-translator/src/generated/tsErrorMessages.json` -- `packages/error-translator/src/generated/bundleErrors.json` -- `packages/error-translator/scripts/refreshTsErrorMessages.mjs` -- `packages/error-translator/scripts/bundleErrors.mjs` -- `packages/error-translator/test/engine.test.ts` -- `packages/error-translator/vendor/matt-pocock/errors/*.md` -- `HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_SECURED_2026_06_24.md` (dieser Bericht) - -### 4.2 Wichtige aktualisierte Oberflaechen - -- `package.json` -- `tsconfig.base.json` -- `tsconfig.json` -- `.vscode/tasks.json` -- `.vscode/launch.json` -- `.vscode/settings.json` -- `apps/vscode-extension/package.json` -- `apps/vscode-extension/tsconfig.json` -- `apps/vscode-extension/tsconfig.app.json` -- `apps/vscode-extension/tsconfig.test.json` -- `apps/vscode-extension/src/diagnostics.ts` -- `apps/vscode-extension/src/provider/markdownWebviewProvider.ts` -- `apps/vscode-extension/src/provider/selectedTextHoverProvider.ts` -- `apps/vscode-extension/src/provider/webviewViewProvider.ts` -- `apps/vscode-extension/webview/index.js` -- `apps/vscode-extension/webview/style.css` -- `apps/vscode-extension/src/logger.ts` -- `packages/vscode-formatter/package.json` -- `packages/vscode-formatter/tsconfig.json` -- `packages/vscode-formatter/src/components/actions.ts` -- `packages/vscode-formatter/src/format/prettifyDiagnosticForSidebar.ts` -- `packages/vscode-formatter/src/format/prettifyDiagnosticForHover.ts` -- `README.md` -- `pnpm-lock.yaml` -- `HANDOFF_O3_O1_LOCAL_TRANSLATOR.md` -- `HANDOFF_WORKSPACE_NX_PNPM_EXTENSION_DELIVERY_TRANSLATOR_2026_06_24.md` - ---- - -## 5. Aktueller Verifikationsstand -[INTENT: REFERENZ] - -Erfolgreich verifiziert in diesem Kontext: - -- `pnpm install` -- `pnpm exec nx sync` -- `pnpm exec nx sync:check` -- `pnpm exec nx build @pretty-ts-errors/utils` -- `pnpm exec nx build @pretty-ts-errors/formatter` -- `pnpm exec nx build @pretty-ts-errors/error-translator` -- `pnpm exec nx test @pretty-ts-errors/error-translator` -- `pnpm exec nx build @pretty-ts-errors/vscode-formatter` -- `pnpm exec tsc -p apps/vscode-extension/tsconfig.json --noEmit` -- `pnpm exec tsc -p apps/vscode-extension/tsconfig.app.json --noEmit` -- `pnpm exec tsc -p apps/vscode-extension/tsconfig.test.json --noEmit` -- `pnpm exec nx run pretty-ts-errors:typecheck` -- `pnpm exec nx run pretty-ts-errors:package` - -**Erzeugtes Artefakt:** - -- `artifacts/vsix/pretty-ts-errors-0.8.7.vsix` - ---- - -## 6. Offene Punkte und Resume-Reihenfolge -[INTENT: SPEZIFIKATION] - -### 6.1 Noch offene fachliche Anforderungen - -1. Die Translator-Registry ist **nicht** 100% vollstaendig - - das kuratierte Korpus umfasst nur `67` Plain-English-Dateien - - es muessen weitere Error-Codes kuratiert und eingebunden werden - -2. Alle aktuellen relevanten TypeScript-Error-Codes muessen kuratierte Plain-English-Texte bekommen - - die technische Matcher-Ebene ist bereit - - die inhaltliche Registry muss nachgezogen werden - -3. Die inhaltliche 2023-Legacy-Basis darf nicht der Endzustand bleiben - - Vendor-Content ist derzeit Startbasis - - Ziel ist eine 100% aktuelle eigene Registry - -4. `trustPolicyExclude: semver@6.3.1` bleibt ein spaeter zu entfernender Fortress-Sonderfall - -### 6.2 Konkrete naechste Resume-Reihenfolge - -1. **Translator-Registry vervollstaendigen** - - alle aktuellen TS-Codes gegen die kuratierte Markdown-/JSON-Registry abgleichen - - fehlende Plain-English-Texte systematisch ergaenzen - -2. **Legacy-Reduktion der Vendor-Basis** - - Vendor-Korpus nicht nur technisch behalten, sondern inhaltlich ueberholen - -3. **Spaetere Upgrades** - - bei neuem TypeScript: - - `refreshTsErrorMessages.mjs` - - fehlende Registry-Eintraege ergaenzen - -4. **Separater optionaler Reststrang** - - `tmp/ts-error-translator` selbst haerten, falls der Benutzer auch die lokale Upstream-Referenzflaeche noch nacharbeiten will - ---- - -## 7. Resume-Hinweise fuer einen neuen Agenten -[INTENT: KONTEXT] - -Ein neuer Agent kann von diesem Stand aus direkt weiterarbeiten. - -**Wichtigste Resume-Fakten:** - -- der Workspace ist bereits auf PNPM + Nx migriert -- die Delivery-Lane ist funktional und erzeugt eine VSIX -- der lokale Translator ist als first-party Package integriert -- die O1/O3-Haertung im Produktpfad ist umgesetzt -- die technische 2026-Kompatibilitaet der TS-Matcher-Datenbank ist hergestellt -- die inhaltliche 100%-Vollstaendigkeit der Plain-English-Registry ist **noch offen** - -**Besonders wichtig fuer den Resume-Agenten:** - -- die drei bestehenden Handoff-Berichte bleiben unangetastet -- `tmp/ts-error-translator` bleibt vorerst als lokale Referenz-/Attributionsbasis erhalten -- `registrySupportsTimeField: false` ist die explizit bestaetigte Zielhaltung -- `skipTypeCheck` steht jetzt in `build` und `dev` auf `false` -- `apps/vscode-extension/tsconfig.json` ist jetzt wieder reine Koordinationsflaeche -- die eigentliche Produktrolle liegt in `tsconfig.app.json` -- die derzeit groesste offene Sache ist **nicht** mehr Root-Migration, sondern die **inhaltliche Vollstaendigkeit** der Translator-Registry - ---- - -## 8. Kurzfazit -[INTENT: KONTEXT] - -Die grossen Migrations- und Haertungsbloecke dieses Strangs sind umgesetzt: - -- PNPM Fortress Root -- Nx-Monorepo-Orchestrierung -- VS Code Extension Delivery Lane -- lokale Translator-Integration -- 2026-Refresh der Translator-Matching-Datenbasis -- O1/O3-Haertung im Produktpfad -- Korrektur der Leaf-`tsconfig`-Koordinationsrolle - -Der Workspace ist installierbar, synchronisiert, buildbar, typecheckt erfolgreich und erzeugt eine `.vsix`. - -**Nicht erledigt** ist weiterhin die inhaltliche 100%-Vollstaendigkeit der Plain-English-Translationen: - -- alle Error-Codes muessen am Ende eine kuratierte Uebersetzung erhalten -- die Registry muss 100% vollstaendig werden -- die verbleibende 2023-Legacy-Basis des Vendor-Korpus darf nicht der Endzustand bleiben - -Dieser Bericht ist als neuer vierter Workspace-Handoff gedacht und soll die drei bestehenden Handoffs nicht ersetzen, sondern ergaenzen. diff --git a/HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md b/HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md deleted file mode 100644 index e51bf8a..0000000 --- a/HANDOFF_Y1_WORKSPACE_SCANNER_TRUSTED_MARKDOWN.md +++ /dev/null @@ -1,259 +0,0 @@ -# Referenzdokument: Workspace-Handoff zu den verbleibenden Y1-Befunden in `tmp/ts-error-translator` -[INTENT: KONTEXT] - ---- - -## 0. Quellenbasis und Scope -[INTENT: KONTEXT] - -- Workspace-Root: `C:\Projects\development-platform\vs-code\extensions\pretty-ts-errors` -- Fachlicher Zielbereich: `tmp/ts-error-translator` -- Verwendete Quellen fuer diesen Handoff: - - aktueller Chat-Kontext inklusive des zuvor erstellten Security-Audits - - `tmp/ts-error-translator/packages/searcher/src/index.ts` - - `tmp/ts-error-translator/apps/vscode/src/extension.ts` -- Explizit aus dem Handoff ausgeschlossen: - - `R1` - - `O3` - - `O2` - - `Y3` - - `O1` -- Ziel dieses Dokuments: - - nur die beiden verbleibenden `Y1`-Themen auf Workspace-Ebene so aufbereiten, dass ein neuer Agent die Behebung direkt fortsetzen kann - ---- - -## 1. Aufgabenuebersicht -[INTENT: KONTEXT] - -Im Workspace `pretty-ts-errors` ist fuer den aktuell relevanten Unterbereich `tmp/ts-error-translator` nur noch ein enger Restscope offen. Dieser Restscope umfasst genau zwei `Y1`-Befunde: - -1. der Workspace-Scanner in `tmp/ts-error-translator/packages/searcher/src/index.ts` -2. die Trusted-Markdown-Verwendung in `tmp/ts-error-translator/apps/vscode/src/extension.ts` - -Das Problem beim Scanner ist keine Exfiltration und keine verdeckte Ausfuehrung, sondern eine zu breite lokale Read-/Discovery-Surface, weil der Scan-Root implizit aus `INIT_CWD` oder `process.cwd()` abgeleitet wird und danach rekursiv alle `ts/tsx`-Dateien liest. Das Problem beim Trusted Markdown ist keine bestaetigte Missbrauchslogik, sondern eine zu breit gesetzte VS-Code-Vertrauensgrenze, weil ein kompletter `MarkdownString` als trusted markiert wird, obwohl darin mehr als nur der notwendige Command-Link steckt. - -Beide Themen muessen nicht als Malware-Befund behandelt werden. Beide muessen aber sauber eingegrenzt werden, damit spaetere Erweiterungen nicht unbemerkt eine groessere lokale Dateileseflaeche oder eine groessere Command-/Link-Trust-Surface erzeugen. - ---- - -## 2. Informationsregister (INHALT-Einheiten) -[INTENT: REFERENZ] - -| ID | Typ | Beschreibung | Veraenderung | Status | -|----|-----|-------------|-------------|--------| -| REQ-001 | ANFORDERUNG | Der rekursive Workspace-Scanner darf seinen Scan-Root nicht nur implizit aus `INIT_CWD` oder `process.cwd()` beziehen. | Ja | Offen | -| REQ-002 | ANFORDERUNG | Der Trusted-Markdown-Pfad in der VS Code Extension muss auf den minimal noetigen Trust-Scope reduziert werden. | Ja | Offen | -| CONV-001 | CONSTRAINT | Dieser Handoff behandelt absichtlich nur die beiden `Y1`-Befunde und listet die ausgeschlossenen Risikoklassen nicht erneut auf. | Nein | Aktiv | - ---- - -## 3. Informationseinheiten -[INTENT: SPEZIFIKATION] - -### 3.1 REQ-001: Workspace-Scanner muss einen expliziten und begrenzten Scan-Root haben -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Das Paket `@total-typescript/searcher` ist ein lokales Hilfstool, das Tip-Muster in Quellcode sucht. Der aktuelle Code baut den Scan-Root aus `process.env.INIT_CWD || process.cwd()` und traversiert danach rekursiv `./**/*.{ts,tsx}`. Anschliessend wird jede gefundene Datei mit `readFile(..., 'utf-8')` vollstaendig gelesen und an `getTipsFromFile()` uebergeben. - -Das ist fuer den Zweck des Tools plausibel, aber die Vertrauensgrenze ist zu offen: Der effektive Suchraum haengt vom Aufrufkontext ab und ist nicht als explizite Fachentscheidung im Tool modelliert. Dadurch kann das Tool mehr vom lokalen Workspace lesen als eigentlich beabsichtigt, wenn es aus einem unerwarteten Root gestartet wird. - -**Ist-Zustand:** -- In `tmp/ts-error-translator/packages/searcher/src/index.ts` wird der Root hier implizit gebildet: - - `path.resolve(process.env.INIT_CWD || process.cwd(), './**/*.{ts,tsx}')` -- Die Traversierung erfolgt ueber `fast-glob`. -- Die Ignore-Liste enthaelt nur: - - `**/node_modules/**` - - `**/dist/**` - - `**/DefinitelyTyped/**` -- Jede gefundene Datei wird danach gelesen: - - `const fileContents = await readFile(file, 'utf-8');` -- Es gibt aktuell keinen expliziten Root-Parameter, keine bestaetigte Root-Grenze und keine Sichtbarmachung des final aufgeloesten Scan-Ziels vor dem Read. - -**Soll-Zustand:** -Die Behebung muss das Ergebnis liefern, dass der Scan-Root nicht mehr nur implizit aus Prozesskontext stammt. Der Scanner muss vor dem rekursiven Lesen klar an einen beabsichtigten lokalen Zielbereich gebunden werden. - -Das Minimalziel der Behebung ist: -- der effektive Scan-Root muss explizit bestimmt werden -- der effektive Scan-Root muss fuer den Aufrufer nachvollziehbar sein -- der rekursive Read darf nur ueber diesen bewusst gewaehlten Zielbereich laufen - -Was noch **nicht** festgelegt ist: -- ob die Bindung ueber einen CLI-Parameter, eine interaktive Bestaetigung oder eine andere Root-Festlegung umgesetzt wird - -Was jedoch **verbindlich** ist: -- `INIT_CWD || process.cwd()` alleine reicht als Sicherheitsgrenze nicht aus -- der Scanner darf nicht stillschweigend einen zu grossen lokalen Baum einlesen - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `tmp/ts-error-translator/packages/searcher/src/index.ts` | EnthaeIt die Root-Aufloesung, die rekursive Traversierung und den Datei-Read. | `run()`, `toIgnore`, `fg.default(...)`, `readFile(...)` | -| `tmp/ts-error-translator/packages/searcher/package.json` | Zeigt, dass das Tool ueber den aktuellen Arbeitskontext gestartet wird. | Script `go`, Nutzung von `INIT_CWD` | - -**✅ Positivbeispiel(e):** - -```ts -const scanRoot = resolvedUserProvidedRoot; - -const files = await fg.default(path.join(scanRoot, '**/*.{ts,tsx}'), { - ignore: toIgnore, -}); -``` - -Dieses Muster ist korrekt, weil der rekursive Read an einen bewusst festgelegten Root gebunden ist. - -**❌ Negativbeispiel(e):** - -```ts -const files = await fg.default( - path.resolve(process.env.INIT_CWD || process.cwd(), './**/*.{ts,tsx}'), - { ignore: toIgnore }, -); -``` - -Dieses Muster ist hier falsch, weil der effektive Scan-Root nur aus dem Laufkontext abgeleitet wird und nicht als explizit begrenzte Fachentscheidung sichtbar ist. - ---- - -### 3.2 REQ-002: Trusted Markdown muss auf den minimal noetigen Trust-Scope reduziert werden -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Die VS Code Extension baut Hover-Inhalte als `MarkdownString` und markiert den gesamten String mit `isTrusted = true` und `supportHtml = true`. Im selben String werden sowohl sichtbare Texte (`thisTip.name`, `thisTip.message`, Linktext) als auch ein Command-URI fuer `ts-error-translator.dont-show-again` zusammengefuehrt. - -Der Befund ist nicht, dass aktuell user-kontrollierter Input in diesen Pfad gelangt. Der Befund ist, dass die Vertrauensgrenze zu breit definiert ist. Der Code vertraut einem kompletten generierten Markdown-Block, obwohl nur ein kleiner Teil davon zwingend trust-benoetigt ist. - -**Ist-Zustand:** -- In `tmp/ts-error-translator/apps/vscode/src/extension.ts` wird pro Hover ein `MarkdownString` aufgebaut. -- Der Inhalt setzt sich zusammen aus: - - `thisTip.name` - - `thisTip.message` - - `thisTip.link.url` - - einem Command-Link auf `ts-error-translator.dont-show-again` -- Danach wird derselbe String pauschal als trusted markiert: - - `mdString.isTrusted = true;` - - `mdString.supportHtml = true;` -- Die aktuellen Tip-Daten stammen aus internen, statischen Quellen und nicht aus Benutzereingaben. Deshalb ist der Befund `Y1` und nicht hoeher. - -**Soll-Zustand:** -Die Behebung muss den Trust-Scope auf das minimal noetige Mass reduzieren. - -Verbindliche Zielbedingungen: -- Trusted Markdown darf nur fuer den Teil verwendet werden, der den Trust wirklich braucht -- frei kombinierte oder spaeter erweiterbare Textinhalte duerfen nicht pauschal im selben trusted Block landen -- es darf keine spaetere stillschweigende Oeffnung entstehen, bei der zusaetzliche oder user-nahe Inhalte automatisch denselben trusted Pfad benutzen - -Was noch **nicht** festgelegt ist: -- ob die Behebung ueber getrennte Markdown-Bloecke, eine engere Trust-Whitelisting-Strategie oder eine andere, gleichwertig enge Aufteilung erfolgt - -Was jedoch **verbindlich** ist: -- der gesamte zusammengesetzte Hover-String darf nicht dauerhaft breit trusted bleiben -- der Command-/Link-Trust muss vom restlichen Inhalt so weit wie moeglich entkoppelt werden - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `tmp/ts-error-translator/apps/vscode/src/extension.ts` | EnthaeIt den kompletten Hover-Aufbau und die Trusted-Markdown-Markierung. | `hoverProvider`, `MarkdownString`, `mdString.isTrusted`, `mdString.supportHtml` | -| `tmp/ts-error-translator/packages/parser/src/tipInfo.ts` | Zeigt, dass die aktuellen Inhalte aus statischen, repo-internen Tip-Daten stammen. | `tipInfo`, `name`, `message`, `link.url` | - -**✅ Positivbeispiel(e):** - -```ts -const body = new vscode.MarkdownString(); -body.appendText(thisTip.message ?? ''); - -const trustedActions = new vscode.MarkdownString(markAsLearnedText); -trustedActions.isTrusted = true; -``` - -Dieses Muster ist korrekt, weil der sichtbare Inhalt nicht automatisch denselben Trust-Scope wie der Command-Link erhaelt. - -**❌ Negativbeispiel(e):** - -```ts -const mdString = new vscode.MarkdownString( - `**${thisTip.name}**\n\n${thisTip.message}\n\n${linkText} | ${markAsLearnedText}`, -); -mdString.isTrusted = true; -mdString.supportHtml = true; -``` - -Dieses Muster ist hier falsch, weil der komplette zusammengebaute Hover-Block trusted wird, obwohl nur ein Teil davon den Trust wirklich benoetigt. - ---- - -### 3.3 CONV-001: Dieser Handoff ist absichtlich auf zwei Y1-Themen begrenzt -[INTENT: CONSTRAINT] - -**Typ:** CONSTRAINT - -**Beschreibung:** -Dieser Handoff ist kein Voll-Audit-Neuaufguss. Er ist absichtlich auf die zwei verbleibenden `Y1`-Themen beschraenkt: - -- Workspace-Scanner -- Trusted Markdown - -Die zuvor genannten Risikoklassen `R1`, `O3`, `O2`, `Y3` und `O1` sollen in diesem Handoff nicht erneut ausformuliert werden. - ---- - -## 4. Konventionen & Constraints -[INTENT: CONSTRAINT] - -- Der Handoff gilt auf Workspace-Ebene, aber der fachliche Reparaturfokus liegt in `tmp/ts-error-translator`. -- Es sollen nur die beiden verbleibenden `Y1`-Themen bearbeitet werden. -- Es sollen keine ausgeschlossenen Risikoklassen erneut dokumentiert oder priorisiert werden. -- Der neue Agent muss zwischen Problemkern und verbindlichem Behebungsziel unterscheiden: - - Problemkern = aktuelle zu breite lokale Read-/Discovery-Surface bzw. zu breite Trusted-Markdown-Surface - - Behebungsziel = engerer, expliziter Root beim Scanner bzw. minimaler Trust-Scope beim Hover-Markdown -- Wo die genaue Implementierungsvariante noch nicht festgelegt ist, darf kein neuer Agent stillschweigend neue Architektur erfinden. Er muss die Behebung am verbindlichen Zielzustand ausrichten. - ---- - -## 5. Dateipfad-Index -[INTENT: REFERENZ] - -| # | Dateipfad | Relevanz | Zugehoerige Einheit-IDs | -|---|-----------|----------|----------------------| -| 1 | `tmp/ts-error-translator/packages/searcher/src/index.ts` | Scanner-Root, Traversierung und Datei-Read | REQ-001 | -| 2 | `tmp/ts-error-translator/packages/searcher/package.json` | Aufrufkontext des Scanner-Tools | REQ-001 | -| 3 | `tmp/ts-error-translator/apps/vscode/src/extension.ts` | Hover-Aufbau, Command-Link und Trusted Markdown | REQ-002 | -| 4 | `tmp/ts-error-translator/packages/parser/src/tipInfo.ts` | Statische Quelle der aktuellen Tip-Inhalte | REQ-002 | - ---- - -## 6. Ausfuehrungskontext fuer LLM-Agents -[INTENT: KONTEXT] - -Der nachfolgende Agent muss **nicht** erneut das ganze Security-Audit aufrollen. Er muss nur diese beiden Punkte weiterverfolgen: - -1. `REQ-001` in `tmp/ts-error-translator/packages/searcher/src/index.ts` -2. `REQ-002` in `tmp/ts-error-translator/apps/vscode/src/extension.ts` - -Empfohlene Arbeitsreihenfolge: - -1. zuerst `REQ-001`, weil der Scanner eine direkte Workspace-Read-Surface ist -2. danach `REQ-002`, weil der Trusted-Markdown-Pfad eine VS-Code-Vertrauensgrenze betrifft - -Nicht neu zu klaeren: - -- dass beide Themen aktuell als `Y1` eingeordnet sind -- dass die ausgeschlossenen Risikoklassen in diesem Handoff nicht wieder ausgefuehrt werden sollen - -Noch offen und bei der Umsetzung bewusst zu entscheiden: - -- die konkrete API-/UX-Form fuer die explizite Root-Bindung des Scanners -- die konkrete technische Aufteilung, mit der der Trusted-Markdown-Scope minimal gemacht wird - -Verbindlich ist nur das Ergebnis: - -- der Scanner muss einen expliziten, eng begrenzten lokalen Zielbereich bekommen -- der Hover-Markdown muss nur noch dort trusted sein, wo Trust technisch wirklich noetig ist diff --git a/README.md b/README.md index 551b704..f740595 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,210 @@ code --install-extension CyberT33N.pretty-ts-errors Or simply by searching for `pretty-ts-errors` in the [VSCode marketplace](https://marketplace.visualstudio.com/items?itemName=CyberT33N.pretty-ts-errors) +## Development with Nx + +This workspace is managed with `Nx` and `pnpm`. + +### Prerequisites + +```bash +pnpm install +pnpm exec nx show projects +``` + +Current Nx projects in this workspace: + +- `pretty-ts-errors` +- `@pretty-ts-errors/error-translator` +- `@pretty-ts-errors/vscode-formatter` +- `@pretty-ts-errors/formatter` +- `@pretty-ts-errors/utils` +- `workspace-root` + +### Build the application + +Build the VS Code extension together with its dependent libraries: + +```bash +pnpm exec nx build pretty-ts-errors +``` + +Build the production bundle: + +```bash +pnpm exec nx build pretty-ts-errors --configuration=production +``` + +Package the production build as a `.vsix`: + +```bash +pnpm exec nx package pretty-ts-errors +``` + +### Run the application in watch mode + +```bash +pnpm exec nx dev pretty-ts-errors +``` + +Preview the standalone webview during development: + +```bash +pnpm exec nx webview pretty-ts-errors +``` + +### Typecheck, lint, and test the application + +```bash +pnpm exec nx typecheck pretty-ts-errors +pnpm exec nx lint pretty-ts-errors +pnpm exec nx test pretty-ts-errors +``` + +Compile the extension test suite only: + +```bash +pnpm exec nx run pretty-ts-errors:compile-tests +``` + +Watch the extension test TypeScript compilation: + +```bash +pnpm exec nx run pretty-ts-errors:watch-tests +``` + +### Error translator package + +Validate the checked-in TypeScript diagnostic contract data: + +```bash +pnpm exec nx run @pretty-ts-errors/error-translator:validate-contract-data +``` + +Refresh the full translator contract data after a deliberate TypeScript upgrade: + +```bash +pnpm exec nx run @pretty-ts-errors/error-translator:refresh-contract-data +``` + +Refresh only the diagnostic matcher database: + +```bash +pnpm exec nx run @pretty-ts-errors/error-translator:refresh-diagnostics-db +``` + +Rebuild only the bundled translation data: + +```bash +pnpm exec nx run @pretty-ts-errors/error-translator:bundle-data +``` + +Build, lint, and test the translator package: + +```bash +pnpm exec nx build @pretty-ts-errors/error-translator +pnpm exec nx lint @pretty-ts-errors/error-translator +pnpm exec nx test @pretty-ts-errors/error-translator +``` + +### Shared packages + +Build the shared packages individually: + +```bash +pnpm exec nx build @pretty-ts-errors/utils +pnpm exec nx build @pretty-ts-errors/formatter +pnpm exec nx build @pretty-ts-errors/vscode-formatter +pnpm exec nx build @pretty-ts-errors/error-translator +``` + +Run the package watch builds: + +```bash +pnpm exec nx dev @pretty-ts-errors/utils +pnpm exec nx dev @pretty-ts-errors/formatter +pnpm exec nx dev @pretty-ts-errors/vscode-formatter +``` + +Lint the shared packages: + +```bash +pnpm exec nx lint @pretty-ts-errors/utils +pnpm exec nx lint @pretty-ts-errors/formatter +pnpm exec nx lint @pretty-ts-errors/vscode-formatter +pnpm exec nx lint @pretty-ts-errors/error-translator +``` + +Run the library test suites: + +```bash +pnpm exec nx test @pretty-ts-errors/formatter +pnpm exec nx test @pretty-ts-errors/vscode-formatter +pnpm exec nx test @pretty-ts-errors/error-translator +``` + +Watch the library tests: + +```bash +pnpm exec nx run "@pretty-ts-errors/formatter:test:watch" +pnpm exec nx run "@pretty-ts-errors/vscode-formatter:test:watch" +``` + +Run the library coverage targets: + +```bash +pnpm exec nx run "@pretty-ts-errors/formatter:test:coverage" +pnpm exec nx run "@pretty-ts-errors/vscode-formatter:test:coverage" +``` + +Publish the public libraries: + +```bash +pnpm exec nx publish @pretty-ts-errors/formatter +pnpm exec nx publish @pretty-ts-errors/vscode-formatter +``` + +### Workspace commands + +Format the whole workspace: + +```bash +pnpm exec nx run workspace-root:format +``` + +Check formatting without writing changes: + +```bash +pnpm exec nx run "workspace-root:format:check" +``` + +Synchronize Nx project references: + +```bash +pnpm exec nx run workspace-root:sync +pnpm exec nx run "workspace-root:sync:check" +``` + +### Useful run-many examples + +Build all packages and the application in one command: + +```bash +pnpm exec nx run-many -t build --projects=@pretty-ts-errors/utils,@pretty-ts-errors/formatter,@pretty-ts-errors/error-translator,@pretty-ts-errors/vscode-formatter,pretty-ts-errors +``` + +Run all currently defined test targets in one command: + +```bash +pnpm exec nx run-many -t test --projects=@pretty-ts-errors/formatter,@pretty-ts-errors/error-translator,@pretty-ts-errors/vscode-formatter,pretty-ts-errors +``` + +Run all current lint targets in one command: + +```bash +pnpm exec nx run-many -t lint --projects=@pretty-ts-errors/utils,@pretty-ts-errors/formatter,@pretty-ts-errors/error-translator,@pretty-ts-errors/vscode-formatter,pretty-ts-errors +``` + #### How to hide the original errors and make the types copyable Follow the instructions [there](./docs/hide-original-errors.md). unfortunately, this hack is required because of VSCode limitations. From 760df4ad894f695b2486e667c4e6d9267ea9ca4e Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Wed, 24 Jun 2026 18:02:46 +0200 Subject: [PATCH 05/13] backup --- apps/vscode-extension/package.json | 2 +- nx.json | 3 ++- pnpm-lock.yaml | 20 ++++++++++---------- pnpm-workspace.yaml | 2 +- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json index 8b85149..382048c 100644 --- a/apps/vscode-extension/package.json +++ b/apps/vscode-extension/package.json @@ -13,7 +13,7 @@ }, "homepage": "https://github.com/CyberT33N/pretty-ts-errors", "engines": { - "vscode": "^1.120.0" + "vscode": "^1.105.1" }, "extensionKind": [ "ui", diff --git a/nx.json b/nx.json index 380ef99..f7d8021 100644 --- a/nx.json +++ b/nx.json @@ -62,5 +62,6 @@ "dev": { "cache": false } - } + }, + "analytics": false } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c1ebc3..7916bf0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -224,8 +224,8 @@ catalogs: specifier: 25.9.3 version: 25.9.3 '@types/vscode': - specifier: 1.120.0 - version: 1.120.0 + specifier: 1.105.0 + version: 1.105.0 '@types/vscode-webview': specifier: 1.57.5 version: 1.57.5 @@ -350,7 +350,7 @@ importers: version: 10.0.0 vscode-shiki-bridge: specifier: 'catalog:' - version: 0.5.2(@types/vscode@1.120.0)(shiki@3.13.0) + version: 0.5.2(@types/vscode@1.105.0)(shiki@3.13.0) devDependencies: '@shikijs/types': specifier: 'catalog:' @@ -363,7 +363,7 @@ importers: version: 25.9.3 '@types/vscode': specifier: 'catalog:' - version: 1.120.0 + version: 1.105.0 '@types/vscode-webview': specifier: 'catalog:' version: 1.57.5 @@ -1630,8 +1630,8 @@ packages: '@types/vscode-webview@1.57.5': resolution: {integrity: sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==, tarball: https://registry.npmjs.org/@types/vscode-webview/-/vscode-webview-1.57.5.tgz} - '@types/vscode@1.120.0': - resolution: {integrity: sha512-feaT4Rst+FkTch5zz/ZbNCxoIvo55YU80Be2kiL7OJcod4+CUYf2lUBPdIJzozNnSEMq1VRTGrWEcCGFB3fBmA==, tarball: https://registry.npmjs.org/@types/vscode/-/vscode-1.120.0.tgz} + '@types/vscode@1.105.0': + resolution: {integrity: sha512-Lotk3CTFlGZN8ray4VxJE7axIyLZZETQJVWi/lYoUVQuqfRxlQhVOfoejsD2V3dVXPSbS15ov5ZyowMAzgUqcw==, tarball: https://registry.npmjs.org/@types/vscode/-/vscode-1.105.0.tgz} '@typescript-eslint/eslint-plugin@8.61.1': resolution: {integrity: sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==, tarball: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.1.tgz} @@ -5214,7 +5214,7 @@ snapshots: '@types/vscode-webview@1.57.5': {} - '@types/vscode@1.120.0': {} + '@types/vscode@1.105.0': {} '@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': dependencies: @@ -7541,9 +7541,9 @@ snapshots: vscode-languageserver-types@3.18.0: {} - vscode-shiki-bridge@0.5.2(@types/vscode@1.120.0)(shiki@3.13.0): + vscode-shiki-bridge@0.5.2(@types/vscode@1.105.0)(shiki@3.13.0): dependencies: - '@types/vscode': 1.120.0 + '@types/vscode': 1.105.0 fast-plist: 0.1.3 jsonc-parser: 3.3.1 shiki: 3.13.0 @@ -7645,7 +7645,7 @@ time: '@types/mocha@10.0.10': '2024-11-20T18:38:25.531Z' '@types/node@25.9.3': '2026-06-10T22:15:10.607Z' '@types/vscode-webview@1.57.5': '2024-01-30T22:04:14.566Z' - '@types/vscode@1.120.0': '2026-05-13T23:47:36.171Z' + '@types/vscode@1.105.0': '2025-10-09T18:02:42.858Z' '@vitest/coverage-v8@4.1.2': '2026-03-26T14:37:07.834Z' '@vscode/codicons@0.0.41': '2025-10-08T14:41:29.534Z' '@vscode/test-electron@3.0.0': '2026-06-08T18:19:54.566Z' diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 1952012..bf10200 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -435,7 +435,7 @@ catalog: '@shikijs/types': 3.13.0 '@types/mocha': 10.0.10 '@types/node': 25.9.3 - '@types/vscode': 1.120.0 + '@types/vscode': 1.105.0 '@types/vscode-webview': 1.57.5 '@vitest/coverage-v8': 4.1.2 '@vscode/codicons': 0.0.41 From cbb323ffc3d5072434b2ca039ed1b6544ec191d6 Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Wed, 24 Jun 2026 18:26:37 +0200 Subject: [PATCH 06/13] backup --- apps/vscode-extension/package.json | 2 +- apps/vscode-extension/project.json | 11 +- apps/vscode-extension/src/diagnostics.ts | 140 +++++++++--------- .../src/provider/hoverProvider.ts | 52 ++++++- .../src/supportedDiagnosticSources.ts | 7 + .../src/test/suite/extension.test.ts | 82 +++++++++- apps/vscode-extension/src/test/suite/index.ts | 18 ++- 7 files changed, 227 insertions(+), 85 deletions(-) create mode 100644 apps/vscode-extension/src/supportedDiagnosticSources.ts diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json index 382048c..a249240 100644 --- a/apps/vscode-extension/package.json +++ b/apps/vscode-extension/package.json @@ -4,7 +4,7 @@ "type": "module", "publisher": "CyberT33N", "description": "Make TypeScript errors prettier and more human-readable in VSCode", - "version": "1.0.0", + "version": "1.0.1", "icon": "assets/icon.png", "repository": { "type": "git", diff --git a/apps/vscode-extension/project.json b/apps/vscode-extension/project.json index 6d403cf..a92d00f 100644 --- a/apps/vscode-extension/project.json +++ b/apps/vscode-extension/project.json @@ -23,7 +23,10 @@ "skipTypeCheck": false, "thirdParty": true, "esbuildOptions": { - "inject": ["apps/vscode-extension/scripts/process-shim.js"] + "inject": ["apps/vscode-extension/scripts/process-shim.js"], + "banner": { + "js": "import { createRequire as __prettyTsErrorsCreateRequire } from 'node:module'; const require = __prettyTsErrorsCreateRequire(import.meta.url);" + } } }, "configurations": { @@ -32,6 +35,9 @@ "minify": true, "esbuildOptions": { "inject": ["apps/vscode-extension/scripts/process-shim.js"], + "banner": { + "js": "import { createRequire as __prettyTsErrorsCreateRequire } from 'node:module'; const require = __prettyTsErrorsCreateRequire(import.meta.url);" + }, "define": { "process.env.NODE_ENV": "\"production\"" } @@ -60,6 +66,9 @@ "thirdParty": true, "esbuildOptions": { "inject": ["apps/vscode-extension/scripts/process-shim.js"], + "banner": { + "js": "import { createRequire as __prettyTsErrorsCreateRequire } from 'node:module'; const require = __prettyTsErrorsCreateRequire(import.meta.url);" + }, "define": { "process.env.NODE_ENV": "\"development\"" } diff --git a/apps/vscode-extension/src/diagnostics.ts b/apps/vscode-extension/src/diagnostics.ts index c4d39cf..8b36ed3 100644 --- a/apps/vscode-extension/src/diagnostics.ts +++ b/apps/vscode-extension/src/diagnostics.ts @@ -3,10 +3,11 @@ import { ExtensionContext, languages, MarkdownString, - window, Uri, type Diagnostic, } from "vscode"; +import { SUPPORTED_DIAGNOSTIC_SOURCES } from "./supportedDiagnosticSources"; +import { SUPPORTED_LANGUAGE_IDS } from "./supportedLanguageIds"; import { hoverProvider } from "./provider/hoverProvider"; import { formattedDiagnosticsStore, @@ -16,59 +17,79 @@ import { logger } from "./logger"; import { toLspDiagnostic } from "./lspDiagnostic"; import { createHoverContents } from "./hoverContent"; -/** - * The list of diagnostic sources that pretty-ts-errors supports - */ -const supportedDiagnosticSources = [ - "ts", - "ts-plugin", - "deno-ts", - "js", - "glint", -]; - export function registerOnDidChangeDiagnostics(context: ExtensionContext) { + logger.debug("registering diagnostic change listener"); + void syncCurrentDiagnostics(); + context.subscriptions.push( languages.onDidChangeDiagnostics(async (e) => { await logger.measure("onDidChangeDiagnostics", async () => { for (const uri of e.uris) { - await logger.measure( - `diagnostics for: ${uri.toString(true)}`, - async () => { - const diagnostics = languages.getDiagnostics(uri); - const supportedDiagnostics = diagnostics.filter( - (diagnostic) => - diagnostic.source && - has(supportedDiagnosticSources, diagnostic.source) - ); - - const items: FormattedDiagnostic[] = await Promise.all( - supportedDiagnostics.map((diagnostic) => - getFormattedDiagnostic(diagnostic) - ) - ); - - if (items.length === 0) { - logger.trace( - `no diagnostics for ${uri.toString(true)}, removing from store` - ); - formattedDiagnosticsStore.delete(uri.fsPath); - } else { - logger.trace( - `storing ${items.length} formatted diagnostics for ${uri.toString(true)}` - ); - formattedDiagnosticsStore.set(uri.fsPath, items); - } - - if (items.length > 0) { - ensureHoverProviderIsRegistered(uri, context); - } - } - ); + await updateDiagnosticsForUri(uri); } }); }) ); + + registerHoverProviders(context); +} + +function registerHoverProviders(context: ExtensionContext) { + logger.debug( + `registering hover providers for ${SUPPORTED_LANGUAGE_IDS.length} supported language ids` + ); + + for (const languageId of SUPPORTED_LANGUAGE_IDS) { + logger.trace(`registering hover provider for language id: ${languageId}`); + context.subscriptions.push( + languages.registerHoverProvider( + { + language: languageId, + }, + hoverProvider + ) + ); + } +} + +async function syncCurrentDiagnostics() { + const diagnosticsByUri = languages.getDiagnostics(); + logger.debug( + `syncing current diagnostics for ${diagnosticsByUri.length} known document(s)` + ); + + for (const [uri] of diagnosticsByUri) { + await updateDiagnosticsForUri(uri); + } +} + +async function updateDiagnosticsForUri(uri: Uri) { + await logger.measure(`diagnostics for: ${uri.toString(true)}`, async () => { + const diagnostics = languages.getDiagnostics(uri); + const supportedDiagnostics = diagnostics.filter( + (diagnostic) => + diagnostic.source && + has(SUPPORTED_DIAGNOSTIC_SOURCES, diagnostic.source) + ); + + logger.trace( + `found ${diagnostics.length} total diagnostics and ${supportedDiagnostics.length} supported diagnostics for ${uri.toString(true)}` + ); + + const items: FormattedDiagnostic[] = await Promise.all( + supportedDiagnostics.map((diagnostic) => getFormattedDiagnostic(diagnostic)) + ); + + if (items.length === 0) { + logger.trace(`no diagnostics for ${uri.toString(true)}, removing from store`); + formattedDiagnosticsStore.delete(uri.fsPath); + } else { + logger.trace( + `storing ${items.length} formatted diagnostics for ${uri.toString(true)}` + ); + formattedDiagnosticsStore.set(uri.fsPath, items); + } + }); } /** @@ -104,12 +125,15 @@ async function getFormattedDiagnostic( let formattedMessages = cache.get(cacheKey); if (formattedMessages === undefined) { + logger.trace(`cache miss for diagnostic ${cacheKey}`); formattedMessages = createHoverContents(lspDiagnostic); if (cache.size > CACHE_SIZE_MAX) { const firstCacheKey = cache.keys().next().value!; cache.delete(firstCacheKey); } cache.set(cacheKey, formattedMessages); + } else { + logger.trace(`cache hit for diagnostic ${cacheKey}`); } const contents = formattedMessages; @@ -121,29 +145,3 @@ async function getFormattedDiagnostic( }; } -/** - * A set to prevent registering duplicate hover providers. - */ -const registeredLanguages = new Set(); - -/** - * Ensure a hover provider is registered for any visible editors where pretty-ts-errors has a formatted diagnostic - */ -function ensureHoverProviderIsRegistered(uri: Uri, context: ExtensionContext) { - const editor = window.visibleTextEditors.find( - (editor) => editor.document.uri.toString() === uri.toString() - ); - const languageId = editor?.document.languageId; - if (languageId && !registeredLanguages.has(languageId)) { - logger.debug(`registering hover provider for language id: ${languageId}`); - registeredLanguages.add(languageId); - context.subscriptions.push( - languages.registerHoverProvider( - { - language: languageId, - }, - hoverProvider - ) - ); - } -} diff --git a/apps/vscode-extension/src/provider/hoverProvider.ts b/apps/vscode-extension/src/provider/hoverProvider.ts index ffb19d6..2e2d0bf 100644 --- a/apps/vscode-extension/src/provider/hoverProvider.ts +++ b/apps/vscode-extension/src/provider/hoverProvider.ts @@ -1,18 +1,29 @@ -import { HoverProvider } from "vscode"; +import { has } from "@pretty-ts-errors/utils"; +import { HoverProvider, languages, type TextDocument, type Position } from "vscode"; import { formattedDiagnosticsStore } from "../formattedDiagnosticsStore"; +import { createHoverContents } from "../hoverContent"; +import { logger } from "../logger"; +import { toLspDiagnostic } from "../lspDiagnostic"; +import { SUPPORTED_DIAGNOSTIC_SOURCES } from "../supportedDiagnosticSources"; export const hoverProvider: HoverProvider = { provideHover(document, position, _token) { const items = formattedDiagnosticsStore.get(document.uri.fsPath); if (!items) { - return null; + logger.trace( + `hover store miss for ${document.uri.toString(true)}, falling back to live diagnostics` + ); + return provideLiveDiagnosticHover(document, position); } const itemInRange = items.filter((item) => item.range.contains(position)); if (itemInRange.length === 0) { - return null; + logger.trace( + `hover store had no item at ${position.line}:${position.character} for ${document.uri.toString(true)}, falling back to live diagnostics` + ); + return provideLiveDiagnosticHover(document, position); } const first = itemInRange[0]; @@ -25,3 +36,38 @@ export const hoverProvider: HoverProvider = { }; }, }; + +function provideLiveDiagnosticHover(document: TextDocument, position: Position) { + const supportedDiagnostics = languages + .getDiagnostics(document.uri) + .filter((diagnostic) => { + return ( + diagnostic.range.contains(position) && + diagnostic.source !== undefined && + has(SUPPORTED_DIAGNOSTIC_SOURCES, diagnostic.source) + ); + }); + + if (supportedDiagnostics.length === 0) { + logger.trace( + `no supported live diagnostics at ${position.line}:${position.character} for ${document.uri.toString(true)}` + ); + return null; + } + + logger.trace( + `building live hover from ${supportedDiagnostics.length} supported diagnostics at ${position.line}:${position.character} for ${document.uri.toString(true)}` + ); + + const firstDiagnostic = supportedDiagnostics[0]; + if (firstDiagnostic === undefined) { + return null; + } + + return { + range: firstDiagnostic.range, + contents: supportedDiagnostics.flatMap((diagnostic) => { + return createHoverContents(toLspDiagnostic(diagnostic)); + }), + }; +} diff --git a/apps/vscode-extension/src/supportedDiagnosticSources.ts b/apps/vscode-extension/src/supportedDiagnosticSources.ts new file mode 100644 index 0000000..6c4b85e --- /dev/null +++ b/apps/vscode-extension/src/supportedDiagnosticSources.ts @@ -0,0 +1,7 @@ +export const SUPPORTED_DIAGNOSTIC_SOURCES = [ + "ts", + "ts-plugin", + "deno-ts", + "js", + "glint", +] as const; diff --git a/apps/vscode-extension/src/test/suite/extension.test.ts b/apps/vscode-extension/src/test/suite/extension.test.ts index 2c63ed3..da92622 100644 --- a/apps/vscode-extension/src/test/suite/extension.test.ts +++ b/apps/vscode-extension/src/test/suite/extension.test.ts @@ -1,11 +1,79 @@ -// You can import and use all API from the 'vscode' module -// as well as import your extension to test it +import assert from "node:assert/strict"; +import path from "node:path"; import * as vscode from "vscode"; suite("Extension Test Suite", () => { - /** - * The tests moved to the formatter package, I'm leaving - * this here for future tests to the VSCode extension - */ - vscode.window.showInformationMessage("Start all tests."); + test("shows the custom hover for supported JS diagnostics", async function () { + this.timeout(30_000); + + const extension = vscode.extensions.all.find((candidate) => { + return candidate.packageJSON.name === "pretty-ts-errors"; + }); + assert.ok(extension, "pretty-ts-errors extension should be discoverable"); + + await extension.activate(); + + const exampleUri = vscode.Uri.file( + path.resolve(extension.extensionPath, "../../examples/errors.js") + ); + const document = await vscode.workspace.openTextDocument(exampleUri); + await vscode.window.showTextDocument(document); + + const diagnostic = await waitForDiagnostic(exampleUri, 2741); + const hovers = + await vscode.commands.executeCommand( + "vscode.executeHoverProvider", + exampleUri, + diagnostic.range.start + ); + + assert.ok(hovers && hovers.length > 0, "expected hover providers to return content"); + + const hoverText = hovers + .flatMap((hover) => hover.contents) + .map((content) => { + if (typeof content === "string") { + return content; + } + + if (content instanceof vscode.MarkdownString) { + return content.value; + } + + return "value" in content ? content.value : ""; + }) + .join("\n"); + + assert.match(hoverText, /Show in Sidebar/u); + assert.match(hoverText, /Local explanation/u); + assert.match(hoverText, /TS2741/u); + }); }); + +async function waitForDiagnostic( + uri: vscode.Uri, + code: number, + timeoutMs = 15_000 +): Promise { + const startedAt = Date.now(); + + for (;;) { + const diagnostic = vscode.languages + .getDiagnostics(uri) + .find((item) => item.code === code); + + if (diagnostic !== undefined) { + return diagnostic; + } + + if (Date.now() - startedAt > timeoutMs) { + throw new Error(`Timed out waiting for TS${code} diagnostics in ${uri.fsPath}`); + } + + await delay(100); + } +} + +function delay(ms: number): Promise { + return new Promise((resolve) => setTimeout(resolve, ms)); +} diff --git a/apps/vscode-extension/src/test/suite/index.ts b/apps/vscode-extension/src/test/suite/index.ts index c388207..0468e43 100644 --- a/apps/vscode-extension/src/test/suite/index.ts +++ b/apps/vscode-extension/src/test/suite/index.ts @@ -6,16 +6,30 @@ export function run( testsRoot: string, cb: (error: unknown | null, failures?: number) => void ): void { + const resolvedTestsRoot = testsRoot.endsWith(".js") + ? path.dirname(testsRoot) + : testsRoot; + // Create the mocha test const mocha = new Mocha({ ui: "tdd", color: true, }); - glob("**/**.test.js", { cwd: testsRoot }) + glob("**/*.test.js", { cwd: resolvedTestsRoot }) .then((files) => { + if (files.length === 0) { + throw new Error( + `No compiled extension test files were found in ${resolvedTestsRoot}.` + ); + } + + console.log( + `Discovered ${files.length} extension test file(s) in ${resolvedTestsRoot}: ${files.join(", ")}` + ); + // Add files to the test suite - files.forEach((f) => mocha.addFile(path.resolve(testsRoot, f))); + files.forEach((f) => mocha.addFile(path.resolve(resolvedTestsRoot, f))); try { // Run the mocha test From f03e5bfd11b9b019cf74954fbf973e9b28c5d6eb Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Wed, 24 Jun 2026 18:50:24 +0200 Subject: [PATCH 07/13] backup --- apps/vscode-extension/package.json | 2 +- apps/vscode-extension/src/diagnostics.ts | 9 ++- .../src/formattedDiagnosticsStore.ts | 1 + apps/vscode-extension/src/hoverContent.ts | 63 ++++++++++++++++--- .../src/provider/hoverProvider.ts | 14 +++-- .../src/provider/selectedTextHoverProvider.ts | 12 +++- .../src/provider/sidebarViewModel.ts | 2 + .../src/test/suite/extension.test.ts | 3 + apps/vscode-extension/webview/index.js | 60 +++++++++++++----- 9 files changed, 132 insertions(+), 34 deletions(-) diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json index a249240..c82edb9 100644 --- a/apps/vscode-extension/package.json +++ b/apps/vscode-extension/package.json @@ -4,7 +4,7 @@ "type": "module", "publisher": "CyberT33N", "description": "Make TypeScript errors prettier and more human-readable in VSCode", - "version": "1.0.1", + "version": "1.0.2", "icon": "assets/icon.png", "repository": { "type": "git", diff --git a/apps/vscode-extension/src/diagnostics.ts b/apps/vscode-extension/src/diagnostics.ts index 8b36ed3..f32288d 100644 --- a/apps/vscode-extension/src/diagnostics.ts +++ b/apps/vscode-extension/src/diagnostics.ts @@ -15,7 +15,10 @@ import { } from "./formattedDiagnosticsStore"; import { logger } from "./logger"; import { toLspDiagnostic } from "./lspDiagnostic"; -import { createHoverContents } from "./hoverContent"; +import { + buildPrettyDiagnosticMessageMarkdown, + createHoverContents, +} from "./hoverContent"; export function registerOnDidChangeDiagnostics(context: ExtensionContext) { logger.debug("registering diagnostic change listener"); @@ -124,9 +127,10 @@ async function getFormattedDiagnostic( }); let formattedMessages = cache.get(cacheKey); + const bodyMarkdown = await buildPrettyDiagnosticMessageMarkdown(diagnostic.message); if (formattedMessages === undefined) { logger.trace(`cache miss for diagnostic ${cacheKey}`); - formattedMessages = createHoverContents(lspDiagnostic); + formattedMessages = await createHoverContents(lspDiagnostic, { bodyMarkdown }); if (cache.size > CACHE_SIZE_MAX) { const firstCacheKey = cache.keys().next().value!; cache.delete(firstCacheKey); @@ -139,6 +143,7 @@ async function getFormattedDiagnostic( const contents = formattedMessages; return { + bodyMarkdown, range: diagnostic.range, contents, lspDiagnostic, diff --git a/apps/vscode-extension/src/formattedDiagnosticsStore.ts b/apps/vscode-extension/src/formattedDiagnosticsStore.ts index 02e0f97..9db74d4 100644 --- a/apps/vscode-extension/src/formattedDiagnosticsStore.ts +++ b/apps/vscode-extension/src/formattedDiagnosticsStore.ts @@ -4,6 +4,7 @@ import type { PrettyTsLspDiagnostic } from "./lspDiagnostic"; type StoreKey = Uri["fsPath"]; export interface FormattedDiagnostic { + bodyMarkdown: string; range: Range; contents: MarkdownString[]; /** Original LSP diagnostic for on-demand sidebar formatting */ diff --git a/apps/vscode-extension/src/hoverContent.ts b/apps/vscode-extension/src/hoverContent.ts index 2dfff12..18a44f0 100644 --- a/apps/vscode-extension/src/hoverContent.ts +++ b/apps/vscode-extension/src/hoverContent.ts @@ -1,3 +1,7 @@ +import { + createErrorMessagePrettifier, + type CodeBlockFn, +} from "@pretty-ts-errors/formatter"; import { translateDiagnosticMessage } from "@pretty-ts-errors/error-translator"; import { MarkdownString } from "vscode"; import { enabledCommands } from "./commands/enabledCommands"; @@ -48,10 +52,49 @@ function buildRevealLink(diagnostic: PrettyTsLspDiagnostic): string | null { )})`; } -function createBodyMarkdown( +const markdownCodeBlock: CodeBlockFn = (code, language, multiLine) => { + const trimmedCode = code.trim(); + if (multiLine) { + return `\n${createFencedCodeBlock(trimmedCode, language)}\n`; + } + + return createInlineCodeBlock(trimmedCode); +}; + +const prettifyDiagnosticBody = createErrorMessagePrettifier(markdownCodeBlock); + +function createInlineCodeBlock(code: string): string { + const fence = code.includes("``") ? "```" : code.includes("`") ? "``" : "`"; + return `${fence}${code}${fence}`; +} + +function createFencedCodeBlock(code: string, language?: string): string { + const fence = code.includes("```") ? "````" : "```"; + const infoString = language === undefined ? "" : language; + return `${fence}${infoString}\n${code}\n${fence}`; +} + +function normalizeFormatterOutput(markdown: string): string { + return markdown.replace(/
    ((?:
  • [\s\S]*?<\/li>)+)<\/ul>/gu, (_match, items) => { + const listItems = Array.from( + items.matchAll(/
  • ([\s\S]*?)<\/li>/gu), + ([, content]) => `- ${content}`, + ); + return `\n${listItems.join("\n")}\n`; + }); +} + +export async function buildPrettyDiagnosticMessageMarkdown( + message: string, +): Promise { + return normalizeFormatterOutput(await prettifyDiagnosticBody(message)); +} + +async function createBodyMarkdown( diagnostic: PrettyTsLspDiagnostic, + bodyMarkdown?: string, debugHeader?: string, -): MarkdownString { +): Promise { const markdown = new MarkdownString(); if (debugHeader !== undefined) { @@ -59,7 +102,9 @@ function createBodyMarkdown( } markdown.appendMarkdown(`**Error${codeLabel(diagnostic.code)}**\n\n`); - markdown.appendCodeblock(diagnostic.message, "txt"); + markdown.appendMarkdown( + bodyMarkdown ?? (await buildPrettyDiagnosticMessageMarkdown(diagnostic.message)), + ); const translations = translateDiagnosticMessage(diagnostic.message); if (translations.length > 0) { @@ -108,12 +153,16 @@ function createActionsMarkdown(diagnostic: PrettyTsLspDiagnostic): MarkdownStrin return markdown; } -export function createHoverContents( +export async function createHoverContents( diagnostic: PrettyTsLspDiagnostic, - options?: { debugHeader?: string }, -): MarkdownString[] { + options?: { bodyMarkdown?: string; debugHeader?: string }, +): Promise { return [ - createBodyMarkdown(diagnostic, options?.debugHeader), + await createBodyMarkdown( + diagnostic, + options?.bodyMarkdown, + options?.debugHeader, + ), createActionsMarkdown(diagnostic), ]; } diff --git a/apps/vscode-extension/src/provider/hoverProvider.ts b/apps/vscode-extension/src/provider/hoverProvider.ts index 2e2d0bf..23465db 100644 --- a/apps/vscode-extension/src/provider/hoverProvider.ts +++ b/apps/vscode-extension/src/provider/hoverProvider.ts @@ -7,7 +7,7 @@ import { toLspDiagnostic } from "../lspDiagnostic"; import { SUPPORTED_DIAGNOSTIC_SOURCES } from "../supportedDiagnosticSources"; export const hoverProvider: HoverProvider = { - provideHover(document, position, _token) { + async provideHover(document, position, _token) { const items = formattedDiagnosticsStore.get(document.uri.fsPath); if (!items) { @@ -37,7 +37,7 @@ export const hoverProvider: HoverProvider = { }, }; -function provideLiveDiagnosticHover(document: TextDocument, position: Position) { +async function provideLiveDiagnosticHover(document: TextDocument, position: Position) { const supportedDiagnostics = languages .getDiagnostics(document.uri) .filter((diagnostic) => { @@ -64,10 +64,14 @@ function provideLiveDiagnosticHover(document: TextDocument, position: Position) return null; } - return { - range: firstDiagnostic.range, - contents: supportedDiagnostics.flatMap((diagnostic) => { + const contents = await Promise.all( + supportedDiagnostics.map((diagnostic) => { return createHoverContents(toLspDiagnostic(diagnostic)); }), + ); + + return { + range: firstDiagnostic.range, + contents: contents.flat(), }; } diff --git a/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts b/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts index e10611e..b11b254 100644 --- a/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts +++ b/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts @@ -8,7 +8,10 @@ import { } from "vscode"; import { formattedDiagnosticsStore } from "../formattedDiagnosticsStore"; import { toLspDiagnostic } from "../lspDiagnostic"; -import { createHoverContents } from "../hoverContent"; +import { + buildPrettyDiagnosticMessageMarkdown, + createHoverContents, +} from "../hoverContent"; /** * Register an hover provider in debug only. @@ -49,12 +52,17 @@ export function registerSelectedTextHoverProvider(context: ExtensionContext) { debugDiagnostic.code = 1337; const lspDiagnostic = toLspDiagnostic(debugDiagnostic); - const contents = createHoverContents(lspDiagnostic, { + const bodyMarkdown = await buildPrettyDiagnosticMessageMarkdown( + lspDiagnostic.message, + ); + const contents = await createHoverContents(lspDiagnostic, { + bodyMarkdown, debugHeader: debugHoverHeader, }); formattedDiagnosticsStore.set(document.uri.fsPath, [ { + bodyMarkdown, range, contents, lspDiagnostic, diff --git a/apps/vscode-extension/src/provider/sidebarViewModel.ts b/apps/vscode-extension/src/provider/sidebarViewModel.ts index aaf43a9..5b13942 100644 --- a/apps/vscode-extension/src/provider/sidebarViewModel.ts +++ b/apps/vscode-extension/src/provider/sidebarViewModel.ts @@ -36,6 +36,7 @@ export interface SidebarTranslationModel { } export interface SidebarDiagnosticModel { + bodyMarkdown: string; code: number | null; message: string; actions: SidebarActionModel[]; @@ -122,6 +123,7 @@ export function createSidebarDiagnosticModel( } const model: SidebarDiagnosticModel = { + bodyMarkdown: diagnostic.bodyMarkdown, code, message: diagnostic.lspDiagnostic.message, actions, diff --git a/apps/vscode-extension/src/test/suite/extension.test.ts b/apps/vscode-extension/src/test/suite/extension.test.ts index da92622..a8b4cea 100644 --- a/apps/vscode-extension/src/test/suite/extension.test.ts +++ b/apps/vscode-extension/src/test/suite/extension.test.ts @@ -47,6 +47,9 @@ suite("Extension Test Suite", () => { assert.match(hoverText, /Show in Sidebar/u); assert.match(hoverText, /Local explanation/u); assert.match(hoverText, /TS2741/u); + assert.match(hoverText, /```/u); + assert.match(hoverText, /street: string/u); + assert.match(hoverText, /country: string/u); }); }); diff --git a/apps/vscode-extension/webview/index.js b/apps/vscode-extension/webview/index.js index 5fd56b1..0a531ce 100644 --- a/apps/vscode-extension/webview/index.js +++ b/apps/vscode-extension/webview/index.js @@ -26,6 +26,7 @@ * }} SidebarTranslationModel * * @typedef {{ + * bodyMarkdown: string; * code: number | null; * message: string; * actions: SidebarActionModel[]; @@ -186,23 +187,10 @@ function createDiagnosticCard(diagnostic) { card.appendChild(note); } - const codeContainer = document.createElement("div"); - codeContainer.className = "code-container"; - - const copyButton = document.createElement("button"); - copyButton.className = "copy-button"; - copyButton.type = "button"; - copyButton.title = "Copy error message"; - copyButton.dataset.copyContent = diagnostic.message; - copyButton.appendChild(createCodicon("codicon-copy")); - codeContainer.appendChild(copyButton); - - const pre = document.createElement("pre"); - const code = document.createElement("code"); - code.textContent = diagnostic.message; - pre.appendChild(code); - codeContainer.appendChild(pre); - card.appendChild(codeContainer); + const messageSection = document.createElement("section"); + messageSection.className = "diagnostic-message-section"; + appendMarkdownBlocks(messageSection, diagnostic.bodyMarkdown); + card.appendChild(messageSection); if (diagnostic.translations.length > 0) { card.appendChild( @@ -246,6 +234,44 @@ function createTranslationsSection(translations, originalMessage) { return section; } +/** + * @param {HTMLElement} container + * @param {string} markdown + */ +function appendMarkdownBlocks(container, markdown) { + const tokens = markdown + .split(/((?:`{3,})[^\n]*\n[\s\S]*?\n(?:`{3,}))/gu) + .filter(Boolean); + + tokens.forEach((token) => { + const fenceMatch = /^(?`{3,})(?[^\n]*)\n(?[\s\S]*?)\n\k$/u.exec( + token, + ); + if (fenceMatch?.groups) { + const codeContainer = document.createElement("div"); + codeContainer.className = "code-container"; + + const copyButton = document.createElement("button"); + copyButton.className = "copy-button"; + copyButton.type = "button"; + copyButton.title = "Copy code block"; + copyButton.dataset.copyContent = fenceMatch.groups.code; + copyButton.appendChild(createCodicon("codicon-copy")); + codeContainer.appendChild(copyButton); + + const pre = document.createElement("pre"); + const code = document.createElement("code"); + code.textContent = fenceMatch.groups.code; + pre.appendChild(code); + codeContainer.appendChild(pre); + container.appendChild(codeContainer); + return; + } + + appendMarkdownParagraphs(container, token); + }); +} + /** * @param {HTMLElement} container * @param {string} markdown From 0bc33f21ffa3db044f9799c7f7851da984d48295 Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Wed, 24 Jun 2026 23:53:43 +0200 Subject: [PATCH 08/13] backup --- ...URE_RICH_DISPLAY_HTML_LAYOUT_2026_06_24.md | 648 ++++++++++++++++++ apps/vscode-extension/package.json | 2 +- .../vscode-extension/src/commands/pinError.ts | 57 +- .../src/commands/showErrorInSidebar.ts | 62 +- .../src/diagnosticRichContent.ts | 299 ++++++++ apps/vscode-extension/src/diagnostics.ts | 18 +- .../src/formattedDiagnosticsStore.ts | 3 + apps/vscode-extension/src/hoverContent.ts | 58 +- .../src/provider/hoverProvider.ts | 4 +- .../src/provider/markdownWebviewProvider.ts | 18 + .../src/provider/selectedTextHoverProvider.ts | 11 +- .../src/provider/sidebarViewModel.ts | 31 +- .../src/provider/webviewViewProvider.ts | 102 ++- .../src/test/suite/extension.test.ts | 115 +++- apps/vscode-extension/webview/index.js | 303 +++++--- apps/vscode-extension/webview/style.css | 309 ++++++--- examples/errors.js | 24 + packages/error-translator/test/engine.test.ts | 14 + packages/formatter/test/formatter.vitest.ts | 16 + 19 files changed, 1782 insertions(+), 312 deletions(-) create mode 100644 HANDOFF_WORKSPACE_SECURE_RICH_DISPLAY_HTML_LAYOUT_2026_06_24.md create mode 100644 apps/vscode-extension/src/diagnosticRichContent.ts diff --git a/HANDOFF_WORKSPACE_SECURE_RICH_DISPLAY_HTML_LAYOUT_2026_06_24.md b/HANDOFF_WORKSPACE_SECURE_RICH_DISPLAY_HTML_LAYOUT_2026_06_24.md new file mode 100644 index 0000000..ea7cd4e --- /dev/null +++ b/HANDOFF_WORKSPACE_SECURE_RICH_DISPLAY_HTML_LAYOUT_2026_06_24.md @@ -0,0 +1,648 @@ +# Referenzdokument: Workspace-Handoff zur sicheren Wiederherstellung der rich display / HTML-Aussengeruest-Architektur in `pretty-ts-errors` +[INTENT: KONTEXT] + +--- + +## 0. Quellenbasis und Scope-Grenzen +[INTENT: KONTEXT] + +**Workspace-Root:** `C:\Projects\development-platform\vs-code\extensions\pretty-ts-errors` + +**Quellemodus:** `CURRENT_CONTEXT_DEFAULT` mit expliziten Zusatzreferenzen aus dem laufenden Chat-Kontext. + +**Freigegebene Quellenbasis fuer diesen Handoff:** + +- die komplette aktuelle Konversation bis zu diesem Stand +- die im aktuellen Verlauf gelesenen Workspace-Dateien, insbesondere: + - `apps/vscode-extension/src/hoverContent.ts` + - `apps/vscode-extension/src/diagnostics.ts` + - `apps/vscode-extension/src/provider/hoverProvider.ts` + - `apps/vscode-extension/src/provider/sidebarViewModel.ts` + - `apps/vscode-extension/src/provider/selectedTextHoverProvider.ts` + - `apps/vscode-extension/src/formattedDiagnosticsStore.ts` + - `apps/vscode-extension/src/supportedDiagnosticSources.ts` + - `apps/vscode-extension/src/test/suite/index.ts` + - `apps/vscode-extension/src/test/suite/extension.test.ts` + - `apps/vscode-extension/webview/index.js` + - `apps/vscode-extension/project.json` + - `apps/vscode-extension/package.json` + - `packages/formatter/src/errorMessagePrettifier.ts` + - `packages/error-translator/vendor/matt-pocock/errors/2739.md` + - `examples/errors.js` +- die lokal angelegte Upstream-Referenz: + - `tmp/upstream-yoavbls-pretty-ts-errors` + - insbesondere `tmp/upstream-yoavbls-pretty-ts-errors/apps/vscode-extension/src/diagnostics.ts` +- die vom Benutzer eingebrachten Screenshots zur aktuellen Anzeige sowie der Verweis auf den Screenshot in `README.md` +- der aktuelle Workspace-Status inklusive des lokal vorhandenen VSIX-Artefakts `artifacts/vsix/pretty-ts-errors-1.0.2.vsix` + +**Explizite Scope-Grenzen:** + +- Fokus dieses Dokuments ist die **Anzeige-Architektur** der Extension: + - nativer Hover + - Sidebar / Webview + - sichere Trennung von Layout und untrusted Diagnostic-Content +- Der Handoff deckt nur Themen ab, die im aktuellen Source Bundle bereits diskutiert, implementiert oder als Zielbild beschrieben wurden. +- Keine neue, hiervon unabhaengige Produktroadmap. +- Keine autonome Projekt-Vollsuche ausserhalb der oben genannten Quellen. + +**Explizite Exklusionen:** + +- keine neue Loesung, die wieder generisches untrusted HTML direkt in trusted Hover-Surfaces injiziert +- keine Wiedereroeffnung des entfernten Remote-Translator-Egress +- keine Erfindung neuer UX-Ziele ausserhalb der bereits diskutierten Screenshot-/README-Paritaet + +--- + +## 1. Aufgabenuebersicht +[INTENT: KONTEXT] + +Dieser Handoff beschreibt den aktuellen Workspace-Stand und das empfohlene Zielbild fuer die **sichere Wiederherstellung der reicheren Anzeige** in `pretty-ts-errors`. + +Die Kernlage aus dem aktuellen Kontext ist: + +1. Das Originalprojekt `yoavbls/pretty-ts-errors` wurde lokal als Vergleichsbasis unter `tmp/upstream-yoavbls-pretty-ts-errors` geklont. +2. Die frueheren Sicherheitsprobleme wurden bereits entfernt: + - kein Remote-Translator-Egress mehr + - kein untrusted Diagnostic-HTML mehr via `innerHTML` in die Webview + - kein globaler trusted Hover-Body mit `supportHtml = true` +3. Die reichere Darstellung wurde bereits **teilweise** sicher wiederhergestellt: + - der Hover nutzt wieder den Formatter-Kern fuer den Haupttext + - Codeblöcke und formatierte Type-Fragmente werden als Markdown aufgebaut + - die Sidebar rendert den `bodyMarkdown` per Safe-DOM +4. Die aktuelle Anzeige ist funktional korrekt und getestet, aber **noch nicht 100% screenshot-identisch** zum README-/Original-Eindruck. +5. Die priorisierte Zielarchitektur ist: + - **maximale Sicherheit zuerst** + - **host-owned Layout** + - **untrusted externer Content bleibt Daten** + - **HTML im Aussengeruest nur dort, wo die Extension selbst die komplette Struktur kontrolliert** + +Der fachlich richtige Zielzustand ist **nicht** die Rueckkehr zum alten globalen `supportHtml = true`-Hoverpfad, sondern eine Architektur, in der: + +- die Extension ihr Layout selbst kontrolliert, +- externer / workspace-kontrollierter Diagnostic-Text niemals als frei interpretierbares HTML behandelt wird, +- und die Rich-Display-Paritaet ueber ein strukturiertes Renderer-Modell erreicht wird. + +--- + +## 2. Informationsregister (INHALT-Einheiten) +[INTENT: REFERENZ] + +| ID | Typ | Beschreibung | Veraenderung | Status | +|----|-----|--------------|-------------|--------| +| REQ-001 | ANFORDERUNG | Die Anzeige der Extension muss wieder reich / enriched sein und sich so weit wie moeglich an der frueheren README-/Original-Darstellung orientieren. | Ja | Aktiv | +| REQ-002 | ANFORDERUNG | Maximale Sicherheit hat hoechste Prioritaet; externer / generischer Content darf den Benutzer nicht gefaehrden oder korrumpieren. | Ja | Aktiv | +| REQ-003 | ANFORDERUNG | Wenn technisch moeglich, soll das Aussengeruest fuer die Anzeige wieder host-owned / HTML-gesteuert gestaltet werden koennen, ohne untrusted HTML zuzulassen. | Ja | Aktiv | +| REQ-004 | ANFORDERUNG | Der Handoff muss auf Workspace-Ebene den empfohlenen Architekturpfad und die daraus folgende Implementierungsrichtung vollstaendig dokumentieren. | Ja | Erledigt mit diesem Dokument | +| DEC-001 | ENTSCHEIDUNG | Der alte trusted Hover-Body mit `supportHtml = true` ist nicht die empfohlene Zielarchitektur. | Ja | Aktiv | +| DEC-002 | ENTSCHEIDUNG | Empfohlene Top-1-Architektur ist ein strukturierter Layout-/Token-/AST-Renderer mit Dual-Output fuer Hover und Sidebar. | Ja | Aktiv | +| DEC-003 | ENTSCHEIDUNG | Host-owned HTML ist nur fuer vom Produkt voll kontrollierte Shell-Surfaces zulaessig, nicht fuer untrusted Diagnostic-Rohstrings. | Ja | Aktiv | +| INFO-001 | INFORMATION | Das Originalprojekt wurde lokal unter `tmp/upstream-yoavbls-pretty-ts-errors` geklont und ist fuer Direktvergleiche verfuegbar. | Nein | Aktiv | +| INFO-002 | INFORMATION | Der aktuelle Hover-Body in `hoverContent.ts` rendert den Fehlertext als Markdown mit `supportHtml = false`. | Nein | Aktiv | +| INFO-003 | INFORMATION | Die Sidebar / Webview rendert `bodyMarkdown` per Safe-DOM in `webview/index.js`. | Nein | Aktiv | +| INFO-004 | INFORMATION | Ein echter Extension-Integrationstest prueft den Custom-Hover ueber `examples/errors.js`. | Nein | Aktiv | +| INFO-005 | INFORMATION | Das aktuelle Artefakt `artifacts/vsix/pretty-ts-errors-1.0.2.vsix` wurde erfolgreich gebaut. | Nein | Aktiv | +| WARN-001 | WARNUNG | Die Darstellung ist aktuell nicht 100% screenshot-identisch; insbesondere `TS2739` und weitere Fehlerfamilien haben noch Format-Paritaetsluecken. | Nein | Offen | +| WARN-002 | WARNUNG | Die Hoehe des nativen VS-Code-Hovers ist nicht vollstaendig von der Extension kontrollierbar. | Nein | Aktiv | +| WF-001 | WORKFLOW | Die sichere Endarchitektur soll das Layout in strukturierte Nodes aufteilen und Hover-/Sidebar-Rendering aus derselben Zwischenrepräsentation ableiten. | Ja | Offen | +| WF-002 | WORKFLOW | Fuer Screenshot-Paritaet muessen gezielte Formatter-Regeln pro Fehlerfamilie (`TS2739`, `TS2741`, `TS2322`, `TS2345`) erweitert und getestet werden. | Ja | Offen | +| WF-003 | WORKFLOW | Falls host-owned HTML im Aussengeruest weiter ausgebaut wird, darf dies nur fuer voll kontrollierte Shell-Strukturen gelten; eingefuellter externer Inhalt bleibt escaped/textuell/tokenisiert. | Ja | Offen | + +--- + +## 3. Informationseinheiten +[INTENT: SPEZIFIKATION] + +### 3.1 REQ-001: Die Anzeige muss wieder reich / enriched sein +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Die Extension soll fuer TypeScript-/JSDoc-Diagnostics wieder eine reichere Anzeige liefern, die sich an der frueheren visuellen Wirkung des Originalprojekts und des README-Screenshots orientiert. Relevante Merkmale sind: + +- Trennung von Fehlersatz und Type-Blöcken +- mehrzeilige Codeblöcke fuer relevante Typen +- besser strukturierte Anzeige fuer "is missing..."- und "is not assignable..."-Faelle +- bessere Paritaet zwischen Hover und Sidebar + +**Ist-Zustand:** +Die aktuelle Implementierung liefert bereits wieder Rich-Display-Merkmale: + +- `apps/vscode-extension/src/hoverContent.ts` baut den Fehlertext ueber `buildPrettyDiagnosticMessageMarkdown()` aus dem Formatter-Kern auf. +- `apps/vscode-extension/src/hoverContent.ts` rendert Codefences und strukturierte Textteile als Markdown. +- `apps/vscode-extension/webview/index.js` rendert den Haupttext der Sidebar ueber `appendMarkdownBlocks()` in Safe-DOM-Codecontainer und Paragraphen. +- `apps/vscode-extension/src/test/suite/extension.test.ts` prueft Rich-Merkmale wie `TS2741`, Codefences sowie `street: string` und `country: string`. + +Trotzdem ist die aktuelle Darstellung noch nicht 100% README-/Original-paritaetisch. Der aktuelle `TS2739`-Fall zeigt dies deutlich: + +- die Plural-Form wird zwar in Listenform dargestellt, +- die Plain-English-Uebersetzung bleibt noch relativ roh, +- und die exakte visuelle Segmentierung aus dem alten HTML-trusted Hover ist noch nicht vollstaendig reproduziert. + +**Soll-Zustand:** +Die Anzeige soll wieder so reich wie moeglich sein, jedoch auf dem sicheren Renderer-Pfad. Insbesondere muessen: + +- Hauptfehler, Typblöcke, Property-Listen und Relationslinien sauber segmentiert sein, +- Fehlerfamilien mit bekannter hoher Sichtbarkeit (`TS2739`, `TS2741`, `TS2322`, `TS2345`) gezielt auf Screenshot-Paritaet gezogen werden, +- Hover und Sidebar aus derselben logischen Rich-Display-Zwischenrepräsentation ableitbar sein. + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `apps/vscode-extension/src/hoverContent.ts` | Hover-Body und Actions-Rendering | `buildPrettyDiagnosticMessageMarkdown()`, `createBodyMarkdown()`, `createHoverContents()` | +| `apps/vscode-extension/webview/index.js` | Safe-DOM-Rendering der Sidebar | `createDiagnosticCard()`, `appendMarkdownBlocks()`, `appendMarkdownParagraphs()` | +| `packages/formatter/src/errorMessagePrettifier.ts` | Regelbasierte Aufspaltung des Diagnostic-Textes | `getRules()` | +| `packages/error-translator/vendor/matt-pocock/errors/2739.md` | Plain-English-Text fuer `TS2739` | gesamte Datei | +| `examples/errors.js` | gezieltes Repro fuer JS-/Plural-Fall | `pluralHoverExample` | + +**✅ Positivbeispiel(e):** + +```ts +const hoverParts = await createHoverContents(lspDiagnostic, { + bodyMarkdown, +}); +``` + +```js +const messageSection = document.createElement("section"); +messageSection.className = "diagnostic-message-section"; +appendMarkdownBlocks(messageSection, diagnostic.bodyMarkdown); +``` + +**❌ Negativbeispiel(e):** + +```ts +const markdown = new MarkdownString(formattedDiagnostic); +markdown.isTrusted = { enabledCommands }; +markdown.supportHtml = true; +``` + +Warum falsch: +Dieses Muster koppelt den kompletten formatierten Fehlertext wieder an einen global trusted HTML-Hoverpfad und fuehrt genau in Richtung der frueheren O3-Sicherheitsproblematik. + +--- + +### 3.2 REQ-002: Maximale Sicherheit hat hoechste Prioritaet +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Die rich display darf nur so weit ausgebaut werden, wie es mit maximaler Sicherheit gegenueber externen oder workspace-/dependency-kontrollierten Quellen vereinbar ist. + +**Ist-Zustand:** +Die aktuelle Implementierung trennt die Trust-Grenzen bereits: + +- Der Hover-Body verwendet `MarkdownString` mit `supportHtml = false`. +- Die Actions werden separat in `createActionsMarkdown()` gebaut und nur fuer `enabledCommands` trusted gemacht. +- Die Sidebar rendert `bodyMarkdown` via DOM-Aufbau und `textContent`, nicht via `innerHTML`. +- Der Remote-Translator wurde bereits frueher entfernt. + +**Soll-Zustand:** +Alle weiteren UX-/Design-Verbesserungen muessen diese Trennung beibehalten: + +- untrusted Diagnostic-Text bleibt Daten +- keine freie HTML-Interpretation fuer Diagnostic-Rohstrings +- keine Wiedereroeffnung eines global trusted HTML-Hover-Bodies + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `apps/vscode-extension/src/hoverContent.ts` | sichere Trust-Trennung im Hover | `createBodyMarkdown()`, `createActionsMarkdown()` | +| `apps/vscode-extension/webview/index.js` | Safe-DOM statt `innerHTML` | `appendMarkdownBlocks()`, `createInlineMarkdownFragment()` | +| `apps/vscode-extension/src/provider/sidebarViewModel.ts` | strukturierte Modellweitergabe in die Sidebar | `SidebarDiagnosticModel.bodyMarkdown`, `createSidebarDiagnosticModel()` | + +**✅ Positivbeispiel(e):** + +```ts +const markdown = new MarkdownString(); +markdown.appendMarkdown(bodyMarkdown); +markdown.supportHtml = false; +``` + +```js +const code = document.createElement("code"); +code.textContent = fenceMatch.groups.code; +``` + +**❌ Negativbeispiel(e):** + +```js +contentElement.innerHTML = diagnostic.message; +``` + +Warum falsch: +Das wuerde untrusted Diagnostic-Text wieder direkt in eine HTML-Surface schreiben und die Sicherheitsgrenze oeffnen. + +--- + +### 3.3 REQ-003: Host-owned HTML-Aussengeruest nur mit sicheren Slots +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Falls technisch moeglich, soll das Aussengeruest fuer die Anzeige wieder vollstaendig vom Produkt kontrolliert werden koennen, einschliesslich HTML-Layout fuer wiederkehrende visuelle Bereiche. Gleichzeitig darf externer Content niemals als frei interpretierbares HTML in dieses Geruest einfliessen. + +**Ist-Zustand:** +Im aktuellen Code ist das bereits teilweise umgesetzt: + +- Die Sidebar hat ein host-owned HTML-/DOM-Geruest (`diagnostic-card`, `translation-card`, Actions, Copy-Button, Codecontainer). +- Der eigentliche Fehlerinhalt (`bodyMarkdown`) wird aber in dieses Geruest nur als strukturierter Markdown-/Text-Content eingespeist. +- Im nativen VS-Code-Hover gibt es aktuell **kein** host-owned HTML-Aussengeruest fuer den Body; dort bleibt der sichere Markdown-Pfad aktiv. + +**Soll-Zustand:** +Die empfohlene Endarchitektur ist: + +- host-owned HTML nur fuer komplett kontrollierte Shell-Bereiche +- eingebetteter externer Content nur als: + - Markdown + - escaped Text + - tokenisierte / typisierte Layout-Nodes +- kein generisches Einfuegen fremder HTML-Fragmente + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `apps/vscode-extension/webview/index.js` | bestehendes host-owned HTML-/DOM-Aussengeruest | `createDiagnosticCard()`, `createTranslationsSection()`, `appendMarkdownBlocks()` | +| `apps/vscode-extension/src/hoverContent.ts` | sicherer Hover-Body ohne HTML-Trust | `buildPrettyDiagnosticMessageMarkdown()`, `createBodyMarkdown()` | +| `packages/formatter/src/errorMessagePrettifier.ts` | aktuelle Vorstufe des kuenftigen Strukturmodells | `getRules()` | + +**✅ Positivbeispiel(e):** + +```js +const card = document.createElement("article"); +card.className = "diagnostic-card"; + +const messageSection = document.createElement("section"); +messageSection.className = "diagnostic-message-section"; +appendMarkdownBlocks(messageSection, diagnostic.bodyMarkdown); +card.appendChild(messageSection); +``` + +**❌ Negativbeispiel(e):** + +```ts +const markdownString = new MarkdownString(fullHtmlFromDiagnostic); +markdownString.supportHtml = true; +``` + +Warum falsch: +Das HTML-Geruest waere dann nicht mehr wirklich host-owned, weil der eingefuellte Diagnostic-String selbst interpretierbares HTML transportieren duerfte. + +--- + +### 3.4 REQ-004: Workspace-Handoff auf empfohlene Option und Implementierungsweg ausrichten +[INTENT: SPEZIFIKATION] + +**Typ:** ANFORDERUNG + +**Beschreibung:** +Das Dokument muss den aktuell empfohlenen Architekturpfad und die daraus folgende Weiterarbeit so festhalten, dass ein neuer Agent ohne weitere Projektsuche direkt fortsetzen kann. + +**Ist-Zustand:** +Die empfohlene Option wurde im laufenden Kontext bereits festgelegt: + +- Top-1-Empfehlung: **strukturierter Token-/AST-Renderer mit Dual-Output** +- Rich Display soll ohne Wiedereroeffnung des alten HTML-trusted Hover-Bodies erreicht werden. + +**Soll-Zustand:** +Ein Folge-Agent muss aus diesem Dokument direkt ableiten koennen: + +- welche Pfade bereits sicher sind, +- welche Rendering-Paritaetsluecken noch offen sind, +- welche Implementierungsschritte fuer die Endarchitektur ausstehen, +- welche Tests und Vergleichsquellen bereits existieren. + +**✅ Positivbeispiel(e):** + +```md +- Upstream-Referenz lokal vorhanden +- Hover-Body sicherer Markdown-Pfad +- Sidebar host-owned DOM-Shell +- naechster Schritt: typed DiagnosticLayoutModel +``` + +**❌ Negativbeispiel(e):** + +```md +Die Anzeige ist im Wesentlichen fertig. Nur noch Kleinigkeiten. +``` + +Warum falsch: +Das verschweigt die noch offenen Format-Paritaetsluecken und ist fuer einen Folge-Agenten nicht HCOA-ready. + +--- + +### 3.5 DEC-001: Der alte globale `supportHtml = true`-Hoverpfad ist nicht die Zielarchitektur +[INTENT: SPEZIFIKATION] + +**Typ:** ENTSCHEIDUNG + +**Beschreibung:** +Das Originalprojekt nutzte fuer den fertig formatierten Hover einen `MarkdownString` mit `supportHtml = true` und `isTrusted = { enabledCommands }`. Diese Kombination ist nicht die empfohlene Zielarchitektur fuer den aktuellen Workspace. + +**Ist-Zustand:** +Im Upstream-Klon steht der alte Pfad sichtbar in: + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `tmp/upstream-yoavbls-pretty-ts-errors/apps/vscode-extension/src/diagnostics.ts` | alter trusted Hoverpfad | `prettifyDiagnosticForHover()`, `MarkdownString`, `supportHtml = true`, `isTrusted = { enabledCommands }` | + +**Soll-Zustand:** +Der Hover-Body bleibt bei `supportHtml = false`; reiche Darstellung kommt ueber sicheren Markdown-/Token-/Node-Renderpfad. + +--- + +### 3.6 DEC-002: Empfohlene Top-1-Architektur ist ein strukturierter Layout-/Token-/AST-Renderer mit Dual-Output +[INTENT: SPEZIFIKATION] + +**Typ:** ENTSCHEIDUNG + +**Beschreibung:** +Die beste aktuelle Architekturentscheidung fuer den weiteren Ausbau ist: + +- eine gemeinsame strukturierte Zwischenrepräsentation fuer Fehlerdarstellung +- ein Markdown-Output fuer den nativen Hover +- ein Safe-DOM-/host-owned HTML-Output fuer Sidebar/Webview + +**Ist-Zustand:** +Der aktuelle Code ist eine Vorstufe dazu: + +- `hoverContent.ts` materialisiert bereits prettified Markdown +- `webview/index.js` rendert bereits `bodyMarkdown` strukturiert in DOM +- die Daten werden bereits ueber `FormattedDiagnostic.bodyMarkdown` weitergereicht + +**Soll-Zustand:** +Ein kuenftiger `DiagnosticLayoutModel` sollte statt bloßer String-Rewrites typed Nodes wie diese tragen: + +- `paragraph` +- `inlineCode` +- `codeBlock` +- `propertyList` +- `typeBlock` +- `relationLine` + +und daraus zwei Renderer ableiten: + +- `renderHoverMarkdown(layout)` +- `renderSidebarDom(layout)` + +--- + +### 3.7 DEC-003: Host-owned HTML ist nur fuer voll kontrollierte Shell-Surfaces zulaessig +[INTENT: SPEZIFIKATION] + +**Typ:** ENTSCHEIDUNG + +**Beschreibung:** +HTML im Aussengeruest ist akzeptabel, wenn die komplette Struktur von der Extension stammt und untrusted Content weiterhin nur als Daten eingehaengt wird. + +**Ist-Zustand:** +Die Sidebar erfuellt dieses Muster bereits teilweise. + +**Soll-Zustand:** +Dieses Prinzip bleibt verbindlich: + +- HTML nur aus eigener Struktur +- Slots nur fuer escaped / tokenisierte / markdownbasierte Inhalte +- keine generische HTML-Interpolation aus Diagnostic-Rohstrings + +--- + +### 3.8 INFO-001: Upstream-Klon ist lokal verfuegbar +[INTENT: SPEZIFIKATION] + +**Typ:** INFORMATION + +**Beschreibung:** +Das Originalprojekt `yoavbls/pretty-ts-errors` wurde lokal nach `tmp/upstream-yoavbls-pretty-ts-errors` geklont. Dieser Clone dient als Referenz fuer: + +- alte Hover-Architektur +- README-/Screenshot-Paritaet +- direkten Codevergleich + +--- + +### 3.9 INFO-002: Der aktuelle Hover-Body ist sicherer Markdown statt trusted HTML +[INTENT: SPEZIFIKATION] + +**Typ:** INFORMATION + +**Beschreibung:** +Der aktuelle Body des Hovers wird in `apps/vscode-extension/src/hoverContent.ts` via `MarkdownString.appendMarkdown()` aufgebaut und explizit mit `supportHtml = false` abgeschlossen. + +--- + +### 3.10 INFO-003: Die Sidebar rendert den Haupttext via Safe-DOM +[INTENT: SPEZIFIKATION] + +**Typ:** INFORMATION + +**Beschreibung:** +Der Haupttext eines Diagnostics liegt im Modell als `bodyMarkdown` vor und wird in `apps/vscode-extension/webview/index.js` ueber `appendMarkdownBlocks()` und `appendMarkdownParagraphs()` in DOM-Elemente materialisiert. + +--- + +### 3.11 INFO-004: Ein echter Extension-Integrationstest ist vorhanden +[INTENT: SPEZIFIKATION] + +**Typ:** INFORMATION + +**Beschreibung:** +`apps/vscode-extension/src/test/suite/extension.test.ts` prueft den aktiven Hover gegen `examples/errors.js` per `vscode.executeHoverProvider`. + +**Ist-Zustand:** +Der Test verifiziert aktuell: + +- `Show in Sidebar` +- `Local explanation` +- `TS2741` +- Codefences +- `street: string` +- `country: string` + +--- + +### 3.12 INFO-005: Das aktuelle VSIX-Artefakt ist gebaut +[INTENT: SPEZIFIKATION] + +**Typ:** INFORMATION + +**Beschreibung:** +Der aktuelle Package-Lauf hat `artifacts/vsix/pretty-ts-errors-1.0.2.vsix` erfolgreich erzeugt. + +--- + +### 3.13 WARN-001: Die Anzeige ist noch nicht 100% screenshot-identisch +[INTENT: SPEZIFIKATION] + +**Typ:** WARNUNG + +**Beschreibung:** +Obwohl die Anzeige wieder reich ist, ist sie noch nicht 100% deckungsgleich mit dem README-/Original-Screenshot. Die Gruende sind bereits im aktuellen Source Bundle belegt: + +- andere Fehlerfamilien werden unterschiedlich gut zerlegt +- `TS2739` hat aktuell eine eher rohe Plain-English-Translation +- der sichere Markdown-Pfad reproduziert nicht jeden frueheren HTML-/Hover-Hack pixelgleich + +**Dateireferenzen:** + +| Dateipfad | Relevanz | Relevante Elemente | +|-----------|----------|-------------------| +| `packages/error-translator/vendor/matt-pocock/errors/2739.md` | flache Explanation fuer `TS2739` | gesamte Datei | +| `packages/formatter/src/errorMessagePrettifier.ts` | nur partielle Spezialregeln fuer Fehlerfamilien | Plural-Regel `is missing the following properties...` | + +--- + +### 3.14 WARN-002: Die Hoehe des nativen Hovers ist nicht vollstaendig kontrollierbar +[INTENT: SPEZIFIKATION] + +**Typ:** WARNUNG + +**Beschreibung:** +Die nativen VS-Code-Hover-Container werden vom Editor selbst kontrolliert. Die Extension kann den Inhalt verbessern, aber nicht frei die Widget-Hoehe deterministisch erzwingen. + +--- + +### 3.15 WF-001: Endarchitektur auf ein typed `DiagnosticLayoutModel` heben +[INTENT: SPEZIFIKATION] + +**Typ:** WORKFLOW + +**Beschreibung:** +Naechster Hauptschritt fuer eine robuste Endarchitektur: + +1. aktuellen Formatter von bloßem String-Rewrite in typed Layout-Nodes ueberfuehren +2. denselben Layout-Baum in zwei Renderer speisen: + - Hover-Markdown + - Sidebar-Safe-DOM +3. Translation-Blöcke und Property-Listen ebenfalls als typed Nodes modellieren + +**Ist-Zustand:** +Aktuell wird `bodyMarkdown` als String erzeugt und spaeter erneut geparst / gerendert. + +**Soll-Zustand:** +Ein gemeinsames Modell vermeidet Drift zwischen Hover und Sidebar. + +--- + +### 3.16 WF-002: Fehlerfamilien gezielt auf Screenshot-Paritaet ziehen +[INTENT: SPEZIFIKATION] + +**Typ:** WORKFLOW + +**Beschreibung:** +Gezielte Paritaetsarbeit fuer die sichtbarsten Fehlerfamilien: + +1. `TS2739` +2. `TS2741` +3. `TS2322` +4. `TS2345` + +Je Fehlerfamilie sollten: + +- Repro-Beispiele in `examples/` +- Formatter-Regeln +- Plain-English-Translations +- Integrationstests / Snapshot-Tests + +koordiniert nachgezogen werden. + +--- + +### 3.17 WF-003: Host-owned HTML im Aussengeruest nur mit sicheren Slots weiter ausbauen +[INTENT: SPEZIFIKATION] + +**Typ:** WORKFLOW + +**Beschreibung:** +Falls die Designqualitaet weiter erhoeht werden soll, ist der sichere Ausbaupfad: + +- mehr host-owned Layout in Sidebar/Webview +- kein generisches HTML fuer Diagnostic-Rohstrings +- Slots nur fuer: + - escaped Text + - Markdown + - typed Layout-Nodes + +Dies gilt ausdruecklich **nicht** als Freigabe, den nativen Hover-Body wieder global auf `supportHtml = true` zu setzen. + +--- + +## 4. Konventionen & Constraints +[INTENT: CONSTRAINT] + +- Maximale Sicherheit hat Vorrang vor visueller Paritaet. +- Untrusted Diagnostic-Text bleibt Daten und darf nicht als frei interpretierbares HTML behandelt werden. +- Host-owned HTML ist nur fuer voll kontrollierte Shell-Surfaces zulaessig. +- Rich-Display-Paritaet soll bevorzugt ueber strukturierte Renderer-Modelle statt ueber globales HTML-Trusting erreicht werden. +- Hover und Sidebar sollen langfristig aus derselben logischen Rich-Display-Zwischenrepräsentation ableitbar sein. +- Die nativen VS-Code-Hover-Grenzen (Hoehe, Host-Chrome, Scroll-Verhalten) sind weiterhin editorbestimmt. + +--- + +## 5. Dateipfad-Index +[INTENT: REFERENZ] + +| # | Dateipfad | Relevanz | Zugehoerige Einheit-IDs | +|---|-----------|----------|-------------------------| +| 1 | `apps/vscode-extension/src/hoverContent.ts` | sicherer Rich-Hover-Body, Markdown-Prettifier, Action-Trust-Trennung | REQ-001, REQ-002, INFO-002, DEC-001, DEC-002 | +| 2 | `apps/vscode-extension/src/diagnostics.ts` | Diagnostic-Sync, Cache, bodyMarkdown-Erzeugung, Hover-Provider-Registrierung | REQ-001, REQ-002, INFO-002, INFO-004 | +| 3 | `apps/vscode-extension/src/provider/hoverProvider.ts` | Store- und Live-Diagnostic-Fallback fuer Hover | REQ-001, INFO-002, INFO-004 | +| 4 | `apps/vscode-extension/src/provider/sidebarViewModel.ts` | strukturiertes Sidebar-Modell inkl. `bodyMarkdown` | REQ-003, INFO-003 | +| 5 | `apps/vscode-extension/src/provider/selectedTextHoverProvider.ts` | Debug-Hover fuer selektierten Text | INFO-004 | +| 6 | `apps/vscode-extension/src/formattedDiagnosticsStore.ts` | Speicherstruktur fuer Rich-Diagnostic-Items | REQ-001, INFO-003 | +| 7 | `apps/vscode-extension/src/supportedDiagnosticSources.ts` | zugelassene Diagnostic-Quellen | REQ-002 | +| 8 | `apps/vscode-extension/src/test/suite/index.ts` | Test-Harness, Testdatei-Discovery | INFO-004 | +| 9 | `apps/vscode-extension/src/test/suite/extension.test.ts` | echter Extension-Integrationstest fuer Hover-Rich-Display | INFO-004, WF-002 | +| 10 | `apps/vscode-extension/webview/index.js` | Safe-DOM-Rendering des richen Sidebar-Inhalts | REQ-001, REQ-002, REQ-003, INFO-003, WF-003 | +| 11 | `apps/vscode-extension/project.json` | Build-/Test-/Package-Targets, ESM-Banner-Fix | INFO-005 | +| 12 | `apps/vscode-extension/package.json` | Extension-Manifest und VS Code Engine-Line | INFO-005 | +| 13 | `packages/formatter/src/errorMessagePrettifier.ts` | bestehende Formatter-Regelbasis, u.a. Plural-Regel | REQ-001, WARN-001, WF-001, WF-002 | +| 14 | `packages/error-translator/vendor/matt-pocock/errors/2739.md` | aktuelle Plain-English-Uebersetzung fuer `TS2739` | WARN-001, WF-002 | +| 15 | `examples/errors.js` | JS-Repro inkl. Plural-Form fuer `TS2739` | INFO-004, WF-002 | +| 16 | `tmp/upstream-yoavbls-pretty-ts-errors/apps/vscode-extension/src/diagnostics.ts` | lokaler Upstream-Vergleich fuer den alten trusted Hoverpfad | DEC-001, INFO-001 | +| 17 | `artifacts/vsix/pretty-ts-errors-1.0.2.vsix` | aktuelles Installationsartefakt | INFO-005 | + +--- + +## 6. Ausfuehrungskontext fuer LLM-Agents +[INTENT: KONTEXT] + +Ein Folge-Agent kann mit diesem Dokument direkt weiterarbeiten, ohne neue Projektsuche, wenn er die folgenden Punkte beachtet: + +1. **Sicherheitsgrenze zuerst** + - Kein globaler Rueckfall auf `supportHtml = true` fuer den Fehler-Body. + - Kein generisches HTML aus Diagnostic-Rohstrings. + +2. **Empfohlene Zielarchitektur** + - typed `DiagnosticLayoutModel` + - Dual-Output fuer Hover und Sidebar + - host-owned HTML nur fuer kontrollierte Shell-Surfaces + +3. **Aktuelle Funktionslage** + - Rich-Display ist wieder aktiv + - Hover und Sidebar nutzen beide bereits denselben prettified Haupttext in unterschiedlicher Form + - Integrationstest ist grün + - VSIX `1.0.2` ist gebaut + +4. **Offene Kernarbeit** + - Screenshot-Paritaet pro Fehlerfamilie + - `TS2739`-Translation und Layout weiter schaerfen + - gemeinsame strukturierte Zwischenrepräsentation statt Markdown-String als Endformat + +5. **Wichtige Nicht-Ziele** + - keine neue Remote-Translation + - keine Wiedereroeffnung des alten trusted HTML-Hovers + - keine Sicherheitsabsenkung zugunsten von Komfort oder Geschwindigkeit + +Wenn keine weitere Scope-Aenderung erfolgt, ist die empfohlene Fortsetzungsreihenfolge: + +1. `TS2739`-Paritaet verbessern +2. typed Layout-Modell einziehen +3. denselben Modellpfad fuer weitere Fehlerfamilien verallgemeinern + diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json index c82edb9..adb30d1 100644 --- a/apps/vscode-extension/package.json +++ b/apps/vscode-extension/package.json @@ -4,7 +4,7 @@ "type": "module", "publisher": "CyberT33N", "description": "Make TypeScript errors prettier and more human-readable in VSCode", - "version": "1.0.2", + "version": "1.2.0", "icon": "assets/icon.png", "repository": { "type": "git", diff --git a/apps/vscode-extension/src/commands/pinError.ts b/apps/vscode-extension/src/commands/pinError.ts index b621ab7..6808c2d 100644 --- a/apps/vscode-extension/src/commands/pinError.ts +++ b/apps/vscode-extension/src/commands/pinError.ts @@ -1,7 +1,8 @@ import { commands, type ExtensionContext } from "vscode"; import { execute } from "./execute"; -import { tryEnsureRange } from "./validate"; +import { tryEnsureRange, tryEnsureUri } from "./validate"; import { getViewProvider } from "../provider/webviewViewProvider"; +import { logger } from "../logger"; const COMMAND_ID = "prettyTsErrors.pinError"; @@ -9,23 +10,59 @@ export function registerPinError(context: ExtensionContext) { context.subscriptions.push( commands.registerCommand( COMMAND_ID, - async (maybeRangeLike: unknown, maybeMessage?: unknown) => + async ( + maybeUriOrRangeLike: unknown, + maybeRangeOrMessage?: unknown, + maybeMessage?: unknown, + ) => execute(COMMAND_ID, async () => { - const { isValidRange, range } = tryEnsureRange(maybeRangeLike); - if (!isValidRange) { + const uriResult = tryEnsureUri(maybeUriOrRangeLike); + const explicitRangeResult = tryEnsureRange(maybeRangeOrMessage); + const fallbackRangeResult = tryEnsureRange(maybeUriOrRangeLike); + const explicitMessage = + typeof maybeMessage === "string" ? maybeMessage : undefined; + const fallbackMessage = + typeof maybeRangeOrMessage === "string" + ? maybeRangeOrMessage + : undefined; + + const viewProvider = getViewProvider(); + + if (uriResult.isValidUri && explicitRangeResult.isValidRange) { + logger.debug( + `pinning diagnostic for ${uriResult.uri.toString(true)} at ${explicitRangeResult.range.start.line}:${explicitRangeResult.range.start.character}` + ); + await viewProvider?.pinDiagnostic( + uriResult.uri, + explicitRangeResult.range, + explicitMessage, + ); + } else if (fallbackRangeResult.isValidRange) { + logger.warn( + "pinError was invoked without a document uri; falling back to the active editor." + ); + await viewProvider?.pinDiagnostic( + undefined, + fallbackRangeResult.range, + fallbackMessage, + ); + } else { throw new Error("cannot pin error with an invalid range", { - cause: maybeRangeLike, + cause: maybeUriOrRangeLike, }); } - const message = - typeof maybeMessage === "string" ? maybeMessage : undefined; - const viewProvider = getViewProvider(); - await viewProvider?.pinDiagnostic(range, message); + try { + await commands.executeCommand("workbench.view.extension.prettyTsErrors"); + } catch (error) { + logger.warn("failed to open the prettyTsErrors view container", error); + } try { await commands.executeCommand("prettyTsErrors.sidePanel.focus"); - } catch {} + } catch (error) { + logger.warn("failed to focus the prettyTsErrors side panel", error); + } }) ) ); diff --git a/apps/vscode-extension/src/commands/showErrorInSidebar.ts b/apps/vscode-extension/src/commands/showErrorInSidebar.ts index 360dd1c..7b17b0a 100644 --- a/apps/vscode-extension/src/commands/showErrorInSidebar.ts +++ b/apps/vscode-extension/src/commands/showErrorInSidebar.ts @@ -1,7 +1,8 @@ import { commands, type ExtensionContext } from "vscode"; import { execute } from "./execute"; -import { tryEnsureRange } from "./validate"; +import { tryEnsureRange, tryEnsureUri } from "./validate"; import { getViewProvider } from "../provider/webviewViewProvider"; +import { logger } from "../logger"; const COMMAND_ID = "prettyTsErrors.showErrorInSidebar"; @@ -9,21 +10,60 @@ export function registerShowErrorInSidebar(context: ExtensionContext) { context.subscriptions.push( commands.registerCommand( COMMAND_ID, - async (maybeRangeLike?: unknown, maybeMessage?: unknown) => + async ( + maybeUriOrRangeLike?: unknown, + maybeRangeOrMessage?: unknown, + maybeMessage?: unknown, + ) => execute(COMMAND_ID, async () => { - if (maybeRangeLike !== undefined) { - const { isValidRange, range } = tryEnsureRange(maybeRangeLike); - const message = - typeof maybeMessage === "string" ? maybeMessage : undefined; - const viewProvider = getViewProvider(); - if (isValidRange && viewProvider) { - await viewProvider.lockToDiagnostic(range, message); - } + const uriResult = tryEnsureUri(maybeUriOrRangeLike); + const explicitRangeResult = tryEnsureRange(maybeRangeOrMessage); + const fallbackRangeResult = tryEnsureRange(maybeUriOrRangeLike); + + const explicitMessage = + typeof maybeMessage === "string" ? maybeMessage : undefined; + const fallbackMessage = + typeof maybeRangeOrMessage === "string" + ? maybeRangeOrMessage + : undefined; + + const viewProvider = getViewProvider(); + + if (uriResult.isValidUri && explicitRangeResult.isValidRange) { + logger.debug( + `showing diagnostic in sidebar for ${uriResult.uri.toString(true)} at ${explicitRangeResult.range.start.line}:${explicitRangeResult.range.start.character}` + ); + await viewProvider?.lockToDiagnostic( + uriResult.uri, + explicitRangeResult.range, + explicitMessage, + ); + } else if (fallbackRangeResult.isValidRange) { + logger.warn( + "showErrorInSidebar was invoked without a document uri; falling back to the active editor." + ); + await viewProvider?.lockToDiagnostic( + undefined, + fallbackRangeResult.range, + fallbackMessage, + ); + } else { + logger.warn( + "showErrorInSidebar received no valid diagnostic target arguments." + ); + } + + try { + await commands.executeCommand("workbench.view.extension.prettyTsErrors"); + } catch (error) { + logger.warn("failed to open the prettyTsErrors view container", error); } try { await commands.executeCommand("prettyTsErrors.sidePanel.focus"); - } catch {} + } catch (error) { + logger.warn("failed to focus the prettyTsErrors side panel", error); + } }) ) ); diff --git a/apps/vscode-extension/src/diagnosticRichContent.ts b/apps/vscode-extension/src/diagnosticRichContent.ts new file mode 100644 index 0000000..70aa953 --- /dev/null +++ b/apps/vscode-extension/src/diagnosticRichContent.ts @@ -0,0 +1,299 @@ +import { translateDiagnosticMessage } from "@pretty-ts-errors/error-translator"; + +export interface DiagnosticTextNode { + kind: "text"; + text: string; +} + +export interface DiagnosticInlineCodeNode { + kind: "inlineCode"; + text: string; +} + +export interface DiagnosticLinkNode { + kind: "link"; + href: string; + label: string; +} + +export type DiagnosticInlineNode = + | DiagnosticTextNode + | DiagnosticInlineCodeNode + | DiagnosticLinkNode; + +export interface DiagnosticParagraphNode { + kind: "paragraph"; + lines: DiagnosticInlineNode[][]; +} + +export interface DiagnosticCodeBlockNode { + kind: "codeBlock"; + code: string; + language: string | null; +} + +export interface DiagnosticTypeBlockNode { + kind: "typeBlock"; + code: string; + language: string | null; +} + +export interface DiagnosticListNode { + kind: "list"; + items: DiagnosticInlineNode[][]; +} + +export interface DiagnosticPropertyListNode { + kind: "propertyList"; + items: string[]; +} + +export type DiagnosticBlockNode = + | DiagnosticParagraphNode + | DiagnosticCodeBlockNode + | DiagnosticTypeBlockNode + | DiagnosticListNode + | DiagnosticPropertyListNode; + +export interface DiagnosticTranslationContentModel { + blocks: DiagnosticBlockNode[]; + code: number; + rawError: string; +} + +export interface DiagnosticRichContentModel { + body: DiagnosticBlockNode[]; + title: string; + translations: DiagnosticTranslationContentModel[]; +} + +const fencedCodeBlockPattern = + /((?:`{3,})[^\n]*\n[\s\S]*?\n(?:`{3,}))/gu; +const inlineTokenPattern = + /\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)|`([^`]+)`/gu; +const propertyLikeItemPattern = /^[#\w.$:[\]"'-]+$/u; + +function normalizeLineEndings(value: string): string { + return value.replace(/\r\n?/gu, "\n"); +} + +function isTypeBlockLanguage(language: string | null): boolean { + return language === "type" || language === "ts" || language === "typescript"; +} + +function createInlineCodeFence(code: string): string { + const fence = + code.includes("``") ? "```" : code.includes("`") ? "``" : "`"; + return `${fence}${code}${fence}`; +} + +function createFencedCodeBlock(code: string, language: string | null): string { + const fence = code.includes("```") ? "````" : "```"; + const infoString = language ?? ""; + return `${fence}${infoString}\n${code}\n${fence}`; +} + +function parseInlineNodes(text: string): DiagnosticInlineNode[] { + const nodes: DiagnosticInlineNode[] = []; + let lastIndex = 0; + + for (const match of text.matchAll(inlineTokenPattern)) { + const matchIndex = match.index ?? 0; + if (matchIndex > lastIndex) { + nodes.push({ + kind: "text", + text: text.slice(lastIndex, matchIndex), + }); + } + + const linkLabel = match[1]; + const linkHref = match[2]; + const codeText = match[3]; + if (typeof linkLabel === "string" && typeof linkHref === "string") { + nodes.push({ + kind: "link", + href: linkHref, + label: linkLabel, + }); + } else if (typeof codeText === "string") { + nodes.push({ + kind: "inlineCode", + text: codeText, + }); + } + + lastIndex = matchIndex + match[0].length; + } + + const suffix = text.slice(lastIndex); + if (suffix.length > 0) { + nodes.push({ + kind: "text", + text: suffix, + }); + } + + if (nodes.length === 0) { + return [ + { + kind: "text", + text, + }, + ]; + } + + return nodes; +} + +function parseListItems(lines: string[]): string[] { + return lines.map((line) => line.replace(/^[-*]\s+/u, "")); +} + +function isBulletList(lines: string[]): boolean { + return ( + lines.length > 0 && + lines.every((line) => line.trim().length > 0 && /^[-*]\s+/u.test(line)) + ); +} + +function isPropertyList(items: string[]): boolean { + return items.every((item) => propertyLikeItemPattern.test(item)); +} + +function parseMarkdownParagraph(paragraph: string): DiagnosticBlockNode { + const lines = paragraph + .split("\n") + .map((line) => line.replace(/\s+$/u, "")) + .filter((line) => line.length > 0); + + if (isBulletList(lines)) { + const items = parseListItems(lines); + if (isPropertyList(items)) { + return { + kind: "propertyList", + items, + }; + } + + return { + kind: "list", + items: items.map((item) => parseInlineNodes(item)), + }; + } + + return { + kind: "paragraph", + lines: lines.map((line) => parseInlineNodes(line)), + }; +} + +export function parseMarkdownToDiagnosticBlocks( + markdown: string, +): DiagnosticBlockNode[] { + const normalized = normalizeLineEndings(markdown).trim(); + if (normalized.length === 0) { + return []; + } + + const blocks: DiagnosticBlockNode[] = []; + const tokens = normalized.split(fencedCodeBlockPattern).filter(Boolean); + + tokens.forEach((token) => { + const fenceMatch = + /^(?`{3,})(?[^\n]*)\n(?[\s\S]*?)\n\k$/u.exec( + token, + ); + if (fenceMatch?.groups) { + const languageValue = (fenceMatch.groups["language"] ?? "").trim(); + const language = languageValue.length > 0 ? languageValue : null; + const code = fenceMatch.groups["code"] ?? ""; + + blocks.push( + isTypeBlockLanguage(language) + ? { + kind: "typeBlock", + code, + language, + } + : { + kind: "codeBlock", + code, + language, + }, + ); + return; + } + + const paragraphs = token + .split(/\n{2,}/u) + .map((paragraph) => paragraph.trim()) + .filter((paragraph) => paragraph.length > 0); + + paragraphs.forEach((paragraph) => { + blocks.push(parseMarkdownParagraph(paragraph)); + }); + }); + + return blocks; +} + +function renderInlineNodesToMarkdown(nodes: DiagnosticInlineNode[]): string { + return nodes + .map((node) => { + switch (node.kind) { + case "text": + return node.text; + case "inlineCode": + return createInlineCodeFence(node.text); + case "link": + return `[${node.label}](${node.href})`; + } + }) + .join(""); +} + +export function renderDiagnosticBlocksToMarkdown( + blocks: DiagnosticBlockNode[], +): string { + return blocks + .map((block) => { + switch (block.kind) { + case "paragraph": + return block.lines + .map((line) => renderInlineNodesToMarkdown(line)) + .join("\n"); + case "codeBlock": + case "typeBlock": + return createFencedCodeBlock(block.code, block.language); + case "list": + return block.items + .map((item) => `- ${renderInlineNodesToMarkdown(item)}`) + .join("\n"); + case "propertyList": + return block.items.map((item) => `- ${item}`).join("\n"); + } + }) + .join("\n\n"); +} + +function buildTitle(code: string | number | undefined): string { + return typeof code === "number" ? `Error (TS${code})` : "Error"; +} + +export function createDiagnosticRichContentModel( + code: string | number | undefined, + message: string, + bodyMarkdown: string, +): DiagnosticRichContentModel { + return { + body: parseMarkdownToDiagnosticBlocks(bodyMarkdown), + title: buildTitle(code), + translations: translateDiagnosticMessage(message).map((translation) => { + return { + blocks: parseMarkdownToDiagnosticBlocks(translation.body), + code: translation.code, + rawError: translation.rawError, + }; + }), + }; +} diff --git a/apps/vscode-extension/src/diagnostics.ts b/apps/vscode-extension/src/diagnostics.ts index f32288d..d92902c 100644 --- a/apps/vscode-extension/src/diagnostics.ts +++ b/apps/vscode-extension/src/diagnostics.ts @@ -8,6 +8,7 @@ import { } from "vscode"; import { SUPPORTED_DIAGNOSTIC_SOURCES } from "./supportedDiagnosticSources"; import { SUPPORTED_LANGUAGE_IDS } from "./supportedLanguageIds"; +import { createDiagnosticRichContentModel } from "./diagnosticRichContent"; import { hoverProvider } from "./provider/hoverProvider"; import { formattedDiagnosticsStore, @@ -80,7 +81,7 @@ async function updateDiagnosticsForUri(uri: Uri) { ); const items: FormattedDiagnostic[] = await Promise.all( - supportedDiagnostics.map((diagnostic) => getFormattedDiagnostic(diagnostic)) + supportedDiagnostics.map((diagnostic) => getFormattedDiagnostic(uri, diagnostic)) ); if (items.length === 0) { @@ -116,6 +117,7 @@ const CACHE_SIZE_MAX = 100; const cache = new Map(); async function getFormattedDiagnostic( + uri: Uri, diagnostic: Diagnostic ): Promise { // The formatter consumes LSP diagnostics, so keep the VS Code -> LSP conversion as a local first-party boundary. @@ -124,13 +126,23 @@ async function getFormattedDiagnostic( code: lspDiagnostic.code ?? null, message: diagnostic.message, range: lspDiagnostic.range, + uri: uri.toString(), }); let formattedMessages = cache.get(cacheKey); const bodyMarkdown = await buildPrettyDiagnosticMessageMarkdown(diagnostic.message); + const layout = createDiagnosticRichContentModel( + lspDiagnostic.code, + diagnostic.message, + bodyMarkdown, + ); if (formattedMessages === undefined) { logger.trace(`cache miss for diagnostic ${cacheKey}`); - formattedMessages = await createHoverContents(lspDiagnostic, { bodyMarkdown }); + formattedMessages = await createHoverContents(lspDiagnostic, { + bodyMarkdown, + documentUri: uri.toString(), + layout, + }); if (cache.size > CACHE_SIZE_MAX) { const firstCacheKey = cache.keys().next().value!; cache.delete(firstCacheKey); @@ -144,6 +156,8 @@ async function getFormattedDiagnostic( return { bodyMarkdown, + documentUri: uri, + layout, range: diagnostic.range, contents, lspDiagnostic, diff --git a/apps/vscode-extension/src/formattedDiagnosticsStore.ts b/apps/vscode-extension/src/formattedDiagnosticsStore.ts index 9db74d4..3198f0a 100644 --- a/apps/vscode-extension/src/formattedDiagnosticsStore.ts +++ b/apps/vscode-extension/src/formattedDiagnosticsStore.ts @@ -1,10 +1,13 @@ import { MarkdownString, Range, Uri } from "vscode"; +import type { DiagnosticRichContentModel } from "./diagnosticRichContent"; import type { PrettyTsLspDiagnostic } from "./lspDiagnostic"; type StoreKey = Uri["fsPath"]; export interface FormattedDiagnostic { bodyMarkdown: string; + documentUri: Uri; + layout: DiagnosticRichContentModel; range: Range; contents: MarkdownString[]; /** Original LSP diagnostic for on-demand sidebar formatting */ diff --git a/apps/vscode-extension/src/hoverContent.ts b/apps/vscode-extension/src/hoverContent.ts index 18a44f0..7719c76 100644 --- a/apps/vscode-extension/src/hoverContent.ts +++ b/apps/vscode-extension/src/hoverContent.ts @@ -2,9 +2,13 @@ import { createErrorMessagePrettifier, type CodeBlockFn, } from "@pretty-ts-errors/formatter"; -import { translateDiagnosticMessage } from "@pretty-ts-errors/error-translator"; import { MarkdownString } from "vscode"; import { enabledCommands } from "./commands/enabledCommands"; +import { + createDiagnosticRichContentModel, + renderDiagnosticBlocksToMarkdown, + type DiagnosticRichContentModel, +} from "./diagnosticRichContent"; import type { PrettyTsLspDiagnostic } from "./lspDiagnostic"; function encodeCommandArgs(args: unknown[]): string { @@ -28,10 +32,6 @@ function toCommandRange(range: PrettyTsLspDiagnostic["range"]) { }; } -function codeLabel(code: PrettyTsLspDiagnostic["code"]): string { - return typeof code === "number" ? ` (TS${code})` : ""; -} - function buildRevealLink(diagnostic: PrettyTsLspDiagnostic): string | null { const related = diagnostic.relatedInformation?.[0]; if ( @@ -92,29 +92,39 @@ export async function buildPrettyDiagnosticMessageMarkdown( async function createBodyMarkdown( diagnostic: PrettyTsLspDiagnostic, + layout?: DiagnosticRichContentModel, bodyMarkdown?: string, debugHeader?: string, ): Promise { const markdown = new MarkdownString(); + const content = + layout ?? + createDiagnosticRichContentModel( + diagnostic.code, + diagnostic.message, + bodyMarkdown ?? (await buildPrettyDiagnosticMessageMarkdown(diagnostic.message)), + ); if (debugHeader !== undefined) { markdown.appendMarkdown(`${debugHeader}\n\n`); } - markdown.appendMarkdown(`**Error${codeLabel(diagnostic.code)}**\n\n`); - markdown.appendMarkdown( - bodyMarkdown ?? (await buildPrettyDiagnosticMessageMarkdown(diagnostic.message)), - ); + markdown.appendMarkdown(`**${content.title}**\n\n`); + markdown.appendMarkdown(renderDiagnosticBlocksToMarkdown(content.body)); - const translations = translateDiagnosticMessage(diagnostic.message); - if (translations.length > 0) { + if (content.translations.length > 0) { markdown.appendMarkdown("\n\n**Local explanation**"); - translations.forEach((translation) => { + content.translations.forEach((translation) => { markdown.appendMarkdown(`\n\n**TS${translation.code}**\n\n`); - if (translations.length > 1 || translation.rawError !== diagnostic.message) { + if ( + content.translations.length > 1 || + translation.rawError !== diagnostic.message + ) { markdown.appendCodeblock(translation.rawError, "txt"); } - markdown.appendMarkdown(`\n${translation.body}\n`); + markdown.appendMarkdown( + `\n${renderDiagnosticBlocksToMarkdown(translation.blocks)}\n`, + ); }); } @@ -122,14 +132,20 @@ async function createBodyMarkdown( return markdown; } -function createActionsMarkdown(diagnostic: PrettyTsLspDiagnostic): MarkdownString { +function createActionsMarkdown( + diagnostic: PrettyTsLspDiagnostic, + documentUri?: string, +): MarkdownString { const range = toCommandRange(diagnostic.range); const links = [ `[Show in Sidebar](${buildCommandUri( "prettyTsErrors.showErrorInSidebar", - [range, diagnostic.message], + documentUri === undefined + ? [range, diagnostic.message] + : [documentUri, range, diagnostic.message], )})`, `[Pin](${buildCommandUri("prettyTsErrors.pinError", [ + ...(documentUri === undefined ? [] : [documentUri]), range, diagnostic.message, ])})`, @@ -155,14 +171,20 @@ function createActionsMarkdown(diagnostic: PrettyTsLspDiagnostic): MarkdownStrin export async function createHoverContents( diagnostic: PrettyTsLspDiagnostic, - options?: { bodyMarkdown?: string; debugHeader?: string }, + options?: { + bodyMarkdown?: string; + debugHeader?: string; + documentUri?: string; + layout?: DiagnosticRichContentModel; + }, ): Promise { return [ await createBodyMarkdown( diagnostic, + options?.layout, options?.bodyMarkdown, options?.debugHeader, ), - createActionsMarkdown(diagnostic), + createActionsMarkdown(diagnostic, options?.documentUri), ]; } diff --git a/apps/vscode-extension/src/provider/hoverProvider.ts b/apps/vscode-extension/src/provider/hoverProvider.ts index 23465db..d4dbd1e 100644 --- a/apps/vscode-extension/src/provider/hoverProvider.ts +++ b/apps/vscode-extension/src/provider/hoverProvider.ts @@ -66,7 +66,9 @@ async function provideLiveDiagnosticHover(document: TextDocument, position: Posi const contents = await Promise.all( supportedDiagnostics.map((diagnostic) => { - return createHoverContents(toLspDiagnostic(diagnostic)); + return createHoverContents(toLspDiagnostic(diagnostic), { + documentUri: document.uri.toString(), + }); }), ); diff --git a/apps/vscode-extension/src/provider/markdownWebviewProvider.ts b/apps/vscode-extension/src/provider/markdownWebviewProvider.ts index cbdb1a3..81fa7df 100644 --- a/apps/vscode-extension/src/provider/markdownWebviewProvider.ts +++ b/apps/vscode-extension/src/provider/markdownWebviewProvider.ts @@ -1,5 +1,6 @@ import * as vscode from "vscode"; import { enabledCommands } from "../commands/enabledCommands"; +import { logger } from "../logger"; /** * @see https://github.com/microsoft/vscode-extension-samples/blob/main/webview-sample @@ -41,9 +42,26 @@ export class MarkdownWebviewProvider { if (message && message.command) { switch (message.command) { case "ready": { + logger.debug("sidebar webview reported ready"); onReady?.(); break; } + case "log": { + const level = + message["level"] === "error" || + message["level"] === "warn" || + message["level"] === "info" || + message["level"] === "debug" || + message["level"] === "trace" + ? message["level"] + : "info"; + const text = + typeof message["text"] === "string" + ? message["text"] + : "webview emitted a log message without text"; + logger[level](`[webview] ${text}`); + break; + } case "notify": { if (typeof message["text"] === "string") { vscode.window.showInformationMessage(message["text"]); diff --git a/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts b/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts index b11b254..8b02d8e 100644 --- a/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts +++ b/apps/vscode-extension/src/provider/selectedTextHoverProvider.ts @@ -7,6 +7,7 @@ import { window, } from "vscode"; import { formattedDiagnosticsStore } from "../formattedDiagnosticsStore"; +import { createDiagnosticRichContentModel } from "../diagnosticRichContent"; import { toLspDiagnostic } from "../lspDiagnostic"; import { buildPrettyDiagnosticMessageMarkdown, @@ -55,14 +56,22 @@ export function registerSelectedTextHoverProvider(context: ExtensionContext) { const bodyMarkdown = await buildPrettyDiagnosticMessageMarkdown( lspDiagnostic.message, ); - const contents = await createHoverContents(lspDiagnostic, { + const layout = createDiagnosticRichContentModel( + lspDiagnostic.code, + lspDiagnostic.message, bodyMarkdown, + ); + const contents = await createHoverContents(lspDiagnostic, { debugHeader: debugHoverHeader, + documentUri: document.uri.toString(), + layout, }); formattedDiagnosticsStore.set(document.uri.fsPath, [ { bodyMarkdown, + documentUri: document.uri, + layout, range, contents, lspDiagnostic, diff --git a/apps/vscode-extension/src/provider/sidebarViewModel.ts b/apps/vscode-extension/src/provider/sidebarViewModel.ts index 5b13942..3b5f3e3 100644 --- a/apps/vscode-extension/src/provider/sidebarViewModel.ts +++ b/apps/vscode-extension/src/provider/sidebarViewModel.ts @@ -1,5 +1,8 @@ -import { translateDiagnosticMessage } from "@pretty-ts-errors/error-translator"; import type { Range } from "vscode"; +import type { + DiagnosticBlockNode, + DiagnosticTranslationContentModel, +} from "../diagnosticRichContent"; import type { FormattedDiagnostic } from "../formattedDiagnosticsStore"; type SidebarCommandAction = { @@ -31,14 +34,15 @@ export type SidebarActionModel = export interface SidebarTranslationModel { code: number; + blocks: DiagnosticBlockNode[]; rawError: string; - body: string; } export interface SidebarDiagnosticModel { - bodyMarkdown: string; + body: DiagnosticBlockNode[]; code: number | null; message: string; + title: string; actions: SidebarActionModel[]; translations: SidebarTranslationModel[]; note?: string; @@ -96,7 +100,11 @@ export function createSidebarDiagnosticModel( { kind: "command", command: "prettyTsErrors.pinError", - args: [serializeRange(diagnostic.range), diagnostic.lspDiagnostic.message], + args: [ + diagnostic.documentUri.toString(), + serializeRange(diagnostic.range), + diagnostic.lspDiagnostic.message, + ], icon: "codicon-pinned", title: "Pin error", }, @@ -122,12 +130,23 @@ export function createSidebarDiagnosticModel( }); } + const translations: SidebarTranslationModel[] = diagnostic.layout.translations.map( + (translation: DiagnosticTranslationContentModel) => { + return { + blocks: translation.blocks, + code: translation.code, + rawError: translation.rawError, + }; + }, + ); + const model: SidebarDiagnosticModel = { - bodyMarkdown: diagnostic.bodyMarkdown, + body: diagnostic.layout.body, code, message: diagnostic.lspDiagnostic.message, + title: diagnostic.layout.title, actions, - translations: translateDiagnosticMessage(diagnostic.lspDiagnostic.message), + translations, }; if (options?.note !== undefined) { diff --git a/apps/vscode-extension/src/provider/webviewViewProvider.ts b/apps/vscode-extension/src/provider/webviewViewProvider.ts index c8b48f0..87d4a7a 100644 --- a/apps/vscode-extension/src/provider/webviewViewProvider.ts +++ b/apps/vscode-extension/src/provider/webviewViewProvider.ts @@ -2,6 +2,7 @@ import type { ExtensionContext } from "vscode"; import * as vscode from "vscode"; import { has } from "@pretty-ts-errors/utils"; import { formattedDiagnosticsStore, type FormattedDiagnostic } from "../formattedDiagnosticsStore"; +import { logger } from "../logger"; import { SUPPORTED_LANGUAGE_IDS } from "../supportedLanguageIds"; import { MarkdownWebviewProvider } from "./markdownWebviewProvider"; import { createSidebarDiagnosticModel, type SidebarViewModel } from "./sidebarViewModel"; @@ -72,24 +73,22 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { constructor(private readonly provider: MarkdownWebviewProvider) {} - async lockToDiagnostic(range: vscode.Range, message?: string) { - const activeEditor = vscode.window.activeTextEditor; - if (!activeEditor) { - return; - } - - const diagnostics = - formattedDiagnosticsStore.get(activeEditor.document.uri.fsPath) ?? []; - const diagnostic = diagnostics.find( - (item) => - item.range.isEqual(range) && - (message === undefined || item.lspDiagnostic.message === message) - ); - + async lockToDiagnostic( + uri: vscode.Uri | undefined, + range: vscode.Range, + message?: string, + ) { + const diagnostic = this.findDiagnostic(uri, range, message); if (!diagnostic) { + logger.warn( + `unable to lock sidebar to diagnostic at ${range.start.line}:${range.start.character}` + ); return; } + logger.debug( + `locking sidebar to diagnostic ${diagnostic.documentUri.toString(true)} at ${range.start.line}:${range.start.character}` + ); this.mode = "locked"; this.lockedContent = diagnostic; this.skipNextSelectionChange = true; @@ -100,20 +99,16 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { } } - async pinDiagnostic(range: vscode.Range, message?: string) { - const activeEditor = vscode.window.activeTextEditor; - if (!activeEditor) { - return; - } - - const diagnostics = - formattedDiagnosticsStore.get(activeEditor.document.uri.fsPath) ?? []; - const diagnostic = diagnostics.find( - (item) => - item.range.isEqual(range) && - (message === undefined || item.lspDiagnostic.message === message) - ); + async pinDiagnostic( + uri: vscode.Uri | undefined, + range: vscode.Range, + message?: string, + ) { + const diagnostic = this.findDiagnostic(uri, range, message); if (!diagnostic) { + logger.warn( + `unable to pin diagnostic at ${range.start.line}:${range.start.character}` + ); return; } @@ -139,6 +134,7 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { webviewView: vscode.WebviewView, _context: vscode.WebviewViewResolveContext ): Promise { + logger.debug("resolving prettyTsErrors side panel webview"); this.webview = webviewView.webview; this.view = webviewView; webviewView.webview.options = this.provider.getWebviewOptions(); @@ -213,6 +209,53 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { return disposables; } + private findDiagnostic( + uri: vscode.Uri | undefined, + range: vscode.Range, + message?: string, + ): FormattedDiagnostic | null { + const activeEditor = vscode.window.activeTextEditor; + const storeKey = uri?.fsPath ?? activeEditor?.document.uri.fsPath; + if (!storeKey) { + logger.warn("cannot resolve diagnostic without a uri or active editor"); + return null; + } + + const diagnostics = formattedDiagnosticsStore.get(storeKey) ?? []; + if (diagnostics.length === 0) { + logger.warn(`no formatted diagnostics were found for ${storeKey}`); + return null; + } + + const exactMatch = diagnostics.find((item) => { + return ( + item.range.isEqual(range) && + (message === undefined || item.lspDiagnostic.message === message) + ); + }); + if (exactMatch) { + return exactMatch; + } + + const overlappingMatch = diagnostics.find((item) => { + return ( + item.range.intersection(range) !== undefined && + (message === undefined || item.lspDiagnostic.message === message) + ); + }); + if (overlappingMatch) { + logger.warn( + `diagnostic lookup for ${storeKey} fell back from exact range matching to overlap matching` + ); + return overlappingMatch; + } + + logger.warn( + `diagnostic lookup failed for ${storeKey}; formatted diagnostics count=${diagnostics.length}` + ); + return null; + } + private getActiveDiagnosticItems(): FormattedDiagnostic[] { switch (this.mode) { case "cursor": @@ -262,15 +305,20 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { async refresh(webview: vscode.Webview) { if (this.view && !this.view.visible) { + logger.trace("skipping side panel refresh because the view is hidden"); return; } const model = this.createViewModel(this.getActiveDiagnosticItems()); const modelKey = JSON.stringify(model); if (modelKey === this.lastModelKey) { + logger.trace("skipping side panel refresh because the model did not change"); return; } + logger.debug( + `posting side panel model with ${model.diagnostics.length} active diagnostic(s) and ${model.pinned === null ? 0 : 1} pinned diagnostic(s)` + ); webview.postMessage({ command: "render-sidebar", model }); this.lastModelKey = modelKey; } diff --git a/apps/vscode-extension/src/test/suite/extension.test.ts b/apps/vscode-extension/src/test/suite/extension.test.ts index a8b4cea..6636a56 100644 --- a/apps/vscode-extension/src/test/suite/extension.test.ts +++ b/apps/vscode-extension/src/test/suite/extension.test.ts @@ -6,43 +6,14 @@ suite("Extension Test Suite", () => { test("shows the custom hover for supported JS diagnostics", async function () { this.timeout(30_000); - const extension = vscode.extensions.all.find((candidate) => { - return candidate.packageJSON.name === "pretty-ts-errors"; - }); - assert.ok(extension, "pretty-ts-errors extension should be discoverable"); - - await extension.activate(); - - const exampleUri = vscode.Uri.file( - path.resolve(extension.extensionPath, "../../examples/errors.js") + const exampleUri = await openExampleDocument(); + const diagnostic = await waitForDiagnostic(exampleUri, 2741); + const markdownStrings = await getHoverMarkdownStrings( + exampleUri, + diagnostic.range.start, ); - const document = await vscode.workspace.openTextDocument(exampleUri); - await vscode.window.showTextDocument(document); - const diagnostic = await waitForDiagnostic(exampleUri, 2741); - const hovers = - await vscode.commands.executeCommand( - "vscode.executeHoverProvider", - exampleUri, - diagnostic.range.start - ); - - assert.ok(hovers && hovers.length > 0, "expected hover providers to return content"); - - const hoverText = hovers - .flatMap((hover) => hover.contents) - .map((content) => { - if (typeof content === "string") { - return content; - } - - if (content instanceof vscode.MarkdownString) { - return content.value; - } - - return "value" in content ? content.value : ""; - }) - .join("\n"); + const hoverText = markdownStrings.map((content) => content.value).join("\n"); assert.match(hoverText, /Show in Sidebar/u); assert.match(hoverText, /Local explanation/u); @@ -51,8 +22,82 @@ suite("Extension Test Suite", () => { assert.match(hoverText, /street: string/u); assert.match(hoverText, /country: string/u); }); + + test("renders TS2739 as safe markdown with the missing-property list", async function () { + this.timeout(30_000); + + const exampleUri = await openExampleDocument(); + const diagnostic = await waitForDiagnostic(exampleUri, 2739); + const markdownStrings = await getHoverMarkdownStrings( + exampleUri, + diagnostic.range.start, + ); + + assert.ok(markdownStrings.length > 0, "expected markdown hover content"); + + const body = markdownStrings[0]; + assert.ok(body instanceof vscode.MarkdownString, "expected markdown body"); + assert.equal(body.supportHtml, false, "hover body must not enable HTML"); + + const hoverText = markdownStrings.map((content) => content.value).join("\n"); + assert.match(hoverText, /TS2739/u); + assert.match(hoverText, /Local explanation/u); + assert.match(hoverText, /- name/u); + assert.match(hoverText, /- age/u); + assert.match(hoverText, /- address/u); + }); + + test("accepts uri-based sidebar command targets", async function () { + this.timeout(30_000); + + const exampleUri = await openExampleDocument(); + const diagnostic = await waitForDiagnostic(exampleUri, 2739); + + await vscode.commands.executeCommand( + "prettyTsErrors.showErrorInSidebar", + exampleUri.toString(), + diagnostic.range, + diagnostic.message, + ); + }); }); +async function openExampleDocument(): Promise { + const extension = vscode.extensions.all.find((candidate) => { + return candidate.packageJSON.name === "pretty-ts-errors"; + }); + assert.ok(extension, "pretty-ts-errors extension should be discoverable"); + + await extension.activate(); + + const exampleUri = vscode.Uri.file( + path.resolve(extension.extensionPath, "../../examples/errors.js") + ); + const document = await vscode.workspace.openTextDocument(exampleUri); + await vscode.window.showTextDocument(document); + return document.uri; +} + +async function getHoverMarkdownStrings( + uri: vscode.Uri, + position: vscode.Position, +): Promise { + const hovers = + await vscode.commands.executeCommand( + "vscode.executeHoverProvider", + uri, + position, + ); + + assert.ok(hovers && hovers.length > 0, "expected hover providers to return content"); + + return hovers + .flatMap((hover) => hover.contents) + .filter((content): content is vscode.MarkdownString => { + return content instanceof vscode.MarkdownString; + }); +} + async function waitForDiagnostic( uri: vscode.Uri, code: number, diff --git a/apps/vscode-extension/webview/index.js b/apps/vscode-extension/webview/index.js index 0a531ce..18e3285 100644 --- a/apps/vscode-extension/webview/index.js +++ b/apps/vscode-extension/webview/index.js @@ -20,15 +20,47 @@ * }} SidebarActionModel * * @typedef {{ + * kind: "text"; + * text: string; + * } | { + * kind: "inlineCode"; + * text: string; + * } | { + * kind: "link"; + * href: string; + * label: string; + * }} SidebarInlineNode + * + * @typedef {{ + * kind: "paragraph"; + * lines: SidebarInlineNode[][]; + * } | { + * kind: "codeBlock"; + * code: string; + * language: string | null; + * } | { + * kind: "typeBlock"; + * code: string; + * language: string | null; + * } | { + * kind: "list"; + * items: SidebarInlineNode[][]; + * } | { + * kind: "propertyList"; + * items: string[]; + * }} SidebarBlockNode + * + * @typedef {{ + * blocks: SidebarBlockNode[]; * code: number; * rawError: string; - * body: string; * }} SidebarTranslationModel * * @typedef {{ - * bodyMarkdown: string; + * body: SidebarBlockNode[]; * code: number | null; * message: string; + * title: string; * actions: SidebarActionModel[]; * translations: SidebarTranslationModel[]; * note?: string; @@ -59,6 +91,16 @@ const api = (function () { ready() { vscode.postMessage({ command: "ready" }); }, + /** + * @param {"trace" | "debug" | "info" | "warn" | "error"} level + * @param {string} text + */ + log(level, text) { + const consoleMethod = + typeof console[level] === "function" ? console[level] : console.log; + consoleMethod.call(console, `[pretty-ts-errors:webview] ${text}`); + vscode.postMessage({ command: "log", level, text }); + }, /** * @param {string} text */ @@ -70,10 +112,30 @@ const api = (function () { const $content = window.document.querySelector("#content"); +window.addEventListener("error", (event) => { + api.log( + "error", + `window error: ${event.message} at ${event.filename}:${event.lineno}:${event.colno}`, + ); +}); + +window.addEventListener("unhandledrejection", (event) => { + const reason = + event.reason instanceof Error + ? event.reason.stack ?? event.reason.message + : String(event.reason); + api.log("error", `unhandled rejection: ${reason}`); +}); + window.addEventListener("message", (event) => { const message = event.data; if (message?.command === "render-sidebar" && $content instanceof HTMLElement) { - renderSidebar($content, /** @type {SidebarViewModel} */ (message.model)); + const model = /** @type {SidebarViewModel} */ (message.model); + api.log( + "debug", + `render-sidebar received ${model.diagnostics.length} diagnostics and ${model.pinned === null ? 0 : 1} pinned item(s)`, + ); + renderSidebar($content, model); } }); @@ -93,6 +155,7 @@ window.document.addEventListener("click", (event) => { }); api.ready(); +api.log("debug", "sidebar webview script initialized"); /** * @param {HTMLElement} container @@ -100,27 +163,34 @@ api.ready(); */ function renderSidebar(container, model) { container.replaceChildren(); + const stack = document.createElement("div"); + stack.className = "diagnostic-stack"; if (model.pinned !== null) { - container.appendChild(createPinnedSection(model.pinned)); + stack.appendChild(createPinnedSection(model.pinned)); } if (model.diagnostics.length === 0) { if (model.pinned === null) { - const empty = document.createElement("p"); + const empty = document.createElement("section"); empty.className = "sidebar-empty-state"; - empty.textContent = model.emptyMessage; - container.appendChild(empty); + const title = document.createElement("h2"); + title.className = "empty-state-title"; + title.textContent = "No active diagnostics"; + const body = document.createElement("p"); + body.textContent = model.emptyMessage; + empty.append(title, body); + stack.appendChild(empty); } + container.appendChild(stack); return; } - model.diagnostics.forEach((diagnostic, index) => { - if (index > 0 || model.pinned !== null) { - container.appendChild(document.createElement("hr")); - } - container.appendChild(createDiagnosticCard(diagnostic)); + model.diagnostics.forEach((diagnostic) => { + stack.appendChild(createDiagnosticCard(diagnostic)); }); + + container.appendChild(stack); } /** @@ -165,11 +235,18 @@ function createDiagnosticCard(diagnostic) { const header = document.createElement("div"); header.className = "diagnostic-header"; - const title = document.createElement("div"); + const titleGroup = document.createElement("div"); + titleGroup.className = "diagnostic-title-group"; + + const eyebrow = document.createElement("span"); + eyebrow.className = "diagnostic-eyebrow"; + eyebrow.textContent = "TypeScript diagnostic"; + + const title = document.createElement("h2"); title.className = "diagnostic-title"; - title.textContent = - diagnostic.code === null ? "Error" : `Error (TS${diagnostic.code})`; - header.appendChild(title); + title.textContent = diagnostic.title; + titleGroup.append(eyebrow, title); + header.appendChild(titleGroup); const actions = document.createElement("div"); actions.className = "diagnostic-actions"; @@ -181,7 +258,7 @@ function createDiagnosticCard(diagnostic) { card.appendChild(header); if (typeof diagnostic.note === "string" && diagnostic.note.length > 0) { - const note = document.createElement("p"); + const note = document.createElement("div"); note.className = "diagnostic-note"; note.textContent = diagnostic.note; card.appendChild(note); @@ -189,7 +266,7 @@ function createDiagnosticCard(diagnostic) { const messageSection = document.createElement("section"); messageSection.className = "diagnostic-message-section"; - appendMarkdownBlocks(messageSection, diagnostic.bodyMarkdown); + appendLayoutBlocks(messageSection, diagnostic.body); card.appendChild(messageSection); if (diagnostic.translations.length > 0) { @@ -209,13 +286,22 @@ function createTranslationsSection(translations, originalMessage) { const section = document.createElement("section"); section.className = "translation-section"; + const header = document.createElement("div"); + header.className = "translation-section-header"; + + const label = document.createElement("span"); + label.className = "section-eyebrow"; + label.textContent = "Local explanation"; + header.appendChild(label); + section.appendChild(header); + translations.forEach((translation) => { const card = document.createElement("div"); card.className = "translation-card"; const title = document.createElement("div"); title.className = "translation-title"; - title.textContent = `Local explanation · TS${translation.code}`; + title.textContent = `TS${translation.code}`; card.appendChild(title); if (translations.length > 1 || translation.rawError !== originalMessage) { @@ -226,7 +312,7 @@ function createTranslationsSection(translations, originalMessage) { card.appendChild(pre); } - appendMarkdownParagraphs(card, translation.body); + appendLayoutBlocks(card, translation.blocks); section.appendChild(card); }); @@ -236,93 +322,115 @@ function createTranslationsSection(translations, originalMessage) { /** * @param {HTMLElement} container - * @param {string} markdown + * @param {SidebarBlockNode[]} blocks */ -function appendMarkdownBlocks(container, markdown) { - const tokens = markdown - .split(/((?:`{3,})[^\n]*\n[\s\S]*?\n(?:`{3,}))/gu) - .filter(Boolean); - - tokens.forEach((token) => { - const fenceMatch = /^(?`{3,})(?[^\n]*)\n(?[\s\S]*?)\n\k$/u.exec( - token, - ); - if (fenceMatch?.groups) { - const codeContainer = document.createElement("div"); - codeContainer.className = "code-container"; - - const copyButton = document.createElement("button"); - copyButton.className = "copy-button"; - copyButton.type = "button"; - copyButton.title = "Copy code block"; - copyButton.dataset.copyContent = fenceMatch.groups.code; - copyButton.appendChild(createCodicon("codicon-copy")); - codeContainer.appendChild(copyButton); - - const pre = document.createElement("pre"); - const code = document.createElement("code"); - code.textContent = fenceMatch.groups.code; - pre.appendChild(code); - codeContainer.appendChild(pre); - container.appendChild(codeContainer); - return; +function appendLayoutBlocks(container, blocks) { + blocks.forEach((block) => { + switch (block.kind) { + case "paragraph": { + const paragraph = document.createElement("p"); + paragraph.className = "diagnostic-paragraph"; + block.lines.forEach((line, index) => { + paragraph.appendChild(createInlineNodesFragment(line)); + if (index < block.lines.length - 1) { + paragraph.appendChild(document.createElement("br")); + } + }); + container.appendChild(paragraph); + return; + } + case "codeBlock": + case "typeBlock": { + container.appendChild( + createCodeBlockElement( + block.code, + block.kind === "typeBlock" ? "type-code-container" : "", + ), + ); + return; + } + case "list": { + const list = document.createElement("ul"); + list.className = "diagnostic-list"; + block.items.forEach((item) => { + const listItem = document.createElement("li"); + listItem.appendChild(createInlineNodesFragment(item)); + list.appendChild(listItem); + }); + container.appendChild(list); + return; + } + case "propertyList": { + const list = document.createElement("div"); + list.className = "property-list"; + block.items.forEach((item) => { + const chip = document.createElement("span"); + chip.className = "property-chip"; + chip.textContent = item; + list.appendChild(chip); + }); + container.appendChild(list); + return; + } } - - appendMarkdownParagraphs(container, token); }); } /** - * @param {HTMLElement} container - * @param {string} markdown + * @param {string} codeText + * @param {string} [extraClassName] */ -function appendMarkdownParagraphs(container, markdown) { - const paragraphs = markdown.split(/\r?\n\r?\n/gu).filter(Boolean); - paragraphs.forEach((paragraph) => { - const element = document.createElement("p"); - const lines = paragraph.split(/\r?\n/gu); - lines.forEach((line, index) => { - element.appendChild(createInlineMarkdownFragment(line)); - if (index < lines.length - 1) { - element.appendChild(document.createElement("br")); - } - }); - container.appendChild(element); - }); +function createCodeBlockElement(codeText, extraClassName = "") { + const codeContainer = document.createElement("div"); + codeContainer.className = ["code-container", extraClassName] + .filter(Boolean) + .join(" "); + + const copyButton = document.createElement("button"); + copyButton.className = "copy-button"; + copyButton.type = "button"; + copyButton.title = "Copy code block"; + copyButton.setAttribute("aria-label", "Copy code block"); + copyButton.dataset.copyContent = codeText; + copyButton.appendChild(createCodicon("codicon-copy")); + codeContainer.appendChild(copyButton); + + const pre = document.createElement("pre"); + const code = document.createElement("code"); + code.textContent = codeText; + pre.appendChild(code); + codeContainer.appendChild(pre); + + return codeContainer; } /** - * @param {string} text + * @param {SidebarInlineNode[]} nodes */ -function createInlineMarkdownFragment(text) { +function createInlineNodesFragment(nodes) { const fragment = document.createDocumentFragment(); - const tokenPattern = /\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)|`([^`]+)`/gu; - let lastIndex = 0; - - for (const match of text.matchAll(tokenPattern)) { - const matchIndex = match.index ?? 0; - if (matchIndex > lastIndex) { - fragment.append(text.slice(lastIndex, matchIndex)); - } - - const [, linkLabel, linkHref, codeText] = match; - if (typeof linkLabel === "string" && typeof linkHref === "string") { - const link = document.createElement("a"); - link.href = linkHref; - link.textContent = linkLabel; - fragment.appendChild(link); - } else if (typeof codeText === "string") { - const code = document.createElement("code"); - code.textContent = codeText; - fragment.appendChild(code); + nodes.forEach((node) => { + switch (node.kind) { + case "text": + fragment.append(node.text); + return; + case "inlineCode": { + const code = document.createElement("code"); + code.textContent = node.text; + fragment.appendChild(code); + return; + } + case "link": { + const link = document.createElement("a"); + link.href = node.href; + link.target = "_blank"; + link.rel = "noreferrer noopener"; + link.textContent = node.label; + fragment.appendChild(link); + return; + } } - - lastIndex = matchIndex + match[0].length; - } - - if (lastIndex < text.length) { - fragment.append(text.slice(lastIndex)); - } + }); return fragment; } @@ -352,6 +460,7 @@ function createCommandLink(command, args, title, icon, extraClassName = "") { const link = document.createElement("a"); link.href = `command:${command}?${encodeURIComponent(JSON.stringify(args))}`; link.title = title; + link.setAttribute("aria-label", title); link.className = ["action-link", extraClassName].filter(Boolean).join(" "); link.appendChild(createCodicon(icon)); return link; @@ -366,6 +475,9 @@ function createExternalLink(href, title, icon) { const link = document.createElement("a"); link.href = href; link.title = title; + link.setAttribute("aria-label", title); + link.target = "_blank"; + link.rel = "noreferrer noopener"; link.className = "action-link"; link.appendChild(createCodicon(icon)); return link; @@ -380,6 +492,7 @@ function createCopyButton(value, title, icon) { const button = document.createElement("button"); button.type = "button"; button.title = title; + button.setAttribute("aria-label", title); button.className = "action-button"; button.dataset.copyContent = value; button.appendChild(createCodicon(icon)); @@ -400,5 +513,5 @@ function createCodicon(iconClass) { */ async function copyToClipboard(text) { await navigator.clipboard.writeText(text); - api.notify("Copied type to clipboard!"); + api.notify("Copied block to clipboard!"); } diff --git a/apps/vscode-extension/webview/style.css b/apps/vscode-extension/webview/style.css index cf65ebb..c141934 100644 --- a/apps/vscode-extension/webview/style.css +++ b/apps/vscode-extension/webview/style.css @@ -1,197 +1,296 @@ +:root { + color-scheme: light dark; +} + body { - font-family: - -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif; - line-height: 1.6; - max-width: 800px; - margin: 0 auto; - padding: 4px 0 12px; + margin: 0; + background: var(--vscode-editor-background); color: var(--vscode-editor-foreground); + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", "Inter", "Roboto", sans-serif; + line-height: 1.55; } #content { - padding: 0 12px; + max-width: 960px; + margin: 0 auto; + padding: 18px 14px 28px; } -h1, -h2, -h3, -h4, -h5, -h6 { - color: var(--vscode-foreground); - margin-top: 1.5em; - margin-bottom: 0.5em; +#content a { + color: var(--vscode-textLink-foreground, var(--vscode-editor-foreground)); + text-decoration: none; +} + +#content a:hover { + text-decoration: underline; } pre { - background-color: var(--vscode-textCodeBlock-background) !important; - border: 1px solid var(--vscode-widget-border); - border-radius: 4px; - padding: 12px 16px; + margin: 0; + padding: 14px 16px; overflow-x: auto; - margin: 0.75em 0; - line-height: 1.5; + border: 1px solid var(--vscode-widget-border, rgba(127, 127, 127, 0.24)); + border-radius: 14px; + background: var(--vscode-textCodeBlock-background) !important; + line-height: 1.55; } -/* Override Shiki's background to match VS Code */ +code, pre code { - background-color: transparent !important; - border-radius: 3px; - padding: 0 !important; - font-weight: var(--vscode-editor-font-weight, normal); - font-size: var(--vscode-editor-font-size, medium); font-family: var(--vscode-editor-font-family), "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace; + font-size: 0.95em; } -.copy-button { - position: absolute; - top: 8px; - right: 8px; - background: var(--vscode-button-background); - color: var(--vscode-button-foreground); - border: none; - border-radius: 3px; - padding: 4px 8px; - cursor: pointer; - font-size: 12px; - opacity: 0; - transition: opacity 0.2s; +pre code { + background: transparent !important; + padding: 0 !important; } -.code-container { - position: relative; - max-width: 100%; - overflow-x: auto; +.diagnostic-stack { + display: grid; + gap: 14px; } -.code-container pre { - margin: 0; +.diagnostic-card, +.pinned-section, +.sidebar-empty-state { + border: 1px solid var(--vscode-widget-border, rgba(127, 127, 127, 0.22)); + border-radius: 18px; + background: var( + --vscode-editorWidget-background, + rgba(127, 127, 127, 0.05) + ); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02); } -.code-container:hover .copy-button { - opacity: 1; +.diagnostic-card { + padding: 18px; } -.copy-button:hover { - background: var(--vscode-button-hoverBackground); +.diagnostic-header, +.pinned-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 16px; } -.diagnostic-card { - padding: 4px 0 12px; +.diagnostic-title-group { + display: grid; + gap: 6px; + min-width: 0; } -.diagnostic-header { - display: flex; +.diagnostic-eyebrow, +.section-eyebrow, +.pinned-label { + display: inline-flex; align-items: center; - justify-content: space-between; - gap: 8px; - margin-bottom: 8px; + gap: 6px; + text-transform: uppercase; + letter-spacing: 0.08em; + font-size: 11px; + color: var(--vscode-descriptionForeground); } -.diagnostic-title { - color: #f96363; +.diagnostic-title, +.empty-state-title { + margin: 0; + font-size: 16px; font-weight: 600; + line-height: 1.3; + color: var(--vscode-editor-foreground); } .diagnostic-actions { display: flex; align-items: center; gap: 8px; + flex-wrap: wrap; } .action-link, -.action-button { +.action-button, +.copy-button, +.unpin-button { display: inline-flex; align-items: center; justify-content: center; - width: 24px; - height: 24px; - border-radius: 4px; - color: var(--vscode-icon-foreground); + width: 32px; + height: 32px; + border-radius: 10px; + border: 1px solid transparent; background: transparent; - border: none; + color: var(--vscode-icon-foreground); cursor: pointer; text-decoration: none; + transition: + background-color 0.15s ease, + border-color 0.15s ease, + opacity 0.15s ease; } .action-link:hover, .action-button:hover, +.copy-button:hover, .unpin-button:hover { - background: var(--vscode-toolbar-hoverBackground, rgba(128, 128, 128, 0.12)); + background: var( + --vscode-toolbar-hoverBackground, + rgba(127, 127, 127, 0.1) + ); + border-color: var(--vscode-widget-border, rgba(127, 127, 127, 0.24)); } .diagnostic-note { + margin: 0 0 16px; + padding: 10px 12px; + border-radius: 12px; + background: var( + --vscode-textBlockQuote-background, + rgba(127, 127, 127, 0.06) + ); color: var(--vscode-descriptionForeground); - font-style: italic; - margin: 0 0 8px; } -.sidebar-empty-state { - color: var(--vscode-descriptionForeground); +.diagnostic-message-section, +.translation-card { + display: grid; + gap: 12px; } -.translation-section { - padding-top: 12px; +.diagnostic-paragraph { + margin: 0; + white-space: pre-wrap; } -.translation-card { - margin-top: 12px; - padding: 12px; - border: 1px solid var(--vscode-panel-border); +.diagnostic-paragraph code, +.diagnostic-list code { + padding: 0.1rem 0.35rem; border-radius: 6px; + background: var(--vscode-textCodeBlock-background); } -.translation-title { - font-weight: 600; - margin-bottom: 8px; +.diagnostic-list { + display: grid; + gap: 6px; + margin: 0; + padding-left: 20px; } -#content a { - text-decoration: none; +.property-list { + display: flex; + flex-wrap: wrap; + gap: 8px; } -#content hr { +.property-chip { + display: inline-flex; + align-items: center; + min-height: 28px; + padding: 0 10px; + border-radius: 999px; + border: 1px solid var(--vscode-widget-border, rgba(127, 127, 127, 0.24)); + background: rgba(127, 127, 127, 0.08); + font-family: + var(--vscode-editor-font-family), "SF Mono", Monaco, "Cascadia Code", + "Roboto Mono", Consolas, "Courier New", monospace; + font-size: 12px; +} + +.code-container { + position: relative; + overflow: hidden; + border: 1px solid var(--vscode-widget-border, rgba(127, 127, 127, 0.24)); + border-radius: 16px; + background: var(--vscode-textCodeBlock-background); +} + +.type-code-container { + background: var( + --vscode-editorHoverWidget-background, + var(--vscode-textCodeBlock-background) + ); +} + +.code-container pre { border: none; - border-top: 1px solid var(--vscode-widget-border, rgba(128, 128, 128, 0.2)); - margin: 12px 0; + border-radius: 0; + background: transparent !important; } -.webview-panel .title-actions { - float: right; +.copy-button { + position: absolute; + top: 10px; + right: 10px; + opacity: 0; } -.pinned-section { - margin: 0 -12px; - background-color: rgba(255, 235, 59, 0.04); - padding: 4px 12px; - margin-bottom: 8px; - overflow: hidden; +.code-container:hover .copy-button, +.code-container:focus-within .copy-button { + opacity: 1; } -.pinned-header { +.translation-section { + margin-top: 18px; + padding-top: 18px; + border-top: 1px solid var(--vscode-widget-border, rgba(127, 127, 127, 0.2)); + display: grid; + gap: 12px; +} + +.translation-section-header { display: flex; align-items: center; justify-content: space-between; - margin-bottom: 4px; +} + +.translation-card { + padding: 14px; + border: 1px solid var(--vscode-panel-border, rgba(127, 127, 127, 0.18)); + border-radius: 14px; + background: rgba(127, 127, 127, 0.03); +} + +.translation-title { font-size: 12px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + color: var(--vscode-editor-foreground); } -.pinned-label { - display: flex; - align-items: center; - gap: 4px; +.sidebar-empty-state { + padding: 20px; + display: grid; + gap: 8px; +} + +.sidebar-empty-state p { + margin: 0; color: var(--vscode-descriptionForeground); } -.unpin-button { - color: var(--vscode-icon-foreground); - cursor: pointer; - padding: 2px; - line-height: 1; +.pinned-section { + padding: 12px; + display: grid; + gap: 12px; + background: var( + --vscode-editorHoverWidget-background, + rgba(127, 127, 127, 0.06) + ); +} + +.pinned-header { + align-items: center; } -.pinned-message { +.pinned-label { color: var(--vscode-descriptionForeground); } + +.webview-panel .title-actions { + float: right; +} diff --git a/examples/errors.js b/examples/errors.js index 0c0f695..f67dcf9 100644 --- a/examples/errors.js +++ b/examples/errors.js @@ -34,6 +34,30 @@ const getPerson = () => ({ }, }); +/** + * Plural-form hover example: + * should trigger "is missing the following properties from type ..." + * with a richer inline object shape for direct visual comparison. + * + * @type {{ + * user: { + * name: string; + * email: `${string}@${string}.${string}`; + * age: number; + * address: { + * street: string; + * city: string; + * country: string; + * }; + * }; + * }} + */ +const pluralHoverExample = { + user: { + email: "usr@usr.io", + }, +}; + /** * @typedef {Object} JSAnimal * @property {string} name diff --git a/packages/error-translator/test/engine.test.ts b/packages/error-translator/test/engine.test.ts index f3cd3f9..ba786b2 100644 --- a/packages/error-translator/test/engine.test.ts +++ b/packages/error-translator/test/engine.test.ts @@ -203,4 +203,18 @@ describe("translateDiagnosticMessage", () => { source: "curated", }); }); + + it("Should preserve the concrete missing-property details for TS2739", () => { + const [translation] = translateDiagnosticMessage( + "Type '{ email: \"usr@usr.io\"; }' is missing the following properties from type '{ name: string; email: `${string}@${string}.${string}`; age: number; address: { street: string; city: string; country: string; }; }': name, age, address", + ); + + expect(translation).toMatchObject({ + code: 2739, + source: "curated", + }); + expect(translation?.body).toContain("missing some required properties"); + expect(translation?.body).toContain("name, age, address"); + expect(translation?.body).toContain("usr@usr.io"); + }); }); diff --git a/packages/formatter/test/formatter.vitest.ts b/packages/formatter/test/formatter.vitest.ts index 7266401..2fe4a73 100644 --- a/packages/formatter/test/formatter.vitest.ts +++ b/packages/formatter/test/formatter.vitest.ts @@ -39,6 +39,22 @@ describe("formatter", (context) => { ); }); + it("formats missing-property diagnostics as a structured list", async () => { + const result = await prettifyErrorMessage( + "Type '{ email: \"usr@usr.io\"; }' is missing the following properties from type '{ name: string; email: `${string}@${string}.${string}`; age: number; address: { street: string; city: string; country: string; }; }': name, age, address" + ); + + expect(result).toContain( + "is missing the following properties from type" + ); + expect(result).toContain( + "
    • name
    • age
    • address
    " + ); + expect(result).toContain("```type"); + expect(result).toContain("name: string"); + expect(result).toContain("street: string; city: string; country: string"); + }); + it("prettifies type with params destructuring", async () => { await expect( formatType( From 54104d6e4eafb6cff705733d613cbdb4fabe0876 Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Thu, 25 Jun 2026 00:32:38 +0200 Subject: [PATCH 09/13] backup --- apps/vscode-extension/package.json | 2 +- apps/vscode-extension/project.json | 3 + .../provider/sidebarInlineTypeFormatter.ts | 129 ++++++++++ .../src/provider/sidebarSyntaxHighlighter.ts | 164 ++++++++++++ .../src/provider/sidebarViewModel.ts | 146 ++++++++++- .../src/provider/webviewViewProvider.ts | 54 ++-- apps/vscode-extension/webview/index.js | 103 +++++++- apps/vscode-extension/webview/style.css | 24 ++ .../formatter/src/formatTypeWithPrettier.ts | 8 +- .../__snapshots__/formatter.vitest.ts.snap | 234 ++++++++++-------- packages/formatter/test/formatter.vitest.ts | 14 +- 11 files changed, 739 insertions(+), 142 deletions(-) create mode 100644 apps/vscode-extension/src/provider/sidebarInlineTypeFormatter.ts create mode 100644 apps/vscode-extension/src/provider/sidebarSyntaxHighlighter.ts diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json index adb30d1..e5d06fd 100644 --- a/apps/vscode-extension/package.json +++ b/apps/vscode-extension/package.json @@ -4,7 +4,7 @@ "type": "module", "publisher": "CyberT33N", "description": "Make TypeScript errors prettier and more human-readable in VSCode", - "version": "1.2.0", + "version": "1.3.0", "icon": "assets/icon.png", "repository": { "type": "git", diff --git a/apps/vscode-extension/project.json b/apps/vscode-extension/project.json index a92d00f..e88fa6c 100644 --- a/apps/vscode-extension/project.json +++ b/apps/vscode-extension/project.json @@ -24,6 +24,7 @@ "thirdParty": true, "esbuildOptions": { "inject": ["apps/vscode-extension/scripts/process-shim.js"], + "mainFields": ["module", "main"], "banner": { "js": "import { createRequire as __prettyTsErrorsCreateRequire } from 'node:module'; const require = __prettyTsErrorsCreateRequire(import.meta.url);" } @@ -35,6 +36,7 @@ "minify": true, "esbuildOptions": { "inject": ["apps/vscode-extension/scripts/process-shim.js"], + "mainFields": ["module", "main"], "banner": { "js": "import { createRequire as __prettyTsErrorsCreateRequire } from 'node:module'; const require = __prettyTsErrorsCreateRequire(import.meta.url);" }, @@ -66,6 +68,7 @@ "thirdParty": true, "esbuildOptions": { "inject": ["apps/vscode-extension/scripts/process-shim.js"], + "mainFields": ["module", "main"], "banner": { "js": "import { createRequire as __prettyTsErrorsCreateRequire } from 'node:module'; const require = __prettyTsErrorsCreateRequire(import.meta.url);" }, diff --git a/apps/vscode-extension/src/provider/sidebarInlineTypeFormatter.ts b/apps/vscode-extension/src/provider/sidebarInlineTypeFormatter.ts new file mode 100644 index 0000000..747e201 --- /dev/null +++ b/apps/vscode-extension/src/provider/sidebarInlineTypeFormatter.ts @@ -0,0 +1,129 @@ +function isComplexType(text: string): boolean { + return ( + text.length >= 20 && + (/[{}[\]<>:;|&]/u.test(text) || + text.includes("=>") || + text.includes("${") || + text.includes("...")) + ); +} + +function repeatIndent(level: number): string { + return " ".repeat(level * 4); +} + +function trimTrailingWhitespace(value: string): string { + return value.replace(/[ \t]+$/u, ""); +} + +function normalizeSpacing(value: string): string { + return value.replace(/\s+/gu, " ").trim(); +} + +function formatComplexType(value: string): string { + const text = normalizeSpacing(value); + let output = ""; + let indentLevel = 0; + let quote: '"' | "'" | "`" | null = null; + let escaped = false; + + const appendIndentIfNeeded = () => { + if (output.length === 0 || output.endsWith("\n")) { + output += repeatIndent(indentLevel); + } + }; + + for (let index = 0; index < text.length; index += 1) { + const char = text[index]; + if (char === undefined) { + continue; + } + + if (quote !== null) { + output += char; + if (escaped) { + escaped = false; + } else if (char === "\\") { + escaped = true; + } else if (char === quote) { + quote = null; + } + continue; + } + + if (char === '"' || char === "'" || char === "`") { + appendIndentIfNeeded(); + quote = char; + output += char; + continue; + } + + switch (char) { + case "{": + case "[": + case "(": { + appendIndentIfNeeded(); + output += char; + indentLevel += 1; + output = trimTrailingWhitespace(output); + output += `\n${repeatIndent(indentLevel)}`; + break; + } + case "}": + case "]": + case ")": { + indentLevel = Math.max(indentLevel - 1, 0); + output = trimTrailingWhitespace(output); + if (!output.endsWith("\n")) { + output += "\n"; + } + output += `${repeatIndent(indentLevel)}${char}`; + break; + } + case ";": + case ",": { + output += char; + output = trimTrailingWhitespace(output); + output += `\n${repeatIndent(indentLevel)}`; + break; + } + case "|": + case "&": { + output = trimTrailingWhitespace(output); + if (!output.endsWith("\n")) { + output += "\n"; + } + output += `${repeatIndent(indentLevel)}${char} `; + break; + } + case ":": + output = trimTrailingWhitespace(output); + output += ": "; + break; + default: + appendIndentIfNeeded(); + output += char; + break; + } + } + + return trimTrailingWhitespace(output).trim(); +} + +export function formatSidebarInlineType(text: string): { + multiline: boolean; + text: string; +} { + if (!isComplexType(text)) { + return { + multiline: false, + text, + }; + } + + const formatted = formatComplexType(text); + return { + multiline: formatted.includes("\n"), + text: formatted, + }; +} diff --git a/apps/vscode-extension/src/provider/sidebarSyntaxHighlighter.ts b/apps/vscode-extension/src/provider/sidebarSyntaxHighlighter.ts new file mode 100644 index 0000000..a4aa366 --- /dev/null +++ b/apps/vscode-extension/src/provider/sidebarSyntaxHighlighter.ts @@ -0,0 +1,164 @@ +import { createHighlighter, type Highlighter } from "shiki"; +import { getLanguages, getUserTheme } from "vscode-shiki-bridge"; +import { logger } from "../logger"; + +export interface SidebarHighlightedToken { + color: string | null; + fontStyle: number; + text: string; +} + +export interface SidebarHighlightedLine { + tokens: SidebarHighlightedToken[]; +} + +export interface SidebarCodePresentation { + backgroundColor: string | null; + foregroundColor: string | null; + language: string | null; + lines: SidebarHighlightedLine[]; +} + +interface SidebarSyntaxHighlighterState { + highlighter: Highlighter; + themeId: string; + languages: Awaited>; +} + +type HighlighterCodeOptions = Parameters[1]; +type HighlighterCodeLanguage = NonNullable; +type HighlighterCodeTheme = NonNullable; + +const REQUIRED_LANGUAGE_IDS = [ + "type", + "typescript", + "typescriptreact", + "javascript", + "javascriptreact", + "json", +] as const; + +const presentationCache = new Map(); + +let state: SidebarSyntaxHighlighterState | null = null; + +function cacheKey( + themeId: string, + language: string | null, + code: string, +): string { + return JSON.stringify({ + code, + language, + themeId, + }); +} + +async function createState(): Promise { + const [themeId, themes] = await getUserTheme(); + const languages = await getLanguages([...REQUIRED_LANGUAGE_IDS]); + const highlighter = await createHighlighter({ + langs: languages.langs, + themes, + }); + + logger.debug( + `initialized sidebar syntax highlighter for theme '${themeId}' with ${languages.langs.length} language registration(s)` + ); + + return { + highlighter, + themeId, + languages, + }; +} + +async function getState(): Promise { + const [themeId] = await getUserTheme(); + if (state !== null && state.themeId === themeId) { + return state; + } + + if (state !== null) { + logger.debug( + `reloading sidebar syntax highlighter because the active theme changed from '${state.themeId}' to '${themeId}'` + ); + state.highlighter.dispose(); + } + + state = await createState(); + return state; +} + +function resolveLanguageId( + languages: SidebarSyntaxHighlighterState["languages"], + language: string, +): HighlighterCodeLanguage | null { + const resolvedAlias = languages.resolveAlias(language); + const registration = + languages.get(resolvedAlias) ?? languages.get(language); + + return (registration?.name as HighlighterCodeLanguage | undefined) ?? null; +} + +export function invalidateSidebarSyntaxHighlighter() { + presentationCache.clear(); + if (state !== null) { + state.highlighter.dispose(); + state = null; + } +} + +export async function highlightSidebarCode( + code: string, + language: string | null, +): Promise { + if (language === null) { + return null; + } + + try { + const currentState = await getState(); + const resolvedLanguageId = resolveLanguageId(currentState.languages, language); + if (resolvedLanguageId === null) { + logger.debug( + `no sidebar syntax highlighting language registration was found for '${language}'` + ); + return null; + } + + const key = cacheKey(currentState.themeId, resolvedLanguageId, code); + const cached = presentationCache.get(key); + if (cached !== undefined) { + return cached; + } + + const tokenLines = await currentState.highlighter.codeToTokensBase(code, { + lang: resolvedLanguageId, + theme: currentState.themeId as HighlighterCodeTheme, + }); + + const presentation: SidebarCodePresentation = { + backgroundColor: null, + foregroundColor: null, + language: resolvedLanguageId, + lines: tokenLines.map((line) => { + return { + tokens: line.map((token) => { + return { + color: token.color ?? null, + fontStyle: token.fontStyle ?? 0, + text: token.content, + }; + }), + }; + }), + }; + + presentationCache.set(key, presentation); + return presentation; + } catch (error) { + logger.warn("failed to highlight sidebar code block", error); + return null; + } +} diff --git a/apps/vscode-extension/src/provider/sidebarViewModel.ts b/apps/vscode-extension/src/provider/sidebarViewModel.ts index 3b5f3e3..8423891 100644 --- a/apps/vscode-extension/src/provider/sidebarViewModel.ts +++ b/apps/vscode-extension/src/provider/sidebarViewModel.ts @@ -1,9 +1,20 @@ import type { Range } from "vscode"; import type { DiagnosticBlockNode, + DiagnosticCodeBlockNode, + DiagnosticInlineNode, + DiagnosticLinkNode, + DiagnosticPropertyListNode, + DiagnosticTextNode, DiagnosticTranslationContentModel, + DiagnosticTypeBlockNode, } from "../diagnosticRichContent"; import type { FormattedDiagnostic } from "../formattedDiagnosticsStore"; +import { formatSidebarInlineType } from "./sidebarInlineTypeFormatter"; +import { + highlightSidebarCode, + type SidebarCodePresentation, +} from "./sidebarSyntaxHighlighter"; type SidebarCommandAction = { kind: "command"; @@ -32,14 +43,52 @@ export type SidebarActionModel = | SidebarLinkAction | SidebarCopyAction; +export interface SidebarInlineCodeNode { + kind: "inlineCode"; + language: string | null; + multiline: boolean; + presentation: SidebarCodePresentation | null; + text: string; +} + +export type SidebarInlineNode = + | DiagnosticTextNode + | DiagnosticLinkNode + | SidebarInlineCodeNode; + +export interface SidebarParagraphNode { + kind: "paragraph"; + lines: SidebarInlineNode[][]; +} + +export interface SidebarListNode { + kind: "list"; + items: SidebarInlineNode[][]; +} + +export interface SidebarCodeBlockNode extends DiagnosticCodeBlockNode { + presentation: SidebarCodePresentation | null; +} + +export interface SidebarTypeBlockNode extends DiagnosticTypeBlockNode { + presentation: SidebarCodePresentation | null; +} + +export type SidebarBlockNode = + | SidebarParagraphNode + | SidebarListNode + | SidebarCodeBlockNode + | SidebarTypeBlockNode + | DiagnosticPropertyListNode; + export interface SidebarTranslationModel { code: number; - blocks: DiagnosticBlockNode[]; + blocks: SidebarBlockNode[]; rawError: string; } export interface SidebarDiagnosticModel { - body: DiagnosticBlockNode[]; + body: SidebarBlockNode[]; code: number | null; message: string; title: string; @@ -91,10 +140,79 @@ function getCodeNumber(code: FormattedDiagnostic["lspDiagnostic"]["code"]) { return typeof code === "number" ? code : null; } -export function createSidebarDiagnosticModel( +async function mapInlineNodeForSidebar( + node: DiagnosticInlineNode, +): Promise { + switch (node.kind) { + case "text": + case "link": + return node; + case "inlineCode": { + const { multiline, text } = formatSidebarInlineType(node.text); + const language = multiline ? "type" : null; + const presentation = + language === null + ? null + : await highlightSidebarCode(text, language); + + return { + kind: "inlineCode", + language, + multiline, + presentation, + text, + }; + } + } +} + +async function mapInlineNodeLinesForSidebar( + lines: DiagnosticInlineNode[][], +): Promise { + return Promise.all( + lines.map((line) => Promise.all(line.map((node) => mapInlineNodeForSidebar(node)))), + ); +} + +async function mapBlockForSidebar( + block: DiagnosticBlockNode, +): Promise { + switch (block.kind) { + case "paragraph": + return { + kind: "paragraph", + lines: await mapInlineNodeLinesForSidebar(block.lines), + } satisfies SidebarParagraphNode; + case "list": + return { + kind: "list", + items: await mapInlineNodeLinesForSidebar(block.items), + } satisfies SidebarListNode; + case "codeBlock": + return { + ...block, + presentation: await highlightSidebarCode(block.code, block.language), + } satisfies SidebarCodeBlockNode; + case "typeBlock": + return { + ...block, + presentation: await highlightSidebarCode(block.code, block.language), + } satisfies SidebarTypeBlockNode; + case "propertyList": + return block; + } +} + +async function mapBlocksForSidebar( + blocks: DiagnosticBlockNode[], +): Promise { + return Promise.all(blocks.map((block) => mapBlockForSidebar(block))); +} + +export async function createSidebarDiagnosticModel( diagnostic: FormattedDiagnostic, options?: { note?: string }, -): SidebarDiagnosticModel { +): Promise { const code = getCodeNumber(diagnostic.lspDiagnostic.code); const actions: SidebarActionModel[] = [ { @@ -130,18 +248,20 @@ export function createSidebarDiagnosticModel( }); } - const translations: SidebarTranslationModel[] = diagnostic.layout.translations.map( - (translation: DiagnosticTranslationContentModel) => { - return { - blocks: translation.blocks, - code: translation.code, - rawError: translation.rawError, - }; - }, + const translations: SidebarTranslationModel[] = await Promise.all( + diagnostic.layout.translations.map( + async (translation: DiagnosticTranslationContentModel) => { + return { + blocks: await mapBlocksForSidebar(translation.blocks), + code: translation.code, + rawError: translation.rawError, + }; + }, + ), ); const model: SidebarDiagnosticModel = { - body: diagnostic.layout.body, + body: await mapBlocksForSidebar(diagnostic.layout.body), code, message: diagnostic.lspDiagnostic.message, title: diagnostic.layout.title, diff --git a/apps/vscode-extension/src/provider/webviewViewProvider.ts b/apps/vscode-extension/src/provider/webviewViewProvider.ts index 87d4a7a..5e3683f 100644 --- a/apps/vscode-extension/src/provider/webviewViewProvider.ts +++ b/apps/vscode-extension/src/provider/webviewViewProvider.ts @@ -5,6 +5,7 @@ import { formattedDiagnosticsStore, type FormattedDiagnostic } from "../formatte import { logger } from "../logger"; import { SUPPORTED_LANGUAGE_IDS } from "../supportedLanguageIds"; import { MarkdownWebviewProvider } from "./markdownWebviewProvider"; +import { invalidateSidebarSyntaxHighlighter } from "./sidebarSyntaxHighlighter"; import { createSidebarDiagnosticModel, type SidebarViewModel } from "./sidebarViewModel"; const NO_DIAGNOSTICS_MESSAGE = @@ -55,7 +56,11 @@ export function registerWebviewViewProvider(context: ExtensionContext) { { webviewOptions: { retainContextWhenHidden: true } } ), vscode.languages.onDidChangeDiagnostics(() => updateHasErrorsContext()), - vscode.window.onDidChangeActiveTextEditor(() => updateHasErrorsContext()) + vscode.window.onDidChangeActiveTextEditor(() => updateHasErrorsContext()), + vscode.window.onDidChangeActiveColorTheme(() => { + invalidateSidebarSyntaxHighlighter(); + viewProviderInstance?.invalidateAndRefresh(); + }) ); updateHasErrorsContext(); } @@ -130,6 +135,13 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { } } + invalidateAndRefresh() { + this.lastModelKey = null; + if (this.webview) { + void this.refresh(this.webview); + } + } + async resolveWebviewView( webviewView: vscode.WebviewView, _context: vscode.WebviewViewResolveContext @@ -152,7 +164,7 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { }) ), vscode.languages.onDidChangeDiagnostics(() => - this.refresh(webviewView.webview) + void this.refresh(webviewView.webview) ), vscode.window.onDidChangeActiveTextEditor((editor) => { if (this.skipNextEditorChange) { @@ -163,7 +175,7 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { if (this.mode === "locked") { this.mode = "cursor"; } - this.refresh(webviewView.webview); + void this.refresh(webviewView.webview); } }), vscode.window.onDidChangeTextEditorSelection((event) => { @@ -179,12 +191,12 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { this.mode = "cursor"; } if (this.mode === "cursor") { - this.refresh(webviewView.webview); + void this.refresh(webviewView.webview); } }), webviewView.onDidChangeVisibility(() => { if (webviewView.visible) { - this.refresh(webviewView.webview); + void this.refresh(webviewView.webview); } }) ); @@ -279,22 +291,26 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { ); } - private createViewModel(items: FormattedDiagnostic[]): SidebarViewModel { + private async createViewModel( + items: FormattedDiagnostic[], + ): Promise { const pinned = this.pinnedError === null ? null - : createSidebarDiagnosticModel(this.pinnedError); - - const diagnostics = items.map((item) => { - const note = - this.pinnedError !== null && isSameDiagnostic(this.pinnedError, item) - ? "This item is pinned on top." - : undefined; - - return note === undefined - ? createSidebarDiagnosticModel(item) - : createSidebarDiagnosticModel(item, { note }); - }); + : await createSidebarDiagnosticModel(this.pinnedError); + + const diagnostics = await Promise.all( + items.map((item) => { + const note = + this.pinnedError !== null && isSameDiagnostic(this.pinnedError, item) + ? "This item is pinned on top." + : undefined; + + return note === undefined + ? createSidebarDiagnosticModel(item) + : createSidebarDiagnosticModel(item, { note }); + }), + ); return { pinned, @@ -309,7 +325,7 @@ class MarkdownWebviewViewProvider implements vscode.WebviewViewProvider { return; } - const model = this.createViewModel(this.getActiveDiagnosticItems()); + const model = await this.createViewModel(this.getActiveDiagnosticItems()); const modelKey = JSON.stringify(model); if (modelKey === this.lastModelKey) { logger.trace("skipping side panel refresh because the model did not change"); diff --git a/apps/vscode-extension/webview/index.js b/apps/vscode-extension/webview/index.js index 18e3285..0edaa76 100644 --- a/apps/vscode-extension/webview/index.js +++ b/apps/vscode-extension/webview/index.js @@ -24,6 +24,9 @@ * text: string; * } | { * kind: "inlineCode"; + * language: string | null; + * multiline: boolean; + * presentation: SidebarCodePresentation | null; * text: string; * } | { * kind: "link"; @@ -32,16 +35,35 @@ * }} SidebarInlineNode * * @typedef {{ + * color: string | null; + * fontStyle: number; + * text: string; + * }} SidebarHighlightedToken + * + * @typedef {{ + * tokens: SidebarHighlightedToken[]; + * }} SidebarHighlightedLine + * + * @typedef {{ + * backgroundColor: string | null; + * foregroundColor: string | null; + * language: string | null; + * lines: SidebarHighlightedLine[]; + * }} SidebarCodePresentation + * + * @typedef {{ * kind: "paragraph"; * lines: SidebarInlineNode[][]; * } | { * kind: "codeBlock"; * code: string; * language: string | null; + * presentation: SidebarCodePresentation | null; * } | { * kind: "typeBlock"; * code: string; * language: string | null; + * presentation: SidebarCodePresentation | null; * } | { * kind: "list"; * items: SidebarInlineNode[][]; @@ -345,6 +367,7 @@ function appendLayoutBlocks(container, blocks) { createCodeBlockElement( block.code, block.kind === "typeBlock" ? "type-code-container" : "", + block.presentation, ), ); return; @@ -379,12 +402,14 @@ function appendLayoutBlocks(container, blocks) { /** * @param {string} codeText * @param {string} [extraClassName] + * @param {SidebarCodePresentation | null} [presentation] */ -function createCodeBlockElement(codeText, extraClassName = "") { +function createCodeBlockElement(codeText, extraClassName = "", presentation = null) { const codeContainer = document.createElement("div"); codeContainer.className = ["code-container", extraClassName] .filter(Boolean) .join(" "); + applyCodePresentationStyles(codeContainer, presentation); const copyButton = document.createElement("button"); copyButton.className = "copy-button"; @@ -396,8 +421,7 @@ function createCodeBlockElement(codeText, extraClassName = "") { codeContainer.appendChild(copyButton); const pre = document.createElement("pre"); - const code = document.createElement("code"); - code.textContent = codeText; + const code = createCodeElement(codeText, presentation); pre.appendChild(code); codeContainer.appendChild(pre); @@ -415,8 +439,10 @@ function createInlineNodesFragment(nodes) { fragment.append(node.text); return; case "inlineCode": { - const code = document.createElement("code"); - code.textContent = node.text; + const code = createCodeElement(node.text, node.presentation); + code.className = node.multiline + ? "inline-rich-code inline-rich-code-multiline" + : "inline-rich-code"; fragment.appendChild(code); return; } @@ -435,6 +461,73 @@ function createInlineNodesFragment(nodes) { return fragment; } +/** + * @param {HTMLElement} element + * @param {SidebarCodePresentation | null} presentation + */ +function applyCodePresentationStyles(element, presentation) { + if (presentation?.backgroundColor) { + element.style.backgroundColor = presentation.backgroundColor; + } + if (presentation?.foregroundColor) { + element.style.color = presentation.foregroundColor; + } +} + +/** + * @param {SidebarHighlightedToken} token + * @returns {HTMLSpanElement} + */ +function createHighlightedTokenElement(token) { + const span = document.createElement("span"); + span.className = "highlighted-code-token"; + span.textContent = token.text; + if (token.color) { + span.style.color = token.color; + } + if ((token.fontStyle & 1) !== 0) { + span.style.fontStyle = "italic"; + } + if ((token.fontStyle & 2) !== 0) { + span.style.fontWeight = "700"; + } + if ((token.fontStyle & 4) !== 0) { + span.style.textDecoration = "underline"; + } + return span; +} + +/** + * @param {string} codeText + * @param {SidebarCodePresentation | null} presentation + * @returns {HTMLElement} + */ +function createCodeElement(codeText, presentation) { + const code = document.createElement("code"); + applyCodePresentationStyles(code, presentation); + + if (presentation === null) { + code.textContent = codeText; + return code; + } + + presentation.lines.forEach((line, lineIndex) => { + if (lineIndex > 0) { + code.appendChild(document.createTextNode("\n")); + } + + if (line.tokens.length === 0) { + return; + } + + line.tokens.forEach((token) => { + code.appendChild(createHighlightedTokenElement(token)); + }); + }); + + return code; +} + /** * @param {SidebarActionModel} action */ diff --git a/apps/vscode-extension/webview/style.css b/apps/vscode-extension/webview/style.css index c141934..2999818 100644 --- a/apps/vscode-extension/webview/style.css +++ b/apps/vscode-extension/webview/style.css @@ -34,6 +34,7 @@ pre { border-radius: 14px; background: var(--vscode-textCodeBlock-background) !important; line-height: 1.55; + tab-size: 4; } code, @@ -173,6 +174,22 @@ pre code { background: var(--vscode-textCodeBlock-background); } +.inline-rich-code { + white-space: break-spaces; +} + +.inline-rich-code-multiline { + display: inline-block; + width: 100%; + margin: 0.45rem 0; + padding: 0.75rem 0.9rem; + border: 1px solid var(--vscode-widget-border, rgba(127, 127, 127, 0.24)); + border-radius: 12px; + background: var(--vscode-textCodeBlock-background); + white-space: pre-wrap; + overflow-wrap: anywhere; +} + .diagnostic-list { display: grid; gap: 6px; @@ -215,6 +232,13 @@ pre code { ); } +.type-code-container pre, +.type-code-container code { + white-space: pre-wrap; + overflow-wrap: anywhere; + word-break: normal; +} + .code-container pre { border: none; border-radius: 0; diff --git a/packages/formatter/src/formatTypeWithPrettier.ts b/packages/formatter/src/formatTypeWithPrettier.ts index a1f1bf0..d42d329 100644 --- a/packages/formatter/src/formatTypeWithPrettier.ts +++ b/packages/formatter/src/formatTypeWithPrettier.ts @@ -1,12 +1,14 @@ import { format } from "prettier/standalone"; -import * as parserEstree from "prettier/plugins/estree"; -import * as parserTypescript from "prettier/plugins/typescript"; +import parserEstree from "prettier/plugins/estree"; +import parserTypescript from "prettier/plugins/typescript"; export async function formatTypeWithPrettier(text: string) { return format(text, { plugins: [parserTypescript, parserEstree], parser: "typescript", - printWidth: 60, + printWidth: 48, + tabWidth: 4, + useTabs: false, arrowParens: "avoid", semi: false, singleQuote: false, diff --git a/packages/formatter/test/__snapshots__/formatter.vitest.ts.snap b/packages/formatter/test/__snapshots__/formatter.vitest.ts.snap index 558a9d4..ef76397 100644 --- a/packages/formatter/test/__snapshots__/formatter.vitest.ts.snap +++ b/packages/formatter/test/__snapshots__/formatter.vitest.ts.snap @@ -12,36 +12,36 @@ exports[`formatter > prettifies mock error message: errorWithLongType 1`] = ` "Property \`isFlying\` is missing in type: \`\`\`type { - animal: { - __typename?: "Animal" | undefined - id: string - name: string - age: number - isAlived: boolean - /* 8 more */ - attributes: - | { ...; } - | /* 3 more */ - | { ...; } - } + animal: { + __typename?: "Animal" | undefined + id: string + name: string + age: number + isAlived: boolean + /* 8 more */ + attributes: + | { ...; } + | /* 3 more */ + | { ...; } + } } \`\`\` but required in type: \`\`\`type { - animal: { - __typename?: "Animal" | undefined - id: string - name: string - age: number - isAlived: boolean - isFlying: boolean - /* 8 more */ - attributes: - | { ...; } - | /* 3 more */ - | { ...; } - } + animal: { + __typename?: "Animal" | undefined + id: string + name: string + age: number + isAlived: boolean + isFlying: boolean + /* 8 more */ + attributes: + | { ...; } + | /* 3 more */ + | { ...; } + } } \`\`\` ." @@ -56,48 +56,60 @@ exports[`formatter > prettifies mock error message: errorWithParamsDestructuring "Argument of type: \`\`\`type { - $ref: null - ref: (ref: any) => any - columns: ( - | { label: string; prop: string } - | { - label: string - formatter: ({ ip_type }: any) => any - } - | { - actions: { - label: string - disabled: ({ contract_id }: any) => boolean - handler({ contract_id }: any): void - }[] - } - )[] - /* 4 more */ - load(): Promise<...> + $ref: null + ref: (ref: any) => any + columns: ( + | { label: string; prop: string } + | { + label: string + formatter: ({ + ip_type, + }: any) => any + } + | { + actions: { + label: string + disabled: ({ + contract_id, + }: any) => boolean + handler({ + contract_id, + }: any): void + }[] + } + )[] + /* 4 more */ + load(): Promise<...> } \`\`\` is not assignable to parameter of type \`VTableConfig\`. Property \`data\` is missing in type: \`\`\`type { - $ref: null - ref: (ref: any) => any - columns: ( - | { label: string; prop: string } - | { - label: string - formatter: ({ ip_type }: any) => any - } - | { - actions: { - label: string - disabled: ({ contract_id }: any) => boolean - handler({ contract_id }: any): void - }[] - } - )[] - /* 4 more */ - load(): Promise<...> + $ref: null + ref: (ref: any) => any + columns: ( + | { label: string; prop: string } + | { + label: string + formatter: ({ + ip_type, + }: any) => any + } + | { + actions: { + label: string + disabled: ({ + contract_id, + }: any) => boolean + handler({ + contract_id, + }: any): void + }[] + } + )[] + /* 4 more */ + load(): Promise<...> } \`\`\` but required in type \`VTableConfig\`." @@ -118,19 +130,21 @@ exports[`formatter > prettifies mock error message: errorWithTruncatedType2 1`] "Type: \`\`\`type { - "!top": string[] - "xsl:declaration": { - attrs: { - "default-collation": null - "exclude-result-prefixes": null - "extension-element-prefixes": null - "use-when": null - "xpath-default-namespace": null + "!top": string[] + "xsl:declaration": { + attrs: { + "default-collation": null + "exclude-result-prefixes": null + "extension-element-prefixes": null + "use-when": null + "xpath-default-namespace": null + } + } + "xsl:instruction": { + ...; } - } - "xsl:instruction": { ...; } - /* 49 more */ - "xsl:literal-result-element": {} + /* 49 more */ + "xsl:literal-result-element": {} } \`\`\` is missing the following properties from type \`GraphQLSchema\`:
    • description
    • extensions
    • astNode
    • extensionASTNodes
    and 21 more." @@ -139,14 +153,20 @@ exports[`formatter > prettifies mock error message: errorWithTruncatedType2 1`] exports[`formatter > prettifies mock error message: leftSideAritmeticError 1`] = `"The left-hand side of an arithmetic operation must be of type \`any\`, \`number\`, \`bigint\` or an enum type."`; exports[`formatter > prettifies mock error message: missingPropertyError 1`] = ` -"Property \`user\` is missing in type \`{ person: { username: string; email: string } }\` but required in type: +"Property \`user\` is missing in type: \`\`\`type { - user: { - name: string - email: \`\${string}@\${string}.\${string}\` - age: number - } + person: { username: string; email: string } +} +\`\`\` + but required in type: +\`\`\`type +{ + user: { + name: string + email: \`\${string}@\${string}.\${string}\` + age: number + } } \`\`\` ." @@ -164,17 +184,23 @@ exports[`formatter > prettifies mock error message: ts1360Error 1`] = ` "Property \`a\` is missing in type: \`\`\`type { - b: { name: string; icon: undefined } - c: { name: string; icon: undefined } - d: { name: string; icon: undefined } - e: { name: string; icon: undefined } - f: { ...; } - g: { ...; } - h: ... - ... + b: { name: string; icon: undefined } + c: { name: string; icon: undefined } + d: { name: string; icon: undefined } + e: { name: string; icon: undefined } + f: { ...; } + g: { ...; } + h: ... + ... +} +\`\`\` + but required in type: +\`\`\`type +{ + a: { name: string; icon: undefined } } \`\`\` - but required in type \`{ a: { name: string; icon: undefined } }\`." +." `; exports[`formatter > prettifies mock error message: ts1378Error 1`] = `"Top-level \`await\` expressions are only allowed when the \`module\` option is set to \`es2022\` , \`esnext\` , \`system\` , \`node16\` , or \`nodenext\` , and the \`target\` option is set to \`es2017\` or higher."`; @@ -189,24 +215,32 @@ exports[`formatter > prettifies mock error message: ts2322ErrorWithPrivateProper "Type: \`\`\`type Ref<{ - name: string - readonly type: "json" - mm: (px: T) => T - px: (mm: T) => T - /* 18 more */ - toJson: () => string + name: string + readonly type: "json" + mm: ( + px: T, + ) => T + px: ( + mm: T, + ) => T + /* 18 more */ + toJson: () => string }> \`\`\` is not assignable to type \`Ref\`. Type: \`\`\`type { - name: string - readonly type: "json" - mm: (px: T) => T - px: (mm: T) => T - /* 18 more */ - toJson: () => string + name: string + readonly type: "json" + mm: ( + px: T, + ) => T + px: ( + mm: T, + ) => T + /* 18 more */ + toJson: () => string } \`\`\` is missing the following properties from type \`MpcdiConfiguration\`:
    • ratio
    • #overlaps
    • download
    " diff --git a/packages/formatter/test/formatter.vitest.ts b/packages/formatter/test/formatter.vitest.ts index 2fe4a73..06fc24b 100644 --- a/packages/formatter/test/formatter.vitest.ts +++ b/packages/formatter/test/formatter.vitest.ts @@ -52,7 +52,8 @@ describe("formatter", (context) => { ); expect(result).toContain("```type"); expect(result).toContain("name: string"); - expect(result).toContain("street: string; city: string; country: string"); + expect(result).toContain("street: string"); + expect(result).toContain("country: string"); }); it("prettifies type with params destructuring", async () => { @@ -65,6 +66,17 @@ describe("formatter", (context) => { ).resolves.toBeTypeOf("string"); }); + it("formats complex types with stronger wrapping and four-space indentation", async () => { + const formatted = await formatType( + d`{ user: { name: string; email: \`\${string}@\${string}.\${string}\`; age: number; address: { street: string; city: string; country: string; }; }; }`, + { throwOnError: true } + ); + + expect(formatted).toContain("\n user: {\n"); + expect(formatted).toContain("\n name: string\n"); + expect(formatted).toContain("address: {\n"); + }); + it("prettifies truncated type", async () => { await expect( formatType( From 922452d7e0a8008637e6981cc6424bb945758a64 Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Thu, 25 Jun 2026 00:56:23 +0200 Subject: [PATCH 10/13] BREAKING CHANGE: removed vscode-shiki-bridge --- apps/vscode-extension/package.json | 5 +- .../src/diagnosticRichContent.ts | 30 ++++++-- .../src/provider/sidebarSyntaxHighlighter.ts | 75 +++++++++++++------ .../src/test/suite/extension.test.ts | 44 +++++++++-- .../src/getImprovedMessage.ts | 13 +++- packages/error-translator/test/engine.test.ts | 23 ++++++ pnpm-lock.yaml | 25 ------- pnpm-workspace.yaml | 1 - 8 files changed, 150 insertions(+), 66 deletions(-) diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json index e5d06fd..43d7ae6 100644 --- a/apps/vscode-extension/package.json +++ b/apps/vscode-extension/package.json @@ -4,7 +4,7 @@ "type": "module", "publisher": "CyberT33N", "description": "Make TypeScript errors prettier and more human-readable in VSCode", - "version": "1.3.0", + "version": "1.4.0", "icon": "assets/icon.png", "repository": { "type": "git", @@ -136,7 +136,6 @@ "@pretty-ts-errors/formatter": "workspace:*", "@pretty-ts-errors/utils": "workspace:*", "shiki": "catalog:", - "vscode-languageclient": "catalog:", - "vscode-shiki-bridge": "catalog:" + "vscode-languageclient": "catalog:" } } diff --git a/apps/vscode-extension/src/diagnosticRichContent.ts b/apps/vscode-extension/src/diagnosticRichContent.ts index 70aa953..76bab3c 100644 --- a/apps/vscode-extension/src/diagnosticRichContent.ts +++ b/apps/vscode-extension/src/diagnosticRichContent.ts @@ -70,7 +70,7 @@ export interface DiagnosticRichContentModel { const fencedCodeBlockPattern = /((?:`{3,})[^\n]*\n[\s\S]*?\n(?:`{3,}))/gu; const inlineTokenPattern = - /\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)|`([^`]+)`/gu; + /\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)|(`+)([\s\S]*?)\3/gu; const propertyLikeItemPattern = /^[#\w.$:[\]"'-]+$/u; function normalizeLineEndings(value: string): string { @@ -82,9 +82,14 @@ function isTypeBlockLanguage(language: string | null): boolean { } function createInlineCodeFence(code: string): string { - const fence = - code.includes("``") ? "```" : code.includes("`") ? "``" : "`"; - return `${fence}${code}${fence}`; + const longestBacktickRun = Math.max( + 0, + ...Array.from(code.matchAll(/`+/gu), (match) => match[0].length), + ); + const fence = "`".repeat(longestBacktickRun + 1); + const needsPadding = code.startsWith("`") || code.endsWith("`"); + const content = needsPadding ? ` ${code} ` : code; + return `${fence}${content}${fence}`; } function createFencedCodeBlock(code: string, language: string | null): string { @@ -93,6 +98,19 @@ function createFencedCodeBlock(code: string, language: string | null): string { return `${fence}${infoString}\n${code}\n${fence}`; } +function normalizeInlineCodeText(text: string): string { + if ( + text.length >= 2 && + text.startsWith(" ") && + text.endsWith(" ") && + /[^\s]/u.test(text) + ) { + return text.slice(1, -1); + } + + return text; +} + function parseInlineNodes(text: string): DiagnosticInlineNode[] { const nodes: DiagnosticInlineNode[] = []; let lastIndex = 0; @@ -108,7 +126,7 @@ function parseInlineNodes(text: string): DiagnosticInlineNode[] { const linkLabel = match[1]; const linkHref = match[2]; - const codeText = match[3]; + const codeText = match[4]; if (typeof linkLabel === "string" && typeof linkHref === "string") { nodes.push({ kind: "link", @@ -118,7 +136,7 @@ function parseInlineNodes(text: string): DiagnosticInlineNode[] { } else if (typeof codeText === "string") { nodes.push({ kind: "inlineCode", - text: codeText, + text: normalizeInlineCodeText(codeText), }); } diff --git a/apps/vscode-extension/src/provider/sidebarSyntaxHighlighter.ts b/apps/vscode-extension/src/provider/sidebarSyntaxHighlighter.ts index a4aa366..6c8e3ae 100644 --- a/apps/vscode-extension/src/provider/sidebarSyntaxHighlighter.ts +++ b/apps/vscode-extension/src/provider/sidebarSyntaxHighlighter.ts @@ -1,5 +1,10 @@ -import { createHighlighter, type Highlighter } from "shiki"; -import { getLanguages, getUserTheme } from "vscode-shiki-bridge"; +import { + createHighlighter, + type BundledLanguage, + type BundledTheme, + type Highlighter, +} from "shiki"; +import { ColorThemeKind, window } from "vscode"; import { logger } from "../logger"; export interface SidebarHighlightedToken { @@ -22,21 +27,24 @@ export interface SidebarCodePresentation { interface SidebarSyntaxHighlighterState { highlighter: Highlighter; themeId: string; - languages: Awaited>; } type HighlighterCodeOptions = Parameters[1]; type HighlighterCodeLanguage = NonNullable; type HighlighterCodeTheme = NonNullable; -const REQUIRED_LANGUAGE_IDS = [ - "type", +const REQUIRED_LANGUAGES = [ "typescript", - "typescriptreact", + "tsx", "javascript", - "javascriptreact", + "jsx", "json", -] as const; +] as const satisfies readonly BundledLanguage[]; + +const DEFAULT_DARK_THEME = "dark-plus"; +const DEFAULT_LIGHT_THEME = "light-plus"; +const DEFAULT_HIGH_CONTRAST_DARK_THEME = "github-dark-high-contrast"; +const DEFAULT_HIGH_CONTRAST_LIGHT_THEME = "github-light-high-contrast"; const presentationCache = new Map(); @@ -55,26 +63,24 @@ function cacheKey( } async function createState(): Promise { - const [themeId, themes] = await getUserTheme(); - const languages = await getLanguages([...REQUIRED_LANGUAGE_IDS]); + const themeId = getThemeIdFromActiveTheme(); const highlighter = await createHighlighter({ - langs: languages.langs, - themes, + langs: [...REQUIRED_LANGUAGES], + themes: [themeId], }); logger.debug( - `initialized sidebar syntax highlighter for theme '${themeId}' with ${languages.langs.length} language registration(s)` + `initialized sidebar syntax highlighter with bundled shiki theme '${themeId}'` ); return { highlighter, themeId, - languages, }; } async function getState(): Promise { - const [themeId] = await getUserTheme(); + const themeId = getThemeIdFromActiveTheme(); if (state !== null && state.themeId === themeId) { return state; } @@ -90,15 +96,38 @@ async function getState(): Promise { return state; } +function getThemeIdFromActiveTheme(): BundledTheme { + switch (window.activeColorTheme.kind) { + case ColorThemeKind.Light: + return DEFAULT_LIGHT_THEME; + case ColorThemeKind.HighContrastLight: + return DEFAULT_HIGH_CONTRAST_LIGHT_THEME; + case ColorThemeKind.HighContrast: + return DEFAULT_HIGH_CONTRAST_DARK_THEME; + case ColorThemeKind.Dark: + default: + return DEFAULT_DARK_THEME; + } +} + function resolveLanguageId( - languages: SidebarSyntaxHighlighterState["languages"], language: string, ): HighlighterCodeLanguage | null { - const resolvedAlias = languages.resolveAlias(language); - const registration = - languages.get(resolvedAlias) ?? languages.get(language); - - return (registration?.name as HighlighterCodeLanguage | undefined) ?? null; + switch (language) { + case "type": + case "typescript": + return "typescript"; + case "typescriptreact": + return "tsx"; + case "javascript": + return "javascript"; + case "javascriptreact": + return "jsx"; + case "json": + return "json"; + default: + return null; + } } export function invalidateSidebarSyntaxHighlighter() { @@ -119,10 +148,10 @@ export async function highlightSidebarCode( try { const currentState = await getState(); - const resolvedLanguageId = resolveLanguageId(currentState.languages, language); + const resolvedLanguageId = resolveLanguageId(language); if (resolvedLanguageId === null) { logger.debug( - `no sidebar syntax highlighting language registration was found for '${language}'` + `no bundled shiki language mapping was found for '${language}'` ); return null; } diff --git a/apps/vscode-extension/src/test/suite/extension.test.ts b/apps/vscode-extension/src/test/suite/extension.test.ts index 6636a56..d002de0 100644 --- a/apps/vscode-extension/src/test/suite/extension.test.ts +++ b/apps/vscode-extension/src/test/suite/extension.test.ts @@ -6,7 +6,7 @@ suite("Extension Test Suite", () => { test("shows the custom hover for supported JS diagnostics", async function () { this.timeout(30_000); - const exampleUri = await openExampleDocument(); + const exampleUri = await openExampleDocument("errors.js"); const diagnostic = await waitForDiagnostic(exampleUri, 2741); const markdownStrings = await getHoverMarkdownStrings( exampleUri, @@ -26,7 +26,7 @@ suite("Extension Test Suite", () => { test("renders TS2739 as safe markdown with the missing-property list", async function () { this.timeout(30_000); - const exampleUri = await openExampleDocument(); + const exampleUri = await openExampleDocument("errors.js"); const diagnostic = await waitForDiagnostic(exampleUri, 2739); const markdownStrings = await getHoverMarkdownStrings( exampleUri, @@ -50,7 +50,7 @@ suite("Extension Test Suite", () => { test("accepts uri-based sidebar command targets", async function () { this.timeout(30_000); - const exampleUri = await openExampleDocument(); + const exampleUri = await openExampleDocument("errors.js"); const diagnostic = await waitForDiagnostic(exampleUri, 2739); await vscode.commands.executeCommand( @@ -60,9 +60,32 @@ suite("Extension Test Suite", () => { diagnostic.message, ); }); + + test("keeps TS2741 template literal types intact in local explanations", async function () { + this.timeout(30_000); + + const exampleUri = await openExampleDocument("errors.ts"); + const diagnostic = await waitForDiagnostic( + exampleUri, + 2741, + 15_000, + "Property 'user' is missing", + ); + const markdownStrings = await getHoverMarkdownStrings( + exampleUri, + diagnostic.range.start, + ); + + const hoverText = markdownStrings.map((content) => content.value).join("\n"); + assert.match(hoverText, /Local explanation/u); + assert.match( + hoverText, + /``\{ user: \{ name: string; email: `\$\{string\}@\$\{string\}\.\$\{string\}`; age: number; \}; \}``/u, + ); + }); }); -async function openExampleDocument(): Promise { +async function openExampleDocument(fileName: "errors.js" | "errors.ts"): Promise { const extension = vscode.extensions.all.find((candidate) => { return candidate.packageJSON.name === "pretty-ts-errors"; }); @@ -71,7 +94,7 @@ async function openExampleDocument(): Promise { await extension.activate(); const exampleUri = vscode.Uri.file( - path.resolve(extension.extensionPath, "../../examples/errors.js") + path.resolve(extension.extensionPath, `../../examples/${fileName}`) ); const document = await vscode.workspace.openTextDocument(exampleUri); await vscode.window.showTextDocument(document); @@ -101,14 +124,21 @@ async function getHoverMarkdownStrings( async function waitForDiagnostic( uri: vscode.Uri, code: number, - timeoutMs = 15_000 + timeoutMs = 15_000, + messageIncludes?: string, ): Promise { const startedAt = Date.now(); for (;;) { const diagnostic = vscode.languages .getDiagnostics(uri) - .find((item) => item.code === code); + .find((item) => { + return ( + item.code === code && + (messageIncludes === undefined || + item.message.includes(messageIncludes)) + ); + }); if (diagnostic !== undefined) { return diagnostic; diff --git a/packages/error-translator/src/getImprovedMessage.ts b/packages/error-translator/src/getImprovedMessage.ts index d9a1528..941c410 100644 --- a/packages/error-translator/src/getImprovedMessage.ts +++ b/packages/error-translator/src/getImprovedMessage.ts @@ -1,12 +1,23 @@ // The runtime package consumes pre-generated JSON, so the body filler must remain // pure and must not depend on filesystem access or markdown parsing. +function createMarkdownCodeSpan(text: string): string { + const longestBacktickRun = Math.max( + 0, + ...Array.from(text.matchAll(/`+/gu), (match) => match[0].length), + ); + const fence = "`".repeat(longestBacktickRun + 1); + const needsPadding = text.startsWith("`") || text.endsWith("`"); + const content = needsPadding ? ` ${text} ` : text; + return `${fence}${content}${fence}`; +} + export function fillBodyWithItems( body: string, items: readonly (string | number)[], ) { items.forEach((item, index) => { const bodyRegex = new RegExp(`'?\\{${index}\\}'?`, "g"); - body = body.replace(bodyRegex, `\`${String(item)}\``); + body = body.replace(bodyRegex, createMarkdownCodeSpan(String(item))); }); return { diff --git a/packages/error-translator/test/engine.test.ts b/packages/error-translator/test/engine.test.ts index ba786b2..fd4d4fa 100644 --- a/packages/error-translator/test/engine.test.ts +++ b/packages/error-translator/test/engine.test.ts @@ -187,6 +187,15 @@ describe("fillBodyWithItems", () => { expect(result.body).toEqual("`A` and `B`"); }); + + it("Should use a longer markdown code fence when the item contains backticks", () => { + const result = fillBodyWithItems( + "Value: '{0}'", + ["{ email: `${string}@${string}.${string}` }"], + ); + + expect(result.body).toContain("``{ email: `${string}@${string}.${string}` }``"); + }); }); describe("translateDiagnosticMessage", () => { @@ -217,4 +226,18 @@ describe("translateDiagnosticMessage", () => { expect(translation?.body).toContain("name, age, address"); expect(translation?.body).toContain("usr@usr.io"); }); + + it("Should keep TS2741 template literal types inside a valid markdown code span", () => { + const [translation] = translateDiagnosticMessage( + "Property 'user' is missing in type '{ person: { username: string; email: string; }; }' but required in type '{ user: { name: string; email: `${string}@${string}.${string}`; age: number; }; }'.", + ); + + expect(translation).toMatchObject({ + code: 2741, + source: "curated", + }); + expect(translation?.body).toContain("``{ user:"); + expect(translation?.body).toContain("`${string}@${string}.${string}`"); + expect(translation?.body).toContain("`` - "); + }); }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7916bf0..b625a19 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -283,9 +283,6 @@ catalogs: vscode-languageserver-types: specifier: 3.17.5 version: 3.17.5 - vscode-shiki-bridge: - specifier: 0.5.2 - version: 0.5.2 vscode-uri: specifier: 3.1.0 version: 3.1.0 @@ -348,9 +345,6 @@ importers: vscode-languageclient: specifier: 'catalog:' version: 10.0.0 - vscode-shiki-bridge: - specifier: 'catalog:' - version: 0.5.2(@types/vscode@1.105.0)(shiki@3.13.0) devDependencies: '@shikijs/types': specifier: 'catalog:' @@ -2332,9 +2326,6 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, tarball: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz} - fast-plist@0.1.3: - resolution: {integrity: sha512-d9cEfo/WcOezgPLAC/8t8wGb6YOD6JTCPMw2QcG2nAdFmyY+9rTUizCTaGjIZAloWENTEUMAPpkUAIJJJ0i96A==, tarball: https://registry.npmjs.org/fast-plist/-/fast-plist-0.1.3.tgz} - fast-uri@3.1.2: resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==, tarball: https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz} @@ -3741,12 +3732,6 @@ packages: vscode-languageserver-types@3.18.0: resolution: {integrity: sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==, tarball: https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.18.0.tgz} - vscode-shiki-bridge@0.5.2: - resolution: {integrity: sha512-/9YKUFJuNOMxpTFk0PYSSf+p+/jHktBOxMhDe1ueHvT1afhgopg1y5gKQax76gd03gYyb/kRVuiixnT5Utb58A==, tarball: https://registry.npmjs.org/vscode-shiki-bridge/-/vscode-shiki-bridge-0.5.2.tgz} - peerDependencies: - '@types/vscode': ^1.102.0 - shiki: ^3.9.2 - vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==, tarball: https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz} @@ -6027,8 +6012,6 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-plist@0.1.3: {} - fast-uri@3.1.2: {} fastq@1.20.1: @@ -7541,13 +7524,6 @@ snapshots: vscode-languageserver-types@3.18.0: {} - vscode-shiki-bridge@0.5.2(@types/vscode@1.105.0)(shiki@3.13.0): - dependencies: - '@types/vscode': 1.105.0 - fast-plist: 0.1.3 - jsonc-parser: 3.3.1 - shiki: 3.13.0 - vscode-uri@3.1.0: {} wcwidth@1.0.1: @@ -7664,6 +7640,5 @@ time: vitest@4.1.2: '2026-03-26T14:36:51.447Z' vscode-languageclient@10.0.0: '2026-06-03T19:58:47.274Z' vscode-languageserver-types@3.17.5: '2023-09-26T10:23:06.690Z' - vscode-shiki-bridge@0.5.2: '2026-03-15T00:14:49.002Z' vscode-uri@3.1.0: '2025-02-04T18:18:11.908Z' yaml@2.9.0: '2026-05-11T10:16:24.045Z' diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index bf10200..0c4580c 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -455,7 +455,6 @@ catalog: vitest: 4.1.2 vscode-languageclient: 10.0.0 vscode-languageserver-types: 3.17.5 - vscode-shiki-bridge: 0.5.2 vscode-uri: 3.1.0 yaml: 2.9.0 From d60ebae97aa40dd3b0cd4992411418761f2e969f Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Thu, 25 Jun 2026 01:04:09 +0200 Subject: [PATCH 11/13] BREAKING CHANGE: removed vscode-shiki-bridge --- CONVENTIONS.md | 20 + .../diagnostic-rendering-surfaces.md | 395 ++++++++++++++++++ 2 files changed, 415 insertions(+) create mode 100644 CONVENTIONS.md create mode 100644 docs/conventions/diagnostic-rendering-surfaces.md diff --git a/CONVENTIONS.md b/CONVENTIONS.md new file mode 100644 index 0000000..fb2d81b --- /dev/null +++ b/CONVENTIONS.md @@ -0,0 +1,20 @@ +# Conventions + +Diese Datei ist die workspace-weite TOC fuer verbindliche, dauerhaft geltende +Konventionen im Repository `pretty-ts-errors`. + +## Nutzung + +- Die Root-Datei `CONVENTIONS.md` bleibt bewusst kurz und fungiert nur als + Einstiegspunkt. +- Detailkonventionen liegen unter `docs/conventions/`. +- Jede Konvention in `docs/conventions/` beschreibt einen stabilen, + wiederverwendbaren Architektur- oder Implementierungsstandard und nicht nur + einen temporaeren Handoff-Stand. + +## Table Of Contents + +1. [`docs/conventions/diagnostic-rendering-surfaces.md`](docs/conventions/diagnostic-rendering-surfaces.md) + Verbindliche Architekturkonvention fuer Sidebar, nativen Hover, + Trust-Boundaries, Syntax-Highlighting, Typ-Formatierung und die Trennung von + host-owned Shell und generischem Diagnostic-Content. diff --git a/docs/conventions/diagnostic-rendering-surfaces.md b/docs/conventions/diagnostic-rendering-surfaces.md new file mode 100644 index 0000000..d165ca1 --- /dev/null +++ b/docs/conventions/diagnostic-rendering-surfaces.md @@ -0,0 +1,395 @@ +# Diagnostic Rendering Surfaces + +## Status + +Diese Konvention ist fuer den aktuellen Workspace **verbindlich**. + +Sie beschreibt die architektonisch korrekte Behandlung von: + +- nativer Hover-Darstellung +- Sidebar-/Webview-Darstellung +- Syntax-Highlighting +- Typ-Formatierung und Wrapping +- Trust-Boundaries fuer generischen, externen Diagnostic-Content + +## Zweck + +Das Ziel dieser Konvention ist eine Enterprise-grade Richtlinie fuer die +Darstellung von TypeScript-Diagnostics in `pretty-ts-errors`, bei der: + +- die Sicherheitsgrenze eindeutig bleibt, +- der Rich-Display-Pfad dauerhaft wartbar bleibt, +- Hover und Sidebar aus derselben semantischen Informationsbasis ableitbar + bleiben, +- und spaetere Aenderungen nicht versehentlich wieder in trusted raw HTML, + unklare Renderer-Zustaende oder Surface-Drift abgleiten. + +## Korrekte Ablage + +Der **korrekte Ablageort** fuer diese Konvention ist: + +- als TOC auf Workspace-Ebene: `CONVENTIONS.md` +- als fachliche Detailkonvention: `docs/conventions/diagnostic-rendering-surfaces.md` + +Diese Entscheidung ist absichtlich so getroffen: + +- `HANDOFF_*.md`-Dateien sind transiente Uebergabeartefakte und nicht die + dauerhafte Autoritaet fuer Richtlinien. +- `docs/ARCHITECTURE.md` beschreibt die grobe Struktur des Repositories, aber + nicht fein genug die verbindlichen Regeln fuer konkrete Trust-Boundaries und + Rendering-Surfaces. +- diese Konvention ist **cross-cutting**, weil sie gleichzeitig + `apps/vscode-extension`, `packages/error-translator` und `packages/formatter` + betrifft. + +## Architekturentscheidung + +### Top-Level-Entscheidung + +Der verbindliche Zielzustand lautet: + +- **eine gemeinsame semantische Rich-Content-Zwischenrepraesentation** +- **ein nativer Hover als sicherer Markdown-Surface** +- **eine Sidebar als host-owned HTML-/DOM-Shell** +- **generischer externer Content bleibt Daten und wird nicht als freies HTML + interpretiert** + +Diese Entscheidung schliesst explizit aus: + +- globales `supportHtml = true` fuer den Hover-Body +- untrusted Diagnostic-HTML im Webview +- ein Mischen von Layout-Autoritaet und Payload-Autoritaet + +## DDD-Analyse + +### Bounded Context + +Der relevante fachlich-technische Bounded Context ist +**Diagnostic Presentation**. + +Er ist zustaendig fuer: + +- Strukturierung von Diagnostics fuer UI-Surfaces +- Erhaltung der semantischen Information beim Uebergang von rohem Error-Text zu + Rich-Display +- Durchsetzung der Sicherheitsgrenze zwischen Produkt-Layout und generischem + Content + +### Ubiquitous Language + +Die folgenden Begriffe sind innerhalb dieses Contexts verbindlich: + +- **outer shell**: vollstaendig produktkontrolliertes HTML-/DOM-Geruest +- **inner layer**: semantisch strukturierter, generischer Diagnostic-Content +- **trusted shell**: vom Produkt erzeugte Struktur, Klassen, Buttons, Sections, + Header, Karten +- **untrusted payload**: workspace- oder dependency-kontrollierter + Diagnostic-Text, Typ-Inhalt, Plain-English-Translation-Input +- **rich content model**: gemeinsame semantische Darstellung der + Diagnostic-Inhalte +- **hover surface**: nativer VS-Code-Hover via `MarkdownString` +- **sidebar surface**: Webview-basierte host-owned Darstellung + +### Schichtenmodell + +Diese Konvention folgt fuer den Presentation-Context einem klaren Schichtenbild: + +1. **Policy-/Semantik-Schicht** + - `apps/vscode-extension/src/diagnosticRichContent.ts` + - bildet semantische Nodes wie `paragraph`, `inlineCode`, `codeBlock`, + `typeBlock`, `list`, `propertyList` + - ist die Single Source of Truth fuer Rich-Display-Struktur + +2. **Application-Schicht** + - `apps/vscode-extension/src/provider/sidebarViewModel.ts` + - `apps/vscode-extension/src/provider/webviewViewProvider.ts` + - `apps/vscode-extension/src/commands/*.ts` + - verantwortlich fuer Auswahl, Pinning, Locking, View-Model-Aufbau, + Refresh-Zyklen und Command-Routing + +3. **Delivery-/Adapter-Schicht** + - Hover: `apps/vscode-extension/src/hoverContent.ts` + - Sidebar/Webview: `apps/vscode-extension/webview/index.js` + - Styling: `apps/vscode-extension/webview/style.css` + - Syntax-Highlighting-Adapter: `apps/vscode-extension/src/provider/sidebarSyntaxHighlighter.ts` + - Inline-Type-Formatting-Adapter: `apps/vscode-extension/src/provider/sidebarInlineTypeFormatter.ts` + +## 12-Factor-Interpretation + +Diese Extension ist keine klassische HTTP-App, aber die 12-Factor-Prinzipien +werden fuer den eingebetteten VS-Code-Kontext wie folgt interpretiert: + +### 1. Codebase + +Es gibt genau eine semantische Autoritaet fuer Rich-Display: +`DiagnosticRichContentModel`. + +### 2. Dependencies + +Rendering-Abhaengigkeiten muessen explizit und nachvollziehbar sein. +Der aktuelle Standard ist: + +- `shiki`: erlaubt +- `vscode-shiki-bridge`: **nicht** erlaubt + +### 3. Config + +Theme-Auswahl fuer Syntax-Highlighting ist Adapter-Logik und keine Domain-Regel. +Aktuell wird in der Sidebar ueber `ColorThemeKind` auf gebuendelte Shiki-Themes +gemappt. + +### 5. Build / Release / Run + +Die Richtlinie muss in denselben Pipelines validierbar sein, die auch das +Produkt bauen: + +- `typecheck` +- `build` +- `extension test` +- `formatter test` +- `error-translator test` + +### 6. Processes + +Renderer muessen so weit wie moeglich funktional und zustandsarm bleiben. +Persistent gehalten werden nur UI-bezogene Zustandsaspekte wie: + +- aktueller View-Mode +- gesperrter Diagnostic-Kontext +- gepinnte Diagnostics +- Highlighter-Cache + +### 10. Dev / Prod Parity + +Tests muessen dieselben semantischen Renderer-Pfade validieren wie die +tatsaechliche Extension. + +### 11. Logs + +Webview-Fehler und Renderer-Fehler duerfen nicht still scheitern. +Der Webview-Adapter meldet daher Logs zur Extension zurueck. + +## Verbindliche Konventionen + +### 1. Single Source of Truth + +**MUST** + +- Rich-Display-Struktur muss aus + `apps/vscode-extension/src/diagnosticRichContent.ts` stammen. +- Hover und Sidebar duerfen nicht jeweils eigene, voneinander driftende + Strukturmodelle aufbauen. + +**MUST NOT** + +- keine zweite Autoritaet aus frei zusammengeklebten HTML-Strings +- keine Sidebar-spezifische ad-hoc-Struktur als neue Wahrheitsquelle + +### 2. Sidebar-Surface + +Die Sidebar ist die **host-owned Shell-Surface**. + +Sie darf: + +- HTML und DOM fuer die aeussere Struktur voll kontrollieren +- Cards, Header, Actions, Sections, Divider, Copy-Buttons und Layout-Rahmen + selbst erzeugen +- sichere Code-/Type-Block-Darstellung bereitstellen + +Sie muss: + +- DOM ueber `document.createElement(...)` aufbauen +- generischen Content nur als Daten konsumieren +- Text ueber `textContent` oder kontrollierte Token-Nodes materialisieren + +Sie darf nicht: + +- `innerHTML` fuer generische Diagnostic-Payload verwenden +- fremde HTML-Fragmente aus Error-Texten oder Translations einbetten + +### 3. Innere isolierte Ebene + +Die innere Ebene ist **nicht HTML**, sondern Daten. + +Aktuell besteht sie aus: + +- `paragraph` +- `inlineCode` +- `codeBlock` +- `typeBlock` +- `list` +- `propertyList` + +Konsequenz: + +- generischer externer Content ist nur Payload +- die Shell kontrolliert die Darstellungsstruktur +- die Payload kontrolliert nie die HTML-Interpretation + +### 4. Hover-Surface + +Der Hover ist **kein Webview**, sondern ein nativer VS-Code-Surface. + +Darum gelten folgende Regeln: + +**MUST** + +- der Hover-Body bleibt `MarkdownString` +- `supportHtml` fuer den Body bleibt `false` +- Actions werden separat und nur fuer whitelisted Commands trusted gemacht +- dieselbe semantische Struktur darf in Hover-Markdown materialisiert werden + +**MUST NOT** + +- kein globales `supportHtml = true` fuer den Body +- keine Rueckkehr zu trusted raw HTML im Hover + +## Warum der Hover anders behandelt werden muss + +Der Unterschied zwischen Sidebar und Hover ist technisch fundamental: + +### Sidebar + +- eigenes Webview-Dokument +- eigene CSS-Schicht +- eigener DOM-Baum +- eigene JS-Laufzeit +- eigene CSP- und Nachrichtenkanal-Kontrolle + +### Hover + +- kein eigenes HTML-Dokument +- kein eigener DOM-Baum +- keine freie CSS-/JS-Oberflaeche +- nur `MarkdownString` als Host-API +- HTML dort waere nur ein sanitisiertes Teilset innerhalb des Host-Renderers + +Deshalb gilt: + +- **gleiche Sicherheitslogik**: ja +- **gleiche semantische Struktur**: ja +- **gleiche host-owned HTML-Shell**: nein + +Die Limitierung des Hover-Bereichs ist also eine **VS-Code-Produktgrenze**, keine +zufaellige Projektentscheidung. + +## Syntax-Highlighting-Konvention + +### Verbindlicher Stand + +Die Sidebar verwendet jetzt **reines Shiki**. + +Der Standard lautet: + +- `vscode-shiki-bridge`: verboten +- `shiki`: erlaubt +- nur gebuendelte Shiki-Sprachen und gebuendelte Shiki-Themes + +### Aktuelles Mapping + +- `type` -> `typescript` +- `typescriptreact` -> `tsx` +- `javascriptreact` -> `jsx` + +### Theme-Standard + +Die Theme-Wahl fuer die Sidebar folgt derzeit: + +- Dark -> `dark-plus` +- Light -> `light-plus` +- High Contrast Dark -> `github-dark-high-contrast` +- High Contrast Light -> `github-light-high-contrast` + +### Architektonische Begruendung + +Diese Wahl ist bewusst konservativ: + +- kein Bridge-Layer zu VS-Code-Extension-Themes +- kein zusaetzlicher Runtime-Kopplungspunkt an Theme-/Grammar-Introspection +- weniger Fehlermoeglichkeiten im Build und in der Extension-Runtime + +### Erwartungsmanagement + +Diese Konvention garantiert **nicht** 1:1 dieselbe Farbgebung wie der VS-Code-Editor. + +Sie garantiert stattdessen: + +- stabilen, reproduzierbaren Highlighting-Standard +- explizite Dependency-Kontrolle +- klaren Fallback-Pfad ohne VS-Code-Theme-Bridge + +## Typ-Formatierung und Wrapping + +Fuer die Sidebar gilt: + +- lange komplexe Inline-Types duerfen zu multiline Rich-Code-Darstellung + angehoben werden +- die aktuelle Sidebar-Formatter-Schicht arbeitet mit 4er-Einrueckung +- komplexe Types werden als Lesbarkeitsoptimierung strukturiert umgebrochen + +Die lokale Adapter-Implementierung dafuer liegt in: + +- `apps/vscode-extension/src/provider/sidebarInlineTypeFormatter.ts` + +Diese Schicht ist bewusst lokal gehalten, damit keine zusaetzliche riskante +Formatter-Runtime in den Extension-Webview-Pfad gezogen wird. + +## Escaping-Konvention + +Template-Literal-Types und andere Inhalte mit eingebetteten Backticks muessen +intakt bleiben. + +Darum gilt: + +- Code-Spans verwenden variable Backtick-Fence-Laengen +- Parser und Renderer muessen mehrfache Backtick-Fences korrekt verstehen +- ein Inhalt wie `` `${string}@${string}.${string}` `` darf nie einen aeusseren + Markdown-Code-Span zerbrechen + +Relevante Dateien: + +- `packages/error-translator/src/getImprovedMessage.ts` +- `apps/vscode-extension/src/diagnosticRichContent.ts` + +## Prohibitions + +Folgendes ist fuer diese Konvention explizit verboten: + +- untrusted Diagnostic-HTML im Webview +- `innerHTML` fuer generischen Payload-Content +- global trusted HTML im Hover-Body +- Rueckkehr zu `vscode-shiki-bridge` +- parallele, voneinander abweichende Rich-Display-Strukturmodelle + +## Dateien mit Richtlinienautoritaet + +Die aktuell massgeblichen Implementierungsorte fuer diese Konvention sind: + +- `CONVENTIONS.md` +- `docs/conventions/diagnostic-rendering-surfaces.md` +- `apps/vscode-extension/src/diagnosticRichContent.ts` +- `apps/vscode-extension/src/hoverContent.ts` +- `apps/vscode-extension/src/provider/sidebarViewModel.ts` +- `apps/vscode-extension/src/provider/webviewViewProvider.ts` +- `apps/vscode-extension/src/provider/sidebarSyntaxHighlighter.ts` +- `apps/vscode-extension/src/provider/sidebarInlineTypeFormatter.ts` +- `apps/vscode-extension/webview/index.js` +- `apps/vscode-extension/webview/style.css` +- `packages/error-translator/src/getImprovedMessage.ts` + +## Pflege der Konvention + +Diese Konvention **MUSS** aktualisiert werden, wenn sich mindestens einer der +folgenden Punkte aendert: + +- die Trust-Boundary zwischen Shell und Payload +- die Rich-Content-Zwischenrepraesentation +- die Hover-Strategie +- die Sidebar-Syntax-Highlighting-Strategie +- die Escaping-Regeln fuer Translation- oder Type-Content + +Parallel dazu muessen die passenden Tests mitgezogen werden: + +- Extension-Tests fuer Hover und Sidebar +- Translator-Tests fuer Escaping und Platzhalterersetzung +- Formatter-Tests fuer Typ-Formatierung und Wrapping From 333b88986c97b05bc368ecd18793a4efc2974e2f Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Thu, 25 Jun 2026 01:15:24 +0200 Subject: [PATCH 12/13] BREAKING CHANGE: removed vscode-shiki-bridge --- ...URE_RICH_DISPLAY_HTML_LAYOUT_2026_06_24.md | 648 ------------------ 1 file changed, 648 deletions(-) delete mode 100644 HANDOFF_WORKSPACE_SECURE_RICH_DISPLAY_HTML_LAYOUT_2026_06_24.md diff --git a/HANDOFF_WORKSPACE_SECURE_RICH_DISPLAY_HTML_LAYOUT_2026_06_24.md b/HANDOFF_WORKSPACE_SECURE_RICH_DISPLAY_HTML_LAYOUT_2026_06_24.md deleted file mode 100644 index ea7cd4e..0000000 --- a/HANDOFF_WORKSPACE_SECURE_RICH_DISPLAY_HTML_LAYOUT_2026_06_24.md +++ /dev/null @@ -1,648 +0,0 @@ -# Referenzdokument: Workspace-Handoff zur sicheren Wiederherstellung der rich display / HTML-Aussengeruest-Architektur in `pretty-ts-errors` -[INTENT: KONTEXT] - ---- - -## 0. Quellenbasis und Scope-Grenzen -[INTENT: KONTEXT] - -**Workspace-Root:** `C:\Projects\development-platform\vs-code\extensions\pretty-ts-errors` - -**Quellemodus:** `CURRENT_CONTEXT_DEFAULT` mit expliziten Zusatzreferenzen aus dem laufenden Chat-Kontext. - -**Freigegebene Quellenbasis fuer diesen Handoff:** - -- die komplette aktuelle Konversation bis zu diesem Stand -- die im aktuellen Verlauf gelesenen Workspace-Dateien, insbesondere: - - `apps/vscode-extension/src/hoverContent.ts` - - `apps/vscode-extension/src/diagnostics.ts` - - `apps/vscode-extension/src/provider/hoverProvider.ts` - - `apps/vscode-extension/src/provider/sidebarViewModel.ts` - - `apps/vscode-extension/src/provider/selectedTextHoverProvider.ts` - - `apps/vscode-extension/src/formattedDiagnosticsStore.ts` - - `apps/vscode-extension/src/supportedDiagnosticSources.ts` - - `apps/vscode-extension/src/test/suite/index.ts` - - `apps/vscode-extension/src/test/suite/extension.test.ts` - - `apps/vscode-extension/webview/index.js` - - `apps/vscode-extension/project.json` - - `apps/vscode-extension/package.json` - - `packages/formatter/src/errorMessagePrettifier.ts` - - `packages/error-translator/vendor/matt-pocock/errors/2739.md` - - `examples/errors.js` -- die lokal angelegte Upstream-Referenz: - - `tmp/upstream-yoavbls-pretty-ts-errors` - - insbesondere `tmp/upstream-yoavbls-pretty-ts-errors/apps/vscode-extension/src/diagnostics.ts` -- die vom Benutzer eingebrachten Screenshots zur aktuellen Anzeige sowie der Verweis auf den Screenshot in `README.md` -- der aktuelle Workspace-Status inklusive des lokal vorhandenen VSIX-Artefakts `artifacts/vsix/pretty-ts-errors-1.0.2.vsix` - -**Explizite Scope-Grenzen:** - -- Fokus dieses Dokuments ist die **Anzeige-Architektur** der Extension: - - nativer Hover - - Sidebar / Webview - - sichere Trennung von Layout und untrusted Diagnostic-Content -- Der Handoff deckt nur Themen ab, die im aktuellen Source Bundle bereits diskutiert, implementiert oder als Zielbild beschrieben wurden. -- Keine neue, hiervon unabhaengige Produktroadmap. -- Keine autonome Projekt-Vollsuche ausserhalb der oben genannten Quellen. - -**Explizite Exklusionen:** - -- keine neue Loesung, die wieder generisches untrusted HTML direkt in trusted Hover-Surfaces injiziert -- keine Wiedereroeffnung des entfernten Remote-Translator-Egress -- keine Erfindung neuer UX-Ziele ausserhalb der bereits diskutierten Screenshot-/README-Paritaet - ---- - -## 1. Aufgabenuebersicht -[INTENT: KONTEXT] - -Dieser Handoff beschreibt den aktuellen Workspace-Stand und das empfohlene Zielbild fuer die **sichere Wiederherstellung der reicheren Anzeige** in `pretty-ts-errors`. - -Die Kernlage aus dem aktuellen Kontext ist: - -1. Das Originalprojekt `yoavbls/pretty-ts-errors` wurde lokal als Vergleichsbasis unter `tmp/upstream-yoavbls-pretty-ts-errors` geklont. -2. Die frueheren Sicherheitsprobleme wurden bereits entfernt: - - kein Remote-Translator-Egress mehr - - kein untrusted Diagnostic-HTML mehr via `innerHTML` in die Webview - - kein globaler trusted Hover-Body mit `supportHtml = true` -3. Die reichere Darstellung wurde bereits **teilweise** sicher wiederhergestellt: - - der Hover nutzt wieder den Formatter-Kern fuer den Haupttext - - Codeblöcke und formatierte Type-Fragmente werden als Markdown aufgebaut - - die Sidebar rendert den `bodyMarkdown` per Safe-DOM -4. Die aktuelle Anzeige ist funktional korrekt und getestet, aber **noch nicht 100% screenshot-identisch** zum README-/Original-Eindruck. -5. Die priorisierte Zielarchitektur ist: - - **maximale Sicherheit zuerst** - - **host-owned Layout** - - **untrusted externer Content bleibt Daten** - - **HTML im Aussengeruest nur dort, wo die Extension selbst die komplette Struktur kontrolliert** - -Der fachlich richtige Zielzustand ist **nicht** die Rueckkehr zum alten globalen `supportHtml = true`-Hoverpfad, sondern eine Architektur, in der: - -- die Extension ihr Layout selbst kontrolliert, -- externer / workspace-kontrollierter Diagnostic-Text niemals als frei interpretierbares HTML behandelt wird, -- und die Rich-Display-Paritaet ueber ein strukturiertes Renderer-Modell erreicht wird. - ---- - -## 2. Informationsregister (INHALT-Einheiten) -[INTENT: REFERENZ] - -| ID | Typ | Beschreibung | Veraenderung | Status | -|----|-----|--------------|-------------|--------| -| REQ-001 | ANFORDERUNG | Die Anzeige der Extension muss wieder reich / enriched sein und sich so weit wie moeglich an der frueheren README-/Original-Darstellung orientieren. | Ja | Aktiv | -| REQ-002 | ANFORDERUNG | Maximale Sicherheit hat hoechste Prioritaet; externer / generischer Content darf den Benutzer nicht gefaehrden oder korrumpieren. | Ja | Aktiv | -| REQ-003 | ANFORDERUNG | Wenn technisch moeglich, soll das Aussengeruest fuer die Anzeige wieder host-owned / HTML-gesteuert gestaltet werden koennen, ohne untrusted HTML zuzulassen. | Ja | Aktiv | -| REQ-004 | ANFORDERUNG | Der Handoff muss auf Workspace-Ebene den empfohlenen Architekturpfad und die daraus folgende Implementierungsrichtung vollstaendig dokumentieren. | Ja | Erledigt mit diesem Dokument | -| DEC-001 | ENTSCHEIDUNG | Der alte trusted Hover-Body mit `supportHtml = true` ist nicht die empfohlene Zielarchitektur. | Ja | Aktiv | -| DEC-002 | ENTSCHEIDUNG | Empfohlene Top-1-Architektur ist ein strukturierter Layout-/Token-/AST-Renderer mit Dual-Output fuer Hover und Sidebar. | Ja | Aktiv | -| DEC-003 | ENTSCHEIDUNG | Host-owned HTML ist nur fuer vom Produkt voll kontrollierte Shell-Surfaces zulaessig, nicht fuer untrusted Diagnostic-Rohstrings. | Ja | Aktiv | -| INFO-001 | INFORMATION | Das Originalprojekt wurde lokal unter `tmp/upstream-yoavbls-pretty-ts-errors` geklont und ist fuer Direktvergleiche verfuegbar. | Nein | Aktiv | -| INFO-002 | INFORMATION | Der aktuelle Hover-Body in `hoverContent.ts` rendert den Fehlertext als Markdown mit `supportHtml = false`. | Nein | Aktiv | -| INFO-003 | INFORMATION | Die Sidebar / Webview rendert `bodyMarkdown` per Safe-DOM in `webview/index.js`. | Nein | Aktiv | -| INFO-004 | INFORMATION | Ein echter Extension-Integrationstest prueft den Custom-Hover ueber `examples/errors.js`. | Nein | Aktiv | -| INFO-005 | INFORMATION | Das aktuelle Artefakt `artifacts/vsix/pretty-ts-errors-1.0.2.vsix` wurde erfolgreich gebaut. | Nein | Aktiv | -| WARN-001 | WARNUNG | Die Darstellung ist aktuell nicht 100% screenshot-identisch; insbesondere `TS2739` und weitere Fehlerfamilien haben noch Format-Paritaetsluecken. | Nein | Offen | -| WARN-002 | WARNUNG | Die Hoehe des nativen VS-Code-Hovers ist nicht vollstaendig von der Extension kontrollierbar. | Nein | Aktiv | -| WF-001 | WORKFLOW | Die sichere Endarchitektur soll das Layout in strukturierte Nodes aufteilen und Hover-/Sidebar-Rendering aus derselben Zwischenrepräsentation ableiten. | Ja | Offen | -| WF-002 | WORKFLOW | Fuer Screenshot-Paritaet muessen gezielte Formatter-Regeln pro Fehlerfamilie (`TS2739`, `TS2741`, `TS2322`, `TS2345`) erweitert und getestet werden. | Ja | Offen | -| WF-003 | WORKFLOW | Falls host-owned HTML im Aussengeruest weiter ausgebaut wird, darf dies nur fuer voll kontrollierte Shell-Strukturen gelten; eingefuellter externer Inhalt bleibt escaped/textuell/tokenisiert. | Ja | Offen | - ---- - -## 3. Informationseinheiten -[INTENT: SPEZIFIKATION] - -### 3.1 REQ-001: Die Anzeige muss wieder reich / enriched sein -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Die Extension soll fuer TypeScript-/JSDoc-Diagnostics wieder eine reichere Anzeige liefern, die sich an der frueheren visuellen Wirkung des Originalprojekts und des README-Screenshots orientiert. Relevante Merkmale sind: - -- Trennung von Fehlersatz und Type-Blöcken -- mehrzeilige Codeblöcke fuer relevante Typen -- besser strukturierte Anzeige fuer "is missing..."- und "is not assignable..."-Faelle -- bessere Paritaet zwischen Hover und Sidebar - -**Ist-Zustand:** -Die aktuelle Implementierung liefert bereits wieder Rich-Display-Merkmale: - -- `apps/vscode-extension/src/hoverContent.ts` baut den Fehlertext ueber `buildPrettyDiagnosticMessageMarkdown()` aus dem Formatter-Kern auf. -- `apps/vscode-extension/src/hoverContent.ts` rendert Codefences und strukturierte Textteile als Markdown. -- `apps/vscode-extension/webview/index.js` rendert den Haupttext der Sidebar ueber `appendMarkdownBlocks()` in Safe-DOM-Codecontainer und Paragraphen. -- `apps/vscode-extension/src/test/suite/extension.test.ts` prueft Rich-Merkmale wie `TS2741`, Codefences sowie `street: string` und `country: string`. - -Trotzdem ist die aktuelle Darstellung noch nicht 100% README-/Original-paritaetisch. Der aktuelle `TS2739`-Fall zeigt dies deutlich: - -- die Plural-Form wird zwar in Listenform dargestellt, -- die Plain-English-Uebersetzung bleibt noch relativ roh, -- und die exakte visuelle Segmentierung aus dem alten HTML-trusted Hover ist noch nicht vollstaendig reproduziert. - -**Soll-Zustand:** -Die Anzeige soll wieder so reich wie moeglich sein, jedoch auf dem sicheren Renderer-Pfad. Insbesondere muessen: - -- Hauptfehler, Typblöcke, Property-Listen und Relationslinien sauber segmentiert sein, -- Fehlerfamilien mit bekannter hoher Sichtbarkeit (`TS2739`, `TS2741`, `TS2322`, `TS2345`) gezielt auf Screenshot-Paritaet gezogen werden, -- Hover und Sidebar aus derselben logischen Rich-Display-Zwischenrepräsentation ableitbar sein. - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `apps/vscode-extension/src/hoverContent.ts` | Hover-Body und Actions-Rendering | `buildPrettyDiagnosticMessageMarkdown()`, `createBodyMarkdown()`, `createHoverContents()` | -| `apps/vscode-extension/webview/index.js` | Safe-DOM-Rendering der Sidebar | `createDiagnosticCard()`, `appendMarkdownBlocks()`, `appendMarkdownParagraphs()` | -| `packages/formatter/src/errorMessagePrettifier.ts` | Regelbasierte Aufspaltung des Diagnostic-Textes | `getRules()` | -| `packages/error-translator/vendor/matt-pocock/errors/2739.md` | Plain-English-Text fuer `TS2739` | gesamte Datei | -| `examples/errors.js` | gezieltes Repro fuer JS-/Plural-Fall | `pluralHoverExample` | - -**✅ Positivbeispiel(e):** - -```ts -const hoverParts = await createHoverContents(lspDiagnostic, { - bodyMarkdown, -}); -``` - -```js -const messageSection = document.createElement("section"); -messageSection.className = "diagnostic-message-section"; -appendMarkdownBlocks(messageSection, diagnostic.bodyMarkdown); -``` - -**❌ Negativbeispiel(e):** - -```ts -const markdown = new MarkdownString(formattedDiagnostic); -markdown.isTrusted = { enabledCommands }; -markdown.supportHtml = true; -``` - -Warum falsch: -Dieses Muster koppelt den kompletten formatierten Fehlertext wieder an einen global trusted HTML-Hoverpfad und fuehrt genau in Richtung der frueheren O3-Sicherheitsproblematik. - ---- - -### 3.2 REQ-002: Maximale Sicherheit hat hoechste Prioritaet -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Die rich display darf nur so weit ausgebaut werden, wie es mit maximaler Sicherheit gegenueber externen oder workspace-/dependency-kontrollierten Quellen vereinbar ist. - -**Ist-Zustand:** -Die aktuelle Implementierung trennt die Trust-Grenzen bereits: - -- Der Hover-Body verwendet `MarkdownString` mit `supportHtml = false`. -- Die Actions werden separat in `createActionsMarkdown()` gebaut und nur fuer `enabledCommands` trusted gemacht. -- Die Sidebar rendert `bodyMarkdown` via DOM-Aufbau und `textContent`, nicht via `innerHTML`. -- Der Remote-Translator wurde bereits frueher entfernt. - -**Soll-Zustand:** -Alle weiteren UX-/Design-Verbesserungen muessen diese Trennung beibehalten: - -- untrusted Diagnostic-Text bleibt Daten -- keine freie HTML-Interpretation fuer Diagnostic-Rohstrings -- keine Wiedereroeffnung eines global trusted HTML-Hover-Bodies - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `apps/vscode-extension/src/hoverContent.ts` | sichere Trust-Trennung im Hover | `createBodyMarkdown()`, `createActionsMarkdown()` | -| `apps/vscode-extension/webview/index.js` | Safe-DOM statt `innerHTML` | `appendMarkdownBlocks()`, `createInlineMarkdownFragment()` | -| `apps/vscode-extension/src/provider/sidebarViewModel.ts` | strukturierte Modellweitergabe in die Sidebar | `SidebarDiagnosticModel.bodyMarkdown`, `createSidebarDiagnosticModel()` | - -**✅ Positivbeispiel(e):** - -```ts -const markdown = new MarkdownString(); -markdown.appendMarkdown(bodyMarkdown); -markdown.supportHtml = false; -``` - -```js -const code = document.createElement("code"); -code.textContent = fenceMatch.groups.code; -``` - -**❌ Negativbeispiel(e):** - -```js -contentElement.innerHTML = diagnostic.message; -``` - -Warum falsch: -Das wuerde untrusted Diagnostic-Text wieder direkt in eine HTML-Surface schreiben und die Sicherheitsgrenze oeffnen. - ---- - -### 3.3 REQ-003: Host-owned HTML-Aussengeruest nur mit sicheren Slots -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Falls technisch moeglich, soll das Aussengeruest fuer die Anzeige wieder vollstaendig vom Produkt kontrolliert werden koennen, einschliesslich HTML-Layout fuer wiederkehrende visuelle Bereiche. Gleichzeitig darf externer Content niemals als frei interpretierbares HTML in dieses Geruest einfliessen. - -**Ist-Zustand:** -Im aktuellen Code ist das bereits teilweise umgesetzt: - -- Die Sidebar hat ein host-owned HTML-/DOM-Geruest (`diagnostic-card`, `translation-card`, Actions, Copy-Button, Codecontainer). -- Der eigentliche Fehlerinhalt (`bodyMarkdown`) wird aber in dieses Geruest nur als strukturierter Markdown-/Text-Content eingespeist. -- Im nativen VS-Code-Hover gibt es aktuell **kein** host-owned HTML-Aussengeruest fuer den Body; dort bleibt der sichere Markdown-Pfad aktiv. - -**Soll-Zustand:** -Die empfohlene Endarchitektur ist: - -- host-owned HTML nur fuer komplett kontrollierte Shell-Bereiche -- eingebetteter externer Content nur als: - - Markdown - - escaped Text - - tokenisierte / typisierte Layout-Nodes -- kein generisches Einfuegen fremder HTML-Fragmente - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `apps/vscode-extension/webview/index.js` | bestehendes host-owned HTML-/DOM-Aussengeruest | `createDiagnosticCard()`, `createTranslationsSection()`, `appendMarkdownBlocks()` | -| `apps/vscode-extension/src/hoverContent.ts` | sicherer Hover-Body ohne HTML-Trust | `buildPrettyDiagnosticMessageMarkdown()`, `createBodyMarkdown()` | -| `packages/formatter/src/errorMessagePrettifier.ts` | aktuelle Vorstufe des kuenftigen Strukturmodells | `getRules()` | - -**✅ Positivbeispiel(e):** - -```js -const card = document.createElement("article"); -card.className = "diagnostic-card"; - -const messageSection = document.createElement("section"); -messageSection.className = "diagnostic-message-section"; -appendMarkdownBlocks(messageSection, diagnostic.bodyMarkdown); -card.appendChild(messageSection); -``` - -**❌ Negativbeispiel(e):** - -```ts -const markdownString = new MarkdownString(fullHtmlFromDiagnostic); -markdownString.supportHtml = true; -``` - -Warum falsch: -Das HTML-Geruest waere dann nicht mehr wirklich host-owned, weil der eingefuellte Diagnostic-String selbst interpretierbares HTML transportieren duerfte. - ---- - -### 3.4 REQ-004: Workspace-Handoff auf empfohlene Option und Implementierungsweg ausrichten -[INTENT: SPEZIFIKATION] - -**Typ:** ANFORDERUNG - -**Beschreibung:** -Das Dokument muss den aktuell empfohlenen Architekturpfad und die daraus folgende Weiterarbeit so festhalten, dass ein neuer Agent ohne weitere Projektsuche direkt fortsetzen kann. - -**Ist-Zustand:** -Die empfohlene Option wurde im laufenden Kontext bereits festgelegt: - -- Top-1-Empfehlung: **strukturierter Token-/AST-Renderer mit Dual-Output** -- Rich Display soll ohne Wiedereroeffnung des alten HTML-trusted Hover-Bodies erreicht werden. - -**Soll-Zustand:** -Ein Folge-Agent muss aus diesem Dokument direkt ableiten koennen: - -- welche Pfade bereits sicher sind, -- welche Rendering-Paritaetsluecken noch offen sind, -- welche Implementierungsschritte fuer die Endarchitektur ausstehen, -- welche Tests und Vergleichsquellen bereits existieren. - -**✅ Positivbeispiel(e):** - -```md -- Upstream-Referenz lokal vorhanden -- Hover-Body sicherer Markdown-Pfad -- Sidebar host-owned DOM-Shell -- naechster Schritt: typed DiagnosticLayoutModel -``` - -**❌ Negativbeispiel(e):** - -```md -Die Anzeige ist im Wesentlichen fertig. Nur noch Kleinigkeiten. -``` - -Warum falsch: -Das verschweigt die noch offenen Format-Paritaetsluecken und ist fuer einen Folge-Agenten nicht HCOA-ready. - ---- - -### 3.5 DEC-001: Der alte globale `supportHtml = true`-Hoverpfad ist nicht die Zielarchitektur -[INTENT: SPEZIFIKATION] - -**Typ:** ENTSCHEIDUNG - -**Beschreibung:** -Das Originalprojekt nutzte fuer den fertig formatierten Hover einen `MarkdownString` mit `supportHtml = true` und `isTrusted = { enabledCommands }`. Diese Kombination ist nicht die empfohlene Zielarchitektur fuer den aktuellen Workspace. - -**Ist-Zustand:** -Im Upstream-Klon steht der alte Pfad sichtbar in: - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `tmp/upstream-yoavbls-pretty-ts-errors/apps/vscode-extension/src/diagnostics.ts` | alter trusted Hoverpfad | `prettifyDiagnosticForHover()`, `MarkdownString`, `supportHtml = true`, `isTrusted = { enabledCommands }` | - -**Soll-Zustand:** -Der Hover-Body bleibt bei `supportHtml = false`; reiche Darstellung kommt ueber sicheren Markdown-/Token-/Node-Renderpfad. - ---- - -### 3.6 DEC-002: Empfohlene Top-1-Architektur ist ein strukturierter Layout-/Token-/AST-Renderer mit Dual-Output -[INTENT: SPEZIFIKATION] - -**Typ:** ENTSCHEIDUNG - -**Beschreibung:** -Die beste aktuelle Architekturentscheidung fuer den weiteren Ausbau ist: - -- eine gemeinsame strukturierte Zwischenrepräsentation fuer Fehlerdarstellung -- ein Markdown-Output fuer den nativen Hover -- ein Safe-DOM-/host-owned HTML-Output fuer Sidebar/Webview - -**Ist-Zustand:** -Der aktuelle Code ist eine Vorstufe dazu: - -- `hoverContent.ts` materialisiert bereits prettified Markdown -- `webview/index.js` rendert bereits `bodyMarkdown` strukturiert in DOM -- die Daten werden bereits ueber `FormattedDiagnostic.bodyMarkdown` weitergereicht - -**Soll-Zustand:** -Ein kuenftiger `DiagnosticLayoutModel` sollte statt bloßer String-Rewrites typed Nodes wie diese tragen: - -- `paragraph` -- `inlineCode` -- `codeBlock` -- `propertyList` -- `typeBlock` -- `relationLine` - -und daraus zwei Renderer ableiten: - -- `renderHoverMarkdown(layout)` -- `renderSidebarDom(layout)` - ---- - -### 3.7 DEC-003: Host-owned HTML ist nur fuer voll kontrollierte Shell-Surfaces zulaessig -[INTENT: SPEZIFIKATION] - -**Typ:** ENTSCHEIDUNG - -**Beschreibung:** -HTML im Aussengeruest ist akzeptabel, wenn die komplette Struktur von der Extension stammt und untrusted Content weiterhin nur als Daten eingehaengt wird. - -**Ist-Zustand:** -Die Sidebar erfuellt dieses Muster bereits teilweise. - -**Soll-Zustand:** -Dieses Prinzip bleibt verbindlich: - -- HTML nur aus eigener Struktur -- Slots nur fuer escaped / tokenisierte / markdownbasierte Inhalte -- keine generische HTML-Interpolation aus Diagnostic-Rohstrings - ---- - -### 3.8 INFO-001: Upstream-Klon ist lokal verfuegbar -[INTENT: SPEZIFIKATION] - -**Typ:** INFORMATION - -**Beschreibung:** -Das Originalprojekt `yoavbls/pretty-ts-errors` wurde lokal nach `tmp/upstream-yoavbls-pretty-ts-errors` geklont. Dieser Clone dient als Referenz fuer: - -- alte Hover-Architektur -- README-/Screenshot-Paritaet -- direkten Codevergleich - ---- - -### 3.9 INFO-002: Der aktuelle Hover-Body ist sicherer Markdown statt trusted HTML -[INTENT: SPEZIFIKATION] - -**Typ:** INFORMATION - -**Beschreibung:** -Der aktuelle Body des Hovers wird in `apps/vscode-extension/src/hoverContent.ts` via `MarkdownString.appendMarkdown()` aufgebaut und explizit mit `supportHtml = false` abgeschlossen. - ---- - -### 3.10 INFO-003: Die Sidebar rendert den Haupttext via Safe-DOM -[INTENT: SPEZIFIKATION] - -**Typ:** INFORMATION - -**Beschreibung:** -Der Haupttext eines Diagnostics liegt im Modell als `bodyMarkdown` vor und wird in `apps/vscode-extension/webview/index.js` ueber `appendMarkdownBlocks()` und `appendMarkdownParagraphs()` in DOM-Elemente materialisiert. - ---- - -### 3.11 INFO-004: Ein echter Extension-Integrationstest ist vorhanden -[INTENT: SPEZIFIKATION] - -**Typ:** INFORMATION - -**Beschreibung:** -`apps/vscode-extension/src/test/suite/extension.test.ts` prueft den aktiven Hover gegen `examples/errors.js` per `vscode.executeHoverProvider`. - -**Ist-Zustand:** -Der Test verifiziert aktuell: - -- `Show in Sidebar` -- `Local explanation` -- `TS2741` -- Codefences -- `street: string` -- `country: string` - ---- - -### 3.12 INFO-005: Das aktuelle VSIX-Artefakt ist gebaut -[INTENT: SPEZIFIKATION] - -**Typ:** INFORMATION - -**Beschreibung:** -Der aktuelle Package-Lauf hat `artifacts/vsix/pretty-ts-errors-1.0.2.vsix` erfolgreich erzeugt. - ---- - -### 3.13 WARN-001: Die Anzeige ist noch nicht 100% screenshot-identisch -[INTENT: SPEZIFIKATION] - -**Typ:** WARNUNG - -**Beschreibung:** -Obwohl die Anzeige wieder reich ist, ist sie noch nicht 100% deckungsgleich mit dem README-/Original-Screenshot. Die Gruende sind bereits im aktuellen Source Bundle belegt: - -- andere Fehlerfamilien werden unterschiedlich gut zerlegt -- `TS2739` hat aktuell eine eher rohe Plain-English-Translation -- der sichere Markdown-Pfad reproduziert nicht jeden frueheren HTML-/Hover-Hack pixelgleich - -**Dateireferenzen:** - -| Dateipfad | Relevanz | Relevante Elemente | -|-----------|----------|-------------------| -| `packages/error-translator/vendor/matt-pocock/errors/2739.md` | flache Explanation fuer `TS2739` | gesamte Datei | -| `packages/formatter/src/errorMessagePrettifier.ts` | nur partielle Spezialregeln fuer Fehlerfamilien | Plural-Regel `is missing the following properties...` | - ---- - -### 3.14 WARN-002: Die Hoehe des nativen Hovers ist nicht vollstaendig kontrollierbar -[INTENT: SPEZIFIKATION] - -**Typ:** WARNUNG - -**Beschreibung:** -Die nativen VS-Code-Hover-Container werden vom Editor selbst kontrolliert. Die Extension kann den Inhalt verbessern, aber nicht frei die Widget-Hoehe deterministisch erzwingen. - ---- - -### 3.15 WF-001: Endarchitektur auf ein typed `DiagnosticLayoutModel` heben -[INTENT: SPEZIFIKATION] - -**Typ:** WORKFLOW - -**Beschreibung:** -Naechster Hauptschritt fuer eine robuste Endarchitektur: - -1. aktuellen Formatter von bloßem String-Rewrite in typed Layout-Nodes ueberfuehren -2. denselben Layout-Baum in zwei Renderer speisen: - - Hover-Markdown - - Sidebar-Safe-DOM -3. Translation-Blöcke und Property-Listen ebenfalls als typed Nodes modellieren - -**Ist-Zustand:** -Aktuell wird `bodyMarkdown` als String erzeugt und spaeter erneut geparst / gerendert. - -**Soll-Zustand:** -Ein gemeinsames Modell vermeidet Drift zwischen Hover und Sidebar. - ---- - -### 3.16 WF-002: Fehlerfamilien gezielt auf Screenshot-Paritaet ziehen -[INTENT: SPEZIFIKATION] - -**Typ:** WORKFLOW - -**Beschreibung:** -Gezielte Paritaetsarbeit fuer die sichtbarsten Fehlerfamilien: - -1. `TS2739` -2. `TS2741` -3. `TS2322` -4. `TS2345` - -Je Fehlerfamilie sollten: - -- Repro-Beispiele in `examples/` -- Formatter-Regeln -- Plain-English-Translations -- Integrationstests / Snapshot-Tests - -koordiniert nachgezogen werden. - ---- - -### 3.17 WF-003: Host-owned HTML im Aussengeruest nur mit sicheren Slots weiter ausbauen -[INTENT: SPEZIFIKATION] - -**Typ:** WORKFLOW - -**Beschreibung:** -Falls die Designqualitaet weiter erhoeht werden soll, ist der sichere Ausbaupfad: - -- mehr host-owned Layout in Sidebar/Webview -- kein generisches HTML fuer Diagnostic-Rohstrings -- Slots nur fuer: - - escaped Text - - Markdown - - typed Layout-Nodes - -Dies gilt ausdruecklich **nicht** als Freigabe, den nativen Hover-Body wieder global auf `supportHtml = true` zu setzen. - ---- - -## 4. Konventionen & Constraints -[INTENT: CONSTRAINT] - -- Maximale Sicherheit hat Vorrang vor visueller Paritaet. -- Untrusted Diagnostic-Text bleibt Daten und darf nicht als frei interpretierbares HTML behandelt werden. -- Host-owned HTML ist nur fuer voll kontrollierte Shell-Surfaces zulaessig. -- Rich-Display-Paritaet soll bevorzugt ueber strukturierte Renderer-Modelle statt ueber globales HTML-Trusting erreicht werden. -- Hover und Sidebar sollen langfristig aus derselben logischen Rich-Display-Zwischenrepräsentation ableitbar sein. -- Die nativen VS-Code-Hover-Grenzen (Hoehe, Host-Chrome, Scroll-Verhalten) sind weiterhin editorbestimmt. - ---- - -## 5. Dateipfad-Index -[INTENT: REFERENZ] - -| # | Dateipfad | Relevanz | Zugehoerige Einheit-IDs | -|---|-----------|----------|-------------------------| -| 1 | `apps/vscode-extension/src/hoverContent.ts` | sicherer Rich-Hover-Body, Markdown-Prettifier, Action-Trust-Trennung | REQ-001, REQ-002, INFO-002, DEC-001, DEC-002 | -| 2 | `apps/vscode-extension/src/diagnostics.ts` | Diagnostic-Sync, Cache, bodyMarkdown-Erzeugung, Hover-Provider-Registrierung | REQ-001, REQ-002, INFO-002, INFO-004 | -| 3 | `apps/vscode-extension/src/provider/hoverProvider.ts` | Store- und Live-Diagnostic-Fallback fuer Hover | REQ-001, INFO-002, INFO-004 | -| 4 | `apps/vscode-extension/src/provider/sidebarViewModel.ts` | strukturiertes Sidebar-Modell inkl. `bodyMarkdown` | REQ-003, INFO-003 | -| 5 | `apps/vscode-extension/src/provider/selectedTextHoverProvider.ts` | Debug-Hover fuer selektierten Text | INFO-004 | -| 6 | `apps/vscode-extension/src/formattedDiagnosticsStore.ts` | Speicherstruktur fuer Rich-Diagnostic-Items | REQ-001, INFO-003 | -| 7 | `apps/vscode-extension/src/supportedDiagnosticSources.ts` | zugelassene Diagnostic-Quellen | REQ-002 | -| 8 | `apps/vscode-extension/src/test/suite/index.ts` | Test-Harness, Testdatei-Discovery | INFO-004 | -| 9 | `apps/vscode-extension/src/test/suite/extension.test.ts` | echter Extension-Integrationstest fuer Hover-Rich-Display | INFO-004, WF-002 | -| 10 | `apps/vscode-extension/webview/index.js` | Safe-DOM-Rendering des richen Sidebar-Inhalts | REQ-001, REQ-002, REQ-003, INFO-003, WF-003 | -| 11 | `apps/vscode-extension/project.json` | Build-/Test-/Package-Targets, ESM-Banner-Fix | INFO-005 | -| 12 | `apps/vscode-extension/package.json` | Extension-Manifest und VS Code Engine-Line | INFO-005 | -| 13 | `packages/formatter/src/errorMessagePrettifier.ts` | bestehende Formatter-Regelbasis, u.a. Plural-Regel | REQ-001, WARN-001, WF-001, WF-002 | -| 14 | `packages/error-translator/vendor/matt-pocock/errors/2739.md` | aktuelle Plain-English-Uebersetzung fuer `TS2739` | WARN-001, WF-002 | -| 15 | `examples/errors.js` | JS-Repro inkl. Plural-Form fuer `TS2739` | INFO-004, WF-002 | -| 16 | `tmp/upstream-yoavbls-pretty-ts-errors/apps/vscode-extension/src/diagnostics.ts` | lokaler Upstream-Vergleich fuer den alten trusted Hoverpfad | DEC-001, INFO-001 | -| 17 | `artifacts/vsix/pretty-ts-errors-1.0.2.vsix` | aktuelles Installationsartefakt | INFO-005 | - ---- - -## 6. Ausfuehrungskontext fuer LLM-Agents -[INTENT: KONTEXT] - -Ein Folge-Agent kann mit diesem Dokument direkt weiterarbeiten, ohne neue Projektsuche, wenn er die folgenden Punkte beachtet: - -1. **Sicherheitsgrenze zuerst** - - Kein globaler Rueckfall auf `supportHtml = true` fuer den Fehler-Body. - - Kein generisches HTML aus Diagnostic-Rohstrings. - -2. **Empfohlene Zielarchitektur** - - typed `DiagnosticLayoutModel` - - Dual-Output fuer Hover und Sidebar - - host-owned HTML nur fuer kontrollierte Shell-Surfaces - -3. **Aktuelle Funktionslage** - - Rich-Display ist wieder aktiv - - Hover und Sidebar nutzen beide bereits denselben prettified Haupttext in unterschiedlicher Form - - Integrationstest ist grün - - VSIX `1.0.2` ist gebaut - -4. **Offene Kernarbeit** - - Screenshot-Paritaet pro Fehlerfamilie - - `TS2739`-Translation und Layout weiter schaerfen - - gemeinsame strukturierte Zwischenrepräsentation statt Markdown-String als Endformat - -5. **Wichtige Nicht-Ziele** - - keine neue Remote-Translation - - keine Wiedereroeffnung des alten trusted HTML-Hovers - - keine Sicherheitsabsenkung zugunsten von Komfort oder Geschwindigkeit - -Wenn keine weitere Scope-Aenderung erfolgt, ist die empfohlene Fortsetzungsreihenfolge: - -1. `TS2739`-Paritaet verbessern -2. typed Layout-Modell einziehen -3. denselben Modellpfad fuer weitere Fehlerfamilien verallgemeinern - From 8058ac0ce6d607b8a1c46c529ff2e1c941398151 Mon Sep 17 00:00:00 2001 From: Dennis Demand Date: Fri, 26 Jun 2026 11:59:48 +0200 Subject: [PATCH 13/13] BREAKING CHANGE: removed not needed nx targets --- .gitignore | 3 + README.md | 34 +- apps/vscode-extension/package.json | 2 +- apps/vscode-extension/project.json | 21 +- .../vscode-extension/src/commands/validate.ts | 10 +- .../provider/sidebarInlineTypeFormatter.ts | 7 +- .../src/provider/sidebarViewModel.ts | 41 +- apps/vscode-extension/tsconfig.app.json | 35 +- apps/vscode-extension/tsconfig.json | 20 +- apps/vscode-extension/tsconfig.test.json | 50 +- apps/vscode-extension/tsconfig.typecheck.json | 68 + eslint.config.mjs | 25 +- nx.json | 38 +- package.json | 6 +- packages/error-translator/project.json | 28 +- packages/error-translator/src/parseErrors.ts | 16 +- .../test/translationContract.test.ts | 37 +- packages/error-translator/tsconfig.json | 32 +- packages/error-translator/tsconfig.lib.json | 28 +- packages/error-translator/vitest.config.ts | 9 + packages/formatter/project.json | 72 +- .../formatter/src/errorMessagePrettifier.ts | 15 +- packages/formatter/test/formatter.vitest.ts | 8 +- packages/formatter/tsconfig.json | 33 +- packages/formatter/tsconfig.lib.json | 31 +- packages/utils/project.json | 39 +- packages/utils/tsconfig.json | 32 +- packages/utils/tsconfig.lib.json | 27 +- packages/vscode-formatter/package.json | 1 + packages/vscode-formatter/project.json | 72 +- packages/vscode-formatter/tsconfig.json | 35 +- packages/vscode-formatter/tsconfig.lib.json | 31 +- pnpm-lock.yaml | 9589 +++++++++++------ pnpm-workspace.yaml | 29 +- project.json | 31 - tsconfig.bundler-node.base.json | 37 + tsconfig.lib.base.json | 48 + tsconfig.node.base.json | 41 + tsconfig.shared-package-artifact.base.json | 36 + tsconfig.test.base.json | 26 + tsconfig.typecheck.base.json | 58 + tsconfig.types.base.json | 26 + tsconfig.web.base.json | 25 + 43 files changed, 7406 insertions(+), 3446 deletions(-) create mode 100644 apps/vscode-extension/tsconfig.typecheck.json create mode 100644 packages/error-translator/vitest.config.ts delete mode 100644 project.json create mode 100644 tsconfig.bundler-node.base.json create mode 100644 tsconfig.lib.base.json create mode 100644 tsconfig.node.base.json create mode 100644 tsconfig.shared-package-artifact.base.json create mode 100644 tsconfig.test.base.json create mode 100644 tsconfig.typecheck.base.json create mode 100644 tsconfig.types.base.json create mode 100644 tsconfig.web.base.json diff --git a/.gitignore b/.gitignore index fa9f31c..f1eab89 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,7 @@ tsconfig.tsbuildinfo coverage artifacts/vsix tmp +.cache +.cache/ +**/.cache/ *.tsbuildinfo \ No newline at end of file diff --git a/README.md b/README.md index f740595..76b2e9e 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,6 @@ Current Nx projects in this workspace: - `@pretty-ts-errors/vscode-formatter` - `@pretty-ts-errors/formatter` - `@pretty-ts-errors/utils` -- `workspace-root` ### Build the application @@ -180,6 +179,16 @@ pnpm exec nx dev @pretty-ts-errors/formatter pnpm exec nx dev @pretty-ts-errors/vscode-formatter ``` +Typecheck the shared packages: + +```bash +pnpm exec nx typecheck @pretty-ts-errors/utils +pnpm exec nx typecheck @pretty-ts-errors/formatter +pnpm exec nx typecheck @pretty-ts-errors/vscode-formatter +pnpm exec nx typecheck @pretty-ts-errors/error-translator +pnpm exec nx typecheck pretty-ts-errors +``` + Lint the shared packages: ```bash @@ -187,6 +196,7 @@ pnpm exec nx lint @pretty-ts-errors/utils pnpm exec nx lint @pretty-ts-errors/formatter pnpm exec nx lint @pretty-ts-errors/vscode-formatter pnpm exec nx lint @pretty-ts-errors/error-translator +pnpm exec nx lint pretty-ts-errors ``` Run the library test suites: @@ -200,22 +210,22 @@ pnpm exec nx test @pretty-ts-errors/error-translator Watch the library tests: ```bash -pnpm exec nx run "@pretty-ts-errors/formatter:test:watch" -pnpm exec nx run "@pretty-ts-errors/vscode-formatter:test:watch" +pnpm exec nx test @pretty-ts-errors/formatter --watch +pnpm exec nx test @pretty-ts-errors/vscode-formatter --watch ``` Run the library coverage targets: ```bash -pnpm exec nx run "@pretty-ts-errors/formatter:test:coverage" -pnpm exec nx run "@pretty-ts-errors/vscode-formatter:test:coverage" +pnpm exec nx test @pretty-ts-errors/formatter --coverage +pnpm exec nx test @pretty-ts-errors/vscode-formatter --coverage ``` -Publish the public libraries: +Preview and publish the public libraries: ```bash -pnpm exec nx publish @pretty-ts-errors/formatter -pnpm exec nx publish @pretty-ts-errors/vscode-formatter +pnpm exec nx release --dry-run +pnpm exec nx release publish ``` ### Workspace commands @@ -223,20 +233,20 @@ pnpm exec nx publish @pretty-ts-errors/vscode-formatter Format the whole workspace: ```bash -pnpm exec nx run workspace-root:format +pnpm exec nx format:write --all ``` Check formatting without writing changes: ```bash -pnpm exec nx run "workspace-root:format:check" +pnpm exec nx format:check --all ``` Synchronize Nx project references: ```bash -pnpm exec nx run workspace-root:sync -pnpm exec nx run "workspace-root:sync:check" +pnpm exec nx sync +pnpm exec nx sync:check ``` ### Useful run-many examples diff --git a/apps/vscode-extension/package.json b/apps/vscode-extension/package.json index 43d7ae6..699e8da 100644 --- a/apps/vscode-extension/package.json +++ b/apps/vscode-extension/package.json @@ -4,7 +4,7 @@ "type": "module", "publisher": "CyberT33N", "description": "Make TypeScript errors prettier and more human-readable in VSCode", - "version": "1.4.0", + "version": "1.5.0", "icon": "assets/icon.png", "repository": { "type": "git", diff --git a/apps/vscode-extension/project.json b/apps/vscode-extension/project.json index e88fa6c..73e6621 100644 --- a/apps/vscode-extension/project.json +++ b/apps/vscode-extension/project.json @@ -78,20 +78,6 @@ } } }, - "lint": { - "executor": "nx:run-commands", - "options": { - "cwd": "apps/vscode-extension", - "command": "pnpm exec tsc -p tsconfig.app.json --noEmit" - } - }, - "typecheck": { - "executor": "nx:run-commands", - "options": { - "cwd": "apps/vscode-extension", - "command": "pnpm exec tsc -p tsconfig.app.json --noEmit" - } - }, "test": { "executor": "nx:run-commands", "cache": false, @@ -123,12 +109,13 @@ } }, "webview": { - "executor": "nx:run-commands", + "executor": "@nx/web:file-server", "cache": false, "continuous": true, "options": { - "cwd": "apps/vscode-extension", - "command": "pnpm exec http-server ./webview -o -a localhost -p 8080" + "host": "localhost", + "port": 8080, + "staticFilePath": "apps/vscode-extension/webview" } } } diff --git a/apps/vscode-extension/src/commands/validate.ts b/apps/vscode-extension/src/commands/validate.ts index df8c468..9042166 100644 --- a/apps/vscode-extension/src/commands/validate.ts +++ b/apps/vscode-extension/src/commands/validate.ts @@ -52,7 +52,10 @@ export function tryEnsureRange( return { isValidRange: false }; } -type RangeLike = { start: PositionLike; end: PositionLike }; +interface RangeLike { + start: PositionLike; + end: PositionLike; +} function isRangeLike(value: unknown): value is RangeLike { return ( @@ -65,7 +68,10 @@ function isRangeLike(value: unknown): value is RangeLike { ); } -type PositionLike = { line: number; character: number }; +interface PositionLike { + line: number; + character: number; +} function isPositionLike(value: unknown): value is PositionLike { return ( diff --git a/apps/vscode-extension/src/provider/sidebarInlineTypeFormatter.ts b/apps/vscode-extension/src/provider/sidebarInlineTypeFormatter.ts index 747e201..9715ab9 100644 --- a/apps/vscode-extension/src/provider/sidebarInlineTypeFormatter.ts +++ b/apps/vscode-extension/src/provider/sidebarInlineTypeFormatter.ts @@ -33,12 +33,7 @@ function formatComplexType(value: string): string { } }; - for (let index = 0; index < text.length; index += 1) { - const char = text[index]; - if (char === undefined) { - continue; - } - + for (const char of text) { if (quote !== null) { output += char; if (escaped) { diff --git a/apps/vscode-extension/src/provider/sidebarViewModel.ts b/apps/vscode-extension/src/provider/sidebarViewModel.ts index 8423891..400ae60 100644 --- a/apps/vscode-extension/src/provider/sidebarViewModel.ts +++ b/apps/vscode-extension/src/provider/sidebarViewModel.ts @@ -16,27 +16,27 @@ import { type SidebarCodePresentation, } from "./sidebarSyntaxHighlighter"; -type SidebarCommandAction = { +interface SidebarCommandAction { kind: "command"; command: string; args: unknown[]; icon: string; title: string; -}; +} -type SidebarLinkAction = { +interface SidebarLinkAction { kind: "link"; href: string; icon: string; title: string; -}; +} -type SidebarCopyAction = { +interface SidebarCopyAction { kind: "copy"; value: string; icon: string; title: string; -}; +} export type SidebarActionModel = | SidebarCommandAction @@ -117,13 +117,10 @@ function serializeRange(range: Range) { } function createRevealAction( - diagnostic: FormattedDiagnostic, + diagnostic: FormattedDiagnostic ): SidebarCommandAction | null { const related = diagnostic.lspDiagnostic.relatedInformation?.[0]; - if ( - related === undefined || - !related.message.includes("is declared here") - ) { + if (related === undefined || !related.message.includes("is declared here")) { return null; } @@ -141,7 +138,7 @@ function getCodeNumber(code: FormattedDiagnostic["lspDiagnostic"]["code"]) { } async function mapInlineNodeForSidebar( - node: DiagnosticInlineNode, + node: DiagnosticInlineNode ): Promise { switch (node.kind) { case "text": @@ -151,9 +148,7 @@ async function mapInlineNodeForSidebar( const { multiline, text } = formatSidebarInlineType(node.text); const language = multiline ? "type" : null; const presentation = - language === null - ? null - : await highlightSidebarCode(text, language); + language === null ? null : await highlightSidebarCode(text, language); return { kind: "inlineCode", @@ -167,15 +162,17 @@ async function mapInlineNodeForSidebar( } async function mapInlineNodeLinesForSidebar( - lines: DiagnosticInlineNode[][], + lines: DiagnosticInlineNode[][] ): Promise { return Promise.all( - lines.map((line) => Promise.all(line.map((node) => mapInlineNodeForSidebar(node)))), + lines.map((line) => + Promise.all(line.map((node) => mapInlineNodeForSidebar(node))) + ) ); } async function mapBlockForSidebar( - block: DiagnosticBlockNode, + block: DiagnosticBlockNode ): Promise { switch (block.kind) { case "paragraph": @@ -204,14 +201,14 @@ async function mapBlockForSidebar( } async function mapBlocksForSidebar( - blocks: DiagnosticBlockNode[], + blocks: DiagnosticBlockNode[] ): Promise { return Promise.all(blocks.map((block) => mapBlockForSidebar(block))); } export async function createSidebarDiagnosticModel( diagnostic: FormattedDiagnostic, - options?: { note?: string }, + options?: { note?: string } ): Promise { const code = getCodeNumber(diagnostic.lspDiagnostic.code); const actions: SidebarActionModel[] = [ @@ -256,8 +253,8 @@ export async function createSidebarDiagnosticModel( code: translation.code, rawError: translation.rawError, }; - }, - ), + } + ) ); const model: SidebarDiagnosticModel = { diff --git a/apps/vscode-extension/tsconfig.app.json b/apps/vscode-extension/tsconfig.app.json index a9bbbf7..aeb2173 100644 --- a/apps/vscode-extension/tsconfig.app.json +++ b/apps/vscode-extension/tsconfig.app.json @@ -1,14 +1,37 @@ { - "extends": "./tsconfig.json", + /** + * Thin bundler-first Node-hosted app leaf for the VS Code extension runtime. + * This file owns only local app facts and reuses the shared workspace role. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the shared bundler-first Node-hosted app contract instead of + * redefining runtime lane policy inside the leaf. + */ + "extends": "../../tsconfig.bundler-node.base.json", + "compilerOptions": { - "module": "ESNext", - "moduleResolution": "Bundler", - "target": "ESNext", - "types": ["node"], - "noEmit": true + /** + * The app leaf alone knows its concrete source root. + */ + "rootDir": "./src" }, + + /** + * The app runtime lane covers production-facing extension sources only. + */ "include": ["src/**/*.ts", "src/globals.d.ts"], + + /** + * Test-owned files belong to the separate test lane. + */ "exclude": ["src/test/**"], + + /** + * Project references remain leaf facts because they model this app leaf's + * real upstream monorepo dependency graph. + */ "references": [ { "path": "../../packages/utils/tsconfig.lib.json" diff --git a/apps/vscode-extension/tsconfig.json b/apps/vscode-extension/tsconfig.json index 410930c..738a5c0 100644 --- a/apps/vscode-extension/tsconfig.json +++ b/apps/vscode-extension/tsconfig.json @@ -1,12 +1,24 @@ { + /** + * Root coordination surface for the VS Code extension leaf. + * This file owns references only and does not become a runtime or + * validation lane itself. + */ "extends": "../../tsconfig.base.json", + + /** + * The coordination surface owns no files directly. + */ "files": [], + + /** + * Register the validation-facing project-reference surface explicitly. + * The runtime and test lanes are consumed directly by their owning targets, + * while the coordination surface stays focused on Nx/TypeScript typechecking. + */ "references": [ { - "path": "./tsconfig.app.json" - }, - { - "path": "./tsconfig.test.json" + "path": "./tsconfig.typecheck.json" } ] } diff --git a/apps/vscode-extension/tsconfig.test.json b/apps/vscode-extension/tsconfig.test.json index 9e50ead..4fbaad1 100644 --- a/apps/vscode-extension/tsconfig.test.json +++ b/apps/vscode-extension/tsconfig.test.json @@ -1,14 +1,54 @@ { - "extends": "./tsconfig.json", + /** + * Thin compiled test-harness leaf for the VS Code extension integration tests. + * This lane deliberately reopens emit because the mocha/electron harness runs + * compiled JavaScript files from `out/`. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the generic runtime test-consumer role and override only the local + * facts required by this specific compiled test harness. + */ + "extends": "../../tsconfig.test.base.json", + "compilerOptions": { + /** + * This harness validates under native Node ESM semantics instead of the + * bundler-first app lane. + */ "module": "NodeNext", + + /** + * The test harness resolves modules under native Node semantics as well. + */ "moduleResolution": "NodeNext", - "target": "ESNext", + + /** + * Unlike the generic non-emitting test role, this harness must write actual + * JavaScript files that are executed by the VS Code test runner. + */ + "noEmit": false, + + /** + * Open only the ambient test globals required by this specific mocha lane. + */ "types": ["node", "mocha"], + + /** + * The compiled test harness writes into a dedicated non-committed output + * lane separate from app runtime and validation artifacts. + */ "outDir": "out", + + /** + * The test harness leaf alone knows its concrete source root. + */ "rootDir": "src" }, - "include": [ - "src/test/**/*.ts" - ] + + /** + * The compiled harness lane covers test-owned TypeScript sources only. + */ + "include": ["src/test/**/*.ts"] } diff --git a/apps/vscode-extension/tsconfig.typecheck.json b/apps/vscode-extension/tsconfig.typecheck.json new file mode 100644 index 0000000..200562e --- /dev/null +++ b/apps/vscode-extension/tsconfig.typecheck.json @@ -0,0 +1,68 @@ +{ + /** + * Thin validation surface for the VS Code extension app leaf. + * This file owns only local facts and reuses the shared workspace + * typecheck role template. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the shared validation-lane contract instead of redefining compiler + * policy or lane semantics inside the app leaf. + */ + "extends": "../../tsconfig.typecheck.base.json", + + "compilerOptions": { + /** + * The app leaf alone knows its concrete source root. + * This belongs at the leaf and not in the shared workspace role template. + */ + "rootDir": "./src", + + /** + * Validation artifacts live in a dedicated non-committed lane that is + * separate from bundler output and test output. + */ + "outDir": "./.cache/typecheck", + + /** + * Keep build-mode metadata local to the validation lane so the app leaf + * does not mix typecheck state with runtime or test artifact surfaces. + */ + "tsBuildInfoFile": "./.cache/typecheck/tsconfig.typecheck.tsbuildinfo", + + /** + * This specific leaf needs Node ambient types for the extension runtime. + * The generic validation template stays closed and the leaf reopens only + * the environment it actually requires. + */ + "types": ["node"] + }, + + /** + * The validation lane covers production-facing app sources only. + */ + "include": ["src/**/*.ts", "src/globals.d.ts"], + + /** + * Test-owned files belong to the separate test lane and must not be folded + * into the app validation surface. + */ + "exclude": ["src/test/**"], + + /** + * Project references remain leaf facts because they express this app leaf's + * real upstream monorepo dependency graph. + */ + "references": [ + { + "path": "../../packages/utils/tsconfig.lib.json" + }, + { + "path": "../../packages/formatter/tsconfig.lib.json" + }, + { + "path": "../../packages/error-translator/tsconfig.lib.json" + } + ] +} diff --git a/eslint.config.mjs b/eslint.config.mjs index 671c303..a52ec5a 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -10,12 +10,14 @@ export default tseslint.config( ...tseslint.configs.stylistic, { ignores: [ - "apps/*/scripts/*", - "apps/*/dist/*", - "packages/*/scripts/*", - "packages/*/dist/*", - "examples/*", - ".vscode-test/*", + "apps/*/scripts/**", + "apps/*/dist/**", + "apps/*/out/**", + "apps/*/.vscode-test/**", + "packages/*/scripts/**", + "packages/*/dist/**", + "examples/**", + ".vscode-test/**", ], }, { @@ -41,9 +43,18 @@ export default tseslint.config( "@typescript-eslint/no-unused-vars": "off", "@typescript-eslint/no-non-null-assertion": "off", curly: "warn", - eqeqeq: ["warn", { smart: true }], + eqeqeq: ["warn", "smart"], "no-throw-literal": "warn", semi: "off", }, + }, + { + files: ["apps/*/webview/**/*.js"], + languageOptions: { + globals: { + ...globals.browser, + acquireVsCodeApi: false, + }, + }, } ); diff --git a/nx.json b/nx.json index f7d8021..8a9301c 100644 --- a/nx.json +++ b/nx.json @@ -21,7 +21,7 @@ "plugins": [ { "plugin": "@nx/js/typescript", - "include": ["packages/**/*"], + "include": ["apps/**/*", "packages/**/*"], "options": { "typecheck": { "targetName": "typecheck" @@ -33,14 +33,23 @@ "watchDepsName": "watch-deps" } } + }, + { + "plugin": "@nx/eslint/plugin", + "options": { + "targetName": "lint" + } + }, + { + "plugin": "@nx/vitest", + "include": ["packages/**/*"], + "options": { + "testTargetName": "test", + "testMode": "run" + } } ], "targetDefaults": { - "build": { - "dependsOn": ["^build"], - "inputs": ["production", "^production"], - "cache": true - }, "@nx/esbuild:esbuild": { "cache": true, "dependsOn": ["^build"], @@ -50,18 +59,13 @@ "cache": true, "dependsOn": ["^build"], "inputs": ["production", "^production"] - }, - "lint": { - "cache": true, - "inputs": ["default", "^production"] - }, - "test": { - "cache": false, - "inputs": ["default", "^production"] - }, - "dev": { - "cache": false } }, + "release": { + "projects": [ + "@pretty-ts-errors/formatter", + "@pretty-ts-errors/vscode-formatter" + ] + }, "analytics": false } diff --git a/package.json b/package.json index 7c922df..8e3733d 100644 --- a/package.json +++ b/package.json @@ -15,10 +15,14 @@ } }, "devDependencies": { + "@eslint/js": "catalog:", "@nx/esbuild": "catalog:", + "@nx/eslint": "catalog:", "@nx/js": "catalog:", - "@eslint/js": "catalog:", + "@nx/vitest": "catalog:", + "@nx/web": "catalog:", "@types/node": "catalog:", + "@vitest/coverage-v8": "catalog:", "eslint": "catalog:", "globals": "catalog:", "nx": "catalog:", diff --git a/packages/error-translator/project.json b/packages/error-translator/project.json index f568f78..48d01ed 100644 --- a/packages/error-translator/project.json +++ b/packages/error-translator/project.json @@ -42,34 +42,12 @@ } }, "build": { - "executor": "@nx/js:tsc", - "dependsOn": ["validate-contract-data", "^build"], - "outputs": ["{workspaceRoot}/packages/error-translator/dist"], + "...": true, + "dependsOn": ["validate-contract-data", "..."], "options": { - "main": "packages/error-translator/src/index.ts", - "outputPath": "packages/error-translator/dist", - "tsConfig": "packages/error-translator/tsconfig.lib.json", - "rootDir": "packages/error-translator/src", - "generatePackageJson": true, - "generateExportsField": true, - "clean": true, + "...": true, "assets": ["packages/error-translator/src/generated/*.json"] } - }, - "lint": { - "executor": "nx:run-commands", - "options": { - "cwd": "packages/error-translator", - "command": "pnpm exec tsc -p tsconfig.json --noEmit" - } - }, - "test": { - "executor": "nx:run-commands", - "cache": false, - "options": { - "cwd": "packages/error-translator", - "command": "pnpm exec vitest run" - } } } } diff --git a/packages/error-translator/src/parseErrors.ts b/packages/error-translator/src/parseErrors.ts index f5f4a9f..ba22ceb 100644 --- a/packages/error-translator/src/parseErrors.ts +++ b/packages/error-translator/src/parseErrors.ts @@ -36,7 +36,9 @@ function isTsErrorMessageDb(value: unknown): value is TsErrorMessageDb { function ensureTsErrorMessageDb(value: unknown): TsErrorMessageDb { if (!isTsErrorMessageDb(value)) { - throw new Error("TypeScript diagnostic matcher database has an invalid shape."); + throw new Error( + "TypeScript diagnostic matcher database has an invalid shape." + ); } return value; @@ -47,14 +49,16 @@ const tsErrorMessageDb = ensureTsErrorMessageDb(tsErrorMessages); function getDiagnosticMatcher(text: string): TSDiagnosticMatcher { const existing = DiagnosticHashMap.get(text); - if (existing) return existing; + if (existing) { + return existing; + } const regexSource = escapeRegExp(text).replace(escapedParameterRegex, "(.+)"); const regexLocal = new RegExp(regexSource); const regexGlobal = new RegExp(regexSource, "g"); const parameterIndexes = Array.from( text.matchAll(parameterRegex), - ([, parameterIndex]) => Number(parameterIndex), + ([, parameterIndex]) => Number(parameterIndex) ); const diagnosticMatcher = { @@ -70,7 +74,7 @@ function getDiagnosticMatcher(text: string): TSDiagnosticMatcher { function associateMatchedParameters( parameterIndexes: number[], - matchedParams: string[], + matchedParams: string[] ): (string | number)[] { const paramsByIndex = new Map(); @@ -113,7 +117,7 @@ export type ParsedDiagnosticMessage = ParsedDiagnosticMatch[]; export function parseErrorsWithDb( db: TsErrorMessageDb, - message: string, + message: string ): ParsedDiagnosticMessage { const errorMessageByKey: Record = {}; @@ -146,7 +150,7 @@ export function parseErrorsWithDb( const items = associateMatchedParameters( parameterIndexes, - matchElem.match(regexLocal)?.slice(1) ?? [], + matchElem.match(regexLocal)?.slice(1) ?? [] ); const errorObj: ParsedDiagnosticMatch = { diff --git a/packages/error-translator/test/translationContract.test.ts b/packages/error-translator/test/translationContract.test.ts index 6799ff0..a76967a 100644 --- a/packages/error-translator/test/translationContract.test.ts +++ b/packages/error-translator/test/translationContract.test.ts @@ -9,27 +9,35 @@ import tsErrorMessages from "../src/generated/tsErrorMessages.json"; const require = createRequire(import.meta.url); const ts = require("typescript"); -const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); -const curatedErrorsDir = path.join(packageRoot, "vendor", "matt-pocock", "errors"); - -type TsDiagnostic = { +const packageRoot = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + ".." +); +const curatedErrorsDir = path.join( + packageRoot, + "vendor", + "matt-pocock", + "errors" +); + +interface TsDiagnostic { category: number; code: number; message: string; -}; +} -type TsErrorMessageEntry = { +interface TsErrorMessageEntry { category: string; code: number; -}; +} -type BundleEntry = { +interface BundleEntry { body: string; category: string; code: number; message: string; source: string; -}; +} function getCategoryName(category: number): string { const categoryName = ts.DiagnosticCategory?.[category]; @@ -98,7 +106,7 @@ describe("translator contract", () => { it("keeps bundleErrors.json complete for all current TypeScript diagnostics", () => { const currentDiagnostics = getCurrentDiagnostics(); const diagnosticsByCode = new Map( - currentDiagnostics.map((diagnostic) => [diagnostic.code, diagnostic]), + currentDiagnostics.map((diagnostic) => [diagnostic.code, diagnostic]) ); const bundle = bundleErrors as Record; const bundleEntries = Object.values(bundle).sort((left, right) => { @@ -107,7 +115,7 @@ describe("translator contract", () => { expect(bundleEntries).toHaveLength(currentDiagnostics.length); expect(bundleEntries.map((entry) => entry.code)).toEqual( - currentDiagnostics.map((diagnostic) => diagnostic.code), + currentDiagnostics.map((diagnostic) => diagnostic.code) ); bundleEntries.forEach((entry) => { @@ -122,7 +130,7 @@ describe("translator contract", () => { it("keeps curated translation overrides aligned with current TypeScript messages", async () => { const currentDiagnostics = new Map( - getCurrentDiagnostics().map((diagnostic) => [diagnostic.code, diagnostic]), + getCurrentDiagnostics().map((diagnostic) => [diagnostic.code, diagnostic]) ); const files = (await readdir(curatedErrorsDir)) .filter((file) => file.endsWith(".md")) @@ -135,7 +143,10 @@ describe("translator contract", () => { const diagnostic = currentDiagnostics.get(code); expect(diagnostic).toBeDefined(); - const markdown = await readFile(path.join(curatedErrorsDir, fileName), "utf8"); + const markdown = await readFile( + path.join(curatedErrorsDir, fileName), + "utf8" + ); const original = parseOriginalMessage(markdown, fileName); expect(original).toBe(diagnostic?.message); diff --git a/packages/error-translator/tsconfig.json b/packages/error-translator/tsconfig.json index 65a8a07..6f8e6a1 100644 --- a/packages/error-translator/tsconfig.json +++ b/packages/error-translator/tsconfig.json @@ -1,12 +1,26 @@ { + /** + * Root coordination surface for the shared package leaf. + * This file owns references only and does not become the artifact lane itself. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the root compiler-policy single source of truth. + */ "extends": "../../tsconfig.base.json", - "compilerOptions": { - "noEmit": false, - "outDir": "dist", - "rootDir": "src", - "composite": true, - "declaration": true, - "declarationMap": true - }, - "include": ["src/**/*", "src/generated/**/*.json"] + + /** + * The coordination surface owns no files directly. + */ + "files": [], + + /** + * Register the package-artifact surface explicitly. + */ + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] } diff --git a/packages/error-translator/tsconfig.lib.json b/packages/error-translator/tsconfig.lib.json index da93d65..e8c163c 100644 --- a/packages/error-translator/tsconfig.lib.json +++ b/packages/error-translator/tsconfig.lib.json @@ -1,7 +1,31 @@ { - "extends": "./tsconfig.json", + /** + * Thin buildable shared package leaf for the `@pretty-ts-errors/error-translator` package. + * This file owns only local producer facts and reuses the shared workspace role. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the generic buildable library producer contract instead of + * redefining producer semantics locally. + */ + "extends": "../../tsconfig.lib.base.json", + "compilerOptions": { - "noEmit": false + /** + * The artifact leaf alone knows its concrete source root. + */ + "rootDir": "./src", + + /** + * Package artifacts are emitted into the leaf-local distribution lane. + */ + "outDir": "./dist" }, + + /** + * The artifact lane covers production-facing package sources and generated + * JSON data that belongs to the package contract. + */ "include": ["src/**/*", "src/generated/**/*.json"] } diff --git a/packages/error-translator/vitest.config.ts b/packages/error-translator/vitest.config.ts new file mode 100644 index 0000000..38ff83a --- /dev/null +++ b/packages/error-translator/vitest.config.ts @@ -0,0 +1,9 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + environment: "node", + globals: true, + include: ["test/**/*.{test,spec,vitest}.{ts,tsx}"], + }, +}); diff --git a/packages/formatter/project.json b/packages/formatter/project.json index 4c38474..17134de 100644 --- a/packages/formatter/project.json +++ b/packages/formatter/project.json @@ -3,75 +3,5 @@ "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "packages/formatter/src", "projectType": "library", - "tags": ["scope:packages", "type:library"], - "targets": { - "build": { - "executor": "@nx/js:tsc", - "outputs": ["{workspaceRoot}/packages/formatter/dist"], - "options": { - "main": "packages/formatter/src/index.ts", - "outputPath": "packages/formatter/dist", - "tsConfig": "packages/formatter/tsconfig.lib.json", - "rootDir": "packages/formatter/src", - "generatePackageJson": true, - "generateExportsField": true, - "clean": true - } - }, - "dev": { - "executor": "@nx/js:tsc", - "cache": false, - "continuous": true, - "options": { - "main": "packages/formatter/src/index.ts", - "outputPath": "packages/formatter/dist", - "tsConfig": "packages/formatter/tsconfig.lib.json", - "rootDir": "packages/formatter/src", - "generatePackageJson": true, - "generateExportsField": true, - "clean": false, - "watch": true - } - }, - "lint": { - "executor": "nx:run-commands", - "options": { - "cwd": "packages/formatter", - "command": "pnpm exec tsc -p tsconfig.json --noEmit" - } - }, - "test": { - "executor": "nx:run-commands", - "cache": false, - "options": { - "cwd": "packages/formatter", - "command": "pnpm exec vitest run" - } - }, - "test:watch": { - "executor": "nx:run-commands", - "cache": false, - "continuous": true, - "options": { - "cwd": "packages/formatter", - "command": "pnpm exec vitest" - } - }, - "test:coverage": { - "executor": "nx:run-commands", - "cache": false, - "options": { - "cwd": "packages/formatter", - "command": "pnpm exec vitest run --coverage" - } - }, - "publish": { - "executor": "nx:run-commands", - "dependsOn": ["build"], - "options": { - "cwd": "packages/formatter", - "command": "pnpm publish --access public" - } - } - } + "tags": ["scope:packages", "type:library"] } diff --git a/packages/formatter/src/errorMessagePrettifier.ts b/packages/formatter/src/errorMessagePrettifier.ts index c64450f..3e8f596 100644 --- a/packages/formatter/src/errorMessagePrettifier.ts +++ b/packages/formatter/src/errorMessagePrettifier.ts @@ -31,10 +31,10 @@ export function createErrorMessagePrettifier( }; } -type Rule = { +interface Rule { pattern: RegExp; - replacer: (...args: any[]) => string | Promise; -}; + replacer: (...args: string[]) => string | Promise; +} function getRules(codeBlock: CodeBlockFn): Rule[] { const formatTypeScriptBlock = (code: string) => codeBlock(code, "typescript"); @@ -85,14 +85,7 @@ function getRules(codeBlock: CodeBlockFn): Rule[] { }, { pattern: /type annotation must be ['“](.*?)['”] or ['“](.*?)['”][.]?/gi, - replacer: async (p1: string, p2: string, p3: string | number) => { - if (typeof p3 === "string") { - const [left, right] = await Promise.all([ - formatTypeBlock(p1, p2, codeBlock), - formatTypeBlock("", p3, codeBlock), - ]); - return `${left} or ${right}`; - } + replacer: async (p1: string, p2: string) => { const [left, right] = await Promise.all([ formatTypeBlock("", p1, codeBlock), formatTypeBlock("", p2, codeBlock), diff --git a/packages/formatter/test/formatter.vitest.ts b/packages/formatter/test/formatter.vitest.ts index 06fc24b..98c7ba1 100644 --- a/packages/formatter/test/formatter.vitest.ts +++ b/packages/formatter/test/formatter.vitest.ts @@ -14,7 +14,9 @@ import * as errorMessageMocks from "./errorMessageMocks"; // Simple stub that marks code blocks without any rendering logic const stubCodeBlock: CodeBlockFn = (code, language, multiLine) => { - if (multiLine) return `\n\`\`\`${language}\n${code}\n\`\`\`\n`; + if (multiLine) { + return `\n\`\`\`${language}\n${code}\n\`\`\`\n`; + } return `\`${code}\``; }; @@ -44,9 +46,7 @@ describe("formatter", (context) => { "Type '{ email: \"usr@usr.io\"; }' is missing the following properties from type '{ name: string; email: `${string}@${string}.${string}`; age: number; address: { street: string; city: string; country: string; }; }': name, age, address" ); - expect(result).toContain( - "is missing the following properties from type" - ); + expect(result).toContain("is missing the following properties from type"); expect(result).toContain( "
    • name
    • age
    • address
    " ); diff --git a/packages/formatter/tsconfig.json b/packages/formatter/tsconfig.json index b3d6e1a..6f8e6a1 100644 --- a/packages/formatter/tsconfig.json +++ b/packages/formatter/tsconfig.json @@ -1,13 +1,26 @@ { + /** + * Root coordination surface for the shared package leaf. + * This file owns references only and does not become the artifact lane itself. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the root compiler-policy single source of truth. + */ "extends": "../../tsconfig.base.json", - "compilerOptions": { - "noEmit": false, - "outDir": "dist", - "rootDir": "src", - "composite": true, - "declaration": true, - "declarationMap": true - }, - "include": ["src/**/*"], - "references": [{ "path": "../utils" }] + + /** + * The coordination surface owns no files directly. + */ + "files": [], + + /** + * Register the package-artifact surface explicitly. + */ + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] } diff --git a/packages/formatter/tsconfig.lib.json b/packages/formatter/tsconfig.lib.json index 60c647c..8c6365a 100644 --- a/packages/formatter/tsconfig.lib.json +++ b/packages/formatter/tsconfig.lib.json @@ -1,9 +1,36 @@ { - "extends": "./tsconfig.json", + /** + * Thin buildable shared package leaf for the `@pretty-ts-errors/formatter` package. + * This file owns only local producer facts and reuses the shared workspace role. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the generic buildable library producer contract instead of + * redefining producer semantics locally. + */ + "extends": "../../tsconfig.lib.base.json", + "compilerOptions": { - "noEmit": false + /** + * The artifact leaf alone knows its concrete source root. + */ + "rootDir": "./src", + + /** + * Package artifacts are emitted into the leaf-local distribution lane. + */ + "outDir": "./dist" }, + + /** + * The artifact lane covers production-facing package sources only. + */ "include": ["src/**/*"], + + /** + * Upstream shared package references remain local artifact-lane facts. + */ "references": [ { "path": "../utils/tsconfig.lib.json" diff --git a/packages/utils/project.json b/packages/utils/project.json index 59bf35b..f643406 100644 --- a/packages/utils/project.json +++ b/packages/utils/project.json @@ -3,42 +3,5 @@ "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "packages/utils/src", "projectType": "library", - "tags": ["scope:packages", "type:library"], - "targets": { - "build": { - "executor": "@nx/js:tsc", - "outputs": ["{workspaceRoot}/packages/utils/dist"], - "options": { - "main": "packages/utils/src/index.ts", - "outputPath": "packages/utils/dist", - "tsConfig": "packages/utils/tsconfig.lib.json", - "rootDir": "packages/utils/src", - "generatePackageJson": true, - "generateExportsField": true, - "clean": true - } - }, - "dev": { - "executor": "@nx/js:tsc", - "cache": false, - "continuous": true, - "options": { - "main": "packages/utils/src/index.ts", - "outputPath": "packages/utils/dist", - "tsConfig": "packages/utils/tsconfig.lib.json", - "rootDir": "packages/utils/src", - "generatePackageJson": true, - "generateExportsField": true, - "clean": false, - "watch": true - } - }, - "lint": { - "executor": "nx:run-commands", - "options": { - "cwd": "packages/utils", - "command": "pnpm exec tsc -p tsconfig.json --noEmit" - } - } - } + "tags": ["scope:packages", "type:library"] } diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index fb3babe..6f8e6a1 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -1,12 +1,26 @@ { + /** + * Root coordination surface for the shared package leaf. + * This file owns references only and does not become the artifact lane itself. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the root compiler-policy single source of truth. + */ "extends": "../../tsconfig.base.json", - "compilerOptions": { - "noEmit": false, - "outDir": "dist", - "rootDir": "src", - "composite": true, - "declaration": true, - "declarationMap": true - }, - "include": ["src/**/*"] + + /** + * The coordination surface owns no files directly. + */ + "files": [], + + /** + * Register the package-artifact surface explicitly. + */ + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] } diff --git a/packages/utils/tsconfig.lib.json b/packages/utils/tsconfig.lib.json index 8869140..25e0ff1 100644 --- a/packages/utils/tsconfig.lib.json +++ b/packages/utils/tsconfig.lib.json @@ -1,7 +1,30 @@ { - "extends": "./tsconfig.json", + /** + * Thin buildable shared package leaf for the `@pretty-ts-errors/utils` package. + * This file owns only local producer facts and reuses the shared workspace role. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the generic buildable library producer contract instead of + * redefining producer semantics locally. + */ + "extends": "../../tsconfig.lib.base.json", + "compilerOptions": { - "noEmit": false + /** + * The artifact leaf alone knows its concrete source root. + */ + "rootDir": "./src", + + /** + * Package artifacts are emitted into the leaf-local distribution lane. + */ + "outDir": "./dist" }, + + /** + * The artifact lane covers production-facing package sources only. + */ "include": ["src/**/*"] } diff --git a/packages/vscode-formatter/package.json b/packages/vscode-formatter/package.json index d470e05..4220d4e 100644 --- a/packages/vscode-formatter/package.json +++ b/packages/vscode-formatter/package.json @@ -31,6 +31,7 @@ }, "homepage": "https://github.com/CyberT33N/pretty-ts-errors#readme", "devDependencies": { + "@vitest/coverage-v8": "catalog:", "vitest": "catalog:" }, "dependencies": { diff --git a/packages/vscode-formatter/project.json b/packages/vscode-formatter/project.json index a276d67..6252829 100644 --- a/packages/vscode-formatter/project.json +++ b/packages/vscode-formatter/project.json @@ -3,75 +3,5 @@ "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "packages/vscode-formatter/src", "projectType": "library", - "tags": ["scope:packages", "type:library"], - "targets": { - "build": { - "executor": "@nx/js:tsc", - "outputs": ["{workspaceRoot}/packages/vscode-formatter/dist"], - "options": { - "main": "packages/vscode-formatter/src/index.ts", - "outputPath": "packages/vscode-formatter/dist", - "tsConfig": "packages/vscode-formatter/tsconfig.lib.json", - "rootDir": "packages/vscode-formatter/src", - "generatePackageJson": true, - "generateExportsField": true, - "clean": true - } - }, - "dev": { - "executor": "@nx/js:tsc", - "cache": false, - "continuous": true, - "options": { - "main": "packages/vscode-formatter/src/index.ts", - "outputPath": "packages/vscode-formatter/dist", - "tsConfig": "packages/vscode-formatter/tsconfig.lib.json", - "rootDir": "packages/vscode-formatter/src", - "generatePackageJson": true, - "generateExportsField": true, - "clean": false, - "watch": true - } - }, - "lint": { - "executor": "nx:run-commands", - "options": { - "cwd": "packages/vscode-formatter", - "command": "pnpm exec tsc -p tsconfig.json --noEmit" - } - }, - "test": { - "executor": "nx:run-commands", - "cache": false, - "options": { - "cwd": "packages/vscode-formatter", - "command": "pnpm exec vitest run" - } - }, - "test:watch": { - "executor": "nx:run-commands", - "cache": false, - "continuous": true, - "options": { - "cwd": "packages/vscode-formatter", - "command": "pnpm exec vitest" - } - }, - "test:coverage": { - "executor": "nx:run-commands", - "cache": false, - "options": { - "cwd": "packages/vscode-formatter", - "command": "pnpm exec vitest run --coverage" - } - }, - "publish": { - "executor": "nx:run-commands", - "dependsOn": ["build"], - "options": { - "cwd": "packages/vscode-formatter", - "command": "pnpm publish --access public" - } - } - } + "tags": ["scope:packages", "type:library"] } diff --git a/packages/vscode-formatter/tsconfig.json b/packages/vscode-formatter/tsconfig.json index 45f6ade..6f8e6a1 100644 --- a/packages/vscode-formatter/tsconfig.json +++ b/packages/vscode-formatter/tsconfig.json @@ -1,23 +1,26 @@ { + /** + * Root coordination surface for the shared package leaf. + * This file owns references only and does not become the artifact lane itself. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the root compiler-policy single source of truth. + */ "extends": "../../tsconfig.base.json", - "compilerOptions": { - "noEmit": false, - "outDir": "dist", - "rootDir": "src", - "composite": true, - "declaration": true, - "declarationMap": true - }, - "include": ["src/**/*"], + + /** + * The coordination surface owns no files directly. + */ + "files": [], + + /** + * Register the package-artifact surface explicitly. + */ "references": [ { - "path": "../error-translator" - }, - { - "path": "../formatter" - }, - { - "path": "../utils" + "path": "./tsconfig.lib.json" } ] } diff --git a/packages/vscode-formatter/tsconfig.lib.json b/packages/vscode-formatter/tsconfig.lib.json index 861a41a..9bbbf3d 100644 --- a/packages/vscode-formatter/tsconfig.lib.json +++ b/packages/vscode-formatter/tsconfig.lib.json @@ -1,9 +1,36 @@ { - "extends": "./tsconfig.json", + /** + * Thin buildable shared package leaf for the `@pretty-ts-errors/vscode-formatter` package. + * This file owns only local producer facts and reuses the shared workspace role. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the generic buildable library producer contract instead of + * redefining producer semantics locally. + */ + "extends": "../../tsconfig.lib.base.json", + "compilerOptions": { - "noEmit": false + /** + * The artifact leaf alone knows its concrete source root. + */ + "rootDir": "./src", + + /** + * Package artifacts are emitted into the leaf-local distribution lane. + */ + "outDir": "./dist" }, + + /** + * The artifact lane covers production-facing package sources only. + */ "include": ["src/**/*"], + + /** + * Upstream shared package references remain local artifact-lane facts. + */ "references": [ { "path": "../utils/tsconfig.lib.json" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b625a19..5b4a5b8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,12 +1,11 @@ --- -lockfileVersion: '9.0' +lockfileVersion: "9.0" importers: - .: configDependencies: {} packageManagerDependencies: - '@pnpm/exe': + "@pnpm/exe": specifier: 11.7.0 version: 11.7.0 pnpm: @@ -14,190 +13,245 @@ importers: version: 11.7.0 packages: - - '@pnpm/exe@11.7.0': - resolution: {integrity: sha512-3CujpSSp2PIDE0pwu7mWSdjhdDqaZa7OppVooECWWaNEoA/z66s9FZts1MhDO+2yq1XER4gBHh84DVbFN/r1rA==} + "@pnpm/exe@11.7.0": + resolution: + { + integrity: sha512-3CujpSSp2PIDE0pwu7mWSdjhdDqaZa7OppVooECWWaNEoA/z66s9FZts1MhDO+2yq1XER4gBHh84DVbFN/r1rA==, + } hasBin: true - '@pnpm/linux-arm64@11.7.0': - resolution: {integrity: sha512-ANTX2SlMO+d2y/4bYQhHCwHPX7gSSADJ5+pMUIiDFzIsybnFFaJdZboaFfq9NOxCbETcnDxqZ95Rz3+NHx1JIw==} + "@pnpm/linux-arm64@11.7.0": + resolution: + { + integrity: sha512-ANTX2SlMO+d2y/4bYQhHCwHPX7gSSADJ5+pMUIiDFzIsybnFFaJdZboaFfq9NOxCbETcnDxqZ95Rz3+NHx1JIw==, + } cpu: [arm64] os: [linux] - '@pnpm/linux-x64@11.7.0': - resolution: {integrity: sha512-fr75tqixXoS8cnA81HQIomjOGEPnsOsd3xCDL5pMNY5raOXbKurtgRV+RjATvjxlJxSLIVFKegABlxAiB7q72A==} + "@pnpm/linux-x64@11.7.0": + resolution: + { + integrity: sha512-fr75tqixXoS8cnA81HQIomjOGEPnsOsd3xCDL5pMNY5raOXbKurtgRV+RjATvjxlJxSLIVFKegABlxAiB7q72A==, + } cpu: [x64] os: [linux] - '@pnpm/linuxstatic-arm64@11.7.0': - resolution: {integrity: sha512-Q++pgzvXkGeqnVRl26/uqmpMGdttQus0rGyL3XIfYGLCi8ZfajYUaCKdZID2MH7+CNOuugWDdFDup3r7BR7Rfg==} + "@pnpm/linuxstatic-arm64@11.7.0": + resolution: + { + integrity: sha512-Q++pgzvXkGeqnVRl26/uqmpMGdttQus0rGyL3XIfYGLCi8ZfajYUaCKdZID2MH7+CNOuugWDdFDup3r7BR7Rfg==, + } cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/linuxstatic-x64@11.7.0': - resolution: {integrity: sha512-z1+exW6ocU/rmOvJnmU3FUBJYaryCUqFoaXN6KZW5BqTj7BPJb7HJcAyXRlirNZMJlEiUY5rXbfStGPQJhGsVA==} + "@pnpm/linuxstatic-x64@11.7.0": + resolution: + { + integrity: sha512-z1+exW6ocU/rmOvJnmU3FUBJYaryCUqFoaXN6KZW5BqTj7BPJb7HJcAyXRlirNZMJlEiUY5rXbfStGPQJhGsVA==, + } cpu: [x64] os: [linux] libc: [musl] - '@pnpm/macos-arm64@11.7.0': - resolution: {integrity: sha512-gD34/k3JT5oab4BYaqrUor3e4VdwXvkfLNlEI+lvDtX1MHT+2Nauc9p9NsQnpn1zE8blQEflzbF8wAUQ6Dmvkw==} + "@pnpm/macos-arm64@11.7.0": + resolution: + { + integrity: sha512-gD34/k3JT5oab4BYaqrUor3e4VdwXvkfLNlEI+lvDtX1MHT+2Nauc9p9NsQnpn1zE8blQEflzbF8wAUQ6Dmvkw==, + } cpu: [arm64] os: [darwin] - '@pnpm/win-arm64@11.7.0': - resolution: {integrity: sha512-hRTcDmm2j7KoRwbqNo0rUAu9A1kVJN98Eob7H09U0uPJbEMax85JGOmERkT3Lf6HjVJuFNBvfaJ3OTI3HmlVGg==} + "@pnpm/win-arm64@11.7.0": + resolution: + { + integrity: sha512-hRTcDmm2j7KoRwbqNo0rUAu9A1kVJN98Eob7H09U0uPJbEMax85JGOmERkT3Lf6HjVJuFNBvfaJ3OTI3HmlVGg==, + } cpu: [arm64] os: [win32] - '@pnpm/win-x64@11.7.0': - resolution: {integrity: sha512-r/1NuKY7Z+6ZXVIzVrUEMj6TTEBdR63geV4Rlm8HKEhgQTdxyIsJoqV3FJGqoyzbRaScObqAwRfMaK9dskPddQ==} + "@pnpm/win-x64@11.7.0": + resolution: + { + integrity: sha512-r/1NuKY7Z+6ZXVIzVrUEMj6TTEBdR63geV4Rlm8HKEhgQTdxyIsJoqV3FJGqoyzbRaScObqAwRfMaK9dskPddQ==, + } cpu: [x64] os: [win32] - '@reflink/reflink-darwin-arm64@0.1.19': - resolution: {integrity: sha512-ruy44Lpepdk1FqDz38vExBY/PVUsjxZA+chd9wozjUH9JjuDT/HEaQYA6wYN9mf041l0yLVar6BCZuWABJvHSA==} - engines: {node: '>= 10'} + "@reflink/reflink-darwin-arm64@0.1.19": + resolution: + { + integrity: sha512-ruy44Lpepdk1FqDz38vExBY/PVUsjxZA+chd9wozjUH9JjuDT/HEaQYA6wYN9mf041l0yLVar6BCZuWABJvHSA==, + } + engines: { node: ">= 10" } cpu: [arm64] os: [darwin] - '@reflink/reflink-darwin-x64@0.1.19': - resolution: {integrity: sha512-By85MSWrMZa+c26TcnAy8SDk0sTUkYlNnwknSchkhHpGXOtjNDUOxJE9oByBnGbeuIE1PiQsxDG3Ud+IVV9yuA==} - engines: {node: '>= 10'} + "@reflink/reflink-darwin-x64@0.1.19": + resolution: + { + integrity: sha512-By85MSWrMZa+c26TcnAy8SDk0sTUkYlNnwknSchkhHpGXOtjNDUOxJE9oByBnGbeuIE1PiQsxDG3Ud+IVV9yuA==, + } + engines: { node: ">= 10" } cpu: [x64] os: [darwin] - '@reflink/reflink-linux-arm64-gnu@0.1.19': - resolution: {integrity: sha512-7P+er8+rP9iNeN+bfmccM4hTAaLP6PQJPKWSA4iSk2bNvo6KU6RyPgYeHxXmzNKzPVRcypZQTpFgstHam6maVg==} - engines: {node: '>= 10'} + "@reflink/reflink-linux-arm64-gnu@0.1.19": + resolution: + { + integrity: sha512-7P+er8+rP9iNeN+bfmccM4hTAaLP6PQJPKWSA4iSk2bNvo6KU6RyPgYeHxXmzNKzPVRcypZQTpFgstHam6maVg==, + } + engines: { node: ">= 10" } cpu: [arm64] os: [linux] libc: [glibc] - '@reflink/reflink-linux-arm64-musl@0.1.19': - resolution: {integrity: sha512-37iO/Dp6m5DDaC2sf3zPtx/hl9FV3Xze4xoYidrxxS9bgP3S8ALroxRK6xBG/1TtfXKTvolvp+IjrUU6ujIGmA==} - engines: {node: '>= 10'} + "@reflink/reflink-linux-arm64-musl@0.1.19": + resolution: + { + integrity: sha512-37iO/Dp6m5DDaC2sf3zPtx/hl9FV3Xze4xoYidrxxS9bgP3S8ALroxRK6xBG/1TtfXKTvolvp+IjrUU6ujIGmA==, + } + engines: { node: ">= 10" } cpu: [arm64] os: [linux] libc: [musl] - '@reflink/reflink-linux-x64-gnu@0.1.19': - resolution: {integrity: sha512-jbI8jvuYCaA3MVUdu8vLoLAFqC+iNMpiSuLbxlAgg7x3K5bsS8nOpTRnkLF7vISJ+rVR8W+7ThXlXlUQ93ulkw==} - engines: {node: '>= 10'} + "@reflink/reflink-linux-x64-gnu@0.1.19": + resolution: + { + integrity: sha512-jbI8jvuYCaA3MVUdu8vLoLAFqC+iNMpiSuLbxlAgg7x3K5bsS8nOpTRnkLF7vISJ+rVR8W+7ThXlXlUQ93ulkw==, + } + engines: { node: ">= 10" } cpu: [x64] os: [linux] libc: [glibc] - '@reflink/reflink-linux-x64-musl@0.1.19': - resolution: {integrity: sha512-e9FBWDe+lv7QKAwtKOt6A2W/fyy/aEEfr0g6j/hWzvQcrzHCsz07BNQYlNOjTfeytrtLU7k449H1PI95jA4OjQ==} - engines: {node: '>= 10'} + "@reflink/reflink-linux-x64-musl@0.1.19": + resolution: + { + integrity: sha512-e9FBWDe+lv7QKAwtKOt6A2W/fyy/aEEfr0g6j/hWzvQcrzHCsz07BNQYlNOjTfeytrtLU7k449H1PI95jA4OjQ==, + } + engines: { node: ">= 10" } cpu: [x64] os: [linux] libc: [musl] - '@reflink/reflink-win32-arm64-msvc@0.1.19': - resolution: {integrity: sha512-09PxnVIQcd+UOn4WAW73WU6PXL7DwGS6wPlkMhMg2zlHHG65F3vHepOw06HFCq+N42qkaNAc8AKIabWvtk6cIQ==} - engines: {node: '>= 10'} + "@reflink/reflink-win32-arm64-msvc@0.1.19": + resolution: + { + integrity: sha512-09PxnVIQcd+UOn4WAW73WU6PXL7DwGS6wPlkMhMg2zlHHG65F3vHepOw06HFCq+N42qkaNAc8AKIabWvtk6cIQ==, + } + engines: { node: ">= 10" } cpu: [arm64] os: [win32] - '@reflink/reflink-win32-x64-msvc@0.1.19': - resolution: {integrity: sha512-E//yT4ni2SyhwP8JRjVGWr3cbnhWDiPLgnQ66qqaanjjnMiu3O/2tjCPQXlcGc/DEYofpDc9fvhv6tALQsMV9w==} - engines: {node: '>= 10'} + "@reflink/reflink-win32-x64-msvc@0.1.19": + resolution: + { + integrity: sha512-E//yT4ni2SyhwP8JRjVGWr3cbnhWDiPLgnQ66qqaanjjnMiu3O/2tjCPQXlcGc/DEYofpDc9fvhv6tALQsMV9w==, + } + engines: { node: ">= 10" } cpu: [x64] os: [win32] - '@reflink/reflink@0.1.19': - resolution: {integrity: sha512-DmCG8GzysnCZ15bres3N5AHCmwBwYgp0As6xjhQ47rAUTUXxJiK+lLUxaGsX3hd/30qUpVElh05PbGuxRPgJwA==} - engines: {node: '>= 10'} + "@reflink/reflink@0.1.19": + resolution: + { + integrity: sha512-DmCG8GzysnCZ15bres3N5AHCmwBwYgp0As6xjhQ47rAUTUXxJiK+lLUxaGsX3hd/30qUpVElh05PbGuxRPgJwA==, + } + engines: { node: ">= 10" } detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, + } + engines: { node: ">=8" } pnpm@11.7.0: - resolution: {integrity: sha512-GcyFLBIMcSV2DyRD7mvgyltA+fUFmN4aCaHxd1A+AQ5Xwjx3ZG4B52HeWb+HT7IqM5jDOrlpH8E+uUa28PTWIA==} - engines: {node: '>=22.13'} + resolution: + { + integrity: sha512-GcyFLBIMcSV2DyRD7mvgyltA+fUFmN4aCaHxd1A+AQ5Xwjx3ZG4B52HeWb+HT7IqM5jDOrlpH8E+uUa28PTWIA==, + } + engines: { node: ">=22.13" } hasBin: true snapshots: - - '@pnpm/exe@11.7.0': + "@pnpm/exe@11.7.0": dependencies: - '@reflink/reflink': 0.1.19 + "@reflink/reflink": 0.1.19 detect-libc: 2.1.2 optionalDependencies: - '@pnpm/linux-arm64': 11.7.0 - '@pnpm/linux-x64': 11.7.0 - '@pnpm/linuxstatic-arm64': 11.7.0 - '@pnpm/linuxstatic-x64': 11.7.0 - '@pnpm/macos-arm64': 11.7.0 - '@pnpm/win-arm64': 11.7.0 - '@pnpm/win-x64': 11.7.0 - - '@pnpm/linux-arm64@11.7.0': + "@pnpm/linux-arm64": 11.7.0 + "@pnpm/linux-x64": 11.7.0 + "@pnpm/linuxstatic-arm64": 11.7.0 + "@pnpm/linuxstatic-x64": 11.7.0 + "@pnpm/macos-arm64": 11.7.0 + "@pnpm/win-arm64": 11.7.0 + "@pnpm/win-x64": 11.7.0 + + "@pnpm/linux-arm64@11.7.0": optional: true - '@pnpm/linux-x64@11.7.0': + "@pnpm/linux-x64@11.7.0": optional: true - '@pnpm/linuxstatic-arm64@11.7.0': + "@pnpm/linuxstatic-arm64@11.7.0": optional: true - '@pnpm/linuxstatic-x64@11.7.0': + "@pnpm/linuxstatic-x64@11.7.0": optional: true - '@pnpm/macos-arm64@11.7.0': + "@pnpm/macos-arm64@11.7.0": optional: true - '@pnpm/win-arm64@11.7.0': + "@pnpm/win-arm64@11.7.0": optional: true - '@pnpm/win-x64@11.7.0': + "@pnpm/win-x64@11.7.0": optional: true - '@reflink/reflink-darwin-arm64@0.1.19': + "@reflink/reflink-darwin-arm64@0.1.19": optional: true - '@reflink/reflink-darwin-x64@0.1.19': + "@reflink/reflink-darwin-x64@0.1.19": optional: true - '@reflink/reflink-linux-arm64-gnu@0.1.19': + "@reflink/reflink-linux-arm64-gnu@0.1.19": optional: true - '@reflink/reflink-linux-arm64-musl@0.1.19': + "@reflink/reflink-linux-arm64-musl@0.1.19": optional: true - '@reflink/reflink-linux-x64-gnu@0.1.19': + "@reflink/reflink-linux-x64-gnu@0.1.19": optional: true - '@reflink/reflink-linux-x64-musl@0.1.19': + "@reflink/reflink-linux-x64-musl@0.1.19": optional: true - '@reflink/reflink-win32-arm64-msvc@0.1.19': + "@reflink/reflink-win32-arm64-msvc@0.1.19": optional: true - '@reflink/reflink-win32-x64-msvc@0.1.19': + "@reflink/reflink-win32-x64-msvc@0.1.19": optional: true - '@reflink/reflink@0.1.19': + "@reflink/reflink@0.1.19": optionalDependencies: - '@reflink/reflink-darwin-arm64': 0.1.19 - '@reflink/reflink-darwin-x64': 0.1.19 - '@reflink/reflink-linux-arm64-gnu': 0.1.19 - '@reflink/reflink-linux-arm64-musl': 0.1.19 - '@reflink/reflink-linux-x64-gnu': 0.1.19 - '@reflink/reflink-linux-x64-musl': 0.1.19 - '@reflink/reflink-win32-arm64-msvc': 0.1.19 - '@reflink/reflink-win32-x64-msvc': 0.1.19 + "@reflink/reflink-darwin-arm64": 0.1.19 + "@reflink/reflink-darwin-x64": 0.1.19 + "@reflink/reflink-linux-arm64-gnu": 0.1.19 + "@reflink/reflink-linux-arm64-musl": 0.1.19 + "@reflink/reflink-linux-x64-gnu": 0.1.19 + "@reflink/reflink-linux-x64-musl": 0.1.19 + "@reflink/reflink-win32-arm64-msvc": 0.1.19 + "@reflink/reflink-win32-x64-msvc": 0.1.19 detect-libc@2.1.2: {} pnpm@11.7.0: {} --- -lockfileVersion: '9.0' +lockfileVersion: "9.0" settings: autoInstallPeers: false @@ -205,40 +259,49 @@ settings: catalogs: default: - '@eslint/js': + "@eslint/js": specifier: 10.0.1 version: 10.0.1 - '@nx/esbuild': + "@nx/esbuild": specifier: 23.0.0 version: 23.0.0 - '@nx/js': + "@nx/eslint": specifier: 23.0.0 version: 23.0.0 - '@shikijs/types': + "@nx/js": + specifier: 23.0.0 + version: 23.0.0 + "@nx/vitest": + specifier: 23.0.0 + version: 23.0.0 + "@nx/web": + specifier: 23.0.0 + version: 23.0.0 + "@shikijs/types": specifier: 3.13.0 version: 3.13.0 - '@types/mocha': + "@types/mocha": specifier: 10.0.10 version: 10.0.10 - '@types/node': + "@types/node": specifier: 25.9.3 version: 25.9.3 - '@types/vscode': + "@types/vscode": specifier: 1.105.0 version: 1.105.0 - '@types/vscode-webview': + "@types/vscode-webview": specifier: 1.57.5 version: 1.57.5 - '@vitest/coverage-v8': + "@vitest/coverage-v8": specifier: 4.1.2 version: 4.1.2 - '@vscode/codicons': + "@vscode/codicons": specifier: 0.0.41 version: 0.0.41 - '@vscode/test-electron': + "@vscode/test-electron": specifier: 3.0.0 version: 3.0.0 - '@vscode/vsce': + "@vscode/vsce": specifier: 3.9.2 version: 3.9.2 esbuild: @@ -294,1419 +357,2537 @@ overrides: parse-semver@1.1.1>semver: 5.7.1 importers: - .: devDependencies: - '@eslint/js': - specifier: 'catalog:' + "@eslint/js": + specifier: "catalog:" version: 10.0.1(eslint@10.5.0(supports-color@8.1.1)) - '@nx/esbuild': - specifier: 'catalog:' + "@nx/esbuild": + specifier: "catalog:" version: 23.0.0(esbuild@0.28.1)(nx@23.0.0) - '@nx/js': - specifier: 'catalog:' + "@nx/eslint": + specifier: "catalog:" + version: 23.0.0(@zkochan/js-yaml@0.0.7)(eslint@10.5.0(supports-color@8.1.1))(nx@23.0.0) + "@nx/js": + specifier: "catalog:" version: 23.0.0(nx@23.0.0) - '@types/node': - specifier: 'catalog:' + "@nx/vitest": + specifier: "catalog:" + version: 23.0.0(@nx/eslint@23.0.0(@zkochan/js-yaml@0.0.7)(eslint@10.5.0(supports-color@8.1.1))(nx@23.0.0))(nx@23.0.0)(typescript@6.0.3)(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0))(vitest@4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0)) + "@nx/web": + specifier: "catalog:" + version: 23.0.0(@nx/eslint@23.0.0(@zkochan/js-yaml@0.0.7)(eslint@10.5.0(supports-color@8.1.1))(nx@23.0.0))(nx@23.0.0)(supports-color@8.1.1) + "@types/node": + specifier: "catalog:" version: 25.9.3 + "@vitest/coverage-v8": + specifier: "catalog:" + version: 4.1.2(vitest@4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0)) eslint: - specifier: 'catalog:' + specifier: "catalog:" version: 10.5.0(supports-color@8.1.1) globals: - specifier: 'catalog:' + specifier: "catalog:" version: 16.4.0 nx: - specifier: 'catalog:' + specifier: "catalog:" version: 23.0.0 prettier: - specifier: 'catalog:' + specifier: "catalog:" version: 3.6.2 typescript: - specifier: 'catalog:' + specifier: "catalog:" version: 6.0.3 typescript-eslint: - specifier: 'catalog:' + specifier: "catalog:" version: 8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) apps/vscode-extension: dependencies: - '@pretty-ts-errors/error-translator': + "@pretty-ts-errors/error-translator": specifier: workspace:* version: link:../../packages/error-translator - '@pretty-ts-errors/formatter': + "@pretty-ts-errors/formatter": specifier: workspace:* version: link:../../packages/formatter - '@pretty-ts-errors/utils': + "@pretty-ts-errors/utils": specifier: workspace:* version: link:../../packages/utils shiki: - specifier: 'catalog:' + specifier: "catalog:" version: 3.13.0 vscode-languageclient: - specifier: 'catalog:' + specifier: "catalog:" version: 10.0.0 devDependencies: - '@shikijs/types': - specifier: 'catalog:' + "@shikijs/types": + specifier: "catalog:" version: 3.13.0 - '@types/mocha': - specifier: 'catalog:' + "@types/mocha": + specifier: "catalog:" version: 10.0.10 - '@types/node': - specifier: 'catalog:' + "@types/node": + specifier: "catalog:" version: 25.9.3 - '@types/vscode': - specifier: 'catalog:' + "@types/vscode": + specifier: "catalog:" version: 1.105.0 - '@types/vscode-webview': - specifier: 'catalog:' + "@types/vscode-webview": + specifier: "catalog:" version: 1.57.5 - '@vscode/codicons': - specifier: 'catalog:' + "@vscode/codicons": + specifier: "catalog:" version: 0.0.41 - '@vscode/test-electron': - specifier: 'catalog:' + "@vscode/test-electron": + specifier: "catalog:" version: 3.0.0 - '@vscode/vsce': - specifier: 'catalog:' + "@vscode/vsce": + specifier: "catalog:" version: 3.9.2(supports-color@8.1.1) esbuild: - specifier: 'catalog:' + specifier: "catalog:" version: 0.28.1 glob: - specifier: 'catalog:' + specifier: "catalog:" version: 13.0.6 mocha: - specifier: 'catalog:' + specifier: "catalog:" version: 12.0.0-beta-10 yaml: - specifier: 'catalog:' + specifier: "catalog:" version: 2.9.0 packages/error-translator: devDependencies: vitest: - specifier: 'catalog:' + specifier: "catalog:" version: 4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) packages/formatter: dependencies: - '@pretty-ts-errors/utils': + "@pretty-ts-errors/utils": specifier: workspace:* version: link:../utils prettier: - specifier: 'catalog:' + specifier: "catalog:" version: 3.6.2 devDependencies: - '@vitest/coverage-v8': - specifier: 'catalog:' + "@vitest/coverage-v8": + specifier: "catalog:" version: 4.1.2(vitest@4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0)) vitest: - specifier: 'catalog:' + specifier: "catalog:" version: 4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) packages/utils: dependencies: ts-dedent: - specifier: 'catalog:' + specifier: "catalog:" version: 2.2.0 packages/vscode-formatter: dependencies: - '@pretty-ts-errors/error-translator': + "@pretty-ts-errors/error-translator": specifier: workspace:* version: link:../error-translator - '@pretty-ts-errors/formatter': + "@pretty-ts-errors/formatter": specifier: workspace:* version: link:../formatter - '@pretty-ts-errors/utils': + "@pretty-ts-errors/utils": specifier: workspace:* version: link:../utils vscode-languageserver-types: - specifier: 'catalog:' + specifier: "catalog:" version: 3.17.5 vscode-uri: - specifier: 'catalog:' + specifier: "catalog:" version: 3.1.0 devDependencies: + "@vitest/coverage-v8": + specifier: "catalog:" + version: 4.1.2(vitest@4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0)) vitest: - specifier: 'catalog:' + specifier: "catalog:" version: 4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) packages: - - '@azu/format-text@1.0.2': - resolution: {integrity: sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==, tarball: https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz} - - '@azu/style-format@1.0.1': - resolution: {integrity: sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==, tarball: https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz} - - '@azure/abort-controller@2.1.2': - resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==, tarball: https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz} - engines: {node: '>=18.0.0'} - - '@azure/core-auth@1.10.1': - resolution: {integrity: sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==, tarball: https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz} - engines: {node: '>=20.0.0'} - - '@azure/core-client@1.10.2': - resolution: {integrity: sha512-1D2LpsU7y9xrqKjdIbsB7PlrRePw0xsVV8p+AKTlzITrWmscajryfJCdDJB/oGwvDI5HmRo04eMMADB67uwAwQ==, tarball: https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.2.tgz} - engines: {node: '>=20.0.0'} - - '@azure/core-rest-pipeline@1.24.0': - resolution: {integrity: sha512-PpLsoDQ3AMmKZ0VU+0GrmqMxgp/sExjlVm4R+nLWngeoEGAzOIPVifaxKGU5gMv+nWELUoHfvrolWD+ZS/nFJg==, tarball: https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.24.0.tgz} - engines: {node: '>=20.0.0'} - - '@azure/core-tracing@1.3.1': - resolution: {integrity: sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==, tarball: https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz} - engines: {node: '>=20.0.0'} - - '@azure/core-util@1.13.1': - resolution: {integrity: sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==, tarball: https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz} - engines: {node: '>=20.0.0'} - - '@azure/identity@4.13.1': - resolution: {integrity: sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==, tarball: https://registry.npmjs.org/@azure/identity/-/identity-4.13.1.tgz} - engines: {node: '>=20.0.0'} - - '@azure/logger@1.3.0': - resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==, tarball: https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz} - engines: {node: '>=20.0.0'} - - '@azure/msal-browser@5.13.0': - resolution: {integrity: sha512-Ea23x0U8XNFY+qJ9T44zO2BbY+AHdb+WdjmYnx36OhJ/KO+PGU5pmsNHf1DCElYX+6wyVRJz1HFeCPC/cHbRug==, tarball: https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.13.0.tgz} - engines: {node: '>=0.8.0'} - - '@azure/msal-common@16.8.0': - resolution: {integrity: sha512-5S4RHOcInL2Nu2U217tDZbWGI6StMfcWCrA7TWvWdJmXQ+cYrrIqr84AsN62fGh2MDBysiBJPt6CfWceJfloEA==, tarball: https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.8.0.tgz} - engines: {node: '>=0.8.0'} - - '@azure/msal-node@5.2.4': - resolution: {integrity: sha512-rpBUg9dA8UpC2WiFt3KeDKVQmmmVrfxdRnW+F1ebgou/jX/0tAvYuonaq5RUo8OaqzOrj4x/HaI8DmY56RXZ2Q==, tarball: https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.2.4.tgz} - engines: {node: '>=20'} - - '@babel/code-frame@7.29.7': - resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==, tarball: https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.29.7': - resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==, tarball: https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/core@7.29.7': - resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==, tarball: https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.29.7': - resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==, tarball: https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.29.7': - resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==, tarball: https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.29.7': - resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==, tarball: https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-create-class-features-plugin@7.29.7': - resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==, tarball: https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@azu/format-text@1.0.2": + resolution: + { + integrity: sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==, + tarball: https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz, + } + + "@azu/style-format@1.0.1": + resolution: + { + integrity: sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==, + tarball: https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz, + } + + "@azure/abort-controller@2.1.2": + resolution: + { + integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==, + tarball: https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz, + } + engines: { node: ">=18.0.0" } + + "@azure/core-auth@1.10.1": + resolution: + { + integrity: sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==, + tarball: https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz, + } + engines: { node: ">=20.0.0" } + + "@azure/core-client@1.10.2": + resolution: + { + integrity: sha512-1D2LpsU7y9xrqKjdIbsB7PlrRePw0xsVV8p+AKTlzITrWmscajryfJCdDJB/oGwvDI5HmRo04eMMADB67uwAwQ==, + tarball: https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.2.tgz, + } + engines: { node: ">=20.0.0" } + + "@azure/core-rest-pipeline@1.24.0": + resolution: + { + integrity: sha512-PpLsoDQ3AMmKZ0VU+0GrmqMxgp/sExjlVm4R+nLWngeoEGAzOIPVifaxKGU5gMv+nWELUoHfvrolWD+ZS/nFJg==, + tarball: https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.24.0.tgz, + } + engines: { node: ">=20.0.0" } + + "@azure/core-tracing@1.3.1": + resolution: + { + integrity: sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==, + tarball: https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz, + } + engines: { node: ">=20.0.0" } + + "@azure/core-util@1.13.1": + resolution: + { + integrity: sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==, + tarball: https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz, + } + engines: { node: ">=20.0.0" } + + "@azure/identity@4.13.1": + resolution: + { + integrity: sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==, + tarball: https://registry.npmjs.org/@azure/identity/-/identity-4.13.1.tgz, + } + engines: { node: ">=20.0.0" } + + "@azure/logger@1.3.0": + resolution: + { + integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==, + tarball: https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz, + } + engines: { node: ">=20.0.0" } + + "@azure/msal-browser@5.13.0": + resolution: + { + integrity: sha512-Ea23x0U8XNFY+qJ9T44zO2BbY+AHdb+WdjmYnx36OhJ/KO+PGU5pmsNHf1DCElYX+6wyVRJz1HFeCPC/cHbRug==, + tarball: https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.13.0.tgz, + } + engines: { node: ">=0.8.0" } + + "@azure/msal-common@16.8.0": + resolution: + { + integrity: sha512-5S4RHOcInL2Nu2U217tDZbWGI6StMfcWCrA7TWvWdJmXQ+cYrrIqr84AsN62fGh2MDBysiBJPt6CfWceJfloEA==, + tarball: https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.8.0.tgz, + } + engines: { node: ">=0.8.0" } + + "@azure/msal-node@5.2.4": + resolution: + { + integrity: sha512-rpBUg9dA8UpC2WiFt3KeDKVQmmmVrfxdRnW+F1ebgou/jX/0tAvYuonaq5RUo8OaqzOrj4x/HaI8DmY56RXZ2Q==, + tarball: https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.2.4.tgz, + } + engines: { node: ">=20" } + + "@babel/code-frame@7.29.7": + resolution: + { + integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==, + tarball: https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/compat-data@7.29.7": + resolution: + { + integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==, + tarball: https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/core@7.29.7": + resolution: + { + integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==, + tarball: https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/generator@7.29.7": + resolution: + { + integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==, + tarball: https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-annotate-as-pure@7.29.7": + resolution: + { + integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==, + tarball: https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-compilation-targets@7.29.7": + resolution: + { + integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==, + tarball: https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-create-class-features-plugin@7.29.7": + resolution: + { + integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==, + tarball: https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.29.7': - resolution: {integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==, tarball: https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/helper-create-regexp-features-plugin@7.29.7": + resolution: + { + integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==, + tarball: https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.6.8': - resolution: {integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==, tarball: https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz} + "@babel/core": ^7.0.0 + + "@babel/helper-define-polyfill-provider@0.6.8": + resolution: + { + integrity: sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==, + tarball: https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz, + } peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-globals@7.29.7': - resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==, tarball: https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-member-expression-to-functions@7.29.7': - resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==, tarball: https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.29.7': - resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==, tarball: https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.29.7': - resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==, tarball: https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + + "@babel/helper-globals@7.29.7": + resolution: + { + integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==, + tarball: https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-member-expression-to-functions@7.29.7": + resolution: + { + integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==, + tarball: https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-module-imports@7.29.7": + resolution: + { + integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==, + tarball: https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-module-transforms@7.29.7": + resolution: + { + integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==, + tarball: https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.29.7': - resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==, tarball: https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.29.7': - resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==, tarball: https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-remap-async-to-generator@7.29.7': - resolution: {integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==, tarball: https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/helper-optimise-call-expression@7.29.7": + resolution: + { + integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==, + tarball: https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-plugin-utils@7.29.7": + resolution: + { + integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==, + tarball: https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-remap-async-to-generator@7.29.7": + resolution: + { + integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==, + tarball: https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.29.7': - resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==, tarball: https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/helper-replace-supers@7.29.7": + resolution: + { + integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==, + tarball: https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.29.7': - resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==, tarball: https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.29.7': - resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==, tarball: https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.29.7': - resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==, tarball: https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.29.7': - resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==, tarball: https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helper-wrap-function@7.29.7': - resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==, tarball: https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.29.7': - resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==, tarball: https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.29.7': - resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==, tarball: https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz} - engines: {node: '>=6.0.0'} + "@babel/core": ^7.0.0 + + "@babel/helper-skip-transparent-expression-wrappers@7.29.7": + resolution: + { + integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==, + tarball: https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-string-parser@7.29.7": + resolution: + { + integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==, + tarball: https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-validator-identifier@7.29.7": + resolution: + { + integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==, + tarball: https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-validator-option@7.29.7": + resolution: + { + integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==, + tarball: https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helper-wrap-function@7.29.7": + resolution: + { + integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==, + tarball: https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/helpers@7.29.7": + resolution: + { + integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==, + tarball: https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/parser@7.29.7": + resolution: + { + integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==, + tarball: https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz, + } + engines: { node: ">=6.0.0" } hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7': - resolution: {integrity: sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==, tarball: https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7": + resolution: + { + integrity: sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==, + tarball: https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7': - resolution: {integrity: sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==, tarball: https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7": + resolution: + { + integrity: sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==, + tarball: https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7': - resolution: {integrity: sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==, tarball: https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7": + resolution: + { + integrity: sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==, + tarball: https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7': - resolution: {integrity: sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==, tarball: https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7": + resolution: + { + integrity: sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==, + tarball: https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7': - resolution: {integrity: sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==, tarball: https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7": + resolution: + { + integrity: sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==, + tarball: https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7': - resolution: {integrity: sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==, tarball: https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.13.0 + + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7": + resolution: + { + integrity: sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==, + tarball: https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-decorators@7.29.7': - resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==, tarball: https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/plugin-proposal-decorators@7.29.7": + resolution: + { + integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==, + tarball: https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==, tarball: https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + resolution: + { + integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==, + tarball: https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-decorators@7.29.7': - resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==, tarball: https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-syntax-decorators@7.29.7": + resolution: + { + integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==, + tarball: https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.29.7': - resolution: {integrity: sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==, tarball: https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-syntax-import-assertions@7.29.7": + resolution: + { + integrity: sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==, + tarball: https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.29.7': - resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==, tarball: https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-syntax-import-attributes@7.29.7": + resolution: + { + integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==, + tarball: https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.29.7': - resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==, tarball: https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-syntax-jsx@7.29.7": + resolution: + { + integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==, + tarball: https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.29.7': - resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==, tarball: https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-syntax-typescript@7.29.7": + resolution: + { + integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==, + tarball: https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==, tarball: https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-syntax-unicode-sets-regex@7.18.6": + resolution: + { + integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==, + tarball: https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-arrow-functions@7.29.7': - resolution: {integrity: sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/plugin-transform-arrow-functions@7.29.7": + resolution: + { + integrity: sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.29.7': - resolution: {integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-async-generator-functions@7.29.7": + resolution: + { + integrity: sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.29.7': - resolution: {integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==, tarball: https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-async-to-generator@7.29.7": + resolution: + { + integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.29.7': - resolution: {integrity: sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-block-scoped-functions@7.29.7": + resolution: + { + integrity: sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.29.7': - resolution: {integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-block-scoping@7.29.7": + resolution: + { + integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.29.7': - resolution: {integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-class-properties@7.29.7": + resolution: + { + integrity: sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-static-block@7.29.7': - resolution: {integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==, tarball: https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-class-static-block@7.29.7": + resolution: + { + integrity: sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-classes@7.29.7': - resolution: {integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==, tarball: https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.12.0 + + "@babel/plugin-transform-classes@7.29.7": + resolution: + { + integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.29.7': - resolution: {integrity: sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-computed-properties@7.29.7": + resolution: + { + integrity: sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.29.7': - resolution: {integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-destructuring@7.29.7": + resolution: + { + integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.29.7': - resolution: {integrity: sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-dotall-regex@7.29.7": + resolution: + { + integrity: sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.29.7': - resolution: {integrity: sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-duplicate-keys@7.29.7": + resolution: + { + integrity: sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7': - resolution: {integrity: sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7": + resolution: + { + integrity: sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-dynamic-import@7.29.7': - resolution: {integrity: sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/plugin-transform-dynamic-import@7.29.7": + resolution: + { + integrity: sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-explicit-resource-management@7.29.7': - resolution: {integrity: sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==, tarball: https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-explicit-resource-management@7.29.7": + resolution: + { + integrity: sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.29.7': - resolution: {integrity: sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-exponentiation-operator@7.29.7": + resolution: + { + integrity: sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.29.7': - resolution: {integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-export-namespace-from@7.29.7": + resolution: + { + integrity: sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.29.7': - resolution: {integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-for-of@7.29.7": + resolution: + { + integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.29.7': - resolution: {integrity: sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-function-name@7.29.7": + resolution: + { + integrity: sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.29.7': - resolution: {integrity: sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-json-strings@7.29.7": + resolution: + { + integrity: sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.29.7': - resolution: {integrity: sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==, tarball: https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-literals@7.29.7": + resolution: + { + integrity: sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.29.7': - resolution: {integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==, tarball: https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-logical-assignment-operators@7.29.7": + resolution: + { + integrity: sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.29.7': - resolution: {integrity: sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-member-expression-literals@7.29.7": + resolution: + { + integrity: sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.29.7': - resolution: {integrity: sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==, tarball: https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-modules-amd@7.29.7": + resolution: + { + integrity: sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.29.7': - resolution: {integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-modules-commonjs@7.29.7": + resolution: + { + integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.29.7': - resolution: {integrity: sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-modules-systemjs@7.29.7": + resolution: + { + integrity: sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.29.7': - resolution: {integrity: sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-modules-umd@7.29.7": + resolution: + { + integrity: sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.29.7': - resolution: {integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-named-capturing-groups-regex@7.29.7": + resolution: + { + integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.29.7': - resolution: {integrity: sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==, tarball: https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/plugin-transform-new-target@7.29.7": + resolution: + { + integrity: sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.29.7': - resolution: {integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-nullish-coalescing-operator@7.29.7": + resolution: + { + integrity: sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.29.7': - resolution: {integrity: sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==, tarball: https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-numeric-separator@7.29.7": + resolution: + { + integrity: sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.29.7': - resolution: {integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==, tarball: https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-object-rest-spread@7.29.7": + resolution: + { + integrity: sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.29.7': - resolution: {integrity: sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-object-super@7.29.7": + resolution: + { + integrity: sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.29.7': - resolution: {integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==, tarball: https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-optional-catch-binding@7.29.7": + resolution: + { + integrity: sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.29.7': - resolution: {integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-optional-chaining@7.29.7": + resolution: + { + integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.29.7': - resolution: {integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==, tarball: https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-parameters@7.29.7": + resolution: + { + integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.29.7': - resolution: {integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==, tarball: https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-private-methods@7.29.7": + resolution: + { + integrity: sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.29.7': - resolution: {integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-private-property-in-object@7.29.7": + resolution: + { + integrity: sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.29.7': - resolution: {integrity: sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-property-literals@7.29.7": + resolution: + { + integrity: sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.29.7': - resolution: {integrity: sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==, tarball: https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-regenerator@7.29.7": + resolution: + { + integrity: sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regexp-modifiers@7.29.7': - resolution: {integrity: sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-regexp-modifiers@7.29.7": + resolution: + { + integrity: sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-reserved-words@7.29.7': - resolution: {integrity: sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/plugin-transform-reserved-words@7.29.7": + resolution: + { + integrity: sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-runtime@7.29.7': - resolution: {integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==, tarball: https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-runtime@7.29.7": + resolution: + { + integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.29.7': - resolution: {integrity: sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-shorthand-properties@7.29.7": + resolution: + { + integrity: sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.29.7': - resolution: {integrity: sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==, tarball: https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-spread@7.29.7": + resolution: + { + integrity: sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.29.7': - resolution: {integrity: sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-sticky-regex@7.29.7": + resolution: + { + integrity: sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.29.7': - resolution: {integrity: sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-template-literals@7.29.7": + resolution: + { + integrity: sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.29.7': - resolution: {integrity: sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==, tarball: https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-typeof-symbol@7.29.7": + resolution: + { + integrity: sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.29.7': - resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==, tarball: https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-typescript@7.29.7": + resolution: + { + integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.29.7': - resolution: {integrity: sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-unicode-escapes@7.29.7": + resolution: + { + integrity: sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.29.7': - resolution: {integrity: sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==, tarball: https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-unicode-property-regex@7.29.7": + resolution: + { + integrity: sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.29.7': - resolution: {integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==, tarball: https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-unicode-regex@7.29.7": + resolution: + { + integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.29.7': - resolution: {integrity: sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==, tarball: https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 + + "@babel/plugin-transform-unicode-sets-regex@7.29.7": + resolution: + { + integrity: sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==, + tarball: https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.29.7': - resolution: {integrity: sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==, tarball: https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0 + + "@babel/preset-env@7.29.7": + resolution: + { + integrity: sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==, + tarball: https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==, tarball: https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz} + "@babel/core": ^7.0.0-0 + + "@babel/preset-modules@0.1.6-no-external-plugins": + resolution: + { + integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==, + tarball: https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz, + } peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/preset-typescript@7.29.7': - resolution: {integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==, tarball: https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz} - engines: {node: '>=6.9.0'} + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + "@babel/preset-typescript@7.29.7": + resolution: + { + integrity: sha512-/Foi8vKY2EVbed/1eZx0gJEEwHAIxogrySI7rULcRIvhZzbvoE/b5qG5Ghc0WKAFKOHA9SD1x7RsFlOYdutIiQ==, + tarball: https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/runtime@7.29.7': - resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==, tarball: https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/template@7.29.7': - resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==, tarball: https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.29.7': - resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==, tarball: https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@babel/types@7.29.7': - resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==, tarball: https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz} - engines: {node: '>=6.9.0'} - - '@bcoe/v8-coverage@1.0.2': - resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==, tarball: https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz} - engines: {node: '>=18'} - - '@emnapi/core@1.10.0': - resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==, tarball: https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz} - - '@emnapi/core@1.4.5': - resolution: {integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==, tarball: https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz} - - '@emnapi/runtime@1.10.0': - resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==, tarball: https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz} - - '@emnapi/runtime@1.4.5': - resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==, tarball: https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz} - - '@emnapi/wasi-threads@1.0.4': - resolution: {integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==, tarball: https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz} - - '@emnapi/wasi-threads@1.2.1': - resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==, tarball: https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz} - - '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz} - engines: {node: '>=18'} + "@babel/core": ^7.0.0-0 + + "@babel/runtime@7.29.7": + resolution: + { + integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==, + tarball: https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/template@7.29.7": + resolution: + { + integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==, + tarball: https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/traverse@7.29.7": + resolution: + { + integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==, + tarball: https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@babel/types@7.29.7": + resolution: + { + integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==, + tarball: https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz, + } + engines: { node: ">=6.9.0" } + + "@bcoe/v8-coverage@1.0.2": + resolution: + { + integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==, + tarball: https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz, + } + engines: { node: ">=18" } + + "@emnapi/core@1.10.0": + resolution: + { + integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==, + tarball: https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz, + } + + "@emnapi/core@1.4.5": + resolution: + { + integrity: sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==, + tarball: https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz, + } + + "@emnapi/runtime@1.10.0": + resolution: + { + integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==, + tarball: https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz, + } + + "@emnapi/runtime@1.4.5": + resolution: + { + integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==, + tarball: https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz, + } + + "@emnapi/wasi-threads@1.0.4": + resolution: + { + integrity: sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==, + tarball: https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz, + } + + "@emnapi/wasi-threads@1.2.1": + resolution: + { + integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==, + tarball: https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz, + } + + "@esbuild/aix-ppc64@0.28.1": + resolution: + { + integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==, + tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/android-arm64@0.28.1": + resolution: + { + integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==, + tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [arm64] os: [android] - '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/android-arm@0.28.1": + resolution: + { + integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==, + tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [arm] os: [android] - '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/android-x64@0.28.1": + resolution: + { + integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==, + tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/darwin-arm64@0.28.1": + resolution: + { + integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==, + tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/darwin-x64@0.28.1": + resolution: + { + integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==, + tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/freebsd-arm64@0.28.1": + resolution: + { + integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==, + tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/freebsd-x64@0.28.1": + resolution: + { + integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==, + tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/linux-arm64@0.28.1": + resolution: + { + integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==, + tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/linux-arm@0.28.1": + resolution: + { + integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==, + tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/linux-ia32@0.28.1": + resolution: + { + integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==, + tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.28.1': - resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/linux-loong64@0.28.1": + resolution: + { + integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==, + tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.28.1': - resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/linux-mips64el@0.28.1": + resolution: + { + integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==, + tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.28.1': - resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/linux-ppc64@0.28.1": + resolution: + { + integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==, + tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.28.1': - resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/linux-riscv64@0.28.1": + resolution: + { + integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==, + tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.28.1': - resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/linux-s390x@0.28.1": + resolution: + { + integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==, + tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.28.1': - resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/linux-x64@0.28.1": + resolution: + { + integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==, + tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.28.1': - resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==, tarball: https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/netbsd-arm64@0.28.1": + resolution: + { + integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==, + tarball: https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.28.1': - resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/netbsd-x64@0.28.1": + resolution: + { + integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==, + tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.28.1': - resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==, tarball: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/openbsd-arm64@0.28.1": + resolution: + { + integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==, + tarball: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.28.1': - resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/openbsd-x64@0.28.1": + resolution: + { + integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==, + tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.28.1': - resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==, tarball: https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/openharmony-arm64@0.28.1": + resolution: + { + integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==, + tarball: https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.28.1': - resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/sunos-x64@0.28.1": + resolution: + { + integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==, + tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.28.1': - resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/win32-arm64@0.28.1": + resolution: + { + integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==, + tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.28.1': - resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/win32-ia32@0.28.1": + resolution: + { + integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==, + tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.28.1': - resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz} - engines: {node: '>=18'} + "@esbuild/win32-x64@0.28.1": + resolution: + { + integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==, + tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz, + } + engines: { node: ">=18" } cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.9.1': - resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==, tarball: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + "@eslint-community/eslint-utils@4.9.1": + resolution: + { + integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==, + tarball: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.2': - resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, tarball: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.23.5': - resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==, tarball: https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - '@eslint/config-helpers@0.6.0': - resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==, tarball: https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - '@eslint/core@1.2.1': - resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==, tarball: https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - '@eslint/js@10.0.1': - resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==, tarball: https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + "@eslint-community/regexpp@4.12.2": + resolution: + { + integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, + tarball: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz, + } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + + "@eslint/config-array@0.23.5": + resolution: + { + integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==, + tarball: https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + + "@eslint/config-helpers@0.6.0": + resolution: + { + integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==, + tarball: https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + + "@eslint/core@1.2.1": + resolution: + { + integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==, + tarball: https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + + "@eslint/js@10.0.1": + resolution: + { + integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==, + tarball: https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } peerDependencies: eslint: ^10.0.0 peerDependenciesMeta: eslint: optional: true - '@eslint/object-schema@3.0.5': - resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==, tarball: https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - '@eslint/plugin-kit@0.7.2': - resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==, tarball: https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - '@humanfs/core@0.19.2': - resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==, tarball: https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.8': - resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==, tarball: https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz} - engines: {node: '>=18.18.0'} - - '@humanfs/types@0.15.0': - resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==, tarball: https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, tarball: https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==, tarball: https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz} - engines: {node: '>=18.18'} - - '@jest/diff-sequences@30.0.1': - resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==, tarball: https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, tarball: https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz} - - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, tarball: https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, tarball: https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, tarball: https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz} - - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, tarball: https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz} - - '@napi-rs/wasm-runtime@0.2.4': - resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==, tarball: https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz} - - '@napi-rs/wasm-runtime@1.1.5': - resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==, tarball: https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.5.tgz} + "@eslint/object-schema@3.0.5": + resolution: + { + integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==, + tarball: https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + + "@eslint/plugin-kit@0.7.2": + resolution: + { + integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==, + tarball: https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } + + "@humanfs/core@0.19.2": + resolution: + { + integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==, + tarball: https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz, + } + engines: { node: ">=18.18.0" } + + "@humanfs/node@0.16.8": + resolution: + { + integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==, + tarball: https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz, + } + engines: { node: ">=18.18.0" } + + "@humanfs/types@0.15.0": + resolution: + { + integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==, + tarball: https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz, + } + engines: { node: ">=18.18.0" } + + "@humanwhocodes/module-importer@1.0.1": + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, + tarball: https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz, + } + engines: { node: ">=12.22" } + + "@humanwhocodes/retry@0.4.3": + resolution: + { + integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==, + tarball: https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz, + } + engines: { node: ">=18.18" } + + "@jest/diff-sequences@30.0.1": + resolution: + { + integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==, + tarball: https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz, + } + engines: { node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0 } + + "@jridgewell/gen-mapping@0.3.13": + resolution: + { + integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, + tarball: https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz, + } + + "@jridgewell/remapping@2.3.5": + resolution: + { + integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, + tarball: https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz, + } + + "@jridgewell/resolve-uri@3.1.2": + resolution: + { + integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, + tarball: https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz, + } + engines: { node: ">=6.0.0" } + + "@jridgewell/sourcemap-codec@1.5.5": + resolution: + { + integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, + tarball: https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz, + } + + "@jridgewell/trace-mapping@0.3.31": + resolution: + { + integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, + tarball: https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz, + } + + "@napi-rs/wasm-runtime@0.2.4": + resolution: + { + integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==, + tarball: https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz, + } + + "@napi-rs/wasm-runtime@1.1.5": + resolution: + { + integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==, + tarball: https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.5.tgz, + } peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, tarball: https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, tarball: https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, tarball: https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz} - engines: {node: '>= 8'} - - '@nx/devkit@23.0.0': - resolution: {integrity: sha512-AYZWLcgYVQJjhhYwoKWFiu0u4jlrfMM64zarRbpQ7vwXWSJXCMQ2j2w9c5vzTnH3SeWigyyEYRo9xulfNESJ8w==, tarball: https://registry.npmjs.org/@nx/devkit/-/devkit-23.0.0.tgz} + "@emnapi/core": ^1.7.1 + "@emnapi/runtime": ^1.7.1 + + "@nodelib/fs.scandir@2.1.5": + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + tarball: https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz, + } + engines: { node: ">= 8" } + + "@nodelib/fs.stat@2.0.5": + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + tarball: https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz, + } + engines: { node: ">= 8" } + + "@nodelib/fs.walk@1.2.8": + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + tarball: https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz, + } + engines: { node: ">= 8" } + + "@nx/devkit@23.0.0": + resolution: + { + integrity: sha512-AYZWLcgYVQJjhhYwoKWFiu0u4jlrfMM64zarRbpQ7vwXWSJXCMQ2j2w9c5vzTnH3SeWigyyEYRo9xulfNESJ8w==, + tarball: https://registry.npmjs.org/@nx/devkit/-/devkit-23.0.0.tgz, + } peerDependencies: - nx: '>= 22 <= 24 || ^23.0.0-0' - - '@nx/esbuild@23.0.0': - resolution: {integrity: sha512-Du9++ffUggQBxukyGmNhGknUWodUCNbEJ2Exik+7VfHMAOysSwBxOrY23B7Tt9WkHUhoSfsRGHT+8ERTqDBANA==, tarball: https://registry.npmjs.org/@nx/esbuild/-/esbuild-23.0.0.tgz} + nx: ">= 22 <= 24 || ^23.0.0-0" + + "@nx/esbuild@23.0.0": + resolution: + { + integrity: sha512-Du9++ffUggQBxukyGmNhGknUWodUCNbEJ2Exik+7VfHMAOysSwBxOrY23B7Tt9WkHUhoSfsRGHT+8ERTqDBANA==, + tarball: https://registry.npmjs.org/@nx/esbuild/-/esbuild-23.0.0.tgz, + } peerDependencies: - esbuild: '>=0.19.2 <1.0.0' + esbuild: ">=0.19.2 <1.0.0" peerDependenciesMeta: esbuild: optional: true - '@nx/js@23.0.0': - resolution: {integrity: sha512-sngYY03gScPmJFtJ2WGBB1zFyWGgQIWCrNoytJZnJbjjPxw5X5pFxdx7t8z7vXcFNz83CQiT7f8HSnUHDR+/XA==, tarball: https://registry.npmjs.org/@nx/js/-/js-23.0.0.tgz} + "@nx/eslint@23.0.0": + resolution: + { + integrity: sha512-VtV5Xai1MmYV7kxCBX4VplCVG95EYZFyLFgyjSi0jCOa9e28c7W9AqR6kwlSN2OjOuEzIF964k0XQda/seIvbA==, + tarball: https://registry.npmjs.org/@nx/eslint/-/eslint-23.0.0.tgz, + } peerDependencies: - '@swc/cli': '>=0.6.0 <0.9.0' + "@nx/jest": 23.0.0 + "@zkochan/js-yaml": 0.0.7 + eslint: ^8.0.0 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + "@nx/jest": + optional: true + "@zkochan/js-yaml": + optional: true + + "@nx/js@23.0.0": + resolution: + { + integrity: sha512-sngYY03gScPmJFtJ2WGBB1zFyWGgQIWCrNoytJZnJbjjPxw5X5pFxdx7t8z7vXcFNz83CQiT7f8HSnUHDR+/XA==, + tarball: https://registry.npmjs.org/@nx/js/-/js-23.0.0.tgz, + } + peerDependencies: + "@swc/cli": ">=0.6.0 <0.9.0" verdaccio: ^6.0.5 peerDependenciesMeta: - '@swc/cli': + "@swc/cli": optional: true verdaccio: optional: true - '@nx/nx-darwin-arm64@23.0.0': - resolution: {integrity: sha512-c/rXP3LYXJLC1F+9KDrWE+n1nkDnTEfHnA1KAK3A/CSk8EfgY0RhekcdbGISrHqgbccdVTBRTNUeTdwD+w23Xw==, tarball: https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-23.0.0.tgz} + "@nx/nx-darwin-arm64@23.0.0": + resolution: + { + integrity: sha512-c/rXP3LYXJLC1F+9KDrWE+n1nkDnTEfHnA1KAK3A/CSk8EfgY0RhekcdbGISrHqgbccdVTBRTNUeTdwD+w23Xw==, + tarball: https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-23.0.0.tgz, + } cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@23.0.0': - resolution: {integrity: sha512-fb1+s0dASz/a+0Ex3Qdw6Y1NssMZ58f8SyQtnr+c7ITM8Yi5njWfNVZMk1tAnAv7CSFvUvltaYekS88GMQ/8lQ==, tarball: https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-23.0.0.tgz} + "@nx/nx-darwin-x64@23.0.0": + resolution: + { + integrity: sha512-fb1+s0dASz/a+0Ex3Qdw6Y1NssMZ58f8SyQtnr+c7ITM8Yi5njWfNVZMk1tAnAv7CSFvUvltaYekS88GMQ/8lQ==, + tarball: https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-23.0.0.tgz, + } cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@23.0.0': - resolution: {integrity: sha512-HYawS59K5IyNu28/0i0ectTAPlyBwPO0vhxw9UMGZ9ni6Yz3WvwPFTGZrWaEVAjGe3pQlQEVVBOr5/0Uw0Sw9A==, tarball: https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-23.0.0.tgz} + "@nx/nx-freebsd-x64@23.0.0": + resolution: + { + integrity: sha512-HYawS59K5IyNu28/0i0ectTAPlyBwPO0vhxw9UMGZ9ni6Yz3WvwPFTGZrWaEVAjGe3pQlQEVVBOr5/0Uw0Sw9A==, + tarball: https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-23.0.0.tgz, + } cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@23.0.0': - resolution: {integrity: sha512-GSPVEUKL/PUuKCubNcH+QtOJ+4+VFHSpKDMTFFjizTh//d4SunC+DE6vvwRt5bCervohCW2B7BicQc6IP2V51g==, tarball: https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-23.0.0.tgz} + "@nx/nx-linux-arm-gnueabihf@23.0.0": + resolution: + { + integrity: sha512-GSPVEUKL/PUuKCubNcH+QtOJ+4+VFHSpKDMTFFjizTh//d4SunC+DE6vvwRt5bCervohCW2B7BicQc6IP2V51g==, + tarball: https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-23.0.0.tgz, + } cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@23.0.0': - resolution: {integrity: sha512-MkpI1SU+OxJ86SL5XcNJLKXsvnxzDwq4uh7Wbehcs62IWXtyGeuxHo1jYGrobYSV8v9f0Aafp3c2GxSxdZX/9Q==, tarball: https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-23.0.0.tgz} + "@nx/nx-linux-arm64-gnu@23.0.0": + resolution: + { + integrity: sha512-MkpI1SU+OxJ86SL5XcNJLKXsvnxzDwq4uh7Wbehcs62IWXtyGeuxHo1jYGrobYSV8v9f0Aafp3c2GxSxdZX/9Q==, + tarball: https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-23.0.0.tgz, + } cpu: [arm64] os: [linux] libc: [glibc] - '@nx/nx-linux-arm64-musl@23.0.0': - resolution: {integrity: sha512-yASOY5MpsuzHKSF4xRyoVCIWv65GDlVs9VxZ+aZIfw5R9XbPgiaHaHRGlLBAm0j7WFw7wBCOB3WOxBK+wjC3dQ==, tarball: https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-23.0.0.tgz} + "@nx/nx-linux-arm64-musl@23.0.0": + resolution: + { + integrity: sha512-yASOY5MpsuzHKSF4xRyoVCIWv65GDlVs9VxZ+aZIfw5R9XbPgiaHaHRGlLBAm0j7WFw7wBCOB3WOxBK+wjC3dQ==, + tarball: https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-23.0.0.tgz, + } cpu: [arm64] os: [linux] libc: [musl] - '@nx/nx-linux-x64-gnu@23.0.0': - resolution: {integrity: sha512-HvDP11Ub00C7kAMC7NvX+sbV8wM5j+OjLQalys0wlyqZ+7SL9OulQv/cyMCEHZSKW8YPt4326G0+omulZDwIGg==, tarball: https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-23.0.0.tgz} + "@nx/nx-linux-x64-gnu@23.0.0": + resolution: + { + integrity: sha512-HvDP11Ub00C7kAMC7NvX+sbV8wM5j+OjLQalys0wlyqZ+7SL9OulQv/cyMCEHZSKW8YPt4326G0+omulZDwIGg==, + tarball: https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-23.0.0.tgz, + } cpu: [x64] os: [linux] libc: [glibc] - '@nx/nx-linux-x64-musl@23.0.0': - resolution: {integrity: sha512-t1pSyBrxQ0Dly9VzB8WZXhVQMk044P8AyMRRiZ+NOs1pK4eRqVlmJmwJQw3ZfZZYUhA7B02PV8DHOjactctdag==, tarball: https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-23.0.0.tgz} + "@nx/nx-linux-x64-musl@23.0.0": + resolution: + { + integrity: sha512-t1pSyBrxQ0Dly9VzB8WZXhVQMk044P8AyMRRiZ+NOs1pK4eRqVlmJmwJQw3ZfZZYUhA7B02PV8DHOjactctdag==, + tarball: https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-23.0.0.tgz, + } cpu: [x64] os: [linux] libc: [musl] - '@nx/nx-win32-arm64-msvc@23.0.0': - resolution: {integrity: sha512-IKTwZZgejzyUZChQjGss2cCSi2rR0J3FnpyQkjt9I4fFYTNd4YCNs5njovrBjQtVLpi/vv3e96fl3ccjbzIUpA==, tarball: https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-23.0.0.tgz} + "@nx/nx-win32-arm64-msvc@23.0.0": + resolution: + { + integrity: sha512-IKTwZZgejzyUZChQjGss2cCSi2rR0J3FnpyQkjt9I4fFYTNd4YCNs5njovrBjQtVLpi/vv3e96fl3ccjbzIUpA==, + tarball: https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-23.0.0.tgz, + } cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@23.0.0': - resolution: {integrity: sha512-2LSdp8U5gDaXtXbGLiKRdQM0f4yNCaraCpQrz27yjlQbyrULyCiaB00NPBL2JlhH9eQahx/QRyizhkMQ0hzVBA==, tarball: https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-23.0.0.tgz} + "@nx/nx-win32-x64-msvc@23.0.0": + resolution: + { + integrity: sha512-2LSdp8U5gDaXtXbGLiKRdQM0f4yNCaraCpQrz27yjlQbyrULyCiaB00NPBL2JlhH9eQahx/QRyizhkMQ0hzVBA==, + tarball: https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-23.0.0.tgz, + } cpu: [x64] os: [win32] - '@nx/workspace@23.0.0': - resolution: {integrity: sha512-h+Lx5AzLsbnrzv3F3vfqUFmQQginLV/+M/4L2NOwEKeMYNJ4QYDTtgvn0fnJv+qGMWZ4HDScvDNCxVTz8vrhvw==, tarball: https://registry.npmjs.org/@nx/workspace/-/workspace-23.0.0.tgz} + "@nx/vitest@23.0.0": + resolution: + { + integrity: sha512-Suh0JtRQuQEL1FidEMBUX+Bxy34TYvhD5l87oQjd2TYQhqrMr+2Fcmk/9xN8M/GGeg3BHD/jyMkj9QcHIW3rMw==, + tarball: https://registry.npmjs.org/@nx/vitest/-/vitest-23.0.0.tgz, + } + peerDependencies: + "@nx/eslint": 23.0.0 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vitest: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + "@nx/eslint": + optional: true + vite: + optional: true + vitest: + optional: true - '@oxc-project/types@0.133.0': - resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==, tarball: https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz} + "@nx/web@23.0.0": + resolution: + { + integrity: sha512-NqEII5iVov75yZ3culQdjZYXUmoq+he+unH4HDkpW6HjVZtD1CCC67anSmXz7/TOxkK3M21tgks7bqkGWqvD7g==, + tarball: https://registry.npmjs.org/@nx/web/-/web-23.0.0.tgz, + } + peerDependencies: + "@nx/cypress": 23.0.0 + "@nx/eslint": 23.0.0 + "@nx/jest": 23.0.0 + "@nx/playwright": 23.0.0 + "@nx/vite": 23.0.0 + "@nx/webpack": 23.0.0 + peerDependenciesMeta: + "@nx/cypress": + optional: true + "@nx/eslint": + optional: true + "@nx/jest": + optional: true + "@nx/playwright": + optional: true + "@nx/vite": + optional: true + "@nx/webpack": + optional: true - '@rolldown/binding-android-arm64@1.0.3': - resolution: {integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==, tarball: https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@nx/workspace@23.0.0": + resolution: + { + integrity: sha512-h+Lx5AzLsbnrzv3F3vfqUFmQQginLV/+M/4L2NOwEKeMYNJ4QYDTtgvn0fnJv+qGMWZ4HDScvDNCxVTz8vrhvw==, + tarball: https://registry.npmjs.org/@nx/workspace/-/workspace-23.0.0.tgz, + } + + "@oxc-project/types@0.133.0": + resolution: + { + integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==, + tarball: https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz, + } + + "@phenomnomnominal/tsquery@6.2.0": + resolution: + { + integrity: sha512-Vo9nkhfZxDB/sBiqIY3pjDC4mOSyure+AFlEW5hcy/tRE82MqCXjRN4InnVNMldinRt0dLYqg4HAU2XPq5e1LA==, + tarball: https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-6.2.0.tgz, + } + peerDependencies: + typescript: ">3.0.0" + + "@rolldown/binding-android-arm64@1.0.3": + resolution: + { + integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==, + tarball: https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.3': - resolution: {integrity: sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==, tarball: https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-darwin-arm64@1.0.3": + resolution: + { + integrity: sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==, + tarball: https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.3': - resolution: {integrity: sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==, tarball: https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-darwin-x64@1.0.3": + resolution: + { + integrity: sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==, + tarball: https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.3': - resolution: {integrity: sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==, tarball: https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-freebsd-x64@1.0.3": + resolution: + { + integrity: sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==, + tarball: https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.3': - resolution: {integrity: sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-arm-gnueabihf@1.0.3": + resolution: + { + integrity: sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==, + tarball: https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.3': - resolution: {integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-arm64-gnu@1.0.3": + resolution: + { + integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==, + tarball: https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.3': - resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-arm64-musl@1.0.3": + resolution: + { + integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==, + tarball: https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.3': - resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-ppc64-gnu@1.0.3": + resolution: + { + integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==, + tarball: https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.3': - resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-s390x-gnu@1.0.3": + resolution: + { + integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==, + tarball: https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.3': - resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-x64-gnu@1.0.3": + resolution: + { + integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==, + tarball: https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.3': - resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==, tarball: https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-linux-x64-musl@1.0.3": + resolution: + { + integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==, + tarball: https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.3': - resolution: {integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==, tarball: https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-openharmony-arm64@1.0.3": + resolution: + { + integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==, + tarball: https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.3': - resolution: {integrity: sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==, tarball: https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-wasm32-wasi@1.0.3": + resolution: + { + integrity: sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==, + tarball: https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.3': - resolution: {integrity: sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==, tarball: https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-win32-arm64-msvc@1.0.3": + resolution: + { + integrity: sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==, + tarball: https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.3': - resolution: {integrity: sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==, tarball: https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + "@rolldown/binding-win32-x64-msvc@1.0.3": + resolution: + { + integrity: sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==, + tarball: https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.1': - resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==, tarball: https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz} - - '@secretlint/config-creator@10.2.2': - resolution: {integrity: sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==, tarball: https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz} - engines: {node: '>=20.0.0'} - - '@secretlint/config-loader@10.2.2': - resolution: {integrity: sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==, tarball: https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz} - engines: {node: '>=20.0.0'} - - '@secretlint/core@10.2.2': - resolution: {integrity: sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==, tarball: https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz} - engines: {node: '>=20.0.0'} - - '@secretlint/formatter@10.2.2': - resolution: {integrity: sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==, tarball: https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz} - engines: {node: '>=20.0.0'} - - '@secretlint/node@10.2.2': - resolution: {integrity: sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==, tarball: https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz} - engines: {node: '>=20.0.0'} - - '@secretlint/profiler@10.2.2': - resolution: {integrity: sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==, tarball: https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz} - - '@secretlint/resolver@10.2.2': - resolution: {integrity: sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==, tarball: https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz} - - '@secretlint/secretlint-formatter-sarif@10.2.2': - resolution: {integrity: sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==, tarball: https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz} - - '@secretlint/secretlint-rule-no-dotenv@10.2.2': - resolution: {integrity: sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==, tarball: https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz} - engines: {node: '>=20.0.0'} - - '@secretlint/secretlint-rule-preset-recommend@10.2.2': - resolution: {integrity: sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==, tarball: https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz} - engines: {node: '>=20.0.0'} - - '@secretlint/source-creator@10.2.2': - resolution: {integrity: sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==, tarball: https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz} - engines: {node: '>=20.0.0'} - - '@secretlint/types@10.2.2': - resolution: {integrity: sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==, tarball: https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz} - engines: {node: '>=20.0.0'} - - '@shikijs/core@3.13.0': - resolution: {integrity: sha512-3P8rGsg2Eh2qIHekwuQjzWhKI4jV97PhvYjYUzGqjvJfqdQPz+nMlfWahU24GZAyW1FxFI1sYjyhfh5CoLmIUA==, tarball: https://registry.npmjs.org/@shikijs/core/-/core-3.13.0.tgz} - - '@shikijs/engine-javascript@3.13.0': - resolution: {integrity: sha512-Ty7xv32XCp8u0eQt8rItpMs6rU9Ki6LJ1dQOW3V/56PKDcpvfHPnYFbsx5FFUP2Yim34m/UkazidamMNVR4vKg==, tarball: https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.13.0.tgz} - - '@shikijs/engine-oniguruma@3.13.0': - resolution: {integrity: sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==, tarball: https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.13.0.tgz} - - '@shikijs/langs@3.13.0': - resolution: {integrity: sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==, tarball: https://registry.npmjs.org/@shikijs/langs/-/langs-3.13.0.tgz} - - '@shikijs/themes@3.13.0': - resolution: {integrity: sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==, tarball: https://registry.npmjs.org/@shikijs/themes/-/themes-3.13.0.tgz} - - '@shikijs/types@3.13.0': - resolution: {integrity: sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==, tarball: https://registry.npmjs.org/@shikijs/types/-/types-3.13.0.tgz} - - '@shikijs/vscode-textmate@10.0.2': - resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==, tarball: https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz} - - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==, tarball: https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz} - engines: {node: '>=18'} - - '@standard-schema/spec@1.1.0': - resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==, tarball: https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz} - - '@textlint/ast-node-types@15.7.1': - resolution: {integrity: sha512-Wii5UgUKFEh9Uv6wbq1zr4/Kf+dtjiUuzPrrXzKp8H+ifkvKNzi23V4Nz+6wVyHQn5T28AFuc8VH8OtzvGYecA==, tarball: https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.7.1.tgz} - - '@textlint/linter-formatter@15.7.1': - resolution: {integrity: sha512-TdwZ/debWYFD05K3CcoHtwvnCrza29wZxD+BjDTk/V5N7iRqkK1dTTHSD4A8AIgROLiDkHJmIKQbasbmsg8AvA==, tarball: https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.7.1.tgz} - - '@textlint/module-interop@15.7.1': - resolution: {integrity: sha512-Jg+sQW2L/cRJypk59wtcMUVVpt8vmit5ZMT3gUnFwevP3A6Qp1HfOtUy9ObT4hBX3lOSGT/ekcCDxR1pL7uH1g==, tarball: https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.7.1.tgz} - - '@textlint/resolver@15.7.1': - resolution: {integrity: sha512-8XnO0pgF6mXnm41VvWmBbEIdGPhiCUt31uLZkOis1ECeg/1SoUcIT6Mx/F0e1rukq8l0UlOSeY9a31CsvRMK0g==, tarball: https://registry.npmjs.org/@textlint/resolver/-/resolver-15.7.1.tgz} - - '@textlint/types@15.7.1': - resolution: {integrity: sha512-Vye/GmFNBTgVzZFtIFJTmLB+s2A7oIADxNG6r9UhfPuY+Czv0z5G3xeyFZZudPlfxURsKUyPIU5XsjOFqVp33A==, tarball: https://registry.npmjs.org/@textlint/types/-/types-15.7.1.tgz} - - '@tybys/wasm-util@0.10.2': - resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==, tarball: https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz} - - '@tybys/wasm-util@0.9.0': - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==, tarball: https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz} - - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==, tarball: https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz} - - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==, tarball: https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz} - - '@types/esrecurse@4.3.1': - resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==, tarball: https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz} - - '@types/estree@1.0.9': - resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==, tarball: https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz} - - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==, tarball: https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, tarball: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz} - - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==, tarball: https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz} - - '@types/mocha@10.0.10': - resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==, tarball: https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz} - - '@types/node@25.9.3': - resolution: {integrity: sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==, tarball: https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz} - - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==, tarball: https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==, tarball: https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz} - - '@types/sarif@2.1.7': - resolution: {integrity: sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==, tarball: https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz} - - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==, tarball: https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz} - - '@types/vscode-webview@1.57.5': - resolution: {integrity: sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==, tarball: https://registry.npmjs.org/@types/vscode-webview/-/vscode-webview-1.57.5.tgz} - - '@types/vscode@1.105.0': - resolution: {integrity: sha512-Lotk3CTFlGZN8ray4VxJE7axIyLZZETQJVWi/lYoUVQuqfRxlQhVOfoejsD2V3dVXPSbS15ov5ZyowMAzgUqcw==, tarball: https://registry.npmjs.org/@types/vscode/-/vscode-1.105.0.tgz} - - '@typescript-eslint/eslint-plugin@8.61.1': - resolution: {integrity: sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==, tarball: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.1.tgz} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + "@rolldown/pluginutils@1.0.1": + resolution: + { + integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==, + tarball: https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz, + } + + "@secretlint/config-creator@10.2.2": + resolution: + { + integrity: sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==, + tarball: https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz, + } + engines: { node: ">=20.0.0" } + + "@secretlint/config-loader@10.2.2": + resolution: + { + integrity: sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==, + tarball: https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz, + } + engines: { node: ">=20.0.0" } + + "@secretlint/core@10.2.2": + resolution: + { + integrity: sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==, + tarball: https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz, + } + engines: { node: ">=20.0.0" } + + "@secretlint/formatter@10.2.2": + resolution: + { + integrity: sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==, + tarball: https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz, + } + engines: { node: ">=20.0.0" } + + "@secretlint/node@10.2.2": + resolution: + { + integrity: sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==, + tarball: https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz, + } + engines: { node: ">=20.0.0" } + + "@secretlint/profiler@10.2.2": + resolution: + { + integrity: sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==, + tarball: https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz, + } + + "@secretlint/resolver@10.2.2": + resolution: + { + integrity: sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==, + tarball: https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz, + } + + "@secretlint/secretlint-formatter-sarif@10.2.2": + resolution: + { + integrity: sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==, + tarball: https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz, + } + + "@secretlint/secretlint-rule-no-dotenv@10.2.2": + resolution: + { + integrity: sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==, + tarball: https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz, + } + engines: { node: ">=20.0.0" } + + "@secretlint/secretlint-rule-preset-recommend@10.2.2": + resolution: + { + integrity: sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==, + tarball: https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz, + } + engines: { node: ">=20.0.0" } + + "@secretlint/source-creator@10.2.2": + resolution: + { + integrity: sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==, + tarball: https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz, + } + engines: { node: ">=20.0.0" } + + "@secretlint/types@10.2.2": + resolution: + { + integrity: sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==, + tarball: https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz, + } + engines: { node: ">=20.0.0" } + + "@shikijs/core@3.13.0": + resolution: + { + integrity: sha512-3P8rGsg2Eh2qIHekwuQjzWhKI4jV97PhvYjYUzGqjvJfqdQPz+nMlfWahU24GZAyW1FxFI1sYjyhfh5CoLmIUA==, + tarball: https://registry.npmjs.org/@shikijs/core/-/core-3.13.0.tgz, + } + + "@shikijs/engine-javascript@3.13.0": + resolution: + { + integrity: sha512-Ty7xv32XCp8u0eQt8rItpMs6rU9Ki6LJ1dQOW3V/56PKDcpvfHPnYFbsx5FFUP2Yim34m/UkazidamMNVR4vKg==, + tarball: https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.13.0.tgz, + } + + "@shikijs/engine-oniguruma@3.13.0": + resolution: + { + integrity: sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==, + tarball: https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.13.0.tgz, + } + + "@shikijs/langs@3.13.0": + resolution: + { + integrity: sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==, + tarball: https://registry.npmjs.org/@shikijs/langs/-/langs-3.13.0.tgz, + } + + "@shikijs/themes@3.13.0": + resolution: + { + integrity: sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==, + tarball: https://registry.npmjs.org/@shikijs/themes/-/themes-3.13.0.tgz, + } + + "@shikijs/types@3.13.0": + resolution: + { + integrity: sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==, + tarball: https://registry.npmjs.org/@shikijs/types/-/types-3.13.0.tgz, + } + + "@shikijs/vscode-textmate@10.0.2": + resolution: + { + integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==, + tarball: https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz, + } + + "@sindresorhus/merge-streams@2.3.0": + resolution: + { + integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==, + tarball: https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz, + } + engines: { node: ">=18" } + + "@standard-schema/spec@1.1.0": + resolution: + { + integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==, + tarball: https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz, + } + + "@textlint/ast-node-types@15.7.1": + resolution: + { + integrity: sha512-Wii5UgUKFEh9Uv6wbq1zr4/Kf+dtjiUuzPrrXzKp8H+ifkvKNzi23V4Nz+6wVyHQn5T28AFuc8VH8OtzvGYecA==, + tarball: https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.7.1.tgz, + } + + "@textlint/linter-formatter@15.7.1": + resolution: + { + integrity: sha512-TdwZ/debWYFD05K3CcoHtwvnCrza29wZxD+BjDTk/V5N7iRqkK1dTTHSD4A8AIgROLiDkHJmIKQbasbmsg8AvA==, + tarball: https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.7.1.tgz, + } + + "@textlint/module-interop@15.7.1": + resolution: + { + integrity: sha512-Jg+sQW2L/cRJypk59wtcMUVVpt8vmit5ZMT3gUnFwevP3A6Qp1HfOtUy9ObT4hBX3lOSGT/ekcCDxR1pL7uH1g==, + tarball: https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.7.1.tgz, + } + + "@textlint/resolver@15.7.1": + resolution: + { + integrity: sha512-8XnO0pgF6mXnm41VvWmBbEIdGPhiCUt31uLZkOis1ECeg/1SoUcIT6Mx/F0e1rukq8l0UlOSeY9a31CsvRMK0g==, + tarball: https://registry.npmjs.org/@textlint/resolver/-/resolver-15.7.1.tgz, + } + + "@textlint/types@15.7.1": + resolution: + { + integrity: sha512-Vye/GmFNBTgVzZFtIFJTmLB+s2A7oIADxNG6r9UhfPuY+Czv0z5G3xeyFZZudPlfxURsKUyPIU5XsjOFqVp33A==, + tarball: https://registry.npmjs.org/@textlint/types/-/types-15.7.1.tgz, + } + + "@tybys/wasm-util@0.10.2": + resolution: + { + integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==, + tarball: https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz, + } + + "@tybys/wasm-util@0.9.0": + resolution: + { + integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==, + tarball: https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz, + } + + "@types/chai@5.2.3": + resolution: + { + integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==, + tarball: https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz, + } + + "@types/deep-eql@4.0.2": + resolution: + { + integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==, + tarball: https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz, + } + + "@types/esquery@1.5.4": + resolution: + { + integrity: sha512-yYO4Q8H+KJHKW1rEeSzHxcZi90durqYgWVfnh5K6ZADVBjBv2e1NEveYX5yT2bffgN7RqzH3k9930m+i2yBoMA==, + tarball: https://registry.npmjs.org/@types/esquery/-/esquery-1.5.4.tgz, + } + + "@types/esrecurse@4.3.1": + resolution: + { + integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==, + tarball: https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz, + } + + "@types/estree@1.0.9": + resolution: + { + integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==, + tarball: https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz, + } + + "@types/hast@3.0.4": + resolution: + { + integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==, + tarball: https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz, + } + + "@types/json-schema@7.0.15": + resolution: + { + integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, + tarball: https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz, + } + + "@types/mdast@4.0.4": + resolution: + { + integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==, + tarball: https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz, + } + + "@types/mocha@10.0.10": + resolution: + { + integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==, + tarball: https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz, + } + + "@types/node@25.9.3": + resolution: + { + integrity: sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==, + tarball: https://registry.npmjs.org/@types/node/-/node-25.9.3.tgz, + } + + "@types/normalize-package-data@2.4.4": + resolution: + { + integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==, + tarball: https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz, + } + + "@types/parse-json@4.0.2": + resolution: + { + integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==, + tarball: https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz, + } + + "@types/sarif@2.1.7": + resolution: + { + integrity: sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==, + tarball: https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz, + } + + "@types/unist@3.0.3": + resolution: + { + integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==, + tarball: https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz, + } + + "@types/vscode-webview@1.57.5": + resolution: + { + integrity: sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==, + tarball: https://registry.npmjs.org/@types/vscode-webview/-/vscode-webview-1.57.5.tgz, + } + + "@types/vscode@1.105.0": + resolution: + { + integrity: sha512-Lotk3CTFlGZN8ray4VxJE7axIyLZZETQJVWi/lYoUVQuqfRxlQhVOfoejsD2V3dVXPSbS15ov5ZyowMAzgUqcw==, + tarball: https://registry.npmjs.org/@types/vscode/-/vscode-1.105.0.tgz, + } + + "@typescript-eslint/eslint-plugin@8.61.1": + resolution: + { + integrity: sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==, + tarball: https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.1.tgz, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - '@typescript-eslint/parser': ^8.61.1 + "@typescript-eslint/parser": ^8.61.1 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/parser@8.61.1': - resolution: {integrity: sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==, tarball: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.61.1.tgz} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + typescript: ">=4.8.4 <6.1.0" + + "@typescript-eslint/parser@8.61.1": + resolution: + { + integrity: sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==, + tarball: https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.61.1.tgz, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/project-service@8.61.1': - resolution: {integrity: sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==, tarball: https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.61.1.tgz} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + typescript: ">=4.8.4 <6.1.0" + + "@typescript-eslint/project-service@8.61.1": + resolution: + { + integrity: sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==, + tarball: https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.61.1.tgz, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/scope-manager@8.61.1': - resolution: {integrity: sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==, tarball: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.61.1.tgz} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.61.1': - resolution: {integrity: sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==, tarball: https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.61.1.tgz} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + typescript: ">=4.8.4 <6.1.0" + + "@typescript-eslint/scope-manager@8.61.1": + resolution: + { + integrity: sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==, + tarball: https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.61.1.tgz, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/tsconfig-utils@8.61.1": + resolution: + { + integrity: sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==, + tarball: https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.61.1.tgz, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/type-utils@8.61.1': - resolution: {integrity: sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==, tarball: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.61.1.tgz} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + typescript: ">=4.8.4 <6.1.0" + + "@typescript-eslint/type-utils@8.61.1": + resolution: + { + integrity: sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==, + tarball: https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.61.1.tgz, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/types@8.61.1': - resolution: {integrity: sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==, tarball: https://registry.npmjs.org/@typescript-eslint/types/-/types-8.61.1.tgz} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.61.1': - resolution: {integrity: sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==, tarball: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.61.1.tgz} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + typescript: ">=4.8.4 <6.1.0" + + "@typescript-eslint/types@8.61.1": + resolution: + { + integrity: sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==, + tarball: https://registry.npmjs.org/@typescript-eslint/types/-/types-8.61.1.tgz, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typescript-eslint/typescript-estree@8.61.1": + resolution: + { + integrity: sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==, + tarball: https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.61.1.tgz, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/utils@8.61.1': - resolution: {integrity: sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==, tarball: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.61.1.tgz} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + typescript: ">=4.8.4 <6.1.0" + + "@typescript-eslint/utils@8.61.1": + resolution: + { + integrity: sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==, + tarball: https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.61.1.tgz, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/visitor-keys@8.61.1': - resolution: {integrity: sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==, tarball: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.61.1.tgz} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typespec/ts-http-runtime@0.3.6': - resolution: {integrity: sha512-jIXhD0eWQ1JA6ln/5Dltyx22UxWNrw0hZmhy2rlv6m6KgF7kplHx3g0fzi09lNmTJQRR91OlemYp3xFnvDK9og==, tarball: https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.6.tgz} - engines: {node: '>=20.0.0'} - - '@ungap/structured-clone@1.3.1': - resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==, tarball: https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz} - - '@vitest/coverage-v8@4.1.2': - resolution: {integrity: sha512-sPK//PHO+kAkScb8XITeB1bf7fsk85Km7+rt4eeuRR3VS1/crD47cmV5wicisJmjNdfeokTZwjMk4Mj2d58Mgg==, tarball: https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.2.tgz} + typescript: ">=4.8.4 <6.1.0" + + "@typescript-eslint/visitor-keys@8.61.1": + resolution: + { + integrity: sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==, + tarball: https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.61.1.tgz, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + + "@typespec/ts-http-runtime@0.3.6": + resolution: + { + integrity: sha512-jIXhD0eWQ1JA6ln/5Dltyx22UxWNrw0hZmhy2rlv6m6KgF7kplHx3g0fzi09lNmTJQRR91OlemYp3xFnvDK9og==, + tarball: https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.6.tgz, + } + engines: { node: ">=20.0.0" } + + "@ungap/structured-clone@1.3.1": + resolution: + { + integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==, + tarball: https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz, + } + + "@vitest/coverage-v8@4.1.2": + resolution: + { + integrity: sha512-sPK//PHO+kAkScb8XITeB1bf7fsk85Km7+rt4eeuRR3VS1/crD47cmV5wicisJmjNdfeokTZwjMk4Mj2d58Mgg==, + tarball: https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.2.tgz, + } peerDependencies: - '@vitest/browser': 4.1.2 + "@vitest/browser": 4.1.2 vitest: 4.1.2 peerDependenciesMeta: - '@vitest/browser': + "@vitest/browser": optional: true - '@vitest/expect@4.1.2': - resolution: {integrity: sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==, tarball: https://registry.npmjs.org/@vitest/expect/-/expect-4.1.2.tgz} - - '@vitest/mocker@4.1.2': - resolution: {integrity: sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==, tarball: https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.2.tgz} + "@vitest/expect@4.1.2": + resolution: + { + integrity: sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==, + tarball: https://registry.npmjs.org/@vitest/expect/-/expect-4.1.2.tgz, + } + + "@vitest/mocker@4.1.2": + resolution: + { + integrity: sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==, + tarball: https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.2.tgz, + } peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1716,625 +2897,1299 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.2': - resolution: {integrity: sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==, tarball: https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.2.tgz} - - '@vitest/runner@4.1.2': - resolution: {integrity: sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==, tarball: https://registry.npmjs.org/@vitest/runner/-/runner-4.1.2.tgz} - - '@vitest/snapshot@4.1.2': - resolution: {integrity: sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==, tarball: https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.2.tgz} - - '@vitest/spy@4.1.2': - resolution: {integrity: sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==, tarball: https://registry.npmjs.org/@vitest/spy/-/spy-4.1.2.tgz} - - '@vitest/utils@4.1.2': - resolution: {integrity: sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==, tarball: https://registry.npmjs.org/@vitest/utils/-/utils-4.1.2.tgz} - - '@vscode/codicons@0.0.41': - resolution: {integrity: sha512-v6/8nx76zau3Joxjzi3eN/FVw+7jKBq4j7LTZY5FhFhq2g0OoFebZ3vRZbv/pUopGpbCnJJ4FOz+NzbjVsmoiw==, tarball: https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.41.tgz} - - '@vscode/test-electron@3.0.0': - resolution: {integrity: sha512-TY5mC7aAjxSLDXsyjhrG8cJHgc/HLdiE5lvtW7hABYQrY24Qwozzr5UoO3HiuAM4Hzz4b7K/eZlwrCILj94CcA==, tarball: https://registry.npmjs.org/@vscode/test-electron/-/test-electron-3.0.0.tgz} - engines: {node: '>=22'} - - '@vscode/vsce-sign-alpine-arm64@2.0.6': - resolution: {integrity: sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz} + "@vitest/pretty-format@4.1.2": + resolution: + { + integrity: sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==, + tarball: https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.2.tgz, + } + + "@vitest/runner@4.1.2": + resolution: + { + integrity: sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==, + tarball: https://registry.npmjs.org/@vitest/runner/-/runner-4.1.2.tgz, + } + + "@vitest/snapshot@4.1.2": + resolution: + { + integrity: sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==, + tarball: https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.2.tgz, + } + + "@vitest/spy@4.1.2": + resolution: + { + integrity: sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==, + tarball: https://registry.npmjs.org/@vitest/spy/-/spy-4.1.2.tgz, + } + + "@vitest/utils@4.1.2": + resolution: + { + integrity: sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==, + tarball: https://registry.npmjs.org/@vitest/utils/-/utils-4.1.2.tgz, + } + + "@vscode/codicons@0.0.41": + resolution: + { + integrity: sha512-v6/8nx76zau3Joxjzi3eN/FVw+7jKBq4j7LTZY5FhFhq2g0OoFebZ3vRZbv/pUopGpbCnJJ4FOz+NzbjVsmoiw==, + tarball: https://registry.npmjs.org/@vscode/codicons/-/codicons-0.0.41.tgz, + } + + "@vscode/test-electron@3.0.0": + resolution: + { + integrity: sha512-TY5mC7aAjxSLDXsyjhrG8cJHgc/HLdiE5lvtW7hABYQrY24Qwozzr5UoO3HiuAM4Hzz4b7K/eZlwrCILj94CcA==, + tarball: https://registry.npmjs.org/@vscode/test-electron/-/test-electron-3.0.0.tgz, + } + engines: { node: ">=22" } + + "@vscode/vsce-sign-alpine-arm64@2.0.6": + resolution: + { + integrity: sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==, + tarball: https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz, + } cpu: [arm64] os: [alpine] - '@vscode/vsce-sign-alpine-x64@2.0.6': - resolution: {integrity: sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz} + "@vscode/vsce-sign-alpine-x64@2.0.6": + resolution: + { + integrity: sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==, + tarball: https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz, + } cpu: [x64] os: [alpine] - '@vscode/vsce-sign-darwin-arm64@2.0.6': - resolution: {integrity: sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz} + "@vscode/vsce-sign-darwin-arm64@2.0.6": + resolution: + { + integrity: sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==, + tarball: https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz, + } cpu: [arm64] os: [darwin] - '@vscode/vsce-sign-darwin-x64@2.0.6': - resolution: {integrity: sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz} + "@vscode/vsce-sign-darwin-x64@2.0.6": + resolution: + { + integrity: sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==, + tarball: https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz, + } cpu: [x64] os: [darwin] - '@vscode/vsce-sign-linux-arm64@2.0.6': - resolution: {integrity: sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz} + "@vscode/vsce-sign-linux-arm64@2.0.6": + resolution: + { + integrity: sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==, + tarball: https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz, + } cpu: [arm64] os: [linux] - '@vscode/vsce-sign-linux-arm@2.0.6': - resolution: {integrity: sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz} + "@vscode/vsce-sign-linux-arm@2.0.6": + resolution: + { + integrity: sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==, + tarball: https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz, + } cpu: [arm] os: [linux] - '@vscode/vsce-sign-linux-x64@2.0.6': - resolution: {integrity: sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz} + "@vscode/vsce-sign-linux-x64@2.0.6": + resolution: + { + integrity: sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==, + tarball: https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz, + } cpu: [x64] os: [linux] - '@vscode/vsce-sign-win32-arm64@2.0.6': - resolution: {integrity: sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz} + "@vscode/vsce-sign-win32-arm64@2.0.6": + resolution: + { + integrity: sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==, + tarball: https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz, + } cpu: [arm64] os: [win32] - '@vscode/vsce-sign-win32-x64@2.0.6': - resolution: {integrity: sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==, tarball: https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz} + "@vscode/vsce-sign-win32-x64@2.0.6": + resolution: + { + integrity: sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==, + tarball: https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz, + } cpu: [x64] os: [win32] - '@vscode/vsce-sign@2.0.9': - resolution: {integrity: sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==, tarball: https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.9.tgz} - - '@vscode/vsce@3.9.2': - resolution: {integrity: sha512-XSxMosEEDO6vLxELAHVkwmhC0qe0ijZni2jB9Rcs8kQsW4lhTDQ/wMzmwFs/buotAWSnpmUp/dRWD2ufG3UYKA==, tarball: https://registry.npmjs.org/@vscode/vsce/-/vsce-3.9.2.tgz} - engines: {node: '>= 20'} + "@vscode/vsce-sign@2.0.9": + resolution: + { + integrity: sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==, + tarball: https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.9.tgz, + } + + "@vscode/vsce@3.9.2": + resolution: + { + integrity: sha512-XSxMosEEDO6vLxELAHVkwmhC0qe0ijZni2jB9Rcs8kQsW4lhTDQ/wMzmwFs/buotAWSnpmUp/dRWD2ufG3UYKA==, + tarball: https://registry.npmjs.org/@vscode/vsce/-/vsce-3.9.2.tgz, + } + engines: { node: ">= 20" } hasBin: true - '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==, tarball: https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz} - - '@zkochan/js-yaml@0.0.7': - resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==, tarball: https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz} + "@yarnpkg/lockfile@1.1.0": + resolution: + { + integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==, + tarball: https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz, + } + + "@zkochan/js-yaml@0.0.7": + resolution: + { + integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==, + tarball: https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz, + } hasBin: true acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, tarball: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz} + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, + tarball: https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz, + } peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 acorn@8.17.0: - resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==, tarball: https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==, + tarball: https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz, + } + engines: { node: ">=0.4.0" } hasBin: true address@2.0.3: - resolution: {integrity: sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA==, tarball: https://registry.npmjs.org/address/-/address-2.0.3.tgz} - engines: {node: '>= 16.0.0'} + resolution: + { + integrity: sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA==, + tarball: https://registry.npmjs.org/address/-/address-2.0.3.tgz, + } + engines: { node: ">= 16.0.0" } agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==, tarball: https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz} - engines: {node: '>= 14'} + resolution: + { + integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==, + tarball: https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz, + } + engines: { node: ">= 14" } ajv@6.15.0: - resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==, tarball: https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz} + resolution: + { + integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==, + tarball: https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz, + } ajv@8.20.0: - resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==, tarball: https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz} + resolution: + { + integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==, + tarball: https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz, + } ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, tarball: https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, + tarball: https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz, + } + engines: { node: ">=6" } ansi-escapes@7.3.0: - resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==, tarball: https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==, + tarball: https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz, + } + engines: { node: ">=18" } ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz, + } + engines: { node: ">=8" } ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==, tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==, + tarball: https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz, + } + engines: { node: ">=12" } ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + tarball: https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz, + } + engines: { node: ">=8" } argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, tarball: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz} + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, + tarball: https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz, + } assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==, tarball: https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==, + tarball: https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz, + } + engines: { node: ">=12" } ast-v8-to-istanbul@1.0.4: - resolution: {integrity: sha512-0bC0/4bTSrnwdhU3IsZDwEdojvuPrSg59OYZfKsLRtJZ0u8VBx9DebfqqG8bRdCC0I7vjgxmPi41P0lpkhJHtA==, tarball: https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.4.tgz} + resolution: + { + integrity: sha512-0bC0/4bTSrnwdhU3IsZDwEdojvuPrSg59OYZfKsLRtJZ0u8VBx9DebfqqG8bRdCC0I7vjgxmPi41P0lpkhJHtA==, + tarball: https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.4.tgz, + } astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, tarball: https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, + tarball: https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz, + } + engines: { node: ">=8" } + + async@3.2.6: + resolution: + { + integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==, + tarball: https://registry.npmjs.org/async/-/async-3.2.6.tgz, + } asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, tarball: https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz} + resolution: + { + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, + tarball: https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz, + } axios@1.16.0: - resolution: {integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==, tarball: https://registry.npmjs.org/axios/-/axios-1.16.0.tgz} + resolution: + { + integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==, + tarball: https://registry.npmjs.org/axios/-/axios-1.16.0.tgz, + } azure-devops-node-api@12.5.0: - resolution: {integrity: sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==, tarball: https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz} + resolution: + { + integrity: sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==, + tarball: https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz, + } babel-plugin-const-enum@1.2.0: - resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==, tarball: https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz} + resolution: + { + integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==, + tarball: https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz, + } peerDependencies: - '@babel/core': ^7.0.0-0 + "@babel/core": ^7.0.0-0 babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==, tarball: https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz} - engines: {node: '>=10', npm: '>=6'} + resolution: + { + integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==, + tarball: https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz, + } + engines: { node: ">=10", npm: ">=6" } babel-plugin-polyfill-corejs2@0.4.17: - resolution: {integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==, tarball: https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz} + resolution: + { + integrity: sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==, + tarball: https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz, + } peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-corejs3@0.13.0: - resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==, tarball: https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz} + resolution: + { + integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==, + tarball: https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz, + } peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-corejs3@0.14.2: - resolution: {integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==, tarball: https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz} + resolution: + { + integrity: sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==, + tarball: https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz, + } peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-regenerator@0.6.8: - resolution: {integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==, tarball: https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz} + resolution: + { + integrity: sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==, + tarball: https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz, + } peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-transform-typescript-metadata@0.3.2: - resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==, tarball: https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz} + resolution: + { + integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==, + tarball: https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz, + } balanced-match@4.0.3: - resolution: {integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==, tarball: https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz} - engines: {node: 20 || >=22} + resolution: + { + integrity: sha512-1pHv8LX9CpKut1Zp4EXey7Z8OfH11ONNH6Dhi2WDUt31VVZFXZzKwXcysBgqSumFCmR+0dqjMK5v5JiFHzi0+g==, + tarball: https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.3.tgz, + } + engines: { node: 20 || >=22 } base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, tarball: https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz} + resolution: + { + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, + tarball: https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz, + } baseline-browser-mapping@2.10.37: - resolution: {integrity: sha512-girxaJ7WZssDOFhzCGZTDKoTa1gk6A1TbflaYTpykLJ4UU9Fz9kx1aREM8JCuoVHbL8X8T/mJg7w2oYSq72Oig==, tarball: https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.37.tgz} - engines: {node: '>=6.0.0'} + resolution: + { + integrity: sha512-girxaJ7WZssDOFhzCGZTDKoTa1gk6A1TbflaYTpykLJ4UU9Fz9kx1aREM8JCuoVHbL8X8T/mJg7w2oYSq72Oig==, + tarball: https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.37.tgz, + } + engines: { node: ">=6.0.0" } hasBin: true + basic-auth@2.0.1: + resolution: + { + integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==, + tarball: https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz, + } + engines: { node: ">= 0.8" } + binaryextensions@6.11.0: - resolution: {integrity: sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==, tarball: https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==, + tarball: https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz, + } + engines: { node: ">=4" } bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, tarball: https://registry.npmjs.org/bl/-/bl-4.1.0.tgz} + resolution: + { + integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, + tarball: https://registry.npmjs.org/bl/-/bl-4.1.0.tgz, + } boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, tarball: https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz} + resolution: + { + integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, + tarball: https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz, + } boundary@2.0.0: - resolution: {integrity: sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==, tarball: https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz} + resolution: + { + integrity: sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==, + tarball: https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz, + } brace-expansion@5.0.6: - resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==, tarball: https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz} - engines: {node: 18 || 20 || >=22} + resolution: + { + integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==, + tarball: https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz, + } + engines: { node: 18 || 20 || >=22 } braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, tarball: https://registry.npmjs.org/braces/-/braces-3.0.3.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, + tarball: https://registry.npmjs.org/braces/-/braces-3.0.3.tgz, + } + engines: { node: ">=8" } browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==, tarball: https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz} + resolution: + { + integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==, + tarball: https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz, + } browserslist@4.28.2: - resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==, tarball: https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + resolution: + { + integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==, + tarball: https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==, tarball: https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz} + resolution: + { + integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==, + tarball: https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz, + } buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==, tarball: https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz} + resolution: + { + integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==, + tarball: https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz, + } buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, tarball: https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz} + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, + tarball: https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz, + } buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, tarball: https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz} + resolution: + { + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, + tarball: https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz, + } bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==, tarball: https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==, + tarball: https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz, + } + engines: { node: ">=18" } call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, tarball: https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, + tarball: https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz, + } + engines: { node: ">= 0.4" } call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==, tarball: https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==, + tarball: https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz, + } + engines: { node: ">= 0.4" } callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, tarball: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, + tarball: https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz, + } + engines: { node: ">=6" } camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, tarball: https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, + tarball: https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz, + } + engines: { node: ">=10" } caniuse-lite@1.0.30001799: - resolution: {integrity: sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==, tarball: https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz} + resolution: + { + integrity: sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==, + tarball: https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz, + } ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==, tarball: https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz} + resolution: + { + integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==, + tarball: https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz, + } chai@6.2.2: - resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==, tarball: https://registry.npmjs.org/chai/-/chai-6.2.2.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==, + tarball: https://registry.npmjs.org/chai/-/chai-6.2.2.tgz, + } + engines: { node: ">=18" } chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, tarball: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + tarball: https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz, + } + engines: { node: ">=10" } chalk@5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==, tarball: https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + resolution: + { + integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==, + tarball: https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz, + } + engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==, tarball: https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz} + resolution: + { + integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==, + tarball: https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz, + } character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==, tarball: https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz} + resolution: + { + integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==, + tarball: https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz, + } cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==, tarball: https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz} + resolution: + { + integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==, + tarball: https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz, + } cheerio@1.2.0: - resolution: {integrity: sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==, tarball: https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz} - engines: {node: '>=20.18.1'} + resolution: + { + integrity: sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==, + tarball: https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz, + } + engines: { node: ">=20.18.1" } chokidar@5.0.0: - resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==, tarball: https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz} - engines: {node: '>= 20.19.0'} + resolution: + { + integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==, + tarball: https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz, + } + engines: { node: ">= 20.19.0" } chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==, tarball: https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz} + resolution: + { + integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==, + tarball: https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz, + } cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, tarball: https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, + tarball: https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz, + } + engines: { node: ">=8" } cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==, tarball: https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==, + tarball: https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz, + } + engines: { node: ">=18" } cli-spinners@2.6.1: - resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==, tarball: https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==, + tarball: https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz, + } + engines: { node: ">=6" } cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, tarball: https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, + tarball: https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz, + } + engines: { node: ">=6" } cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, tarball: https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, + tarball: https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz, + } + engines: { node: ">=12" } clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, tarball: https://registry.npmjs.org/clone/-/clone-1.0.4.tgz} - engines: {node: '>=0.8'} + resolution: + { + integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, + tarball: https://registry.npmjs.org/clone/-/clone-1.0.4.tgz, + } + engines: { node: ">=0.8" } cockatiel@3.2.1: - resolution: {integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==, tarball: https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz} - engines: {node: '>=16'} + resolution: + { + integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==, + tarball: https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz, + } + engines: { node: ">=16" } color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, tarball: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz} - engines: {node: '>=7.0.0'} + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + tarball: https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz, + } + engines: { node: ">=7.0.0" } color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, tarball: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz} + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + tarball: https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz, + } columnify@1.6.0: - resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==, tarball: https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz} - engines: {node: '>=8.0.0'} + resolution: + { + integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==, + tarball: https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz, + } + engines: { node: ">=8.0.0" } combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, tarball: https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz} - engines: {node: '>= 0.8'} + resolution: + { + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, + tarball: https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz, + } + engines: { node: ">= 0.8" } comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, tarball: https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz} + resolution: + { + integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==, + tarball: https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz, + } commander@12.1.0: - resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, tarball: https://registry.npmjs.org/commander/-/commander-12.1.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, + tarball: https://registry.npmjs.org/commander/-/commander-12.1.0.tgz, + } + engines: { node: ">=18" } convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, tarball: https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz} + resolution: + { + integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, + tarball: https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz, + } core-js-compat@3.49.0: - resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==, tarball: https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz} + resolution: + { + integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==, + tarball: https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz, + } core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, tarball: https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz} + resolution: + { + integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, + tarball: https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz, + } + + corser@2.0.1: + resolution: + { + integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==, + tarball: https://registry.npmjs.org/corser/-/corser-2.0.1.tgz, + } + engines: { node: ">= 0.4.0" } cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==, tarball: https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==, + tarball: https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz, + } + engines: { node: ">=10" } cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, tarball: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, + tarball: https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz, + } + engines: { node: ">= 8" } css-select@5.2.2: - resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==, tarball: https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz} + resolution: + { + integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==, + tarball: https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz, + } css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==, tarball: https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==, + tarball: https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz, + } + engines: { node: ">= 6" } debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, tarball: https://registry.npmjs.org/debug/-/debug-4.4.3.tgz} - engines: {node: '>=6.0'} + resolution: + { + integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, + tarball: https://registry.npmjs.org/debug/-/debug-4.4.3.tgz, + } + engines: { node: ">=6.0" } peerDependencies: - supports-color: '*' + supports-color: "*" peerDependenciesMeta: supports-color: optional: true decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==, tarball: https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==, + tarball: https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz, + } + engines: { node: ">=10" } decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==, tarball: https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==, + tarball: https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz, + } + engines: { node: ">=10" } deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==, tarball: https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz} - engines: {node: '>=4.0.0'} + resolution: + { + integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==, + tarball: https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz, + } + engines: { node: ">=4.0.0" } deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, tarball: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz} + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, + tarball: https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz, + } default-browser-id@5.0.1: - resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==, tarball: https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==, + tarball: https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz, + } + engines: { node: ">=18" } default-browser@5.5.0: - resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==, tarball: https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==, + tarball: https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz, + } + engines: { node: ">=18" } defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, tarball: https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz} + resolution: + { + integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, + tarball: https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz, + } define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, tarball: https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, + tarball: https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz, + } + engines: { node: ">=8" } define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==, tarball: https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==, + tarball: https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz, + } + engines: { node: ">=12" } delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, tarball: https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz} - engines: {node: '>=0.4.0'} + resolution: + { + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, + tarball: https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz, + } + engines: { node: ">=0.4.0" } dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, tarball: https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, + tarball: https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz, + } + engines: { node: ">=6" } detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, tarball: https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, + tarball: https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz, + } + engines: { node: ">=8" } detect-port@2.1.0: - resolution: {integrity: sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q==, tarball: https://registry.npmjs.org/detect-port/-/detect-port-2.1.0.tgz} - engines: {node: '>= 16.0.0'} + resolution: + { + integrity: sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q==, + tarball: https://registry.npmjs.org/detect-port/-/detect-port-2.1.0.tgz, + } + engines: { node: ">= 16.0.0" } hasBin: true devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==, tarball: https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz} + resolution: + { + integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==, + tarball: https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz, + } diff@8.0.4: - resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==, tarball: https://registry.npmjs.org/diff/-/diff-8.0.4.tgz} - engines: {node: '>=0.3.1'} + resolution: + { + integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==, + tarball: https://registry.npmjs.org/diff/-/diff-8.0.4.tgz, + } + engines: { node: ">=0.3.1" } dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, tarball: https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz} + resolution: + { + integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, + tarball: https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz, + } domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, tarball: https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz} + resolution: + { + integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, + tarball: https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz, + } domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, tarball: https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz} - engines: {node: '>= 4'} + resolution: + { + integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, + tarball: https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz, + } + engines: { node: ">= 4" } domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==, tarball: https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz} + resolution: + { + integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==, + tarball: https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz, + } dotenv-expand@12.0.3: - resolution: {integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==, tarball: https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.3.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==, + tarball: https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.3.tgz, + } + engines: { node: ">=12" } dotenv@16.4.7: - resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==, tarball: https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==, + tarball: https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz, + } + engines: { node: ">=12" } dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, tarball: https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, + tarball: https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz, + } + engines: { node: ">= 0.4" } ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==, tarball: https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz} + resolution: + { + integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==, + tarball: https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz, + } editions@6.22.0: - resolution: {integrity: sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==, tarball: https://registry.npmjs.org/editions/-/editions-6.22.0.tgz} - engines: {ecmascript: '>= es5', node: '>=4'} + resolution: + { + integrity: sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==, + tarball: https://registry.npmjs.org/editions/-/editions-6.22.0.tgz, + } + engines: { ecmascript: ">= es5", node: ">=4" } ejs@5.0.1: - resolution: {integrity: sha512-COqBPFMxuPTPspXl2DkVYaDS3HtrD1GpzOGkNTJ1IYkifq/r9h8SVEFrjA3D9/VJGOEoMQcrlhpntcSUrM8k6A==, tarball: https://registry.npmjs.org/ejs/-/ejs-5.0.1.tgz} - engines: {node: '>=0.12.18'} + resolution: + { + integrity: sha512-COqBPFMxuPTPspXl2DkVYaDS3HtrD1GpzOGkNTJ1IYkifq/r9h8SVEFrjA3D9/VJGOEoMQcrlhpntcSUrM8k6A==, + tarball: https://registry.npmjs.org/ejs/-/ejs-5.0.1.tgz, + } + engines: { node: ">=0.12.18" } hasBin: true electron-to-chromium@1.5.373: - resolution: {integrity: sha512-G2Hym8JIf/QreuseqkDibgH8Ci8KfJzqGDKdakbhSx9UltwRBH2cBLAWU/lBX0sCdv0TlhyxQyDCnSfxgMWsjA==, tarball: https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.373.tgz} + resolution: + { + integrity: sha512-G2Hym8JIf/QreuseqkDibgH8Ci8KfJzqGDKdakbhSx9UltwRBH2cBLAWU/lBX0sCdv0TlhyxQyDCnSfxgMWsjA==, + tarball: https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.373.tgz, + } emoji-regex@10.6.0: - resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==, tarball: https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz} + resolution: + { + integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==, + tarball: https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz, + } emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, tarball: https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz} + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + tarball: https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz, + } encoding-sniffer@0.2.1: - resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==, tarball: https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz} + resolution: + { + integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==, + tarball: https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz, + } end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==, tarball: https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz} + resolution: + { + integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==, + tarball: https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz, + } enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==, tarball: https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz} - engines: {node: '>=8.6'} + resolution: + { + integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==, + tarball: https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz, + } + engines: { node: ">=8.6" } entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, tarball: https://registry.npmjs.org/entities/-/entities-4.5.0.tgz} - engines: {node: '>=0.12'} + resolution: + { + integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, + tarball: https://registry.npmjs.org/entities/-/entities-4.5.0.tgz, + } + engines: { node: ">=0.12" } entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==, tarball: https://registry.npmjs.org/entities/-/entities-6.0.1.tgz} - engines: {node: '>=0.12'} + resolution: + { + integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==, + tarball: https://registry.npmjs.org/entities/-/entities-6.0.1.tgz, + } + engines: { node: ">=0.12" } entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==, tarball: https://registry.npmjs.org/entities/-/entities-7.0.1.tgz} - engines: {node: '>=0.12'} + resolution: + { + integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==, + tarball: https://registry.npmjs.org/entities/-/entities-7.0.1.tgz, + } + engines: { node: ">=0.12" } environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==, tarball: https://registry.npmjs.org/environment/-/environment-1.1.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==, + tarball: https://registry.npmjs.org/environment/-/environment-1.1.0.tgz, + } + engines: { node: ">=18" } error-ex@1.3.4: - resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==, tarball: https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz} + resolution: + { + integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==, + tarball: https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz, + } es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, tarball: https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, + tarball: https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz, + } + engines: { node: ">= 0.4" } es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, tarball: https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, + tarball: https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz, + } + engines: { node: ">= 0.4" } es-module-lexer@2.1.0: - resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==, tarball: https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz} + resolution: + { + integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==, + tarball: https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz, + } es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==, tarball: https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==, + tarball: https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz, + } + engines: { node: ">= 0.4" } es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==, tarball: https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==, + tarball: https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz, + } + engines: { node: ">= 0.4" } esbuild@0.28.1: - resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==, tarball: https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==, + tarball: https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz, + } + engines: { node: ">=18" } hasBin: true escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, tarball: https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, + tarball: https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz, + } + engines: { node: ">=6" } escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, tarball: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz} - engines: {node: '>=0.8.0'} + resolution: + { + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, + tarball: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz, + } + engines: { node: ">=0.8.0" } escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, tarball: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, + tarball: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz, + } + engines: { node: ">=10" } eslint-scope@9.1.2: - resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==, tarball: https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: + { + integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==, + tarball: https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + resolution: + { + integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, + tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } eslint-visitor-keys@5.0.1: - resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==, tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: + { + integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==, + tarball: https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } eslint@10.5.0: - resolution: {integrity: sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==, tarball: https://registry.npmjs.org/eslint/-/eslint-10.5.0.tgz} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: + { + integrity: sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==, + tarball: https://registry.npmjs.org/eslint/-/eslint-10.5.0.tgz, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } hasBin: true peerDependencies: - jiti: '*' + jiti: "*" peerDependenciesMeta: jiti: optional: true espree@11.2.0: - resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==, tarball: https://registry.npmjs.org/espree/-/espree-11.2.0.tgz} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + resolution: + { + integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==, + tarball: https://registry.npmjs.org/espree/-/espree-11.2.0.tgz, + } + engines: { node: ^20.19.0 || ^22.13.0 || >=24 } esquery@1.7.0: - resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==, tarball: https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz} - engines: {node: '>=0.10'} + resolution: + { + integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==, + tarball: https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz, + } + engines: { node: ">=0.10" } esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, tarball: https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz} - engines: {node: '>=4.0'} + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, + tarball: https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz, + } + engines: { node: ">=4.0" } estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, tarball: https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz} - engines: {node: '>=4.0'} + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, + tarball: https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz, + } + engines: { node: ">=4.0" } estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, tarball: https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz} + resolution: + { + integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, + tarball: https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz, + } esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, tarball: https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, + tarball: https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz, + } + engines: { node: ">=0.10.0" } + + eventemitter3@4.0.7: + resolution: + { + integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, + tarball: https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz, + } expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==, tarball: https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==, + tarball: https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz, + } + engines: { node: ">=6" } expect-type@1.3.0: - resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==, tarball: https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==, + tarball: https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz, + } + engines: { node: ">=12.0.0" } fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, tarball: https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz} + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + tarball: https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz, + } fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, tarball: https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz} - engines: {node: '>=8.6.0'} + resolution: + { + integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, + tarball: https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz, + } + engines: { node: ">=8.6.0" } fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, tarball: https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz} + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, + tarball: https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz, + } fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, tarball: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz} + resolution: + { + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, + tarball: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz, + } fast-uri@3.1.2: - resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==, tarball: https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz} + resolution: + { + integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==, + tarball: https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz, + } fastq@1.20.1: - resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==, tarball: https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz} + resolution: + { + integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==, + tarball: https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz, + } fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, tarball: https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==, + tarball: https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz, + } + engines: { node: ">=12.0.0" } peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2342,1320 +4197,2756 @@ packages: optional: true figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==, tarball: https://registry.npmjs.org/figures/-/figures-3.2.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==, + tarball: https://registry.npmjs.org/figures/-/figures-3.2.0.tgz, + } + engines: { node: ">=8" } file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, tarball: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz} - engines: {node: '>=16.0.0'} + resolution: + { + integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==, + tarball: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz, + } + engines: { node: ">=16.0.0" } fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, tarball: https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, + tarball: https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz, + } + engines: { node: ">=8" } find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, tarball: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + tarball: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz, + } + engines: { node: ">=10" } flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, tarball: https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz} - engines: {node: '>=16'} + resolution: + { + integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, + tarball: https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz, + } + engines: { node: ">=16" } flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, tarball: https://registry.npmjs.org/flat/-/flat-5.0.2.tgz} + resolution: + { + integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, + tarball: https://registry.npmjs.org/flat/-/flat-5.0.2.tgz, + } hasBin: true flatted@3.4.2: - resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==, tarball: https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz} + resolution: + { + integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==, + tarball: https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz, + } follow-redirects@1.16.0: - resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==, tarball: https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz} - engines: {node: '>=4.0'} + resolution: + { + integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==, + tarball: https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz, + } + engines: { node: ">=4.0" } peerDependencies: - debug: '*' + debug: "*" peerDependenciesMeta: debug: optional: true form-data@4.0.5: - resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==, tarball: https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==, + tarball: https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz, + } + engines: { node: ">= 6" } fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==, tarball: https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz} + resolution: + { + integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==, + tarball: https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz, + } fs-extra@11.3.5: - resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==, tarball: https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz} - engines: {node: '>=14.14'} + resolution: + { + integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==, + tarball: https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz, + } + engines: { node: ">=14.14" } fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + resolution: + { + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, + tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } os: [darwin] function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, tarball: https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz} + resolution: + { + integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, + tarball: https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz, + } gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, tarball: https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz} - engines: {node: '>=6.9.0'} + resolution: + { + integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, + tarball: https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz, + } + engines: { node: ">=6.9.0" } get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, tarball: https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz} - engines: {node: 6.* || 8.* || >= 10.*} + resolution: + { + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, + tarball: https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz, + } + engines: { node: 6.* || 8.* || >= 10.* } get-east-asian-width@1.6.0: - resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==, tarball: https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==, + tarball: https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz, + } + engines: { node: ">=18" } get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, tarball: https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, + tarball: https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz, + } + engines: { node: ">= 0.4" } get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, tarball: https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, + tarball: https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz, + } + engines: { node: ">= 0.4" } github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==, tarball: https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz} + resolution: + { + integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==, + tarball: https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz, + } glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, tarball: https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + tarball: https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz, + } + engines: { node: ">= 6" } glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, tarball: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz} - engines: {node: '>=10.13.0'} + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, + tarball: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz, + } + engines: { node: ">=10.13.0" } glob@13.0.6: - resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==, tarball: https://registry.npmjs.org/glob/-/glob-13.0.6.tgz} - engines: {node: 18 || 20 || >=22} + resolution: + { + integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==, + tarball: https://registry.npmjs.org/glob/-/glob-13.0.6.tgz, + } + engines: { node: 18 || 20 || >=22 } globals@16.4.0: - resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==, tarball: https://registry.npmjs.org/globals/-/globals-16.4.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==, + tarball: https://registry.npmjs.org/globals/-/globals-16.4.0.tgz, + } + engines: { node: ">=18" } globby@14.1.0: - resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==, tarball: https://registry.npmjs.org/globby/-/globby-14.1.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==, + tarball: https://registry.npmjs.org/globby/-/globby-14.1.0.tgz, + } + engines: { node: ">=18" } gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, tarball: https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, + tarball: https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz, + } + engines: { node: ">= 0.4" } graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, tarball: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz} + resolution: + { + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, + tarball: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz, + } has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, tarball: https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + tarball: https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz, + } + engines: { node: ">=8" } has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, tarball: https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, + tarball: https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz, + } + engines: { node: ">= 0.4" } has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, tarball: https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, + tarball: https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz, + } + engines: { node: ">= 0.4" } hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, tarball: https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, + tarball: https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz, + } + engines: { node: ">= 0.4" } hasown@2.0.4: - resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==, tarball: https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==, + tarball: https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz, + } + engines: { node: ">= 0.4" } hast-util-to-html@9.0.5: - resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==, tarball: https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz} + resolution: + { + integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==, + tarball: https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz, + } hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==, tarball: https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz} + resolution: + { + integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==, + tarball: https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz, + } he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, tarball: https://registry.npmjs.org/he/-/he-1.2.0.tgz} + resolution: + { + integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, + tarball: https://registry.npmjs.org/he/-/he-1.2.0.tgz, + } hasBin: true hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==, tarball: https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==, + tarball: https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz, + } + engines: { node: ">=10" } hosted-git-info@7.0.2: - resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==, tarball: https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz} - engines: {node: ^16.14.0 || >=18.0.0} + resolution: + { + integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==, + tarball: https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz, + } + engines: { node: ^16.14.0 || >=18.0.0 } + + html-encoding-sniffer@3.0.0: + resolution: + { + integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==, + tarball: https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz, + } + engines: { node: ">=12" } html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, tarball: https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz} + resolution: + { + integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, + tarball: https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz, + } html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==, tarball: https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz} + resolution: + { + integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==, + tarball: https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz, + } htmlparser2@10.1.0: - resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==, tarball: https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz} + resolution: + { + integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==, + tarball: https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz, + } http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==, tarball: https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz} - engines: {node: '>= 14'} + resolution: + { + integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==, + tarball: https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz, + } + engines: { node: ">= 14" } + + http-proxy@1.18.1: + resolution: + { + integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==, + tarball: https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz, + } + engines: { node: ">=8.0.0" } + + http-server@14.1.1: + resolution: + { + integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==, + tarball: https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz, + } + engines: { node: ">=12" } + hasBin: true https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==, tarball: https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz} - engines: {node: '>= 14'} + resolution: + { + integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==, + tarball: https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz, + } + engines: { node: ">= 14" } iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, tarball: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, + tarball: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz, + } + engines: { node: ">=0.10.0" } ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, tarball: https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz} + resolution: + { + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, + tarball: https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz, + } ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, tarball: https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz} - engines: {node: '>= 4'} + resolution: + { + integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, + tarball: https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz, + } + engines: { node: ">= 4" } ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, tarball: https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz} - engines: {node: '>= 4'} + resolution: + { + integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, + tarball: https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz, + } + engines: { node: ">= 4" } immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==, tarball: https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz} + resolution: + { + integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==, + tarball: https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz, + } import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, tarball: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, + tarball: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz, + } + engines: { node: ">=6" } imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, tarball: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz} - engines: {node: '>=0.8.19'} + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, + tarball: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz, + } + engines: { node: ">=0.8.19" } index-to-position@1.2.0: - resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==, tarball: https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==, + tarball: https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz, + } + engines: { node: ">=18" } inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, tarball: https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz} + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + tarball: https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz, + } ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, tarball: https://registry.npmjs.org/ini/-/ini-1.3.8.tgz} + resolution: + { + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, + tarball: https://registry.npmjs.org/ini/-/ini-1.3.8.tgz, + } is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, tarball: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz} + resolution: + { + integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, + tarball: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz, + } is-core-module@2.16.2: - resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==, tarball: https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==, + tarball: https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz, + } + engines: { node: ">= 0.4" } is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, tarball: https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, + tarball: https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz, + } + engines: { node: ">=8" } hasBin: true is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, tarball: https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, + tarball: https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } hasBin: true is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, tarball: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + tarball: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz, + } + engines: { node: ">=0.10.0" } is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, tarball: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + tarball: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz, + } + engines: { node: ">=8" } is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, tarball: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + tarball: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz, + } + engines: { node: ">=0.10.0" } is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, tarball: https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, + tarball: https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz, + } + engines: { node: ">=14.16" } hasBin: true is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, tarball: https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, + tarball: https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz, + } + engines: { node: ">=8" } is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==, tarball: https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==, + tarball: https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz, + } + engines: { node: ">=12" } is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, tarball: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz} - engines: {node: '>=0.12.0'} + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + tarball: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz, + } + engines: { node: ">=0.12.0" } is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, tarball: https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, + tarball: https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz, + } + engines: { node: ">=8" } is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, tarball: https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, + tarball: https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz, + } + engines: { node: ">=8" } is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, + tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz, + } + engines: { node: ">=10" } is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==, tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==, + tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz, + } + engines: { node: ">=12" } is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==, tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==, + tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz, + } + engines: { node: ">=18" } is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, tarball: https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, + tarball: https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz, + } + engines: { node: ">=8" } is-wsl@3.1.1: - resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==, tarball: https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz} - engines: {node: '>=16'} + resolution: + { + integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==, + tarball: https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz, + } + engines: { node: ">=16" } isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, tarball: https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz} + resolution: + { + integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, + tarball: https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz, + } isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, tarball: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz} + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + tarball: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz, + } istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==, tarball: https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==, + tarball: https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz, + } + engines: { node: ">=8" } istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==, tarball: https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==, + tarball: https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz, + } + engines: { node: ">=10" } istanbul-reports@3.2.0: - resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==, tarball: https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==, + tarball: https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz, + } + engines: { node: ">=8" } istextorbinary@9.5.0: - resolution: {integrity: sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==, tarball: https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==, + tarball: https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz, + } + engines: { node: ">=4" } js-tokens@10.0.0: - resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==, tarball: https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz} + resolution: + { + integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==, + tarball: https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz, + } js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, tarball: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz} + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + tarball: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz, + } js-yaml@4.2.0: - resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==, tarball: https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz} + resolution: + { + integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==, + tarball: https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz, + } hasBin: true jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, tarball: https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, + tarball: https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz, + } + engines: { node: ">=6" } hasBin: true json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, tarball: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz} + resolution: + { + integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, + tarball: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz, + } json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, tarball: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz} + resolution: + { + integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, + tarball: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz, + } json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, tarball: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz} + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, + tarball: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz, + } json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, tarball: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz} + resolution: + { + integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, + tarball: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz, + } json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, tarball: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz} + resolution: + { + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, + tarball: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz, + } json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, tarball: https://registry.npmjs.org/json5/-/json5-2.2.3.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, + tarball: https://registry.npmjs.org/json5/-/json5-2.2.3.tgz, + } + engines: { node: ">=6" } hasBin: true jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==, tarball: https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz} + resolution: + { + integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==, + tarball: https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz, + } jsonfile@6.2.1: - resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==, tarball: https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz} + resolution: + { + integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==, + tarball: https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz, + } jsonwebtoken@9.0.3: - resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==, tarball: https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz} - engines: {node: '>=12', npm: '>=6'} + resolution: + { + integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==, + tarball: https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz, + } + engines: { node: ">=12", npm: ">=6" } jszip@3.10.1: - resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==, tarball: https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz} + resolution: + { + integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==, + tarball: https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz, + } jwa@2.0.1: - resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==, tarball: https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz} + resolution: + { + integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==, + tarball: https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz, + } jws@4.0.1: - resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==, tarball: https://registry.npmjs.org/jws/-/jws-4.0.1.tgz} + resolution: + { + integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==, + tarball: https://registry.npmjs.org/jws/-/jws-4.0.1.tgz, + } keytar@7.9.0: - resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==, tarball: https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz} + resolution: + { + integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==, + tarball: https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz, + } keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, tarball: https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz} + resolution: + { + integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, + tarball: https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz, + } leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, tarball: https://registry.npmjs.org/leven/-/leven-3.1.0.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, + tarball: https://registry.npmjs.org/leven/-/leven-3.1.0.tgz, + } + engines: { node: ">=6" } levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, tarball: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, + tarball: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz, + } + engines: { node: ">= 0.8.0" } lie@3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==, tarball: https://registry.npmjs.org/lie/-/lie-3.3.0.tgz} + resolution: + { + integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==, + tarball: https://registry.npmjs.org/lie/-/lie-3.3.0.tgz, + } lightningcss-android-arm64@1.32.0: - resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==, tarball: https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==, + tarball: https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz, + } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [android] lightningcss-darwin-arm64@1.32.0: - resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==, tarball: https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==, + tarball: https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz, + } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [darwin] lightningcss-darwin-x64@1.32.0: - resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==, tarball: https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==, + tarball: https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz, + } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [darwin] lightningcss-freebsd-x64@1.32.0: - resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==, tarball: https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==, + tarball: https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz, + } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [freebsd] lightningcss-linux-arm-gnueabihf@1.32.0: - resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==, tarball: https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==, + tarball: https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz, + } + engines: { node: ">= 12.0.0" } cpu: [arm] os: [linux] lightningcss-linux-arm64-gnu@1.32.0: - resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==, + tarball: https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz, + } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [linux] libc: [glibc] lightningcss-linux-arm64-musl@1.32.0: - resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==, + tarball: https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz, + } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [linux] libc: [musl] lightningcss-linux-x64-gnu@1.32.0: - resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==, + tarball: https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz, + } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [linux] libc: [glibc] lightningcss-linux-x64-musl@1.32.0: - resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==, + tarball: https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz, + } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [linux] libc: [musl] lightningcss-win32-arm64-msvc@1.32.0: - resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==, tarball: https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==, + tarball: https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz, + } + engines: { node: ">= 12.0.0" } cpu: [arm64] os: [win32] lightningcss-win32-x64-msvc@1.32.0: - resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==, tarball: https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==, + tarball: https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz, + } + engines: { node: ">= 12.0.0" } cpu: [x64] os: [win32] lightningcss@1.32.0: - resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==, tarball: https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz} - engines: {node: '>= 12.0.0'} + resolution: + { + integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==, + tarball: https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz, + } + engines: { node: ">= 12.0.0" } lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, tarball: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz} + resolution: + { + integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, + tarball: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz, + } lines-and-columns@2.0.3: - resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==, tarball: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + resolution: + { + integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==, + tarball: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } linkify-it@5.0.1: - resolution: {integrity: sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==, tarball: https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz} + resolution: + { + integrity: sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==, + tarball: https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz, + } locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, tarball: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + tarball: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz, + } + engines: { node: ">=10" } lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, tarball: https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz} + resolution: + { + integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, + tarball: https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz, + } lodash.includes@4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==, tarball: https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz} + resolution: + { + integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==, + tarball: https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz, + } lodash.isboolean@3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==, tarball: https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz} + resolution: + { + integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==, + tarball: https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz, + } lodash.isinteger@4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==, tarball: https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz} + resolution: + { + integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==, + tarball: https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz, + } lodash.isnumber@3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==, tarball: https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz} + resolution: + { + integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==, + tarball: https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz, + } lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==, tarball: https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz} + resolution: + { + integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==, + tarball: https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz, + } lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==, tarball: https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz} + resolution: + { + integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==, + tarball: https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz, + } lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==, tarball: https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz} + resolution: + { + integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==, + tarball: https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz, + } lodash.truncate@4.4.2: - resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==, tarball: https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz} + resolution: + { + integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==, + tarball: https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz, + } lodash@4.18.1: - resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==, tarball: https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz} + resolution: + { + integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==, + tarball: https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz, + } log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, tarball: https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, + tarball: https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz, + } + engines: { node: ">=10" } log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==, tarball: https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==, + tarball: https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz, + } + engines: { node: ">=18" } lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz} + resolution: + { + integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, + tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz, + } lru-cache@11.5.1: - resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz} - engines: {node: 20 || >=22} + resolution: + { + integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==, + tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz, + } + engines: { node: 20 || >=22 } lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz} + resolution: + { + integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, + tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz, + } lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, + tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz, + } + engines: { node: ">=10" } magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz} + resolution: + { + integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, + tarball: https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz, + } magicast@0.5.3: - resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==, tarball: https://registry.npmjs.org/magicast/-/magicast-0.5.3.tgz} + resolution: + { + integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==, + tarball: https://registry.npmjs.org/magicast/-/magicast-0.5.3.tgz, + } make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, tarball: https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, + tarball: https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz, + } + engines: { node: ">=10" } markdown-it@14.2.0: - resolution: {integrity: sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==, tarball: https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz} + resolution: + { + integrity: sha512-1TGiQiJVRQ3NPmZH6sx5Cfnmg6GQm9jvC1ch4TK511NjSJvjzKLzn5pPfZRNZkRPZP0HqCioSndqH8v2nRaWVQ==, + tarball: https://registry.npmjs.org/markdown-it/-/markdown-it-14.2.0.tgz, + } hasBin: true math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, tarball: https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, + tarball: https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz, + } + engines: { node: ">= 0.4" } mdast-util-to-hast@13.2.1: - resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==, tarball: https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz} + resolution: + { + integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==, + tarball: https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz, + } mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==, tarball: https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz} + resolution: + { + integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==, + tarball: https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz, + } merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, tarball: https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, + tarball: https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz, + } + engines: { node: ">= 8" } micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==, tarball: https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz} + resolution: + { + integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==, + tarball: https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz, + } micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==, tarball: https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz} + resolution: + { + integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==, + tarball: https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz, + } micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==, tarball: https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz} + resolution: + { + integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==, + tarball: https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz, + } micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==, tarball: https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz} + resolution: + { + integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==, + tarball: https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz, + } micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==, tarball: https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz} + resolution: + { + integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==, + tarball: https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz, + } micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, tarball: https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz} - engines: {node: '>=8.6'} + resolution: + { + integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, + tarball: https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz, + } + engines: { node: ">=8.6" } mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, tarball: https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + tarball: https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz, + } + engines: { node: ">= 0.6" } mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, tarball: https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz} - engines: {node: '>= 0.6'} + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + tarball: https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz, + } + engines: { node: ">= 0.6" } mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, tarball: https://registry.npmjs.org/mime/-/mime-1.6.0.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, + tarball: https://registry.npmjs.org/mime/-/mime-1.6.0.tgz, + } + engines: { node: ">=4" } hasBin: true mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, tarball: https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, + tarball: https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz, + } + engines: { node: ">=6" } mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==, tarball: https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==, + tarball: https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz, + } + engines: { node: ">=18" } mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==, tarball: https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==, + tarball: https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz, + } + engines: { node: ">=10" } minimatch@10.2.5: - resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==, tarball: https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz} - engines: {node: 18 || 20 || >=22} + resolution: + { + integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==, + tarball: https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz, + } + engines: { node: 18 || 20 || >=22 } minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, tarball: https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz} + resolution: + { + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, + tarball: https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz, + } minipass@7.1.3: - resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==, tarball: https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz} - engines: {node: '>=16 || 14 >=14.17'} + resolution: + { + integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==, + tarball: https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz, + } + engines: { node: ">=16 || 14 >=14.17" } mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==, tarball: https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz} + resolution: + { + integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==, + tarball: https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz, + } mocha@12.0.0-beta-10: - resolution: {integrity: sha512-edlHS69tgkDTSQotUVP6KNtrIV/qQB/uwbxLHE8yFoD2htrbtFv21CyyNVUC9LvcHNeMwNeR2uxJYxYhWPKGTA==, tarball: https://registry.npmjs.org/mocha/-/mocha-12.0.0-beta-10.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-edlHS69tgkDTSQotUVP6KNtrIV/qQB/uwbxLHE8yFoD2htrbtFv21CyyNVUC9LvcHNeMwNeR2uxJYxYhWPKGTA==, + tarball: https://registry.npmjs.org/mocha/-/mocha-12.0.0-beta-10.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, tarball: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz} + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + tarball: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz, + } mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==, tarball: https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz} + resolution: + { + integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==, + tarball: https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz, + } nanoid@3.3.12: - resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==, tarball: https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + resolution: + { + integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==, + tarball: https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } hasBin: true napi-build-utils@2.0.0: - resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==, tarball: https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz} + resolution: + { + integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==, + tarball: https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz, + } natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, tarball: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz} + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + tarball: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz, + } node-abi@3.92.0: - resolution: {integrity: sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==, tarball: https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==, + tarball: https://registry.npmjs.org/node-abi/-/node-abi-3.92.0.tgz, + } + engines: { node: ">=10" } node-addon-api@4.3.0: - resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==, tarball: https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz} + resolution: + { + integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==, + tarball: https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz, + } node-releases@2.0.47: - resolution: {integrity: sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==, tarball: https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==, + tarball: https://registry.npmjs.org/node-releases/-/node-releases-2.0.47.tgz, + } + engines: { node: ">=18" } node-sarif-builder@3.4.0: - resolution: {integrity: sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg==, tarball: https://registry.npmjs.org/node-sarif-builder/-/node-sarif-builder-3.4.0.tgz} - engines: {node: '>=20'} + resolution: + { + integrity: sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg==, + tarball: https://registry.npmjs.org/node-sarif-builder/-/node-sarif-builder-3.4.0.tgz, + } + engines: { node: ">=20" } normalize-package-data@6.0.2: - resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==, tarball: https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz} - engines: {node: ^16.14.0 || >=18.0.0} + resolution: + { + integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==, + tarball: https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz, + } + engines: { node: ^16.14.0 || >=18.0.0 } npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, tarball: https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, + tarball: https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz, + } + engines: { node: ">=8" } nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, tarball: https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz} + resolution: + { + integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, + tarball: https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz, + } nx@23.0.0: - resolution: {integrity: sha512-60HZVOQErtSTnR+UVPBYI5sYe8R2nrHttI0tVHhEj91kJpbXvL15gSh+rv6lUcAJtDfPymoEn20jGzN4oOLKAg==, tarball: https://registry.npmjs.org/nx/-/nx-23.0.0.tgz} + resolution: + { + integrity: sha512-60HZVOQErtSTnR+UVPBYI5sYe8R2nrHttI0tVHhEj91kJpbXvL15gSh+rv6lUcAJtDfPymoEn20jGzN4oOLKAg==, + tarball: https://registry.npmjs.org/nx/-/nx-23.0.0.tgz, + } hasBin: true peerDependencies: - '@swc-node/register': ^1.11.1 - '@swc/core': ^1.15.8 + "@swc-node/register": ^1.11.1 + "@swc/core": ^1.15.8 peerDependenciesMeta: - '@swc-node/register': + "@swc-node/register": optional: true - '@swc/core': + "@swc/core": optional: true object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==, tarball: https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==, + tarball: https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz, + } + engines: { node: ">= 0.4" } obug@2.1.3: - resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==, tarball: https://registry.npmjs.org/obug/-/obug-2.1.3.tgz} - engines: {node: '>=12.20.0'} + resolution: + { + integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==, + tarball: https://registry.npmjs.org/obug/-/obug-2.1.3.tgz, + } + engines: { node: ">=12.20.0" } once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, tarball: https://registry.npmjs.org/once/-/once-1.4.0.tgz} + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + tarball: https://registry.npmjs.org/once/-/once-1.4.0.tgz, + } onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, tarball: https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + tarball: https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz, + } + engines: { node: ">=6" } onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==, tarball: https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==, + tarball: https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz, + } + engines: { node: ">=18" } oniguruma-parser@0.12.2: - resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==, tarball: https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz} + resolution: + { + integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==, + tarball: https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz, + } oniguruma-to-es@4.3.6: - resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==, tarball: https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.6.tgz} + resolution: + { + integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==, + tarball: https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.6.tgz, + } open@10.2.0: - resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==, tarball: https://registry.npmjs.org/open/-/open-10.2.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==, + tarball: https://registry.npmjs.org/open/-/open-10.2.0.tgz, + } + engines: { node: ">=18" } open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, tarball: https://registry.npmjs.org/open/-/open-8.4.2.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, + tarball: https://registry.npmjs.org/open/-/open-8.4.2.tgz, + } + engines: { node: ">=12" } + + opener@1.5.2: + resolution: + { + integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==, + tarball: https://registry.npmjs.org/opener/-/opener-1.5.2.tgz, + } + hasBin: true optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, tarball: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, + tarball: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz, + } + engines: { node: ">= 0.8.0" } ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, tarball: https://registry.npmjs.org/ora/-/ora-5.4.1.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, + tarball: https://registry.npmjs.org/ora/-/ora-5.4.1.tgz, + } + engines: { node: ">=10" } ora@8.2.0: - resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==, tarball: https://registry.npmjs.org/ora/-/ora-8.2.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==, + tarball: https://registry.npmjs.org/ora/-/ora-8.2.0.tgz, + } + engines: { node: ">=18" } p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, tarball: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + tarball: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz, + } + engines: { node: ">=10" } p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, tarball: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + tarball: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz, + } + engines: { node: ">=10" } p-map@7.0.4: - resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==, tarball: https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==, + tarball: https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz, + } + engines: { node: ">=18" } pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==, tarball: https://registry.npmjs.org/pako/-/pako-1.0.11.tgz} + resolution: + { + integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==, + tarball: https://registry.npmjs.org/pako/-/pako-1.0.11.tgz, + } parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, tarball: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, + tarball: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz, + } + engines: { node: ">=6" } parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, tarball: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, + tarball: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz, + } + engines: { node: ">=8" } parse-json@8.3.0: - resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==, tarball: https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==, + tarball: https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz, + } + engines: { node: ">=18" } parse-semver@1.1.1: - resolution: {integrity: sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==, tarball: https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz} + resolution: + { + integrity: sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==, + tarball: https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz, + } parse5-htmlparser2-tree-adapter@7.1.0: - resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==, tarball: https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz} + resolution: + { + integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==, + tarball: https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz, + } parse5-parser-stream@7.1.2: - resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==, tarball: https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz} + resolution: + { + integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==, + tarball: https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz, + } parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==, tarball: https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz} + resolution: + { + integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==, + tarball: https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz, + } path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, tarball: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + tarball: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz, + } + engines: { node: ">=8" } path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, tarball: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + tarball: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz, + } + engines: { node: ">=8" } path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, tarball: https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz} + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, + tarball: https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz, + } path-scurry@2.0.2: - resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==, tarball: https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz} - engines: {node: 18 || 20 || >=22} + resolution: + { + integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==, + tarball: https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz, + } + engines: { node: 18 || 20 || >=22 } path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, tarball: https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, + tarball: https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz, + } + engines: { node: ">=8" } path-type@6.0.0: - resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==, tarball: https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==, + tarball: https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz, + } + engines: { node: ">=18" } pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, tarball: https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz} + resolution: + { + integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, + tarball: https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz, + } pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==, tarball: https://registry.npmjs.org/pend/-/pend-1.2.0.tgz} + resolution: + { + integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==, + tarball: https://registry.npmjs.org/pend/-/pend-1.2.0.tgz, + } picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, tarball: https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz} + resolution: + { + integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, + tarball: https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz, + } picomatch@2.3.2: - resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==, tarball: https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz} - engines: {node: '>=8.6'} + resolution: + { + integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==, + tarball: https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz, + } + engines: { node: ">=8.6" } picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==, tarball: https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==, + tarball: https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz, + } + engines: { node: ">=12" } pluralize@2.0.0: - resolution: {integrity: sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==, tarball: https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz} + resolution: + { + integrity: sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==, + tarball: https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz, + } pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==, tarball: https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==, + tarball: https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz, + } + engines: { node: ">=4" } + + portfinder@1.0.38: + resolution: + { + integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==, + tarball: https://registry.npmjs.org/portfinder/-/portfinder-1.0.38.tgz, + } + engines: { node: ">= 10.12" } postcss@8.5.15: - resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==, tarball: https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz} - engines: {node: ^10 || ^12 || >=14} + resolution: + { + integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==, + tarball: https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz, + } + engines: { node: ^10 || ^12 || >=14 } prebuild-install@7.1.3: - resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==, tarball: https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==, + tarball: https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz, + } + engines: { node: ">=10" } deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. hasBin: true prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, tarball: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, + tarball: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz, + } + engines: { node: ">= 0.8.0" } prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==, tarball: https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==, + tarball: https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz, + } + engines: { node: ">=14" } hasBin: true process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, tarball: https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz} + resolution: + { + integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, + tarball: https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz, + } property-information@7.2.0: - resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==, tarball: https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz} + resolution: + { + integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==, + tarball: https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz, + } proxy-from-env@2.1.0: - resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==, tarball: https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==, + tarball: https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz, + } + engines: { node: ">=10" } pump@3.0.4: - resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==, tarball: https://registry.npmjs.org/pump/-/pump-3.0.4.tgz} + resolution: + { + integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==, + tarball: https://registry.npmjs.org/pump/-/pump-3.0.4.tgz, + } punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==, tarball: https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==, + tarball: https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz, + } + engines: { node: ">=6" } punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, tarball: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, + tarball: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz, + } + engines: { node: ">=6" } qs@6.15.2: - resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==, tarball: https://registry.npmjs.org/qs/-/qs-6.15.2.tgz} - engines: {node: '>=0.6'} + resolution: + { + integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==, + tarball: https://registry.npmjs.org/qs/-/qs-6.15.2.tgz, + } + engines: { node: ">=0.6" } queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, tarball: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz} + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + tarball: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz, + } rc-config-loader@4.1.4: - resolution: {integrity: sha512-3GiwEzklkbXTDp52UR5nT8iXgYAx1V9ZG/kDZT7p60u2GCv2XTwQq4NzinMoMpNtXhmt3WkhYXcj6HH8HdwCEQ==, tarball: https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.4.tgz} + resolution: + { + integrity: sha512-3GiwEzklkbXTDp52UR5nT8iXgYAx1V9ZG/kDZT7p60u2GCv2XTwQq4NzinMoMpNtXhmt3WkhYXcj6HH8HdwCEQ==, + tarball: https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.4.tgz, + } rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==, tarball: https://registry.npmjs.org/rc/-/rc-1.2.8.tgz} + resolution: + { + integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==, + tarball: https://registry.npmjs.org/rc/-/rc-1.2.8.tgz, + } hasBin: true read-pkg@9.0.1: - resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==, tarball: https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==, + tarball: https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz, + } + engines: { node: ">=18" } read@1.0.7: - resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==, tarball: https://registry.npmjs.org/read/-/read-1.0.7.tgz} - engines: {node: '>=0.8'} + resolution: + { + integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==, + tarball: https://registry.npmjs.org/read/-/read-1.0.7.tgz, + } + engines: { node: ">=0.8" } readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==, tarball: https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz} + resolution: + { + integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==, + tarball: https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz, + } readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, tarball: https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, + tarball: https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz, + } + engines: { node: ">= 6" } readdirp@5.0.0: - resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==, tarball: https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz} - engines: {node: '>= 20.19.0'} + resolution: + { + integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==, + tarball: https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz, + } + engines: { node: ">= 20.19.0" } regenerate-unicode-properties@10.2.2: - resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==, tarball: https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==, + tarball: https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz, + } + engines: { node: ">=4" } regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, tarball: https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz} + resolution: + { + integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, + tarball: https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz, + } regex-recursion@6.0.2: - resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==, tarball: https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz} + resolution: + { + integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==, + tarball: https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz, + } regex-utilities@2.3.0: - resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==, tarball: https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz} + resolution: + { + integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==, + tarball: https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz, + } regex@6.1.0: - resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==, tarball: https://registry.npmjs.org/regex/-/regex-6.1.0.tgz} + resolution: + { + integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==, + tarball: https://registry.npmjs.org/regex/-/regex-6.1.0.tgz, + } regexpu-core@6.4.0: - resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==, tarball: https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==, + tarball: https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz, + } + engines: { node: ">=4" } regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, tarball: https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz} + resolution: + { + integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, + tarball: https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz, + } regjsparser@0.13.2: - resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==, tarball: https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz} + resolution: + { + integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==, + tarball: https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz, + } hasBin: true require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, tarball: https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, + tarball: https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz, + } + engines: { node: ">=0.10.0" } require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, tarball: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, + tarball: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz, + } + engines: { node: ">=0.10.0" } + + requires-port@1.0.0: + resolution: + { + integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==, + tarball: https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz, + } resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, tarball: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, + tarball: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz, + } + engines: { node: ">=4" } resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==, tarball: https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==, + tarball: https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz, + } + engines: { node: ">=10" } resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==, tarball: https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==, + tarball: https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz, + } + engines: { node: ">= 0.4" } hasBin: true restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, tarball: https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, + tarball: https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz, + } + engines: { node: ">=8" } restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==, tarball: https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==, + tarball: https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz, + } + engines: { node: ">=18" } reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, tarball: https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + resolution: + { + integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, + tarball: https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz, + } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } rolldown@1.0.3: - resolution: {integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==, tarball: https://registry.npmjs.org/rolldown/-/rolldown-1.0.3.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==, + tarball: https://registry.npmjs.org/rolldown/-/rolldown-1.0.3.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true run-applescript@7.1.0: - resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==, tarball: https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==, + tarball: https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz, + } + engines: { node: ">=18" } run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, tarball: https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz} + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + tarball: https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz, + } safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, tarball: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz} + resolution: + { + integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, + tarball: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz, + } safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, tarball: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz} + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + tarball: https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz, + } safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, tarball: https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz} + resolution: + { + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, + tarball: https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz, + } sax@1.6.0: - resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==, tarball: https://registry.npmjs.org/sax/-/sax-1.6.0.tgz} - engines: {node: '>=11.0.0'} + resolution: + { + integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==, + tarball: https://registry.npmjs.org/sax/-/sax-1.6.0.tgz, + } + engines: { node: ">=11.0.0" } secretlint@10.2.2: - resolution: {integrity: sha512-xVpkeHV/aoWe4vP4TansF622nBEImzCY73y/0042DuJ29iKIaqgoJ8fGxre3rVSHHbxar4FdJobmTnLp9AU0eg==, tarball: https://registry.npmjs.org/secretlint/-/secretlint-10.2.2.tgz} - engines: {node: '>=20.0.0'} + resolution: + { + integrity: sha512-xVpkeHV/aoWe4vP4TansF622nBEImzCY73y/0042DuJ29iKIaqgoJ8fGxre3rVSHHbxar4FdJobmTnLp9AU0eg==, + tarball: https://registry.npmjs.org/secretlint/-/secretlint-10.2.2.tgz, + } + engines: { node: ">=20.0.0" } hasBin: true + secure-compare@3.0.1: + resolution: + { + integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==, + tarball: https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz, + } + semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, tarball: https://registry.npmjs.org/semver/-/semver-5.7.1.tgz} + resolution: + { + integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, + tarball: https://registry.npmjs.org/semver/-/semver-5.7.1.tgz, + } hasBin: true semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, tarball: https://registry.npmjs.org/semver/-/semver-6.3.1.tgz} + resolution: + { + integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, + tarball: https://registry.npmjs.org/semver/-/semver-6.3.1.tgz, + } hasBin: true semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, tarball: https://registry.npmjs.org/semver/-/semver-7.7.4.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==, + tarball: https://registry.npmjs.org/semver/-/semver-7.7.4.tgz, + } + engines: { node: ">=10" } hasBin: true semver@7.8.4: - resolution: {integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==, tarball: https://registry.npmjs.org/semver/-/semver-7.8.4.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==, + tarball: https://registry.npmjs.org/semver/-/semver-7.8.4.tgz, + } + engines: { node: ">=10" } hasBin: true serialize-javascript@7.0.5: - resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==, tarball: https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz} - engines: {node: '>=20.0.0'} + resolution: + { + integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==, + tarball: https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz, + } + engines: { node: ">=20.0.0" } setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==, tarball: https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz} + resolution: + { + integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==, + tarball: https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz, + } shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, tarball: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + tarball: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz, + } + engines: { node: ">=8" } shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, tarball: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + tarball: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz, + } + engines: { node: ">=8" } shiki@3.13.0: - resolution: {integrity: sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g==, tarball: https://registry.npmjs.org/shiki/-/shiki-3.13.0.tgz} + resolution: + { + integrity: sha512-aZW4l8Og16CokuCLf8CF8kq+KK2yOygapU5m3+hoGw0Mdosc6fPitjM+ujYarppj5ZIKGyPDPP1vqmQhr+5/0g==, + tarball: https://registry.npmjs.org/shiki/-/shiki-3.13.0.tgz, + } side-channel-list@1.0.1: - resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==, tarball: https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==, + tarball: https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz, + } + engines: { node: ">= 0.4" } side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==, tarball: https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==, + tarball: https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz, + } + engines: { node: ">= 0.4" } side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==, tarball: https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==, + tarball: https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz, + } + engines: { node: ">= 0.4" } side-channel@1.1.1: - resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==, tarball: https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==, + tarball: https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz, + } + engines: { node: ">= 0.4" } siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==, tarball: https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz} + resolution: + { + integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==, + tarball: https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz, + } signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, tarball: https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz} + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + tarball: https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz, + } signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, tarball: https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz} - engines: {node: '>=14'} + resolution: + { + integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, + tarball: https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz, + } + engines: { node: ">=14" } simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==, tarball: https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz} + resolution: + { + integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==, + tarball: https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz, + } simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==, tarball: https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz} + resolution: + { + integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==, + tarball: https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz, + } slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==, tarball: https://registry.npmjs.org/slash/-/slash-5.1.0.tgz} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==, + tarball: https://registry.npmjs.org/slash/-/slash-5.1.0.tgz, + } + engines: { node: ">=14.16" } slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==, tarball: https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==, + tarball: https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz, + } + engines: { node: ">=10" } smol-toml@1.6.1: - resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==, tarball: https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz} - engines: {node: '>= 18'} + resolution: + { + integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==, + tarball: https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz, + } + engines: { node: ">= 18" } source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, tarball: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, + tarball: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz, + } + engines: { node: ">=0.10.0" } source-map-support@0.5.19: - resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==, tarball: https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz} + resolution: + { + integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==, + tarball: https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz, + } source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, tarball: https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + tarball: https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz, + } + engines: { node: ">=0.10.0" } space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==, tarball: https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz} + resolution: + { + integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==, + tarball: https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz, + } spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, tarball: https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz} + resolution: + { + integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, + tarball: https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz, + } spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==, tarball: https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz} + resolution: + { + integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==, + tarball: https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz, + } spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, tarball: https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz} + resolution: + { + integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, + tarball: https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz, + } spdx-license-ids@3.0.23: - resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==, tarball: https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz} + resolution: + { + integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==, + tarball: https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz, + } stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==, tarball: https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz} + resolution: + { + integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==, + tarball: https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz, + } std-env@4.1.0: - resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==, tarball: https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz} + resolution: + { + integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==, + tarball: https://registry.npmjs.org/std-env/-/std-env-4.1.0.tgz, + } stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==, tarball: https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==, + tarball: https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz, + } + engines: { node: ">=18" } string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, tarball: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, + tarball: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz, + } + engines: { node: ">=8" } string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, tarball: https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, + tarball: https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz, + } + engines: { node: ">=18" } string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==, tarball: https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz} + resolution: + { + integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==, + tarball: https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz, + } string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, tarball: https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz} + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, + tarball: https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz, + } stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==, tarball: https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz} + resolution: + { + integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==, + tarball: https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz, + } strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, tarball: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + tarball: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz, + } + engines: { node: ">=8" } strip-ansi@7.2.0: - resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==, tarball: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==, + tarball: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz, + } + engines: { node: ">=12" } strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, tarball: https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, + tarball: https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz, + } + engines: { node: ">=4" } strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==, tarball: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==, + tarball: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz, + } + engines: { node: ">=0.10.0" } strip-json-comments@5.0.3: - resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==, tarball: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz} - engines: {node: '>=14.16'} + resolution: + { + integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==, + tarball: https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz, + } + engines: { node: ">=14.16" } structured-source@4.0.0: - resolution: {integrity: sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==, tarball: https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz} + resolution: + { + integrity: sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==, + tarball: https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz, + } supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, tarball: https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + tarball: https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz, + } + engines: { node: ">=8" } supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, tarball: https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, + tarball: https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz, + } + engines: { node: ">=10" } supports-hyperlinks@3.2.0: - resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==, tarball: https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz} - engines: {node: '>=14.18'} + resolution: + { + integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==, + tarball: https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz, + } + engines: { node: ">=14.18" } supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, tarball: https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz} - engines: {node: '>= 0.4'} + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + tarball: https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz, + } + engines: { node: ">= 0.4" } table@6.9.0: - resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==, tarball: https://registry.npmjs.org/table/-/table-6.9.0.tgz} - engines: {node: '>=10.0.0'} + resolution: + { + integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==, + tarball: https://registry.npmjs.org/table/-/table-6.9.0.tgz, + } + engines: { node: ">=10.0.0" } tar-fs@2.1.4: - resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==, tarball: https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz} + resolution: + { + integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==, + tarball: https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz, + } tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==, tarball: https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==, + tarball: https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz, + } + engines: { node: ">=6" } terminal-link@4.0.0: - resolution: {integrity: sha512-lk+vH+MccxNqgVqSnkMVKx4VLJfnLjDBGzH16JVZjKE2DoxP57s6/vt6JmXV5I3jBcfGrxNrYtC+mPtU7WJztA==, tarball: https://registry.npmjs.org/terminal-link/-/terminal-link-4.0.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-lk+vH+MccxNqgVqSnkMVKx4VLJfnLjDBGzH16JVZjKE2DoxP57s6/vt6JmXV5I3jBcfGrxNrYtC+mPtU7WJztA==, + tarball: https://registry.npmjs.org/terminal-link/-/terminal-link-4.0.0.tgz, + } + engines: { node: ">=18" } text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, tarball: https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz} + resolution: + { + integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, + tarball: https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz, + } textextensions@6.11.0: - resolution: {integrity: sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==, tarball: https://registry.npmjs.org/textextensions/-/textextensions-6.11.0.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==, + tarball: https://registry.npmjs.org/textextensions/-/textextensions-6.11.0.tgz, + } + engines: { node: ">=4" } tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==, tarball: https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz} + resolution: + { + integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==, + tarball: https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz, + } tinyexec@1.2.4: - resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==, tarball: https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==, + tarball: https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz, + } + engines: { node: ">=18" } tinyglobby@0.2.17: - resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==, tarball: https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz} - engines: {node: '>=12.0.0'} + resolution: + { + integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==, + tarball: https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz, + } + engines: { node: ">=12.0.0" } tinyrainbow@3.1.0: - resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==, tarball: https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz} - engines: {node: '>=14.0.0'} + resolution: + { + integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==, + tarball: https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz, + } + engines: { node: ">=14.0.0" } tmp@0.2.6: - resolution: {integrity: sha512-5sJPdPjfI5Kx+qbrDesxkglRBxW//g7hCsqspEjwkewGvBMGIKMOTKzLt1hFVJzyadba3lDUN20O9qhvbQUSTA==, tarball: https://registry.npmjs.org/tmp/-/tmp-0.2.6.tgz} - engines: {node: '>=14.14'} + resolution: + { + integrity: sha512-5sJPdPjfI5Kx+qbrDesxkglRBxW//g7hCsqspEjwkewGvBMGIKMOTKzLt1hFVJzyadba3lDUN20O9qhvbQUSTA==, + tarball: https://registry.npmjs.org/tmp/-/tmp-0.2.6.tgz, + } + engines: { node: ">=14.14" } to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, tarball: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz} - engines: {node: '>=8.0'} + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + tarball: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz, + } + engines: { node: ">=8.0" } trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==, tarball: https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz} + resolution: + { + integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==, + tarball: https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz, + } ts-api-utils@2.5.0: - resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==, tarball: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz} - engines: {node: '>=18.12'} + resolution: + { + integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==, + tarball: https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz, + } + engines: { node: ">=18.12" } peerDependencies: - typescript: '>=4.8.4' + typescript: ">=4.8.4" ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==, tarball: https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz} - engines: {node: '>=6.10'} + resolution: + { + integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==, + tarball: https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz, + } + engines: { node: ">=6.10" } tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==, tarball: https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz} - engines: {node: '>=6'} + resolution: + { + integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==, + tarball: https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz, + } + engines: { node: ">=6" } tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, tarball: https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz} + resolution: + { + integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, + tarball: https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz, + } tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==, tarball: https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz} + resolution: + { + integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==, + tarball: https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz, + } tunnel@0.0.6: - resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==, tarball: https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz} - engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + resolution: + { + integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==, + tarball: https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz, + } + engines: { node: ">=0.6.11 <=0.7.0 || >=0.7.3" } type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, tarball: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz} - engines: {node: '>= 0.8.0'} + resolution: + { + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, + tarball: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz, + } + engines: { node: ">= 0.8.0" } type-fest@4.41.0: - resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==, tarball: https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz} - engines: {node: '>=16'} + resolution: + { + integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==, + tarball: https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz, + } + engines: { node: ">=16" } typed-rest-client@1.8.11: - resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==, tarball: https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz} + resolution: + { + integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==, + tarball: https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz, + } typescript-eslint@8.61.1: - resolution: {integrity: sha512-V7PayAfJokV3pEHgN7/v03D1SpujhRfQtYLbLIiBfDDncdg4PAiRBfoS4cnCANK4jmAPncczi59QO3afiXUlNw==, tarball: https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.61.1.tgz} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + resolution: + { + integrity: sha512-V7PayAfJokV3pEHgN7/v03D1SpujhRfQtYLbLIiBfDDncdg4PAiRBfoS4cnCANK4jmAPncczi59QO3afiXUlNw==, + tarball: https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.61.1.tgz, + } + engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' + typescript: ">=4.8.4 <6.1.0" + + typescript@5.9.3: + resolution: + { + integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==, + tarball: https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz, + } + engines: { node: ">=14.17" } + hasBin: true typescript@6.0.3: - resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==, tarball: https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz} - engines: {node: '>=14.17'} + resolution: + { + integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==, + tarball: https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz, + } + engines: { node: ">=14.17" } hasBin: true uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==, tarball: https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz} + resolution: + { + integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==, + tarball: https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz, + } underscore@1.13.8: - resolution: {integrity: sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==, tarball: https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz} + resolution: + { + integrity: sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==, + tarball: https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz, + } undici-types@7.24.6: - resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==, tarball: https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz} + resolution: + { + integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==, + tarball: https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz, + } undici@7.28.0: - resolution: {integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==, tarball: https://registry.npmjs.org/undici/-/undici-7.28.0.tgz} - engines: {node: '>=20.18.1'} + resolution: + { + integrity: sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==, + tarball: https://registry.npmjs.org/undici/-/undici-7.28.0.tgz, + } + engines: { node: ">=20.18.1" } unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==, tarball: https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==, + tarball: https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz, + } + engines: { node: ">=4" } unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, tarball: https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, + tarball: https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz, + } + engines: { node: ">=4" } unicode-match-property-value-ecmascript@2.2.1: - resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==, tarball: https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==, + tarball: https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz, + } + engines: { node: ">=4" } unicode-property-aliases-ecmascript@2.2.0: - resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==, tarball: https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==, + tarball: https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz, + } + engines: { node: ">=4" } unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==, tarball: https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==, + tarball: https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz, + } + engines: { node: ">=18" } unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==, tarball: https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==, + tarball: https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz, + } + engines: { node: ">=18" } + + union@0.5.0: + resolution: + { + integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==, + tarball: https://registry.npmjs.org/union/-/union-0.5.0.tgz, + } + engines: { node: ">= 0.8.0" } unist-util-is@6.0.1: - resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==, tarball: https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz} + resolution: + { + integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==, + tarball: https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz, + } unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==, tarball: https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz} + resolution: + { + integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==, + tarball: https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz, + } unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==, tarball: https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz} + resolution: + { + integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==, + tarball: https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz, + } unist-util-visit-parents@6.0.2: - resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==, tarball: https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz} + resolution: + { + integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==, + tarball: https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz, + } unist-util-visit@5.1.0: - resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==, tarball: https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz} + resolution: + { + integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==, + tarball: https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz, + } universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, tarball: https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz} - engines: {node: '>= 10.0.0'} + resolution: + { + integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, + tarball: https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz, + } + engines: { node: ">= 10.0.0" } update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==, tarball: https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz} + resolution: + { + integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==, + tarball: https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz, + } hasBin: true peerDependencies: - browserslist: '>= 4.21.0' + browserslist: ">= 4.21.0" uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, tarball: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz} + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, + tarball: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz, + } url-join@4.0.1: - resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==, tarball: https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz} + resolution: + { + integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==, + tarball: https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz, + } util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, tarball: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz} + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, + tarball: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz, + } validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, tarball: https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz} + resolution: + { + integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, + tarball: https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz, + } version-range@4.15.0: - resolution: {integrity: sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==, tarball: https://registry.npmjs.org/version-range/-/version-range-4.15.0.tgz} - engines: {node: '>=4'} + resolution: + { + integrity: sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==, + tarball: https://registry.npmjs.org/version-range/-/version-range-4.15.0.tgz, + } + engines: { node: ">=4" } vfile-message@4.0.3: - resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==, tarball: https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz} + resolution: + { + integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==, + tarball: https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz, + } vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==, tarball: https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz} + resolution: + { + integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==, + tarball: https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz, + } vite@8.0.16: - resolution: {integrity: sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==, tarball: https://registry.npmjs.org/vite/-/vite-8.0.16.tgz} - engines: {node: ^20.19.0 || >=22.12.0} + resolution: + { + integrity: sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==, + tarball: https://registry.npmjs.org/vite/-/vite-8.0.16.tgz, + } + engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.1.18 + "@types/node": ^20.19.0 || >=22.12.0 + "@vitejs/devtools": ^0.1.18 esbuild: ^0.27.0 || ^0.28.0 - jiti: '>=1.21.0' + jiti: ">=1.21.0" less: ^4.0.0 sass: ^1.70.0 sass-embedded: ^1.70.0 - stylus: '>=0.54.8' + stylus: ">=0.54.8" sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 peerDependenciesMeta: - '@types/node': + "@types/node": optional: true - '@vitejs/devtools': + "@vitejs/devtools": optional: true esbuild: optional: true @@ -3679,33 +6970,37 @@ packages: optional: true vitest@4.1.2: - resolution: {integrity: sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==, tarball: https://registry.npmjs.org/vitest/-/vitest-4.1.2.tgz} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + resolution: + { + integrity: sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==, + tarball: https://registry.npmjs.org/vitest/-/vitest-4.1.2.tgz, + } + engines: { node: ^20.0.0 || ^22.0.0 || >=24.0.0 } hasBin: true peerDependencies: - '@edge-runtime/vm': '*' - '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.2 - '@vitest/browser-preview': 4.1.2 - '@vitest/browser-webdriverio': 4.1.2 - '@vitest/ui': 4.1.2 - happy-dom: '*' - jsdom: '*' + "@edge-runtime/vm": "*" + "@opentelemetry/api": ^1.9.0 + "@types/node": ^20.0.0 || ^22.0.0 || >=24.0.0 + "@vitest/browser-playwright": 4.1.2 + "@vitest/browser-preview": 4.1.2 + "@vitest/browser-webdriverio": 4.1.2 + "@vitest/ui": 4.1.2 + happy-dom: "*" + jsdom: "*" peerDependenciesMeta: - '@edge-runtime/vm': + "@edge-runtime/vm": optional: true - '@opentelemetry/api': + "@opentelemetry/api": optional: true - '@types/node': + "@types/node": optional: true - '@vitest/browser-playwright': + "@vitest/browser-playwright": optional: true - '@vitest/browser-preview': + "@vitest/browser-preview": optional: true - '@vitest/browser-webdriverio': + "@vitest/browser-webdriverio": optional: true - '@vitest/ui': + "@vitest/ui": optional: true happy-dom: optional: true @@ -3713,236 +7008,372 @@ packages: optional: true vscode-jsonrpc@9.0.0: - resolution: {integrity: sha512-+VvMmQPJhtvJ+8O+zu2JKIRiLxXF8NW7krWgyMGeOHrp4Cn23T5hc0v2LknNeopDOB70wghHAds7mKtcZ0I4Sg==, tarball: https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0.tgz} - engines: {node: '>=14.0.0'} + resolution: + { + integrity: sha512-+VvMmQPJhtvJ+8O+zu2JKIRiLxXF8NW7krWgyMGeOHrp4Cn23T5hc0v2LknNeopDOB70wghHAds7mKtcZ0I4Sg==, + tarball: https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0.tgz, + } + engines: { node: ">=14.0.0" } vscode-languageclient@10.0.0: - resolution: {integrity: sha512-3yRHFkktZQCCg8ehHnD2Z4DZ4mZ17FNo8bxM4OFt8wtpxNBAOZGHmpbIflZSkicvCxi+ozuWntbdeWiY0gP77w==, tarball: https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0.tgz} - engines: {vscode: ^1.91.0} + resolution: + { + integrity: sha512-3yRHFkktZQCCg8ehHnD2Z4DZ4mZ17FNo8bxM4OFt8wtpxNBAOZGHmpbIflZSkicvCxi+ozuWntbdeWiY0gP77w==, + tarball: https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-10.0.0.tgz, + } + engines: { vscode: ^1.91.0 } vscode-languageserver-protocol@3.18.0: - resolution: {integrity: sha512-Zdz+kJ12Iz6tc11xfZyEo501bBATHXrCjmMfnaR3pMnf1CoqZBKIynba3P+/bi9VEdrMbNtAVKYpKhbODvqy+Q==, tarball: https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.0.tgz} + resolution: + { + integrity: sha512-Zdz+kJ12Iz6tc11xfZyEo501bBATHXrCjmMfnaR3pMnf1CoqZBKIynba3P+/bi9VEdrMbNtAVKYpKhbODvqy+Q==, + tarball: https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.18.0.tgz, + } vscode-languageserver-textdocument@1.0.13: - resolution: {integrity: sha512-nx0ZHwMGIsVkzFG3/VLeJYBLTaFBRuNdGDvevvjuoayU5EOS2fEYazOhtCM3PI9ClMMg5igc0uwXtAq4tJj+Dw==, tarball: https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.13.tgz} + resolution: + { + integrity: sha512-nx0ZHwMGIsVkzFG3/VLeJYBLTaFBRuNdGDvevvjuoayU5EOS2fEYazOhtCM3PI9ClMMg5igc0uwXtAq4tJj+Dw==, + tarball: https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.13.tgz, + } vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==, tarball: https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz} + resolution: + { + integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==, + tarball: https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz, + } vscode-languageserver-types@3.18.0: - resolution: {integrity: sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==, tarball: https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.18.0.tgz} + resolution: + { + integrity: sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==, + tarball: https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.18.0.tgz, + } vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==, tarball: https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz} + resolution: + { + integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==, + tarball: https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz, + } wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, tarball: https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz} + resolution: + { + integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, + tarball: https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz, + } + + whatwg-encoding@2.0.0: + resolution: + { + integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==, + tarball: https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz, + } + engines: { node: ">=12" } + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==, tarball: https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==, + tarball: https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz, + } + engines: { node: ">=18" } deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==, tarball: https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==, + tarball: https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz, + } + engines: { node: ">=18" } which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, tarball: https://registry.npmjs.org/which/-/which-2.0.2.tgz} - engines: {node: '>= 8'} + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + tarball: https://registry.npmjs.org/which/-/which-2.0.2.tgz, + } + engines: { node: ">= 8" } hasBin: true which@3.0.1: - resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==, tarball: https://registry.npmjs.org/which/-/which-3.0.1.tgz} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + resolution: + { + integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==, + tarball: https://registry.npmjs.org/which/-/which-3.0.1.tgz, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } hasBin: true why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==, tarball: https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz} - engines: {node: '>=8'} + resolution: + { + integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==, + tarball: https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz, + } + engines: { node: ">=8" } hasBin: true word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, tarball: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz} - engines: {node: '>=0.10.0'} + resolution: + { + integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, + tarball: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz, + } + engines: { node: ">=0.10.0" } workerpool@9.3.4: - resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==, tarball: https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz} + resolution: + { + integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==, + tarball: https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz, + } wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, tarball: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, + tarball: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz, + } + engines: { node: ">=10" } wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, tarball: https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz} + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + tarball: https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz, + } wsl-utils@0.1.0: - resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==, tarball: https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz} - engines: {node: '>=18'} + resolution: + { + integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==, + tarball: https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz, + } + engines: { node: ">=18" } xml2js@0.5.0: - resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==, tarball: https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz} - engines: {node: '>=4.0.0'} + resolution: + { + integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==, + tarball: https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz, + } + engines: { node: ">=4.0.0" } xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==, tarball: https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz} - engines: {node: '>=4.0'} + resolution: + { + integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==, + tarball: https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz, + } + engines: { node: ">=4.0" } y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, tarball: https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, + tarball: https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz, + } + engines: { node: ">=10" } yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, tarball: https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz} + resolution: + { + integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, + tarball: https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz, + } yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, tarball: https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz} + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, + tarball: https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz, + } yaml@1.10.3: - resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==, tarball: https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz} - engines: {node: '>= 6'} + resolution: + { + integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==, + tarball: https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz, + } + engines: { node: ">= 6" } yaml@2.9.0: - resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==, tarball: https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz} - engines: {node: '>= 14.6'} + resolution: + { + integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==, + tarball: https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz, + } + engines: { node: ">= 14.6" } hasBin: true yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, tarball: https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, + tarball: https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz, + } + engines: { node: ">=12" } yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==, tarball: https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==, + tarball: https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz, + } + engines: { node: ">=10" } yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, tarball: https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, + tarball: https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz, + } + engines: { node: ">=12" } yauzl@3.4.0: - resolution: {integrity: sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==, tarball: https://registry.npmjs.org/yauzl/-/yauzl-3.4.0.tgz} - engines: {node: '>=12'} + resolution: + { + integrity: sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==, + tarball: https://registry.npmjs.org/yauzl/-/yauzl-3.4.0.tgz, + } + engines: { node: ">=12" } yazl@2.5.1: - resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==, tarball: https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz} + resolution: + { + integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==, + tarball: https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz, + } yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, tarball: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz} - engines: {node: '>=10'} + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + tarball: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz, + } + engines: { node: ">=10" } zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==, tarball: https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz} + resolution: + { + integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==, + tarball: https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz, + } snapshots: + "@azu/format-text@1.0.2": {} - '@azu/format-text@1.0.2': {} - - '@azu/style-format@1.0.1': + "@azu/style-format@1.0.1": dependencies: - '@azu/format-text': 1.0.2 + "@azu/format-text": 1.0.2 - '@azure/abort-controller@2.1.2': + "@azure/abort-controller@2.1.2": dependencies: tslib: 2.8.1 - '@azure/core-auth@1.10.1': + "@azure/core-auth@1.10.1": dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.13.1 + "@azure/abort-controller": 2.1.2 + "@azure/core-util": 1.13.1 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/core-client@1.10.2': + "@azure/core-client@1.10.2": dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.1 - '@azure/core-rest-pipeline': 1.24.0 - '@azure/core-tracing': 1.3.1 - '@azure/core-util': 1.13.1 - '@azure/logger': 1.3.0 + "@azure/abort-controller": 2.1.2 + "@azure/core-auth": 1.10.1 + "@azure/core-rest-pipeline": 1.24.0 + "@azure/core-tracing": 1.3.1 + "@azure/core-util": 1.13.1 + "@azure/logger": 1.3.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/core-rest-pipeline@1.24.0': + "@azure/core-rest-pipeline@1.24.0": dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.1 - '@azure/core-tracing': 1.3.1 - '@azure/core-util': 1.13.1 - '@azure/logger': 1.3.0 - '@typespec/ts-http-runtime': 0.3.6 + "@azure/abort-controller": 2.1.2 + "@azure/core-auth": 1.10.1 + "@azure/core-tracing": 1.3.1 + "@azure/core-util": 1.13.1 + "@azure/logger": 1.3.0 + "@typespec/ts-http-runtime": 0.3.6 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/core-tracing@1.3.1': + "@azure/core-tracing@1.3.1": dependencies: tslib: 2.8.1 - '@azure/core-util@1.13.1': + "@azure/core-util@1.13.1": dependencies: - '@azure/abort-controller': 2.1.2 - '@typespec/ts-http-runtime': 0.3.6 + "@azure/abort-controller": 2.1.2 + "@typespec/ts-http-runtime": 0.3.6 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/identity@4.13.1': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.1 - '@azure/core-client': 1.10.2 - '@azure/core-rest-pipeline': 1.24.0 - '@azure/core-tracing': 1.3.1 - '@azure/core-util': 1.13.1 - '@azure/logger': 1.3.0 - '@azure/msal-browser': 5.13.0 - '@azure/msal-node': 5.2.4 + "@azure/identity@4.13.1": + dependencies: + "@azure/abort-controller": 2.1.2 + "@azure/core-auth": 1.10.1 + "@azure/core-client": 1.10.2 + "@azure/core-rest-pipeline": 1.24.0 + "@azure/core-tracing": 1.3.1 + "@azure/core-util": 1.13.1 + "@azure/logger": 1.3.0 + "@azure/msal-browser": 5.13.0 + "@azure/msal-node": 5.2.4 open: 10.2.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/logger@1.3.0': + "@azure/logger@1.3.0": dependencies: - '@typespec/ts-http-runtime': 0.3.6 + "@typespec/ts-http-runtime": 0.3.6 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/msal-browser@5.13.0': + "@azure/msal-browser@5.13.0": dependencies: - '@azure/msal-common': 16.8.0 + "@azure/msal-common": 16.8.0 - '@azure/msal-common@16.8.0': {} + "@azure/msal-common@16.8.0": {} - '@azure/msal-node@5.2.4': + "@azure/msal-node@5.2.4": dependencies: - '@azure/msal-common': 16.8.0 + "@azure/msal-common": 16.8.0 jsonwebtoken: 9.0.3 - '@babel/code-frame@7.29.7': + "@babel/code-frame@7.29.7": dependencies: - '@babel/helper-validator-identifier': 7.29.7 + "@babel/helper-validator-identifier": 7.29.7 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.29.7': {} + "@babel/compat-data@7.29.7": {} - '@babel/core@7.29.7': + "@babel/core@7.29.7": dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) - '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 - '@jridgewell/remapping': 2.3.5 + "@babel/code-frame": 7.29.7 + "@babel/generator": 7.29.7 + "@babel/helper-compilation-targets": 7.29.7 + "@babel/helper-module-transforms": 7.29.7(@babel/core@7.29.7) + "@babel/helpers": 7.29.7 + "@babel/parser": 7.29.7 + "@babel/template": 7.29.7 + "@babel/traverse": 7.29.7 + "@babel/types": 7.29.7 + "@jridgewell/remapping": 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -3951,510 +7382,510 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.29.7': + "@babel/generator@7.29.7": dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 + "@babel/parser": 7.29.7 + "@babel/types": 7.29.7 + "@jridgewell/gen-mapping": 0.3.13 + "@jridgewell/trace-mapping": 0.3.31 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.29.7': + "@babel/helper-annotate-as-pure@7.29.7": dependencies: - '@babel/types': 7.29.7 + "@babel/types": 7.29.7 - '@babel/helper-compilation-targets@7.29.7': + "@babel/helper-compilation-targets@7.29.7": dependencies: - '@babel/compat-data': 7.29.7 - '@babel/helper-validator-option': 7.29.7 + "@babel/compat-data": 7.29.7 + "@babel/helper-validator-option": 7.29.7 browserslist: 4.28.2 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)': + "@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-member-expression-to-functions': 7.29.7 - '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-annotate-as-pure": 7.29.7 + "@babel/helper-member-expression-to-functions": 7.29.7 + "@babel/helper-optimise-call-expression": 7.29.7 + "@babel/helper-replace-supers": 7.29.7(@babel/core@7.29.7) + "@babel/helper-skip-transparent-expression-wrappers": 7.29.7 + "@babel/traverse": 7.29.7 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7)': + "@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-annotate-as-pure': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-annotate-as-pure": 7.29.7 regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7)': + "@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-compilation-targets": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 debug: 4.4.3(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.12 transitivePeerDependencies: - supports-color - '@babel/helper-globals@7.29.7': {} + "@babel/helper-globals@7.29.7": {} - '@babel/helper-member-expression-to-functions@7.29.7': + "@babel/helper-member-expression-to-functions@7.29.7": dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + "@babel/traverse": 7.29.7 + "@babel/types": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.29.7': + "@babel/helper-module-imports@7.29.7": dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + "@babel/traverse": 7.29.7 + "@babel/types": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + "@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-imports': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-module-imports": 7.29.7 + "@babel/helper-validator-identifier": 7.29.7 + "@babel/traverse": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.29.7': + "@babel/helper-optimise-call-expression@7.29.7": dependencies: - '@babel/types': 7.29.7 + "@babel/types": 7.29.7 - '@babel/helper-plugin-utils@7.29.7': {} + "@babel/helper-plugin-utils@7.29.7": {} - '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7)': + "@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-wrap-function': 7.29.7 - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-annotate-as-pure": 7.29.7 + "@babel/helper-wrap-function": 7.29.7 + "@babel/traverse": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)': + "@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-member-expression-to-functions': 7.29.7 - '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-member-expression-to-functions": 7.29.7 + "@babel/helper-optimise-call-expression": 7.29.7 + "@babel/traverse": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + "@babel/helper-skip-transparent-expression-wrappers@7.29.7": dependencies: - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + "@babel/traverse": 7.29.7 + "@babel/types": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.29.7': {} + "@babel/helper-string-parser@7.29.7": {} - '@babel/helper-validator-identifier@7.29.7': {} + "@babel/helper-validator-identifier@7.29.7": {} - '@babel/helper-validator-option@7.29.7': {} + "@babel/helper-validator-option@7.29.7": {} - '@babel/helper-wrap-function@7.29.7': + "@babel/helper-wrap-function@7.29.7": dependencies: - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7 - '@babel/types': 7.29.7 + "@babel/template": 7.29.7 + "@babel/traverse": 7.29.7 + "@babel/types": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helpers@7.29.7': + "@babel/helpers@7.29.7": dependencies: - '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + "@babel/template": 7.29.7 + "@babel/types": 7.29.7 - '@babel/parser@7.29.7': + "@babel/parser@7.29.7": dependencies: - '@babel/types': 7.29.7 + "@babel/types": 7.29.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/traverse": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7) + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.29.7 + "@babel/plugin-transform-optional-chaining": 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/traverse": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-decorators': 7.29.7(@babel/core@7.29.7) + "@babel/core": 7.29.7 + "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/plugin-syntax-decorators": 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7)': + "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 + "@babel/core": 7.29.7 - '@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.7)': + "@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-create-regexp-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-remap-async-to-generator": 7.29.7(@babel/core@7.29.7) + "@babel/traverse": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-imports': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) + "@babel/core": 7.29.7 + "@babel/helper-module-imports": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-remap-async-to-generator": 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-globals': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-annotate-as-pure": 7.29.7 + "@babel/helper-compilation-targets": 7.29.7 + "@babel/helper-globals": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-replace-supers": 7.29.7(@babel/core@7.29.7) + "@babel/traverse": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/template': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/template": 7.29.7 - '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/traverse": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-create-regexp-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-create-regexp-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/plugin-transform-destructuring": 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-compilation-targets": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/traverse": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-module-transforms": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-module-transforms": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-modules-systemjs@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-module-transforms": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-validator-identifier": 7.29.7 + "@babel/traverse": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-module-transforms": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-create-regexp-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7) - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-compilation-targets": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/plugin-transform-destructuring": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-parameters": 7.29.7(@babel/core@7.29.7) + "@babel/traverse": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-replace-supers": 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-annotate-as-pure": 7.29.7 + "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-create-regexp-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-imports': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-module-imports": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.7) babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7) @@ -4462,137 +7893,137 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 - '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7)': + "@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + "@babel/core": 7.29.7 + "@babel/helper-annotate-as-pure": 7.29.7 + "@babel/helper-create-class-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-skip-transparent-expression-wrappers": 7.29.7 + "@babel/plugin-syntax-typescript": 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/preset-env@7.29.7(@babel/core@7.29.7)': - dependencies: - '@babel/compat-data': 7.29.7 - '@babel/core': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7) - '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.7) - '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-block-scoped-functions': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-duplicate-keys': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-dynamic-import': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-explicit-resource-management': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-exponentiation-operator': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-function-name': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-json-strings': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-literals': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-modules-systemjs': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-numeric-separator': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-object-super': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-spread': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-unicode-escapes': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-unicode-property-regex': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-unicode-sets-regex': 7.29.7(@babel/core@7.29.7) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.7) + "@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.7)": + dependencies: + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + + "@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.7)": + dependencies: + "@babel/core": 7.29.7 + "@babel/helper-create-regexp-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 + + "@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7)": + dependencies: + "@babel/core": 7.29.7 + "@babel/helper-create-regexp-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 + + "@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.7)": + dependencies: + "@babel/core": 7.29.7 + "@babel/helper-create-regexp-features-plugin": 7.29.7(@babel/core@7.29.7) + "@babel/helper-plugin-utils": 7.29.7 + + "@babel/preset-env@7.29.7(@babel/core@7.29.7)": + dependencies: + "@babel/compat-data": 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-compilation-targets": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-validator-option": 7.29.7 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-bugfix-safari-class-field-initializer-scope": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7) + "@babel/plugin-syntax-import-assertions": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-syntax-import-attributes": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-syntax-unicode-sets-regex": 7.18.6(@babel/core@7.29.7) + "@babel/plugin-transform-arrow-functions": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-async-generator-functions": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-async-to-generator": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-block-scoped-functions": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-block-scoping": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-class-properties": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-class-static-block": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-classes": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-computed-properties": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-destructuring": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-dotall-regex": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-duplicate-keys": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-dynamic-import": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-explicit-resource-management": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-exponentiation-operator": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-export-namespace-from": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-for-of": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-function-name": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-json-strings": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-literals": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-logical-assignment-operators": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-member-expression-literals": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-modules-amd": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-modules-commonjs": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-modules-systemjs": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-modules-umd": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-named-capturing-groups-regex": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-new-target": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-nullish-coalescing-operator": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-numeric-separator": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-object-rest-spread": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-object-super": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-optional-catch-binding": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-optional-chaining": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-parameters": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-private-methods": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-private-property-in-object": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-property-literals": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-regenerator": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-regexp-modifiers": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-reserved-words": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-shorthand-properties": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-spread": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-sticky-regex": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-template-literals": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-typeof-symbol": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-unicode-escapes": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-unicode-property-regex": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-unicode-regex": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-unicode-sets-regex": 7.29.7(@babel/core@7.29.7) + "@babel/preset-modules": 0.1.6-no-external-plugins(@babel/core@7.29.7) babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7) babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.7) babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7) @@ -4601,257 +8032,257 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7)': + "@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/types': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/types": 7.29.7 esutils: 2.0.3 - '@babel/preset-typescript@7.29.7(@babel/core@7.29.7)': + "@babel/preset-typescript@7.29.7(@babel/core@7.29.7)": dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7) + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/helper-validator-option": 7.29.7 + "@babel/plugin-syntax-jsx": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-modules-commonjs": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-typescript": 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: - supports-color - '@babel/runtime@7.29.7': {} + "@babel/runtime@7.29.7": {} - '@babel/template@7.29.7': + "@babel/template@7.29.7": dependencies: - '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + "@babel/code-frame": 7.29.7 + "@babel/parser": 7.29.7 + "@babel/types": 7.29.7 - '@babel/traverse@7.29.7': + "@babel/traverse@7.29.7": dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/template': 7.29.7 - '@babel/types': 7.29.7 + "@babel/code-frame": 7.29.7 + "@babel/generator": 7.29.7 + "@babel/helper-globals": 7.29.7 + "@babel/parser": 7.29.7 + "@babel/template": 7.29.7 + "@babel/types": 7.29.7 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/types@7.29.7': + "@babel/types@7.29.7": dependencies: - '@babel/helper-string-parser': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 + "@babel/helper-string-parser": 7.29.7 + "@babel/helper-validator-identifier": 7.29.7 - '@bcoe/v8-coverage@1.0.2': {} + "@bcoe/v8-coverage@1.0.2": {} - '@emnapi/core@1.10.0': + "@emnapi/core@1.10.0": dependencies: - '@emnapi/wasi-threads': 1.2.1 + "@emnapi/wasi-threads": 1.2.1 tslib: 2.8.1 optional: true - '@emnapi/core@1.4.5': + "@emnapi/core@1.4.5": dependencies: - '@emnapi/wasi-threads': 1.0.4 + "@emnapi/wasi-threads": 1.0.4 tslib: 2.8.1 - '@emnapi/runtime@1.10.0': + "@emnapi/runtime@1.10.0": dependencies: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.5': + "@emnapi/runtime@1.4.5": dependencies: tslib: 2.8.1 - '@emnapi/wasi-threads@1.0.4': + "@emnapi/wasi-threads@1.0.4": dependencies: tslib: 2.8.1 - '@emnapi/wasi-threads@1.2.1': + "@emnapi/wasi-threads@1.2.1": dependencies: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.28.1': + "@esbuild/aix-ppc64@0.28.1": optional: true - '@esbuild/android-arm64@0.28.1': + "@esbuild/android-arm64@0.28.1": optional: true - '@esbuild/android-arm@0.28.1': + "@esbuild/android-arm@0.28.1": optional: true - '@esbuild/android-x64@0.28.1': + "@esbuild/android-x64@0.28.1": optional: true - '@esbuild/darwin-arm64@0.28.1': + "@esbuild/darwin-arm64@0.28.1": optional: true - '@esbuild/darwin-x64@0.28.1': + "@esbuild/darwin-x64@0.28.1": optional: true - '@esbuild/freebsd-arm64@0.28.1': + "@esbuild/freebsd-arm64@0.28.1": optional: true - '@esbuild/freebsd-x64@0.28.1': + "@esbuild/freebsd-x64@0.28.1": optional: true - '@esbuild/linux-arm64@0.28.1': + "@esbuild/linux-arm64@0.28.1": optional: true - '@esbuild/linux-arm@0.28.1': + "@esbuild/linux-arm@0.28.1": optional: true - '@esbuild/linux-ia32@0.28.1': + "@esbuild/linux-ia32@0.28.1": optional: true - '@esbuild/linux-loong64@0.28.1': + "@esbuild/linux-loong64@0.28.1": optional: true - '@esbuild/linux-mips64el@0.28.1': + "@esbuild/linux-mips64el@0.28.1": optional: true - '@esbuild/linux-ppc64@0.28.1': + "@esbuild/linux-ppc64@0.28.1": optional: true - '@esbuild/linux-riscv64@0.28.1': + "@esbuild/linux-riscv64@0.28.1": optional: true - '@esbuild/linux-s390x@0.28.1': + "@esbuild/linux-s390x@0.28.1": optional: true - '@esbuild/linux-x64@0.28.1': + "@esbuild/linux-x64@0.28.1": optional: true - '@esbuild/netbsd-arm64@0.28.1': + "@esbuild/netbsd-arm64@0.28.1": optional: true - '@esbuild/netbsd-x64@0.28.1': + "@esbuild/netbsd-x64@0.28.1": optional: true - '@esbuild/openbsd-arm64@0.28.1': + "@esbuild/openbsd-arm64@0.28.1": optional: true - '@esbuild/openbsd-x64@0.28.1': + "@esbuild/openbsd-x64@0.28.1": optional: true - '@esbuild/openharmony-arm64@0.28.1': + "@esbuild/openharmony-arm64@0.28.1": optional: true - '@esbuild/sunos-x64@0.28.1': + "@esbuild/sunos-x64@0.28.1": optional: true - '@esbuild/win32-arm64@0.28.1': + "@esbuild/win32-arm64@0.28.1": optional: true - '@esbuild/win32-ia32@0.28.1': + "@esbuild/win32-ia32@0.28.1": optional: true - '@esbuild/win32-x64@0.28.1': + "@esbuild/win32-x64@0.28.1": optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.5.0(supports-color@8.1.1))': + "@eslint-community/eslint-utils@4.9.1(eslint@10.5.0(supports-color@8.1.1))": dependencies: eslint: 10.5.0(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.2': {} + "@eslint-community/regexpp@4.12.2": {} - '@eslint/config-array@0.23.5(supports-color@8.1.1)': + "@eslint/config-array@0.23.5(supports-color@8.1.1)": dependencies: - '@eslint/object-schema': 3.0.5 + "@eslint/object-schema": 3.0.5 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.6.0': + "@eslint/config-helpers@0.6.0": dependencies: - '@eslint/core': 1.2.1 + "@eslint/core": 1.2.1 - '@eslint/core@1.2.1': + "@eslint/core@1.2.1": dependencies: - '@types/json-schema': 7.0.15 + "@types/json-schema": 7.0.15 - '@eslint/js@10.0.1(eslint@10.5.0(supports-color@8.1.1))': + "@eslint/js@10.0.1(eslint@10.5.0(supports-color@8.1.1))": optionalDependencies: eslint: 10.5.0(supports-color@8.1.1) - '@eslint/object-schema@3.0.5': {} + "@eslint/object-schema@3.0.5": {} - '@eslint/plugin-kit@0.7.2': + "@eslint/plugin-kit@0.7.2": dependencies: - '@eslint/core': 1.2.1 + "@eslint/core": 1.2.1 levn: 0.4.1 - '@humanfs/core@0.19.2': + "@humanfs/core@0.19.2": dependencies: - '@humanfs/types': 0.15.0 + "@humanfs/types": 0.15.0 - '@humanfs/node@0.16.8': + "@humanfs/node@0.16.8": dependencies: - '@humanfs/core': 0.19.2 - '@humanfs/types': 0.15.0 - '@humanwhocodes/retry': 0.4.3 + "@humanfs/core": 0.19.2 + "@humanfs/types": 0.15.0 + "@humanwhocodes/retry": 0.4.3 - '@humanfs/types@0.15.0': {} + "@humanfs/types@0.15.0": {} - '@humanwhocodes/module-importer@1.0.1': {} + "@humanwhocodes/module-importer@1.0.1": {} - '@humanwhocodes/retry@0.4.3': {} + "@humanwhocodes/retry@0.4.3": {} - '@jest/diff-sequences@30.0.1': {} + "@jest/diff-sequences@30.0.1": {} - '@jridgewell/gen-mapping@0.3.13': + "@jridgewell/gen-mapping@0.3.13": dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 + "@jridgewell/sourcemap-codec": 1.5.5 + "@jridgewell/trace-mapping": 0.3.31 - '@jridgewell/remapping@2.3.5': + "@jridgewell/remapping@2.3.5": dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 + "@jridgewell/gen-mapping": 0.3.13 + "@jridgewell/trace-mapping": 0.3.31 - '@jridgewell/resolve-uri@3.1.2': {} + "@jridgewell/resolve-uri@3.1.2": {} - '@jridgewell/sourcemap-codec@1.5.5': {} + "@jridgewell/sourcemap-codec@1.5.5": {} - '@jridgewell/trace-mapping@0.3.31': + "@jridgewell/trace-mapping@0.3.31": dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + "@jridgewell/resolve-uri": 3.1.2 + "@jridgewell/sourcemap-codec": 1.5.5 - '@napi-rs/wasm-runtime@0.2.4': + "@napi-rs/wasm-runtime@0.2.4": dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 - '@tybys/wasm-util': 0.9.0 + "@emnapi/core": 1.4.5 + "@emnapi/runtime": 1.4.5 + "@tybys/wasm-util": 0.9.0 - '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + "@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)": dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.2 + "@emnapi/core": 1.10.0 + "@emnapi/runtime": 1.10.0 + "@tybys/wasm-util": 0.10.2 optional: true - '@nodelib/fs.scandir@2.1.5': + "@nodelib/fs.scandir@2.1.5": dependencies: - '@nodelib/fs.stat': 2.0.5 + "@nodelib/fs.stat": 2.0.5 run-parallel: 1.2.0 - '@nodelib/fs.stat@2.0.5': {} + "@nodelib/fs.stat@2.0.5": {} - '@nodelib/fs.walk@1.2.8': + "@nodelib/fs.walk@1.2.8": dependencies: - '@nodelib/fs.scandir': 2.1.5 + "@nodelib/fs.scandir": 2.1.5 fastq: 1.20.1 - '@nx/devkit@23.0.0(nx@23.0.0)': + "@nx/devkit@23.0.0(nx@23.0.0)": dependencies: - '@zkochan/js-yaml': 0.0.7 + "@zkochan/js-yaml": 0.0.7 ejs: 5.0.1 enquirer: 2.3.6 minimatch: 10.2.5 @@ -4860,10 +8291,10 @@ snapshots: tslib: 2.8.1 yargs-parser: 21.1.1 - '@nx/esbuild@23.0.0(esbuild@0.28.1)(nx@23.0.0)': + "@nx/esbuild@23.0.0(esbuild@0.28.1)(nx@23.0.0)": dependencies: - '@nx/devkit': 23.0.0(nx@23.0.0) - '@nx/js': 23.0.0(nx@23.0.0) + "@nx/devkit": 23.0.0(nx@23.0.0) + "@nx/js": 23.0.0(nx@23.0.0) picocolors: 1.1.1 tinyglobby: 0.2.17 tsconfig-paths: 4.2.0 @@ -4871,26 +8302,45 @@ snapshots: optionalDependencies: esbuild: 0.28.1 transitivePeerDependencies: - - '@swc-node/register' - - '@swc/cli' - - '@swc/core' + - "@swc-node/register" + - "@swc/cli" + - "@swc/core" - debug - nx - supports-color - verdaccio - '@nx/js@23.0.0(nx@23.0.0)': - dependencies: - '@babel/core': 7.29.7 - '@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7) - '@babel/preset-env': 7.29.7(@babel/core@7.29.7) - '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7) - '@babel/runtime': 7.29.7 - '@nx/devkit': 23.0.0(nx@23.0.0) - '@nx/workspace': 23.0.0 - '@zkochan/js-yaml': 0.0.7 + "@nx/eslint@23.0.0(@zkochan/js-yaml@0.0.7)(eslint@10.5.0(supports-color@8.1.1))(nx@23.0.0)": + dependencies: + "@nx/devkit": 23.0.0(nx@23.0.0) + "@nx/js": 23.0.0(nx@23.0.0) + eslint: 10.5.0(supports-color@8.1.1) + semver: 7.8.4 + tslib: 2.8.1 + typescript: 5.9.3 + optionalDependencies: + "@zkochan/js-yaml": 0.0.7 + transitivePeerDependencies: + - "@swc-node/register" + - "@swc/cli" + - "@swc/core" + - debug + - nx + - supports-color + - verdaccio + + "@nx/js@23.0.0(nx@23.0.0)": + dependencies: + "@babel/core": 7.29.7 + "@babel/plugin-proposal-decorators": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-class-properties": 7.29.7(@babel/core@7.29.7) + "@babel/plugin-transform-runtime": 7.29.7(@babel/core@7.29.7) + "@babel/preset-env": 7.29.7(@babel/core@7.29.7) + "@babel/preset-typescript": 7.29.7(@babel/core@7.29.7) + "@babel/runtime": 7.29.7 + "@nx/devkit": 23.0.0(nx@23.0.0) + "@nx/workspace": 23.0.0 + "@zkochan/js-yaml": 0.0.7 babel-plugin-const-enum: 1.2.0(@babel/core@7.29.7) babel-plugin-macros: 3.1.0 babel-plugin-transform-typescript-metadata: 0.3.2 @@ -4908,46 +8358,86 @@ snapshots: tinyglobby: 0.2.17 tslib: 2.8.1 transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' + - "@swc-node/register" + - "@swc/core" - debug - nx - supports-color - '@nx/nx-darwin-arm64@23.0.0': + "@nx/nx-darwin-arm64@23.0.0": optional: true - '@nx/nx-darwin-x64@23.0.0': + "@nx/nx-darwin-x64@23.0.0": optional: true - '@nx/nx-freebsd-x64@23.0.0': + "@nx/nx-freebsd-x64@23.0.0": optional: true - '@nx/nx-linux-arm-gnueabihf@23.0.0': + "@nx/nx-linux-arm-gnueabihf@23.0.0": optional: true - '@nx/nx-linux-arm64-gnu@23.0.0': + "@nx/nx-linux-arm64-gnu@23.0.0": optional: true - '@nx/nx-linux-arm64-musl@23.0.0': + "@nx/nx-linux-arm64-musl@23.0.0": optional: true - '@nx/nx-linux-x64-gnu@23.0.0': + "@nx/nx-linux-x64-gnu@23.0.0": optional: true - '@nx/nx-linux-x64-musl@23.0.0': + "@nx/nx-linux-x64-musl@23.0.0": optional: true - '@nx/nx-win32-arm64-msvc@23.0.0': + "@nx/nx-win32-arm64-msvc@23.0.0": optional: true - '@nx/nx-win32-x64-msvc@23.0.0': + "@nx/nx-win32-x64-msvc@23.0.0": optional: true - '@nx/workspace@23.0.0': + "@nx/vitest@23.0.0(@nx/eslint@23.0.0(@zkochan/js-yaml@0.0.7)(eslint@10.5.0(supports-color@8.1.1))(nx@23.0.0))(nx@23.0.0)(typescript@6.0.3)(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0))(vitest@4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0))": dependencies: - '@nx/devkit': 23.0.0(nx@23.0.0) - '@zkochan/js-yaml': 0.0.7 + "@nx/devkit": 23.0.0(nx@23.0.0) + "@nx/js": 23.0.0(nx@23.0.0) + "@phenomnomnominal/tsquery": 6.2.0(typescript@6.0.3) + semver: 7.8.4 + tslib: 2.8.1 + optionalDependencies: + "@nx/eslint": 23.0.0(@zkochan/js-yaml@0.0.7)(eslint@10.5.0(supports-color@8.1.1))(nx@23.0.0) + vite: 8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) + vitest: 4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) + transitivePeerDependencies: + - "@swc-node/register" + - "@swc/cli" + - "@swc/core" + - debug + - nx + - supports-color + - typescript + - verdaccio + + "@nx/web@23.0.0(@nx/eslint@23.0.0(@zkochan/js-yaml@0.0.7)(eslint@10.5.0(supports-color@8.1.1))(nx@23.0.0))(nx@23.0.0)(supports-color@8.1.1)": + dependencies: + "@nx/devkit": 23.0.0(nx@23.0.0) + "@nx/js": 23.0.0(nx@23.0.0) + detect-port: 2.1.0 + http-server: 14.1.1(supports-color@8.1.1) + picocolors: 1.1.1 + tslib: 2.8.1 + optionalDependencies: + "@nx/eslint": 23.0.0(@zkochan/js-yaml@0.0.7)(eslint@10.5.0(supports-color@8.1.1))(nx@23.0.0) + transitivePeerDependencies: + - "@swc-node/register" + - "@swc/cli" + - "@swc/core" + - debug + - nx + - supports-color + - verdaccio + + "@nx/workspace@23.0.0": + dependencies: + "@nx/devkit": 23.0.0(nx@23.0.0) + "@zkochan/js-yaml": 0.0.7 chalk: 4.1.2 enquirer: 2.3.6 nx: 23.0.0 @@ -4956,94 +8446,100 @@ snapshots: tslib: 2.8.1 yargs-parser: 21.1.1 transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' + - "@swc-node/register" + - "@swc/core" - debug - '@oxc-project/types@0.133.0': {} + "@oxc-project/types@0.133.0": {} + + "@phenomnomnominal/tsquery@6.2.0(typescript@6.0.3)": + dependencies: + "@types/esquery": 1.5.4 + esquery: 1.7.0 + typescript: 6.0.3 - '@rolldown/binding-android-arm64@1.0.3': + "@rolldown/binding-android-arm64@1.0.3": optional: true - '@rolldown/binding-darwin-arm64@1.0.3': + "@rolldown/binding-darwin-arm64@1.0.3": optional: true - '@rolldown/binding-darwin-x64@1.0.3': + "@rolldown/binding-darwin-x64@1.0.3": optional: true - '@rolldown/binding-freebsd-x64@1.0.3': + "@rolldown/binding-freebsd-x64@1.0.3": optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.3': + "@rolldown/binding-linux-arm-gnueabihf@1.0.3": optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.3': + "@rolldown/binding-linux-arm64-gnu@1.0.3": optional: true - '@rolldown/binding-linux-arm64-musl@1.0.3': + "@rolldown/binding-linux-arm64-musl@1.0.3": optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.3': + "@rolldown/binding-linux-ppc64-gnu@1.0.3": optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.3': + "@rolldown/binding-linux-s390x-gnu@1.0.3": optional: true - '@rolldown/binding-linux-x64-gnu@1.0.3': + "@rolldown/binding-linux-x64-gnu@1.0.3": optional: true - '@rolldown/binding-linux-x64-musl@1.0.3': + "@rolldown/binding-linux-x64-musl@1.0.3": optional: true - '@rolldown/binding-openharmony-arm64@1.0.3': + "@rolldown/binding-openharmony-arm64@1.0.3": optional: true - '@rolldown/binding-wasm32-wasi@1.0.3': + "@rolldown/binding-wasm32-wasi@1.0.3": dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + "@emnapi/core": 1.10.0 + "@emnapi/runtime": 1.10.0 + "@napi-rs/wasm-runtime": 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.3': + "@rolldown/binding-win32-arm64-msvc@1.0.3": optional: true - '@rolldown/binding-win32-x64-msvc@1.0.3': + "@rolldown/binding-win32-x64-msvc@1.0.3": optional: true - '@rolldown/pluginutils@1.0.1': {} + "@rolldown/pluginutils@1.0.1": {} - '@secretlint/config-creator@10.2.2': + "@secretlint/config-creator@10.2.2": dependencies: - '@secretlint/types': 10.2.2 + "@secretlint/types": 10.2.2 - '@secretlint/config-loader@10.2.2(supports-color@8.1.1)': + "@secretlint/config-loader@10.2.2(supports-color@8.1.1)": dependencies: - '@secretlint/profiler': 10.2.2 - '@secretlint/resolver': 10.2.2 - '@secretlint/types': 10.2.2 + "@secretlint/profiler": 10.2.2 + "@secretlint/resolver": 10.2.2 + "@secretlint/types": 10.2.2 ajv: 8.20.0 debug: 4.4.3(supports-color@8.1.1) rc-config-loader: 4.1.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@secretlint/core@10.2.2(supports-color@8.1.1)': + "@secretlint/core@10.2.2(supports-color@8.1.1)": dependencies: - '@secretlint/profiler': 10.2.2 - '@secretlint/types': 10.2.2 + "@secretlint/profiler": 10.2.2 + "@secretlint/types": 10.2.2 debug: 4.4.3(supports-color@8.1.1) structured-source: 4.0.0 transitivePeerDependencies: - supports-color - '@secretlint/formatter@10.2.2(supports-color@8.1.1)': + "@secretlint/formatter@10.2.2(supports-color@8.1.1)": dependencies: - '@secretlint/resolver': 10.2.2 - '@secretlint/types': 10.2.2 - '@textlint/linter-formatter': 15.7.1(supports-color@8.1.1) - '@textlint/module-interop': 15.7.1 - '@textlint/types': 15.7.1 + "@secretlint/resolver": 10.2.2 + "@secretlint/types": 10.2.2 + "@textlint/linter-formatter": 15.7.1(supports-color@8.1.1) + "@textlint/module-interop": 15.7.1 + "@textlint/types": 15.7.1 chalk: 5.6.2 debug: 4.4.3(supports-color@8.1.1) pluralize: 8.0.0 @@ -5053,86 +8549,86 @@ snapshots: transitivePeerDependencies: - supports-color - '@secretlint/node@10.2.2(supports-color@8.1.1)': + "@secretlint/node@10.2.2(supports-color@8.1.1)": dependencies: - '@secretlint/config-loader': 10.2.2(supports-color@8.1.1) - '@secretlint/core': 10.2.2(supports-color@8.1.1) - '@secretlint/formatter': 10.2.2(supports-color@8.1.1) - '@secretlint/profiler': 10.2.2 - '@secretlint/source-creator': 10.2.2 - '@secretlint/types': 10.2.2 + "@secretlint/config-loader": 10.2.2(supports-color@8.1.1) + "@secretlint/core": 10.2.2(supports-color@8.1.1) + "@secretlint/formatter": 10.2.2(supports-color@8.1.1) + "@secretlint/profiler": 10.2.2 + "@secretlint/source-creator": 10.2.2 + "@secretlint/types": 10.2.2 debug: 4.4.3(supports-color@8.1.1) p-map: 7.0.4 transitivePeerDependencies: - supports-color - '@secretlint/profiler@10.2.2': {} + "@secretlint/profiler@10.2.2": {} - '@secretlint/resolver@10.2.2': {} + "@secretlint/resolver@10.2.2": {} - '@secretlint/secretlint-formatter-sarif@10.2.2': + "@secretlint/secretlint-formatter-sarif@10.2.2": dependencies: node-sarif-builder: 3.4.0 - '@secretlint/secretlint-rule-no-dotenv@10.2.2': + "@secretlint/secretlint-rule-no-dotenv@10.2.2": dependencies: - '@secretlint/types': 10.2.2 + "@secretlint/types": 10.2.2 - '@secretlint/secretlint-rule-preset-recommend@10.2.2': {} + "@secretlint/secretlint-rule-preset-recommend@10.2.2": {} - '@secretlint/source-creator@10.2.2': + "@secretlint/source-creator@10.2.2": dependencies: - '@secretlint/types': 10.2.2 + "@secretlint/types": 10.2.2 istextorbinary: 9.5.0 - '@secretlint/types@10.2.2': {} + "@secretlint/types@10.2.2": {} - '@shikijs/core@3.13.0': + "@shikijs/core@3.13.0": dependencies: - '@shikijs/types': 3.13.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + "@shikijs/types": 3.13.0 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.13.0': + "@shikijs/engine-javascript@3.13.0": dependencies: - '@shikijs/types': 3.13.0 - '@shikijs/vscode-textmate': 10.0.2 + "@shikijs/types": 3.13.0 + "@shikijs/vscode-textmate": 10.0.2 oniguruma-to-es: 4.3.6 - '@shikijs/engine-oniguruma@3.13.0': + "@shikijs/engine-oniguruma@3.13.0": dependencies: - '@shikijs/types': 3.13.0 - '@shikijs/vscode-textmate': 10.0.2 + "@shikijs/types": 3.13.0 + "@shikijs/vscode-textmate": 10.0.2 - '@shikijs/langs@3.13.0': + "@shikijs/langs@3.13.0": dependencies: - '@shikijs/types': 3.13.0 + "@shikijs/types": 3.13.0 - '@shikijs/themes@3.13.0': + "@shikijs/themes@3.13.0": dependencies: - '@shikijs/types': 3.13.0 + "@shikijs/types": 3.13.0 - '@shikijs/types@3.13.0': + "@shikijs/types@3.13.0": dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 - '@shikijs/vscode-textmate@10.0.2': {} + "@shikijs/vscode-textmate@10.0.2": {} - '@sindresorhus/merge-streams@2.3.0': {} + "@sindresorhus/merge-streams@2.3.0": {} - '@standard-schema/spec@1.1.0': {} + "@standard-schema/spec@1.1.0": {} - '@textlint/ast-node-types@15.7.1': {} + "@textlint/ast-node-types@15.7.1": {} - '@textlint/linter-formatter@15.7.1(supports-color@8.1.1)': + "@textlint/linter-formatter@15.7.1(supports-color@8.1.1)": dependencies: - '@azu/format-text': 1.0.2 - '@azu/style-format': 1.0.1 - '@textlint/module-interop': 15.7.1 - '@textlint/resolver': 15.7.1 - '@textlint/types': 15.7.1 + "@azu/format-text": 1.0.2 + "@azu/style-format": 1.0.1 + "@textlint/module-interop": 15.7.1 + "@textlint/resolver": 15.7.1 + "@textlint/types": 15.7.1 chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) js-yaml: 4.2.0 @@ -5145,70 +8641,74 @@ snapshots: transitivePeerDependencies: - supports-color - '@textlint/module-interop@15.7.1': {} + "@textlint/module-interop@15.7.1": {} - '@textlint/resolver@15.7.1': {} + "@textlint/resolver@15.7.1": {} - '@textlint/types@15.7.1': + "@textlint/types@15.7.1": dependencies: - '@textlint/ast-node-types': 15.7.1 + "@textlint/ast-node-types": 15.7.1 - '@tybys/wasm-util@0.10.2': + "@tybys/wasm-util@0.10.2": dependencies: tslib: 2.8.1 optional: true - '@tybys/wasm-util@0.9.0': + "@tybys/wasm-util@0.9.0": dependencies: tslib: 2.8.1 - '@types/chai@5.2.3': + "@types/chai@5.2.3": dependencies: - '@types/deep-eql': 4.0.2 + "@types/deep-eql": 4.0.2 assertion-error: 2.0.1 - '@types/deep-eql@4.0.2': {} + "@types/deep-eql@4.0.2": {} - '@types/esrecurse@4.3.1': {} + "@types/esquery@1.5.4": + dependencies: + "@types/estree": 1.0.9 + + "@types/esrecurse@4.3.1": {} - '@types/estree@1.0.9': {} + "@types/estree@1.0.9": {} - '@types/hast@3.0.4': + "@types/hast@3.0.4": dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 - '@types/json-schema@7.0.15': {} + "@types/json-schema@7.0.15": {} - '@types/mdast@4.0.4': + "@types/mdast@4.0.4": dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 - '@types/mocha@10.0.10': {} + "@types/mocha@10.0.10": {} - '@types/node@25.9.3': + "@types/node@25.9.3": dependencies: undici-types: 7.24.6 - '@types/normalize-package-data@2.4.4': {} + "@types/normalize-package-data@2.4.4": {} - '@types/parse-json@4.0.2': {} + "@types/parse-json@4.0.2": {} - '@types/sarif@2.1.7': {} + "@types/sarif@2.1.7": {} - '@types/unist@3.0.3': {} + "@types/unist@3.0.3": {} - '@types/vscode-webview@1.57.5': {} + "@types/vscode-webview@1.57.5": {} - '@types/vscode@1.105.0': {} + "@types/vscode@1.105.0": {} - '@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': + "@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.61.1 - '@typescript-eslint/type-utils': 8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(supports-color@8.1.1))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.61.1 + "@eslint-community/regexpp": 4.12.2 + "@typescript-eslint/parser": 8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/scope-manager": 8.61.1 + "@typescript-eslint/type-utils": 8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/utils": 8.61.1(eslint@10.5.0(supports-color@8.1.1))(typescript@6.0.3) + "@typescript-eslint/visitor-keys": 8.61.1 eslint: 10.5.0(supports-color@8.1.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -5217,41 +8717,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': + "@typescript-eslint/parser@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@typescript-eslint/scope-manager': 8.61.1 - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.61.1 + "@typescript-eslint/scope-manager": 8.61.1 + "@typescript-eslint/types": 8.61.1 + "@typescript-eslint/typescript-estree": 8.61.1(typescript@6.0.3) + "@typescript-eslint/visitor-keys": 8.61.1 debug: 4.4.3(supports-color@8.1.1) eslint: 10.5.0(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.61.1(typescript@6.0.3)': + "@typescript-eslint/project-service@8.61.1(typescript@6.0.3)": dependencies: - '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@6.0.3) - '@typescript-eslint/types': 8.61.1 + "@typescript-eslint/tsconfig-utils": 8.61.1(typescript@6.0.3) + "@typescript-eslint/types": 8.61.1 debug: 4.4.3(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.61.1': + "@typescript-eslint/scope-manager@8.61.1": dependencies: - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/visitor-keys': 8.61.1 + "@typescript-eslint/types": 8.61.1 + "@typescript-eslint/visitor-keys": 8.61.1 - '@typescript-eslint/tsconfig-utils@8.61.1(typescript@6.0.3)': + "@typescript-eslint/tsconfig-utils@8.61.1(typescript@6.0.3)": dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)': + "@typescript-eslint/type-utils@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3)": dependencies: - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) - '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(supports-color@8.1.1))(typescript@6.0.3) + "@typescript-eslint/types": 8.61.1 + "@typescript-eslint/typescript-estree": 8.61.1(typescript@6.0.3) + "@typescript-eslint/utils": 8.61.1(eslint@10.5.0(supports-color@8.1.1))(typescript@6.0.3) debug: 4.4.3(supports-color@8.1.1) eslint: 10.5.0(supports-color@8.1.1) ts-api-utils: 2.5.0(typescript@6.0.3) @@ -5259,14 +8759,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.61.1': {} + "@typescript-eslint/types@8.61.1": {} - '@typescript-eslint/typescript-estree@8.61.1(typescript@6.0.3)': + "@typescript-eslint/typescript-estree@8.61.1(typescript@6.0.3)": dependencies: - '@typescript-eslint/project-service': 8.61.1(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.61.1(typescript@6.0.3) - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/visitor-keys': 8.61.1 + "@typescript-eslint/project-service": 8.61.1(typescript@6.0.3) + "@typescript-eslint/tsconfig-utils": 8.61.1(typescript@6.0.3) + "@typescript-eslint/types": 8.61.1 + "@typescript-eslint/visitor-keys": 8.61.1 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 semver: 7.8.4 @@ -5276,23 +8776,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.61.1(eslint@10.5.0(supports-color@8.1.1))(typescript@6.0.3)': + "@typescript-eslint/utils@8.61.1(eslint@10.5.0(supports-color@8.1.1))(typescript@6.0.3)": dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(supports-color@8.1.1)) - '@typescript-eslint/scope-manager': 8.61.1 - '@typescript-eslint/types': 8.61.1 - '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) + "@eslint-community/eslint-utils": 4.9.1(eslint@10.5.0(supports-color@8.1.1)) + "@typescript-eslint/scope-manager": 8.61.1 + "@typescript-eslint/types": 8.61.1 + "@typescript-eslint/typescript-estree": 8.61.1(typescript@6.0.3) eslint: 10.5.0(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.61.1': + "@typescript-eslint/visitor-keys@8.61.1": dependencies: - '@typescript-eslint/types': 8.61.1 + "@typescript-eslint/types": 8.61.1 eslint-visitor-keys: 5.0.1 - '@typespec/ts-http-runtime@0.3.6': + "@typespec/ts-http-runtime@0.3.6": dependencies: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -5300,12 +8800,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@ungap/structured-clone@1.3.1': {} + "@ungap/structured-clone@1.3.1": {} - '@vitest/coverage-v8@4.1.2(vitest@4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0))': + "@vitest/coverage-v8@4.1.2(vitest@4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0))": dependencies: - '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.1.2 + "@bcoe/v8-coverage": 1.0.2 + "@vitest/utils": 4.1.2 ast-v8-to-istanbul: 1.0.4 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -5316,50 +8816,50 @@ snapshots: tinyrainbow: 3.1.0 vitest: 4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) - '@vitest/expect@4.1.2': + "@vitest/expect@4.1.2": dependencies: - '@standard-schema/spec': 1.1.0 - '@types/chai': 5.2.3 - '@vitest/spy': 4.1.2 - '@vitest/utils': 4.1.2 + "@standard-schema/spec": 1.1.0 + "@types/chai": 5.2.3 + "@vitest/spy": 4.1.2 + "@vitest/utils": 4.1.2 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0))': + "@vitest/mocker@4.1.2(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0))": dependencies: - '@vitest/spy': 4.1.2 + "@vitest/spy": 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) - '@vitest/pretty-format@4.1.2': + "@vitest/pretty-format@4.1.2": dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.2': + "@vitest/runner@4.1.2": dependencies: - '@vitest/utils': 4.1.2 + "@vitest/utils": 4.1.2 pathe: 2.0.3 - '@vitest/snapshot@4.1.2': + "@vitest/snapshot@4.1.2": dependencies: - '@vitest/pretty-format': 4.1.2 - '@vitest/utils': 4.1.2 + "@vitest/pretty-format": 4.1.2 + "@vitest/utils": 4.1.2 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.2': {} + "@vitest/spy@4.1.2": {} - '@vitest/utils@4.1.2': + "@vitest/utils@4.1.2": dependencies: - '@vitest/pretty-format': 4.1.2 + "@vitest/pretty-format": 4.1.2 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 - '@vscode/codicons@0.0.41': {} + "@vscode/codicons@0.0.41": {} - '@vscode/test-electron@3.0.0': + "@vscode/test-electron@3.0.0": dependencies: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -5369,53 +8869,53 @@ snapshots: transitivePeerDependencies: - supports-color - '@vscode/vsce-sign-alpine-arm64@2.0.6': + "@vscode/vsce-sign-alpine-arm64@2.0.6": optional: true - '@vscode/vsce-sign-alpine-x64@2.0.6': + "@vscode/vsce-sign-alpine-x64@2.0.6": optional: true - '@vscode/vsce-sign-darwin-arm64@2.0.6': + "@vscode/vsce-sign-darwin-arm64@2.0.6": optional: true - '@vscode/vsce-sign-darwin-x64@2.0.6': + "@vscode/vsce-sign-darwin-x64@2.0.6": optional: true - '@vscode/vsce-sign-linux-arm64@2.0.6': + "@vscode/vsce-sign-linux-arm64@2.0.6": optional: true - '@vscode/vsce-sign-linux-arm@2.0.6': + "@vscode/vsce-sign-linux-arm@2.0.6": optional: true - '@vscode/vsce-sign-linux-x64@2.0.6': + "@vscode/vsce-sign-linux-x64@2.0.6": optional: true - '@vscode/vsce-sign-win32-arm64@2.0.6': + "@vscode/vsce-sign-win32-arm64@2.0.6": optional: true - '@vscode/vsce-sign-win32-x64@2.0.6': + "@vscode/vsce-sign-win32-x64@2.0.6": optional: true - '@vscode/vsce-sign@2.0.9': + "@vscode/vsce-sign@2.0.9": optionalDependencies: - '@vscode/vsce-sign-alpine-arm64': 2.0.6 - '@vscode/vsce-sign-alpine-x64': 2.0.6 - '@vscode/vsce-sign-darwin-arm64': 2.0.6 - '@vscode/vsce-sign-darwin-x64': 2.0.6 - '@vscode/vsce-sign-linux-arm': 2.0.6 - '@vscode/vsce-sign-linux-arm64': 2.0.6 - '@vscode/vsce-sign-linux-x64': 2.0.6 - '@vscode/vsce-sign-win32-arm64': 2.0.6 - '@vscode/vsce-sign-win32-x64': 2.0.6 - - '@vscode/vsce@3.9.2(supports-color@8.1.1)': - dependencies: - '@azure/identity': 4.13.1 - '@secretlint/node': 10.2.2(supports-color@8.1.1) - '@secretlint/secretlint-formatter-sarif': 10.2.2 - '@secretlint/secretlint-rule-no-dotenv': 10.2.2 - '@secretlint/secretlint-rule-preset-recommend': 10.2.2 - '@vscode/vsce-sign': 2.0.9 + "@vscode/vsce-sign-alpine-arm64": 2.0.6 + "@vscode/vsce-sign-alpine-x64": 2.0.6 + "@vscode/vsce-sign-darwin-arm64": 2.0.6 + "@vscode/vsce-sign-darwin-x64": 2.0.6 + "@vscode/vsce-sign-linux-arm": 2.0.6 + "@vscode/vsce-sign-linux-arm64": 2.0.6 + "@vscode/vsce-sign-linux-x64": 2.0.6 + "@vscode/vsce-sign-win32-arm64": 2.0.6 + "@vscode/vsce-sign-win32-x64": 2.0.6 + + "@vscode/vsce@3.9.2(supports-color@8.1.1)": + dependencies: + "@azure/identity": 4.13.1 + "@secretlint/node": 10.2.2(supports-color@8.1.1) + "@secretlint/secretlint-formatter-sarif": 10.2.2 + "@secretlint/secretlint-rule-no-dotenv": 10.2.2 + "@secretlint/secretlint-rule-preset-recommend": 10.2.2 + "@vscode/vsce-sign": 2.0.9 azure-devops-node-api: 12.5.0 chalk: 4.1.2 cheerio: 1.2.0 @@ -5444,9 +8944,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@yarnpkg/lockfile@1.1.0': {} + "@yarnpkg/lockfile@1.1.0": {} - '@zkochan/js-yaml@0.0.7': + "@zkochan/js-yaml@0.0.7": dependencies: argparse: 2.0.1 @@ -5494,12 +8994,14 @@ snapshots: ast-v8-to-istanbul@1.0.4: dependencies: - '@jridgewell/trace-mapping': 0.3.31 + "@jridgewell/trace-mapping": 0.3.31 estree-walker: 3.0.3 js-tokens: 10.0.0 astral-regex@2.0.0: {} + async@3.2.6: {} + asynckit@0.4.0: {} axios@1.16.0: @@ -5517,54 +9019,54 @@ snapshots: babel-plugin-const-enum@1.2.0(@babel/core@7.29.7): dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) - '@babel/traverse': 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 + "@babel/plugin-syntax-typescript": 7.29.7(@babel/core@7.29.7) + "@babel/traverse": 7.29.7 transitivePeerDependencies: - supports-color babel-plugin-macros@3.1.0: dependencies: - '@babel/runtime': 7.29.7 + "@babel/runtime": 7.29.7 cosmiconfig: 7.1.0 resolve: 1.22.12 babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7): dependencies: - '@babel/compat-data': 7.29.7 - '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + "@babel/compat-data": 7.29.7 + "@babel/core": 7.29.7 + "@babel/helper-define-polyfill-provider": 0.6.8(@babel/core@7.29.7) semver: 6.3.1 transitivePeerDependencies: - supports-color babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7): dependencies: - '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + "@babel/core": 7.29.7 + "@babel/helper-define-polyfill-provider": 0.6.8(@babel/core@7.29.7) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.7): dependencies: - '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + "@babel/core": 7.29.7 + "@babel/helper-define-polyfill-provider": 0.6.8(@babel/core@7.29.7) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7): dependencies: - '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + "@babel/core": 7.29.7 + "@babel/helper-define-polyfill-provider": 0.6.8(@babel/core@7.29.7) transitivePeerDependencies: - supports-color babel-plugin-transform-typescript-metadata@0.3.2: dependencies: - '@babel/helper-plugin-utils': 7.29.7 + "@babel/helper-plugin-utils": 7.29.7 balanced-match@4.0.3: {} @@ -5572,6 +9074,10 @@ snapshots: baseline-browser-mapping@2.10.37: {} + basic-auth@2.0.1: + dependencies: + safe-buffer: 5.1.2 + binaryextensions@6.11.0: dependencies: editions: 6.22.0 @@ -5729,9 +9235,11 @@ snapshots: core-util-is@1.0.3: {} + corser@2.0.1: {} + cosmiconfig@7.1.0: dependencies: - '@types/parse-json': 4.0.2 + "@types/parse-json": 4.0.2 import-fresh: 3.3.1 parse-json: 5.2.0 path-type: 4.0.0 @@ -5892,32 +9400,32 @@ snapshots: esbuild@0.28.1: optionalDependencies: - '@esbuild/aix-ppc64': 0.28.1 - '@esbuild/android-arm': 0.28.1 - '@esbuild/android-arm64': 0.28.1 - '@esbuild/android-x64': 0.28.1 - '@esbuild/darwin-arm64': 0.28.1 - '@esbuild/darwin-x64': 0.28.1 - '@esbuild/freebsd-arm64': 0.28.1 - '@esbuild/freebsd-x64': 0.28.1 - '@esbuild/linux-arm': 0.28.1 - '@esbuild/linux-arm64': 0.28.1 - '@esbuild/linux-ia32': 0.28.1 - '@esbuild/linux-loong64': 0.28.1 - '@esbuild/linux-mips64el': 0.28.1 - '@esbuild/linux-ppc64': 0.28.1 - '@esbuild/linux-riscv64': 0.28.1 - '@esbuild/linux-s390x': 0.28.1 - '@esbuild/linux-x64': 0.28.1 - '@esbuild/netbsd-arm64': 0.28.1 - '@esbuild/netbsd-x64': 0.28.1 - '@esbuild/openbsd-arm64': 0.28.1 - '@esbuild/openbsd-x64': 0.28.1 - '@esbuild/openharmony-arm64': 0.28.1 - '@esbuild/sunos-x64': 0.28.1 - '@esbuild/win32-arm64': 0.28.1 - '@esbuild/win32-ia32': 0.28.1 - '@esbuild/win32-x64': 0.28.1 + "@esbuild/aix-ppc64": 0.28.1 + "@esbuild/android-arm": 0.28.1 + "@esbuild/android-arm64": 0.28.1 + "@esbuild/android-x64": 0.28.1 + "@esbuild/darwin-arm64": 0.28.1 + "@esbuild/darwin-x64": 0.28.1 + "@esbuild/freebsd-arm64": 0.28.1 + "@esbuild/freebsd-x64": 0.28.1 + "@esbuild/linux-arm": 0.28.1 + "@esbuild/linux-arm64": 0.28.1 + "@esbuild/linux-ia32": 0.28.1 + "@esbuild/linux-loong64": 0.28.1 + "@esbuild/linux-mips64el": 0.28.1 + "@esbuild/linux-ppc64": 0.28.1 + "@esbuild/linux-riscv64": 0.28.1 + "@esbuild/linux-s390x": 0.28.1 + "@esbuild/linux-x64": 0.28.1 + "@esbuild/netbsd-arm64": 0.28.1 + "@esbuild/netbsd-x64": 0.28.1 + "@esbuild/openbsd-arm64": 0.28.1 + "@esbuild/openbsd-x64": 0.28.1 + "@esbuild/openharmony-arm64": 0.28.1 + "@esbuild/sunos-x64": 0.28.1 + "@esbuild/win32-arm64": 0.28.1 + "@esbuild/win32-ia32": 0.28.1 + "@esbuild/win32-x64": 0.28.1 escalade@3.2.0: {} @@ -5927,8 +9435,8 @@ snapshots: eslint-scope@9.1.2: dependencies: - '@types/esrecurse': 4.3.1 - '@types/estree': 1.0.9 + "@types/esrecurse": 4.3.1 + "@types/estree": 1.0.9 esrecurse: 4.3.0 estraverse: 5.3.0 @@ -5938,16 +9446,16 @@ snapshots: eslint@10.5.0(supports-color@8.1.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(supports-color@8.1.1)) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.5(supports-color@8.1.1) - '@eslint/config-helpers': 0.6.0 - '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.7.2 - '@humanfs/node': 0.16.8 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.9 + "@eslint-community/eslint-utils": 4.9.1(eslint@10.5.0(supports-color@8.1.1)) + "@eslint-community/regexpp": 4.12.2 + "@eslint/config-array": 0.23.5(supports-color@8.1.1) + "@eslint/config-helpers": 0.6.0 + "@eslint/core": 1.2.1 + "@eslint/plugin-kit": 0.7.2 + "@humanfs/node": 0.16.8 + "@humanwhocodes/module-importer": 1.0.1 + "@humanwhocodes/retry": 0.4.3 + "@types/estree": 1.0.9 ajv: 6.15.0 cross-spawn: 7.0.6 debug: 4.4.3(supports-color@8.1.1) @@ -5989,10 +9497,12 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.9 + "@types/estree": 1.0.9 esutils@2.0.3: {} + eventemitter3@4.0.7: {} + expand-template@2.0.3: optional: true @@ -6002,8 +9512,8 @@ snapshots: fast-glob@3.3.3: dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.8 @@ -6116,7 +9626,7 @@ snapshots: globby@14.1.0: dependencies: - '@sindresorhus/merge-streams': 2.3.0 + "@sindresorhus/merge-streams": 2.3.0 fast-glob: 3.3.3 ignore: 7.0.5 path-type: 6.0.0 @@ -6145,8 +9655,8 @@ snapshots: hast-util-to-html@9.0.5: dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 + "@types/hast": 3.0.4 + "@types/unist": 3.0.3 ccount: 2.0.1 comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 @@ -6159,7 +9669,7 @@ snapshots: hast-util-whitespace@3.0.0: dependencies: - '@types/hast': 3.0.4 + "@types/hast": 3.0.4 he@1.2.0: {} @@ -6171,6 +9681,10 @@ snapshots: dependencies: lru-cache: 10.4.3 + html-encoding-sniffer@3.0.0: + dependencies: + whatwg-encoding: 2.0.0 + html-escaper@2.0.2: {} html-void-elements@3.0.0: {} @@ -6189,6 +9703,33 @@ snapshots: transitivePeerDependencies: - supports-color + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.16.0 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + http-server@14.1.1(supports-color@8.1.1): + dependencies: + basic-auth: 2.0.1 + chalk: 4.1.2 + corser: 2.0.1 + he: 1.2.0 + html-encoding-sniffer: 3.0.0 + http-proxy: 1.18.1 + mime: 1.6.0 + minimist: 1.2.8 + opener: 1.5.2 + portfinder: 1.0.38(supports-color@8.1.1) + secure-compare: 3.0.1 + union: 0.5.0 + url-join: 4.0.1 + transitivePeerDependencies: + - debug + - supports-color + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 @@ -6478,12 +10019,12 @@ snapshots: magic-string@0.30.21: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + "@jridgewell/sourcemap-codec": 1.5.5 magicast@0.5.3: dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 + "@babel/parser": 7.29.7 + "@babel/types": 7.29.7 source-map-js: 1.2.1 make-dir@4.0.0: @@ -6503,9 +10044,9 @@ snapshots: mdast-util-to-hast@13.2.1: dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.1 + "@types/hast": 3.0.4 + "@types/mdast": 4.0.4 + "@ungap/structured-clone": 1.3.1 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -6612,7 +10153,7 @@ snapshots: node-sarif-builder@3.4.0: dependencies: - '@types/sarif': 2.1.7 + "@types/sarif": 2.1.7 fs-extra: 11.3.5 normalize-package-data@6.0.2: @@ -6631,14 +10172,14 @@ snapshots: nx@23.0.0: dependencies: - '@emnapi/core': 1.4.5 - '@emnapi/runtime': 1.4.5 - '@emnapi/wasi-threads': 1.0.4 - '@jest/diff-sequences': 30.0.1 - '@napi-rs/wasm-runtime': 0.2.4 - '@tybys/wasm-util': 0.9.0 - '@yarnpkg/lockfile': 1.1.0 - '@zkochan/js-yaml': 0.0.7 + "@emnapi/core": 1.4.5 + "@emnapi/runtime": 1.4.5 + "@emnapi/wasi-threads": 1.0.4 + "@jest/diff-sequences": 30.0.1 + "@napi-rs/wasm-runtime": 0.2.4 + "@tybys/wasm-util": 0.9.0 + "@yarnpkg/lockfile": 1.1.0 + "@zkochan/js-yaml": 0.0.7 ansi-colors: 4.1.3 ansi-regex: 5.0.1 ansi-styles: 4.3.0 @@ -6743,16 +10284,16 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 23.0.0 - '@nx/nx-darwin-x64': 23.0.0 - '@nx/nx-freebsd-x64': 23.0.0 - '@nx/nx-linux-arm-gnueabihf': 23.0.0 - '@nx/nx-linux-arm64-gnu': 23.0.0 - '@nx/nx-linux-arm64-musl': 23.0.0 - '@nx/nx-linux-x64-gnu': 23.0.0 - '@nx/nx-linux-x64-musl': 23.0.0 - '@nx/nx-win32-arm64-msvc': 23.0.0 - '@nx/nx-win32-x64-msvc': 23.0.0 + "@nx/nx-darwin-arm64": 23.0.0 + "@nx/nx-darwin-x64": 23.0.0 + "@nx/nx-freebsd-x64": 23.0.0 + "@nx/nx-linux-arm-gnueabihf": 23.0.0 + "@nx/nx-linux-arm64-gnu": 23.0.0 + "@nx/nx-linux-arm64-musl": 23.0.0 + "@nx/nx-linux-x64-gnu": 23.0.0 + "@nx/nx-linux-x64-musl": 23.0.0 + "@nx/nx-win32-arm64-msvc": 23.0.0 + "@nx/nx-win32-x64-msvc": 23.0.0 transitivePeerDependencies: - debug @@ -6793,6 +10334,8 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + opener@1.5.2: {} + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -6844,14 +10387,14 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.29.7 + "@babel/code-frame": 7.29.7 error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 parse-json@8.3.0: dependencies: - '@babel/code-frame': 7.29.7 + "@babel/code-frame": 7.29.7 index-to-position: 1.2.0 type-fest: 4.41.0 @@ -6901,6 +10444,13 @@ snapshots: pluralize@8.0.0: {} + portfinder@1.0.38(supports-color@8.1.1): + dependencies: + async: 3.2.6 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + postcss@8.5.15: dependencies: nanoid: 3.3.12 @@ -6968,7 +10518,7 @@ snapshots: read-pkg@9.0.1: dependencies: - '@types/normalize-package-data': 2.4.4 + "@types/normalize-package-data": 2.4.4 normalize-package-data: 6.0.2 parse-json: 8.3.0 type-fest: 4.41.0 @@ -7031,6 +10581,8 @@ snapshots: require-from-string@2.0.2: {} + requires-port@1.0.0: {} + resolve-from@4.0.0: {} resolve.exports@2.0.3: {} @@ -7056,24 +10608,24 @@ snapshots: rolldown@1.0.3: dependencies: - '@oxc-project/types': 0.133.0 - '@rolldown/pluginutils': 1.0.1 + "@oxc-project/types": 0.133.0 + "@rolldown/pluginutils": 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.3 - '@rolldown/binding-darwin-arm64': 1.0.3 - '@rolldown/binding-darwin-x64': 1.0.3 - '@rolldown/binding-freebsd-x64': 1.0.3 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.3 - '@rolldown/binding-linux-arm64-gnu': 1.0.3 - '@rolldown/binding-linux-arm64-musl': 1.0.3 - '@rolldown/binding-linux-ppc64-gnu': 1.0.3 - '@rolldown/binding-linux-s390x-gnu': 1.0.3 - '@rolldown/binding-linux-x64-gnu': 1.0.3 - '@rolldown/binding-linux-x64-musl': 1.0.3 - '@rolldown/binding-openharmony-arm64': 1.0.3 - '@rolldown/binding-wasm32-wasi': 1.0.3 - '@rolldown/binding-win32-arm64-msvc': 1.0.3 - '@rolldown/binding-win32-x64-msvc': 1.0.3 + "@rolldown/binding-android-arm64": 1.0.3 + "@rolldown/binding-darwin-arm64": 1.0.3 + "@rolldown/binding-darwin-x64": 1.0.3 + "@rolldown/binding-freebsd-x64": 1.0.3 + "@rolldown/binding-linux-arm-gnueabihf": 1.0.3 + "@rolldown/binding-linux-arm64-gnu": 1.0.3 + "@rolldown/binding-linux-arm64-musl": 1.0.3 + "@rolldown/binding-linux-ppc64-gnu": 1.0.3 + "@rolldown/binding-linux-s390x-gnu": 1.0.3 + "@rolldown/binding-linux-x64-gnu": 1.0.3 + "@rolldown/binding-linux-x64-musl": 1.0.3 + "@rolldown/binding-openharmony-arm64": 1.0.3 + "@rolldown/binding-wasm32-wasi": 1.0.3 + "@rolldown/binding-win32-arm64-msvc": 1.0.3 + "@rolldown/binding-win32-x64-msvc": 1.0.3 run-applescript@7.1.0: {} @@ -7091,16 +10643,18 @@ snapshots: secretlint@10.2.2(supports-color@8.1.1): dependencies: - '@secretlint/config-creator': 10.2.2 - '@secretlint/formatter': 10.2.2(supports-color@8.1.1) - '@secretlint/node': 10.2.2(supports-color@8.1.1) - '@secretlint/profiler': 10.2.2 + "@secretlint/config-creator": 10.2.2 + "@secretlint/formatter": 10.2.2(supports-color@8.1.1) + "@secretlint/node": 10.2.2(supports-color@8.1.1) + "@secretlint/profiler": 10.2.2 debug: 4.4.3(supports-color@8.1.1) globby: 14.1.0 read-pkg: 9.0.1 transitivePeerDependencies: - supports-color + secure-compare@3.0.1: {} + semver@5.7.1: {} semver@6.3.1: {} @@ -7121,14 +10675,14 @@ snapshots: shiki@3.13.0: dependencies: - '@shikijs/core': 3.13.0 - '@shikijs/engine-javascript': 3.13.0 - '@shikijs/engine-oniguruma': 3.13.0 - '@shikijs/langs': 3.13.0 - '@shikijs/themes': 3.13.0 - '@shikijs/types': 3.13.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + "@shikijs/core": 3.13.0 + "@shikijs/engine-javascript": 3.13.0 + "@shikijs/engine-oniguruma": 3.13.0 + "@shikijs/langs": 3.13.0 + "@shikijs/themes": 3.13.0 + "@shikijs/types": 3.13.0 + "@shikijs/vscode-textmate": 10.0.2 + "@types/hast": 3.0.4 side-channel-list@1.0.1: dependencies: @@ -7363,15 +10917,17 @@ snapshots: typescript-eslint@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/parser': 8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.61.1(typescript@6.0.3) - '@typescript-eslint/utils': 8.61.1(eslint@10.5.0(supports-color@8.1.1))(typescript@6.0.3) + "@typescript-eslint/eslint-plugin": 8.61.1(@typescript-eslint/parser@8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3))(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/parser": 8.61.1(eslint@10.5.0(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + "@typescript-eslint/typescript-estree": 8.61.1(typescript@6.0.3) + "@typescript-eslint/utils": 8.61.1(eslint@10.5.0(supports-color@8.1.1))(typescript@6.0.3) eslint: 10.5.0(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color + typescript@5.9.3: {} + typescript@6.0.3: {} uc.micro@2.1.0: {} @@ -7397,26 +10953,30 @@ snapshots: unicorn-magic@0.3.0: {} + union@0.5.0: + dependencies: + qs: 6.15.2 + unist-util-is@6.0.1: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 unist-util-position@5.0.0: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 unist-util-stringify-position@4.0.0: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 unist-util-visit-parents@6.0.2: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 unist-util-is: 6.0.1 unist-util-visit@5.1.0: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 @@ -7445,12 +11005,12 @@ snapshots: vfile-message@4.0.3: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 unist-util-stringify-position: 4.0.0 vfile@6.0.3: dependencies: - '@types/unist': 3.0.3 + "@types/unist": 3.0.3 vfile-message: 4.0.3 vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0): @@ -7461,20 +11021,20 @@ snapshots: rolldown: 1.0.3 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 25.9.3 + "@types/node": 25.9.3 esbuild: 0.28.1 fsevents: 2.3.3 yaml: 2.9.0 vitest@4.1.2(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0): dependencies: - '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.2 - '@vitest/runner': 4.1.2 - '@vitest/snapshot': 4.1.2 - '@vitest/spy': 4.1.2 - '@vitest/utils': 4.1.2 + "@vitest/expect": 4.1.2 + "@vitest/mocker": 4.1.2(vite@8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0)) + "@vitest/pretty-format": 4.1.2 + "@vitest/runner": 4.1.2 + "@vitest/snapshot": 4.1.2 + "@vitest/spy": 4.1.2 + "@vitest/utils": 4.1.2 es-module-lexer: 2.1.0 expect-type: 1.3.0 magic-string: 0.30.21 @@ -7489,9 +11049,9 @@ snapshots: vite: 8.0.16(@types/node@25.9.3)(esbuild@0.28.1)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 25.9.3 + "@types/node": 25.9.3 transitivePeerDependencies: - - '@vitejs/devtools' + - "@vitejs/devtools" - esbuild - jiti - less @@ -7530,6 +11090,10 @@ snapshots: dependencies: defaults: 1.0.4 + whatwg-encoding@2.0.0: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 @@ -7614,31 +11178,34 @@ snapshots: zwitch@2.0.4: {} time: - '@eslint/js@10.0.1': '2026-02-06T22:34:56.290Z' - '@nx/esbuild@23.0.0': '2026-06-16T16:07:04.929Z' - '@nx/js@23.0.0': '2026-06-16T16:07:12.233Z' - '@shikijs/types@3.13.0': '2025-09-19T15:55:59.443Z' - '@types/mocha@10.0.10': '2024-11-20T18:38:25.531Z' - '@types/node@25.9.3': '2026-06-10T22:15:10.607Z' - '@types/vscode-webview@1.57.5': '2024-01-30T22:04:14.566Z' - '@types/vscode@1.105.0': '2025-10-09T18:02:42.858Z' - '@vitest/coverage-v8@4.1.2': '2026-03-26T14:37:07.834Z' - '@vscode/codicons@0.0.41': '2025-10-08T14:41:29.534Z' - '@vscode/test-electron@3.0.0': '2026-06-08T18:19:54.566Z' - '@vscode/vsce@3.9.2': '2026-06-03T21:27:47.500Z' - esbuild@0.28.1: '2026-06-11T22:47:05.085Z' - eslint@10.5.0: '2026-06-12T17:54:40.577Z' - glob@13.0.6: '2026-02-19T17:26:33.269Z' - globals@16.4.0: '2025-09-09T19:39:12.191Z' - mocha@12.0.0-beta-10: '2026-02-21T03:18:31.327Z' - nx@23.0.0: '2026-06-16T16:06:46.654Z' - prettier@3.6.2: '2025-06-27T02:53:53.185Z' - shiki@3.13.0: '2025-09-19T15:57:04.838Z' - ts-dedent@2.2.0: '2021-08-01T15:22:31.863Z' - typescript-eslint@8.61.1: '2026-06-15T18:31:57.892Z' - typescript@6.0.3: '2026-04-16T23:38:27.905Z' - vitest@4.1.2: '2026-03-26T14:36:51.447Z' - vscode-languageclient@10.0.0: '2026-06-03T19:58:47.274Z' - vscode-languageserver-types@3.17.5: '2023-09-26T10:23:06.690Z' - vscode-uri@3.1.0: '2025-02-04T18:18:11.908Z' - yaml@2.9.0: '2026-05-11T10:16:24.045Z' + "@eslint/js@10.0.1": "2026-02-06T22:34:56.290Z" + "@nx/esbuild@23.0.0": "2026-06-16T16:07:04.929Z" + "@nx/eslint@23.0.0": "2026-06-16T16:07:24.972Z" + "@nx/js@23.0.0": "2026-06-16T16:07:12.233Z" + "@nx/vitest@23.0.0": "2026-06-16T16:07:04.923Z" + "@nx/web@23.0.0": "2026-06-16T16:07:39.880Z" + "@shikijs/types@3.13.0": "2025-09-19T15:55:59.443Z" + "@types/mocha@10.0.10": "2024-11-20T18:38:25.531Z" + "@types/node@25.9.3": "2026-06-10T22:15:10.607Z" + "@types/vscode-webview@1.57.5": "2024-01-30T22:04:14.566Z" + "@types/vscode@1.105.0": "2025-10-09T18:02:42.858Z" + "@vitest/coverage-v8@4.1.2": "2026-03-26T14:37:07.834Z" + "@vscode/codicons@0.0.41": "2025-10-08T14:41:29.534Z" + "@vscode/test-electron@3.0.0": "2026-06-08T18:19:54.566Z" + "@vscode/vsce@3.9.2": "2026-06-03T21:27:47.500Z" + esbuild@0.28.1: "2026-06-11T22:47:05.085Z" + eslint@10.5.0: "2026-06-12T17:54:40.577Z" + glob@13.0.6: "2026-02-19T17:26:33.269Z" + globals@16.4.0: "2025-09-09T19:39:12.191Z" + mocha@12.0.0-beta-10: "2026-02-21T03:18:31.327Z" + nx@23.0.0: "2026-06-16T16:06:46.654Z" + prettier@3.6.2: "2025-06-27T02:53:53.185Z" + shiki@3.13.0: "2025-09-19T15:57:04.838Z" + ts-dedent@2.2.0: "2021-08-01T15:22:31.863Z" + typescript-eslint@8.61.1: "2026-06-15T18:31:57.892Z" + typescript@6.0.3: "2026-04-16T23:38:27.905Z" + vitest@4.1.2: "2026-03-26T14:36:51.447Z" + vscode-languageclient@10.0.0: "2026-06-03T19:58:47.274Z" + vscode-languageserver-types@3.17.5: "2023-09-26T10:23:06.690Z" + vscode-uri@3.1.0: "2025-02-04T18:18:11.908Z" + yaml@2.9.0: "2026-05-11T10:16:24.045Z" diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 0c4580c..861b8dd 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -89,7 +89,7 @@ strictDepBuilds: true # Example: `esbuild: true` allows `esbuild`, `nx: true` allows the reviewed # Nx postinstall path, `keytar: false` forbids `keytar`. allowBuilds: - '@vscode/vsce-sign': false + "@vscode/vsce-sign": false esbuild: true keytar: false nx: true @@ -429,18 +429,18 @@ packageConfigs: [] # Details: Exact versions live here and manifests consume them via `catalog:`. # Example: `typescript: 5.7.2` is an approved exact version state. catalog: - '@nx/esbuild': 23.0.0 - '@nx/js': 23.0.0 - '@eslint/js': 10.0.1 - '@shikijs/types': 3.13.0 - '@types/mocha': 10.0.10 - '@types/node': 25.9.3 - '@types/vscode': 1.105.0 - '@types/vscode-webview': 1.57.5 - '@vitest/coverage-v8': 4.1.2 - '@vscode/codicons': 0.0.41 - '@vscode/vsce': 3.9.2 - '@vscode/test-electron': 3.0.0 + "@nx/esbuild": 23.0.0 + "@nx/js": 23.0.0 + "@eslint/js": 10.0.1 + "@shikijs/types": 3.13.0 + "@types/mocha": 10.0.10 + "@types/node": 25.9.3 + "@types/vscode": 1.105.0 + "@types/vscode-webview": 1.57.5 + "@vitest/coverage-v8": 4.1.2 + "@vscode/codicons": 0.0.41 + "@vscode/vsce": 3.9.2 + "@vscode/test-electron": 3.0.0 esbuild: 0.28.1 eslint: 10.5.0 glob: 13.0.6 @@ -457,6 +457,9 @@ catalog: vscode-languageserver-types: 3.17.5 vscode-uri: 3.1.0 yaml: 2.9.0 + "@nx/eslint": 23.0.0 + "@nx/vitest": 23.0.0 + "@nx/web": 23.0.0 # `catalogMode` # Simple: Enforces that new dependencies cannot bypass the catalog. diff --git a/project.json b/project.json deleted file mode 100644 index 356440c..0000000 --- a/project.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "workspace-root", - "$schema": "./node_modules/nx/schemas/project-schema.json", - "root": ".", - "targets": { - "format": { - "executor": "nx:run-commands", - "options": { - "command": "pnpm exec prettier --write \"**/*.{ts,tsx,js,mjs,cjs,json,md,yml,yaml,css,html}\"" - } - }, - "format:check": { - "executor": "nx:run-commands", - "options": { - "command": "pnpm exec prettier --check \"**/*.{ts,tsx,js,mjs,cjs,json,md,yml,yaml,css,html}\"" - } - }, - "sync": { - "executor": "nx:run-commands", - "options": { - "command": "pnpm exec nx sync" - } - }, - "sync:check": { - "executor": "nx:run-commands", - "options": { - "command": "pnpm exec nx sync:check" - } - } - } -} diff --git a/tsconfig.bundler-node.base.json b/tsconfig.bundler-node.base.json new file mode 100644 index 0000000..09c81f5 --- /dev/null +++ b/tsconfig.bundler-node.base.json @@ -0,0 +1,37 @@ +{ + /** + * Bundler-first Node-hosted application role template for leaves whose source + * runs in a Node-like environment but whose JavaScript output is delegated to + * a bundler rather than emitted directly by TypeScript. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the root compiler-policy baseline and reopen only the semantics that + * are genuinely shared across bundler-first Node-hosted app leaves. + */ + "extends": "./tsconfig.base.json", + + "compilerOptions": { + /** + * Keep the authored ESM posture expected by bundler-first leaves. + */ + "module": "ESNext", + + /** + * Preserve bundler-aware package resolution semantics on this role. + */ + "moduleResolution": "Bundler", + + /** + * Bundler-first Node-hosted leaves normally delegate emitted JavaScript to + * the bundler rather than producing runtime files via `tsc`. + */ + "noEmit": true, + + /** + * Open only the Node ambient surface for this runtime role. + */ + "types": ["node"] + } +} diff --git a/tsconfig.lib.base.json b/tsconfig.lib.base.json new file mode 100644 index 0000000..f0c3326 --- /dev/null +++ b/tsconfig.lib.base.json @@ -0,0 +1,48 @@ +{ + /** + * Generic buildable-library role template for workspace leaves whose final + * truth is a declaration-capable producer surface. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the root compiler-policy single source of truth so strictness, + * module defaults, and shared package-resolution semantics stay centralized. + */ + "extends": "./tsconfig.base.json", + + "compilerOptions": { + /** + * Buildable library leaves must participate in the project-reference graph. + */ + "composite": true, + + /** + * Buildable producer leaves emit declaration surfaces by default. + */ + "declaration": true, + + /** + * Preserve declaration maps so cross-project editor navigation remains + * intact on the producer lane. + */ + "declarationMap": true, + + /** + * Reopen emit at the role-template layer for buildable producer leaves. + * Concrete output paths remain leaf-local facts. + */ + "noEmit": false, + + /** + * Keep the generic library lane conservative and validation-first unless a + * narrower artifact lane explicitly changes the delivery contract. + */ + "emitDeclarationOnly": true, + + /** + * Internal-only declarations must not leak through public producer surfaces. + */ + "stripInternal": true + } +} diff --git a/tsconfig.node.base.json b/tsconfig.node.base.json new file mode 100644 index 0000000..f7988ef --- /dev/null +++ b/tsconfig.node.base.json @@ -0,0 +1,41 @@ +{ + /** + * Reusable Node application role template for deployable or runtime-bearing + * Node leaves. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the root compiler-policy single source of truth and reopen only the + * Node-runtime-specific semantics required by this role. + */ + "extends": "./tsconfig.base.json", + + "compilerOptions": { + /** + * Deployable or runtime-bearing Node leaves model native Node module truth. + */ + "module": "NodeNext", + + /** + * Native Node package-resolution semantics belong on this runtime role. + */ + "moduleResolution": "NodeNext", + + /** + * Keep raw TypeScript extension imports closed by default on the Node lane. + */ + "allowImportingTsExtensions": false, + + /** + * Node runtime leaves also prefer direct `.js` authoring truth over rewrite + * magic at the contract layer. + */ + "rewriteRelativeImportExtensions": false, + + /** + * Open only the Node ambient surface for this role. + */ + "types": ["node"] + } +} diff --git a/tsconfig.shared-package-artifact.base.json b/tsconfig.shared-package-artifact.base.json new file mode 100644 index 0000000..f088d74 --- /dev/null +++ b/tsconfig.shared-package-artifact.base.json @@ -0,0 +1,36 @@ +{ + /** + * Specialized role template for runtime-bearing shared packages that are + * delivered as unbundled package artifacts from the monorepo. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Start from the generic buildable library producer contract and narrow it to + * the stronger package-artifact delivery truth. + */ + "extends": "./tsconfig.lib.base.json", + + "compilerOptions": { + /** + * Package artifacts must be validated against native Node artifact truth. + */ + "module": "NodeNext", + + /** + * Node-valid artifact semantics are mandatory on this lane. + */ + "moduleResolution": "NodeNext", + + /** + * Raw TypeScript extension imports stay closed on the artifact lane. + */ + "allowImportingTsExtensions": false, + + /** + * Package artifacts rely on direct `.js` authoring truth instead of rewrite + * magic at the workspace contract layer. + */ + "rewriteRelativeImportExtensions": false + } +} diff --git a/tsconfig.test.base.json b/tsconfig.test.base.json new file mode 100644 index 0000000..f49d74d --- /dev/null +++ b/tsconfig.test.base.json @@ -0,0 +1,26 @@ +{ + /** + * Runtime test-consumer role template for test lanes that validate behavior + * rather than produce shipped runtime artifacts. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the root compiler-policy baseline and reopen only the generic test + * environment semantics shared across runtime test lanes. + */ + "extends": "./tsconfig.base.json", + + "compilerOptions": { + /** + * Generic runtime test lanes stay validation-first by default. + * Narrower leaves may reopen emit if their harness requires compiled output. + */ + "noEmit": true, + + /** + * Keep the common test ambient surface minimal and explicit. + */ + "types": ["vitest/globals", "node"] + } +} diff --git a/tsconfig.typecheck.base.json b/tsconfig.typecheck.base.json new file mode 100644 index 0000000..955031e --- /dev/null +++ b/tsconfig.typecheck.base.json @@ -0,0 +1,58 @@ +{ + /** + * Generic validation-lane role template for monorepo leaves that must + * participate in graph-aware TypeScript build mode without becoming + * runtime JavaScript artifact producers. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the root compiler-policy single source of truth so strictness, + * module policy, and package-resolution semantics stay centralized. + */ + "extends": "./tsconfig.base.json", + + "compilerOptions": { + /** + * Validation lanes must participate in project-reference build mode. + * This is the core contract that Nx and `tsc --build` rely on. + */ + "composite": true, + + /** + * Build mode requires declaration-capable producer semantics on the lane. + * Keep declarations on so the validation graph remains type-producer valid. + */ + "declaration": true, + + /** + * Preserve declaration maps so editor navigation across project boundaries + * stays intact even when the lane only emits validation artifacts. + */ + "declarationMap": true, + + /** + * This lane must not stay on `noEmit: true`, because build-mode + * typechecking requires a real emit-capable project contract. + */ + "noEmit": false, + + /** + * Keep the lane validation-first by emitting only declarations instead of + * runtime JavaScript artifacts. + */ + "emitDeclarationOnly": true, + + /** + * Internal-only declarations should not leak through validation outputs. + * This keeps the lane aligned with a minimal public type surface. + */ + "stripInternal": true, + + /** + * Ambient globals stay closed at the generic validation template layer. + * Individual leaves reopen only the exact environment they need. + */ + "types": [] + } +} diff --git a/tsconfig.types.base.json b/tsconfig.types.base.json new file mode 100644 index 0000000..7afb5cd --- /dev/null +++ b/tsconfig.types.base.json @@ -0,0 +1,26 @@ +{ + /** + * Type-only validation role template for contract, schema, or compile-time + * verification lanes that should never produce runtime artifacts. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the root compiler-policy baseline and reopen only the generic ambient + * surface shared across type-only validation lanes. + */ + "extends": "./tsconfig.base.json", + + "compilerOptions": { + /** + * Type-only validation lanes remain pure non-emitting contracts. + */ + "noEmit": true, + + /** + * Keep the same explicit ambient test/runtime surface used by generic + * validation lanes unless a narrower leaf overrides it. + */ + "types": ["vitest/globals", "node"] + } +} diff --git a/tsconfig.web.base.json b/tsconfig.web.base.json new file mode 100644 index 0000000..eb57a0c --- /dev/null +++ b/tsconfig.web.base.json @@ -0,0 +1,25 @@ +{ + /** + * Bundler-first web role template for browser-facing leaves. + */ + "$schema": "https://json.schemastore.org/tsconfig", + + /** + * Reuse the root compiler-policy baseline and reopen only the browser-facing + * semantics that belong to bundler-first web leaves. + */ + "extends": "./tsconfig.base.json", + + "compilerOptions": { + /** + * Reopen browser libs only on web leaves. + */ + "lib": ["DOM", "DOM.Iterable", "ESNext", "ES2021.String"], + + /** + * Bundler-first web leaves usually delegate final JavaScript output to the + * bundler instead of the TypeScript compiler. + */ + "noEmit": true + } +}