From 0f5cdf4103950570cc3c63b8a866cae7d498ff63 Mon Sep 17 00:00:00 2001 From: zcf0508 Date: Sat, 13 Dec 2025 18:08:14 +0800 Subject: [PATCH 01/14] test(vscode): add e2e test --- .gitignore | 2 + extensions/vscode/package.json | 4 + extensions/vscode/tests/.vscode-test.js | 17 + extensions/vscode/tests/suite/utils.ts | 202 ++++ extensions/vscode/tests/suite/vue.test.ts | 13 + extensions/vscode/tests/tsconfig.json | 11 + extensions/vscode/tests/workspace/test.vue | 19 + .../vscode/tests/workspace/tsconfig.json | 20 + package.json | 4 +- pnpm-lock.yaml | 910 +++++++++++++++++- tsconfig.base.json | 3 +- 11 files changed, 1194 insertions(+), 11 deletions(-) create mode 100644 extensions/vscode/tests/.vscode-test.js create mode 100644 extensions/vscode/tests/suite/utils.ts create mode 100644 extensions/vscode/tests/suite/vue.test.ts create mode 100644 extensions/vscode/tests/tsconfig.json create mode 100644 extensions/vscode/tests/workspace/test.vue create mode 100644 extensions/vscode/tests/workspace/tsconfig.json diff --git a/.gitignore b/.gitignore index 24d132ebd7..0b9daf54f8 100644 --- a/.gitignore +++ b/.gitignore @@ -2,8 +2,10 @@ dist node_modules *.tsbuildinfo *.vsix +.vscode-test extensions/vscode/out +extensions/vscode/tests/out packages/*/*.d.ts packages/*/*.js packages/*/*.map diff --git a/extensions/vscode/package.json b/extensions/vscode/package.json index d7ab925c6b..e43abdda9d 100644 --- a/extensions/vscode/package.json +++ b/extensions/vscode/package.json @@ -473,6 +473,8 @@ }, "scripts": { "vscode:prepublish": "npm run build", + "pretest": "tsc --project ./tests/tsconfig.json && pnpm build", + "test": "vscode-test --config ./tests/.vscode-test.js", "build": "rolldown --config", "pack": "npx @vscode/vsce package", "gen-ext-meta": "vscode-ext-gen --scope vue --output src/generated-meta.ts && cd ../.. && npm run format" @@ -482,6 +484,8 @@ "@types/vscode": "1.88.0", "@volar/typescript": "2.4.27", "@volar/vscode": "2.4.27", + "@vscode/test-electron": "^2.5.2", + "@vscode/test-cli": "^0.0.12", "@vue/language-core": "workspace:*", "@vue/language-server": "workspace:*", "@vue/typescript-plugin": "workspace:*", diff --git a/extensions/vscode/tests/.vscode-test.js b/extensions/vscode/tests/.vscode-test.js new file mode 100644 index 0000000000..a1ce683ae8 --- /dev/null +++ b/extensions/vscode/tests/.vscode-test.js @@ -0,0 +1,17 @@ +const path = require('node:path'); +const { defineConfig } = require('@vscode/test-cli'); + +module.exports = defineConfig({ + extensionDevelopmentPath: path.join(__dirname, '../'), + workspaceFolder: path.join(__dirname, './workspace'), + + // Use a dedicated out dir for test JS files + files: ['out/**/*.test.js'], + + // Mocha options + mocha: { + ui: 'tdd', + timeout: 0, + color: true + } +}); diff --git a/extensions/vscode/tests/suite/utils.ts b/extensions/vscode/tests/suite/utils.ts new file mode 100644 index 0000000000..7ff5aa402e --- /dev/null +++ b/extensions/vscode/tests/suite/utils.ts @@ -0,0 +1,202 @@ +import * as assert from 'node:assert'; +import * as path from 'node:path'; +import * as vscode from 'vscode'; + +// Singleton document to be used across tests +let openDoc: vscode.TextDocument; + +const workspacePath = path.join(__dirname, '../workspace'); + +/** + * Opens a document in the test workspace. + * Sets the shared `openDoc` variable to the opened document. + * Waits until the TypeScript server provides the hover information. + */ +export async function openDocument(fileName: string): Promise { + const uri = vscode.Uri.file(path.join(workspacePath, fileName)); + + const doc = await vscode.workspace.openTextDocument(uri); + + await vscode.window.showTextDocument(doc); + + openDoc = doc; +} + +/** + * Ensures the TypeScript language server is fully initialized and ready to provide rich type information. + * + * This function works by: + * 1. Opening a 'canary.ts' file which contains a known type (`ServerReadinessProbe`). + * 2. Activating the 'prettify-ts' extension. + * 3. Repeatedly triggering a hover on the `ServerReadinessProbe` type. + * 4. Waiting until the hover content no longer shows a "loading..." message and includes + * detailed metadata (specifically, "a?: string" from the `ServerReadinessProbe` type). + * This indicates that the server has fully parsed the AST and is operational. + * + * @remarks + * This method of waiting for server readiness by inspecting hover content is a heuristic. + * More robust or direct methods for determining server readiness should be explored + * for better test stability and reliability. + */ +export async function ensureTypeScriptServerReady(fileName: string, keyword: string): Promise { + await openDocument(fileName); + + console.log('Waiting for TypeScript server to be ready...'); + + if (!openDoc) { + throw new Error(`Document ${fileName} was not opened successfully.`); + } + + const position = openDoc.positionAt(openDoc.getText().indexOf(keyword)); + + let attempt = 0; + const maxAttempts = 60; // Approx 30 seconds if each attempt is 500ms + const retryDelay = 500; // ms + + while (attempt < maxAttempts) { + attempt++; + const hovers = await vscode.commands.executeCommand( + 'vscode.executeHoverProvider', + openDoc.uri, + position, + ); + + // We are interested in the first hover provider, which is TypeScript's native hover. + const content = hovers[0]?.contents[0]; + if (!content) { + await new Promise(resolve => setTimeout(resolve, retryDelay)); + continue; + } + + const hover = typeof content === 'string' ? content : content.value; + + // Check for specific content indicating the server is ready and AST is parsed + // "a?: string" is part of the ServerReadinessProbe type definition in canary.ts + if (!hover.includes('loading') && hover.includes('a?: string')) { + console.log(`TypeScript server is ready after ${attempt} attempts.`); + return; // Server is ready + } + + if (attempt % 10 === 0) { + // Log progress occasionally + console.log(`Still waiting for TS server... Attempt ${attempt}.`); + } + await new Promise(resolve => setTimeout(resolve, retryDelay)); + } + throw new Error(`TypeScript server did not become ready after ${maxAttempts} attempts.`); +} + +/** + * Extension settings for Prettify TypeScript. + */ +type PrettifySettings = { + enabled?: boolean; + typeIndentation?: number; + maxCharacters?: number; + hidePrivateProperties?: boolean; + maxDepth?: number; + maxProperties?: number; + maxSubProperties?: number; + maxUnionMembers?: number; + maxFunctionSignatures?: number; + skippedTypeNames?: string[]; + unwrapArrays?: boolean; + unwrapFunctions?: boolean; + unwrapGenericArgumentsTypeNames?: string[]; +}; + +/** + * Applies the given settings to the Prettify TypeScript extension. + * If a setting is not provided, it will use the default value. + */ +export async function applySettings(overrides: PrettifySettings = {}) { + const config = vscode.workspace.getConfiguration('prettify-ts'); + + const defaults: Required = { + enabled: true, + typeIndentation: 4, + maxCharacters: 20000, + hidePrivateProperties: true, + maxDepth: 2, + maxProperties: 100, + maxSubProperties: 5, + maxUnionMembers: 15, + maxFunctionSignatures: 5, + skippedTypeNames: [], + unwrapArrays: true, + unwrapFunctions: true, + unwrapGenericArgumentsTypeNames: ['Promise'], + }; + + const merged = { ...defaults, ...overrides }; + + for (const key of Object.keys(merged) as (keyof PrettifySettings)[]) { + await config.update(key, merged[key], vscode.ConfigurationTarget.Workspace); + } +} + +/** + * Retrieves the hover information for a given keyword in the currently opened document. + * @returns {Promise} The prettified type string from the hover content with whitespace normalized. + */ +export async function getHover(keyword: string): Promise { + const position = openDoc.positionAt(openDoc.getText().indexOf(keyword) + 1); + + const hovers = await vscode.commands.executeCommand( + 'vscode.executeHoverProvider', + openDoc.uri, + position, + ); + + assert.ok(hovers, 'Expected hover results to be defined'); + assert.ok(hovers.length > 0, 'Expected at least one hover result'); + + return hovers + .map(hover => hover.contents[0]) + .filter(content => content !== undefined) + .map(content => (typeof content === 'string' ? content : content.value)) + .map(normalizeTypeString); // Normalize each hover content type string +} + +/** + * Cleans up a TypeScript type string by removing specific Markdown fences and normalizing whitespace. + * This function is used to ensure that the type string is in a clean format for comparison. + */ +function normalizeTypeString(input: string): string { + let type = input.trim(); + + // Remove the specific TypeScript Markdown fences + const leadingFence = '```typescript\n'; + const trailingFence = '\n```'; + + if (type.startsWith(leadingFence)) { + type = type.substring(leadingFence.length); + } + + if (type.endsWith(trailingFence)) { + type = type.substring(0, type.length - trailingFence.length); + } + + type = type + .replace(/\s+/g, ' ') // Collapse all whitespace (including newlines/tabs) to single spaces + .trim(); // Remove leading/trailing spaces + + // Remove a single trailing semicolon, if present + if (type.endsWith(';')) { + type = type.slice(0, -1).trim(); + } + + return type; +} + +/** + * Asserts that actual hover contents match the expected content + * after normalization (e.g. whitespace and Markdown fences removed). + */ +export function assertHover(hovers: string[], expected: string): void { + const normalizedExpected = normalizeTypeString(expected); + assert.ok( + hovers.includes(normalizedExpected), + `Expected hover content to be "${expected}", but got "${hovers.join(', ')}"`, + ); +} diff --git a/extensions/vscode/tests/suite/vue.test.ts b/extensions/vscode/tests/suite/vue.test.ts new file mode 100644 index 0000000000..d9e83fbde7 --- /dev/null +++ b/extensions/vscode/tests/suite/vue.test.ts @@ -0,0 +1,13 @@ +import { assertHover, ensureTypeScriptServerReady, getHover } from './utils'; + +suite('Vue Hover Types', () => { + suiteSetup(async function() { + await ensureTypeScriptServerReady('test.vue', 'ServerReadinessProbe'); + }); + + test('primitive', async () => { + const hover = await getHover('TestPrimitiveObj'); + const expected = `type TestPrimitiveObj = { value: string; }`; + assertHover(hover, expected); + }); +}); diff --git a/extensions/vscode/tests/tsconfig.json b/extensions/vscode/tests/tsconfig.json new file mode 100644 index 0000000000..4439a70d7a --- /dev/null +++ b/extensions/vscode/tests/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "./out", + "rootDir": "./suite", + "types": ["node", "mocha", "vscode"] + }, + "include": [ + "suite/**/*.ts" + ], +} diff --git a/extensions/vscode/tests/workspace/test.vue b/extensions/vscode/tests/workspace/test.vue new file mode 100644 index 0000000000..e3735ce344 --- /dev/null +++ b/extensions/vscode/tests/workspace/test.vue @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/extensions/vscode/tests/workspace/tsconfig.json b/extensions/vscode/tests/workspace/tsconfig.json new file mode 100644 index 0000000000..13bcc39ae5 --- /dev/null +++ b/extensions/vscode/tests/workspace/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "es2017", + "module": "commonjs", + "sourceMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "strictNullChecks": true, + "noUncheckedIndexedAccess": true, + }, + "include": [ + "**/*.ts", + "**/*.d.ts", + "**/*.tsx", + "**/*.vue" + ], + "exclude": ["node_modules"] +} diff --git a/package.json b/package.json index 81714620b3..b5bae74f6e 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "scripts": { "build": "tsgo -b", "watch": "tsgo -b -w", - "test": "npm run build && vitest run", + "test:vscode": "cd extensions/vscode && npm run test", + "test": "npm run build && vitest run && npm run test:vscode", "test:update": "npm run build && vitest run --update", "format": "dprint fmt", "lint": "tsslint --project {tsconfig.json,packages/*/tsconfig.json,extensions/*/tsconfig.json}", @@ -14,6 +15,7 @@ "@tsslint/cli": "3.0.0-alpha.0", "@tsslint/config": "3.0.0-alpha.0", "@tsslint/eslint": "3.0.0-alpha.0", + "@types/mocha": "^10.0.10", "@typescript-eslint/eslint-plugin": "latest", "@typescript/native-preview": "latest", "dprint": "latest", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0aa57a3251..3a80b0eac9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: '@tsslint/eslint': specifier: 3.0.0-alpha.0 version: 3.0.0-alpha.0(typescript@5.9.3) + '@types/mocha': + specifier: ^10.0.10 + version: 10.0.10 '@typescript-eslint/eslint-plugin': specifier: latest version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.27.0)(typescript@5.9.3))(eslint@9.27.0)(typescript@5.9.3) @@ -50,6 +53,12 @@ importers: '@volar/vscode': specifier: 2.4.27 version: 2.4.27 + '@vscode/test-cli': + specifier: ^0.0.12 + version: 0.0.12 + '@vscode/test-electron': + specifier: ^2.5.2 + version: 2.5.2 '@vue/language-core': specifier: workspace:* version: link:../../packages/language-core @@ -331,6 +340,10 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@1.0.2': + resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} + engines: {node: '>=18'} + '@clack/core@0.3.5': resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==} @@ -478,12 +491,27 @@ packages: resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} engines: {node: 20 || >=22} + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + '@johnsoncodehk/pug-beautify@0.2.2': resolution: {integrity: sha512-qqNS/YD0Nck5wtQLCPHAfGVgWbbGafxSPjNh0ekYPFSNNqnDH2kamnduzYly8IiADmeVx/MfAE1njMEjVeHTMA==} + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@napi-rs/wasm-runtime@1.1.0': resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} @@ -494,6 +522,10 @@ packages: '@oxc-project/types@0.102.0': resolution: {integrity: sha512-8Skrw405g+/UJPKWJ1twIk3BIH2nXdiVlVNtYT23AXVwpsd79es4K+KYt06Fbnkc5BaTvk/COT2JuCLYdwnCdA==} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@reactive-vscode/reactivity@0.4.1': resolution: {integrity: sha512-ThNXTkTNK9LHvdlBcyzqSywlfF61FIQDlVDqv12+rkRQCCUjWsD+oilbIYYi5uAJkQ2h/yLyowx3f0YVEY1bxQ==} @@ -611,9 +643,15 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/mocha@10.0.10': + resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} + '@types/node@22.19.2': resolution: {integrity: sha512-LPM2G3Syo1GLzXLGJAKdqoU35XvrWzGJ21/7sgZTUpbkBaOasTj8tjwn6w+hCkqaa1TfJ/w67rJSwYItlJ2mYw==} @@ -734,7 +772,7 @@ packages: resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} peerDependencies: msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0-0 + vite: beta peerDependenciesMeta: msw: optional: true @@ -791,6 +829,15 @@ packages: '@vscode/l10n@0.0.18': resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + '@vscode/test-cli@0.0.12': + resolution: {integrity: sha512-iYN0fDg29+a2Xelle/Y56Xvv7Nc8Thzq4VwpzAF/SIE6918rDicqfsQxV6w1ttr2+SOm+10laGuY9FG2ptEKsQ==} + engines: {node: '>=18'} + hasBin: true + + '@vscode/test-electron@2.5.2': + resolution: {integrity: sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==} + engines: {node: '>=16'} + '@vue/compiler-core@3.4.38': resolution: {integrity: sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==} @@ -889,16 +936,36 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} alien-signals@3.1.1: resolution: {integrity: sha512-ogkIWbVrLwKtHY6oOAXaYkAxP+cTH7V5FZ5+Tm4NZFd8VDZ6uNMDrfzqctTZ42eTMCSR3ne3otpcxmqSnFfPYA==} + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -909,12 +976,33 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + + c8@10.1.3: + resolution: {integrity: sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + monocart-coverage-reports: ^2 + peerDependenciesMeta: + monocart-coverage-reports: + optional: true + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -931,6 +1019,10 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + chai@6.2.1: resolution: {integrity: sha512-p4Z49OGG5W/WBCPSS/dH3jQ73kD6tiMmUM+bckNK6Jr5JHMG3k9bg/BvKR8lKmtVBKmOiuVaV2ws8s9oSbwysg==} engines: {node: '>=18'} @@ -939,9 +1031,33 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + character-parser@2.2.0: resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -952,6 +1068,12 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -968,6 +1090,10 @@ packages: supports-color: optional: true + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -975,6 +1101,10 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + diff@7.0.0: + resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} + engines: {node: '>=0.3.1'} + dprint@0.50.2: resolution: {integrity: sha512-+0Fzg+17jsMMUouK00/Fara5YtGOuE76EAJINHB8VpkXHd0n00rMXtw/03qorOgz23eo8Y0UpYvNZBJJo3aNtw==} hasBin: true @@ -983,9 +1113,25 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + emmet@2.4.11: resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enhanced-resolve@5.18.4: + resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} + engines: {node: '>=10.13.0'} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -1005,6 +1151,10 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1083,6 +1233,10 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -1091,9 +1245,17 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1102,6 +1264,14 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -1110,10 +1280,18 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + hasBin: true + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -1122,6 +1300,9 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -1138,6 +1319,21 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1146,6 +1342,9 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -1154,6 +1353,13 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-expression@4.0.0: resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} @@ -1161,17 +1367,67 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + is-regex@1.2.1: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true @@ -1191,6 +1447,9 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -1201,6 +1460,9 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + lightningcss-android-arm64@1.30.2: resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} engines: {node: '>= 12.0.0'} @@ -1278,13 +1540,32 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + minimatch@10.1.1: resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} engines: {node: 20 || >=22} @@ -1300,6 +1581,15 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mocha@11.7.5: + resolution: {integrity: sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1314,6 +1604,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -1321,10 +1615,18 @@ packages: obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@8.2.0: + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} + engines: {node: '>=18'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -1333,6 +1635,12 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1348,12 +1656,20 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} @@ -1366,6 +1682,9 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + pug-error@2.1.0: resolution: {integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==} @@ -1379,28 +1698,62 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + reactive-vscode@0.4.1: resolution: {integrity: sha512-meh1p9cF3A0kRKQARo84PASHwa27cFMD3bLWfV7DypERf51678f420my8btKAyMHl3P6pI7LcivrrwbfrIgmNg==} peerDependencies: '@types/vscode': ^1.101.0 + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + request-light@0.7.0: resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + rolldown@1.0.0-beta.54: resolution: {integrity: sha512-3lIvjCWgjPL3gmiATUdV1NeVBGJZy6FdtwgLPol25tAkn46Q/MsVGfCSNswXwFOxGrxglPaN20IeALSIFuFyEg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -1412,6 +1765,10 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -1425,14 +1782,57 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + engines: {node: '>=6'} + + test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -1448,6 +1848,10 @@ packages: resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} engines: {node: '>=14.0.0'} + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + token-stream@1.0.0: resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} @@ -1481,6 +1885,13 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + vite@8.0.0-beta.2: resolution: {integrity: sha512-PIkpGhNy7r5r6Sepwo07BDWf8vr6O4CXVBm+vg7aIpswvL0VNGTjok1qiNRypcqT9dhFQJggtPoubZwXM7yeAQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1686,6 +2097,33 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + workerpool@9.3.4: + resolution: {integrity: sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -1705,6 +2143,8 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@bcoe/v8-coverage@1.0.2': {} + '@clack/core@0.3.5': dependencies: picocolors: 1.1.1 @@ -1792,7 +2232,7 @@ snapshots: '@eslint/config-array@0.20.1': dependencies: '@eslint/object-schema': 2.1.7 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -1810,7 +2250,7 @@ snapshots: '@eslint/eslintrc@3.3.3': dependencies: ajv: 6.12.6 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -1847,10 +2287,28 @@ snapshots: dependencies: '@isaacs/balanced-match': 4.0.1 + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.2 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/schema@0.1.3': {} + '@johnsoncodehk/pug-beautify@0.2.2': {} + '@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@1.1.0': dependencies: '@emnapi/core': 1.7.1 @@ -1862,6 +2320,9 @@ snapshots: '@oxc-project/types@0.102.0': {} + '@pkgjs/parseargs@0.11.0': + optional: true + '@reactive-vscode/reactivity@0.4.1': {} '@rolldown/binding-android-arm64@1.0.0-beta.54': @@ -1959,8 +2420,12 @@ snapshots: '@types/estree@1.0.8': {} + '@types/istanbul-lib-coverage@2.0.6': {} + '@types/json-schema@7.0.15': {} + '@types/mocha@10.0.10': {} + '@types/node@22.19.2': dependencies: undici-types: 6.21.0 @@ -1993,7 +2458,7 @@ snapshots: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.49.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) eslint: 9.27.0 typescript: 5.9.3 transitivePeerDependencies: @@ -2003,7 +2468,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) '@typescript-eslint/types': 8.49.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -2022,7 +2487,7 @@ snapshots: '@typescript-eslint/types': 8.49.0 '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3) '@typescript-eslint/utils': 8.49.0(eslint@9.27.0)(typescript@5.9.3) - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) eslint: 9.27.0 ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 @@ -2037,7 +2502,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) '@typescript-eslint/types': 8.49.0 '@typescript-eslint/visitor-keys': 8.49.0 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) minimatch: 9.0.5 semver: 7.7.3 tinyglobby: 0.2.15 @@ -2199,6 +2664,30 @@ snapshots: '@vscode/l10n@0.0.18': {} + '@vscode/test-cli@0.0.12': + dependencies: + '@types/mocha': 10.0.10 + c8: 10.1.3 + chokidar: 3.6.0 + enhanced-resolve: 5.18.4 + glob: 10.5.0 + minimatch: 9.0.5 + mocha: 11.7.5 + supports-color: 10.2.2 + yargs: 17.7.2 + transitivePeerDependencies: + - monocart-coverage-reports + + '@vscode/test-electron@2.5.2': + dependencies: + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + jszip: 3.10.1 + ora: 8.2.0 + semver: 7.7.3 + transitivePeerDependencies: + - supports-color + '@vue/compiler-core@3.4.38': dependencies: '@babel/parser': 7.28.5 @@ -2347,6 +2836,8 @@ snapshots: acorn@8.15.0: {} + agent-base@7.1.4: {} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -2356,16 +2847,29 @@ snapshots: alien-signals@3.1.1: {} + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 + ansi-styles@6.2.3: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + argparse@2.0.1: {} assertion-error@2.0.1: {} balanced-match@1.0.2: {} + binary-extensions@2.3.0: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -2375,6 +2879,26 @@ snapshots: dependencies: balanced-match: 1.0.2 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-stdout@1.3.1: {} + + c8@10.1.3: + dependencies: + '@bcoe/v8-coverage': 1.0.2 + '@istanbuljs/schema': 0.1.3 + find-up: 5.0.0 + foreground-child: 3.3.1 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-reports: 3.2.0 + test-exclude: 7.0.1 + v8-to-istanbul: 9.3.0 + yargs: 17.7.2 + yargs-parser: 21.1.1 + cac@6.7.14: {} call-bind-apply-helpers@1.0.2: @@ -2389,6 +2913,8 @@ snapshots: callsites@3.1.0: {} + camelcase@6.3.0: {} + chai@6.2.1: {} chalk@4.1.2: @@ -2396,10 +2922,40 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + character-parser@2.2.0: dependencies: is-regex: 1.2.1 + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + 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 + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -2408,6 +2964,10 @@ snapshots: concat-map@0.0.1: {} + convert-source-map@2.0.0: {} + + core-util-is@1.0.3: {} + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -2416,14 +2976,20 @@ snapshots: csstype@3.2.3: {} - debug@4.4.3: + debug@4.4.3(supports-color@8.1.1): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@4.0.0: {} deep-is@0.1.4: {} detect-libc@2.1.2: {} + diff@7.0.0: {} + dprint@0.50.2: optionalDependencies: '@dprint/darwin-arm64': 0.50.2 @@ -2442,11 +3008,24 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + eastasianwidth@0.2.0: {} + emmet@2.4.11: dependencies: '@emmetio/abbreviation': 2.3.3 '@emmetio/css-abbreviation': 2.1.8 + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + enhanced-resolve@5.18.4: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.0 + entities@4.5.0: {} es-define-property@1.0.1: {} @@ -2459,6 +3038,8 @@ snapshots: dependencies: es-errors: 1.3.0 + escalade@3.2.0: {} + escape-string-regexp@4.0.0: {} eslint-scope@8.4.0: @@ -2488,7 +3069,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.3 + debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -2550,6 +3131,10 @@ snapshots: 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 @@ -2560,13 +3145,24 @@ snapshots: flatted: 3.3.3 keyv: 4.5.4 + flat@5.0.2: {} + flatted@3.3.3: {} + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + fsevents@2.3.3: optional: true function-bind@1.1.2: {} + get-caller-file@2.0.5: {} + + get-east-asian-width@1.4.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -2585,14 +3181,29 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + globals@14.0.0: {} gopd@1.2.0: {} + graceful-fs@4.2.11: {} + has-flag@4.0.0: {} has-symbols@1.1.0: {} @@ -2605,10 +3216,30 @@ snapshots: dependencies: function-bind: 1.1.2 + he@1.2.0: {} + + html-escaper@2.0.2: {} + + 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 + ignore@5.3.2: {} ignore@7.0.5: {} + immediate@3.0.6: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -2616,6 +3247,12 @@ snapshots: imurmurhash@0.1.4: {} + inherits@2.0.4: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-expression@4.0.0: dependencies: acorn: 7.4.1 @@ -2623,10 +3260,20 @@ snapshots: is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 + is-interactive@2.0.0: {} + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@2.1.0: {} + is-regex@1.2.1: dependencies: call-bound: 1.0.4 @@ -2634,8 +3281,35 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 + is-unicode-supported@0.1.0: {} + + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.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 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -2650,6 +3324,13 @@ snapshots: jsonc-parser@3.3.1: {} + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -2661,6 +3342,10 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lie@3.3.0: + dependencies: + immediate: 3.0.6 + lightningcss-android-arm64@1.30.2: optional: true @@ -2716,12 +3401,30 @@ snapshots: lodash.merge@4.6.2: {} + 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: {} + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + make-dir@4.0.0: + dependencies: + semver: 7.7.3 + math-intrinsics@1.1.0: {} + mimic-function@5.0.1: {} + minimatch@10.1.1: dependencies: '@isaacs/brace-expansion': 5.0.0 @@ -2738,6 +3441,32 @@ snapshots: dependencies: brace-expansion: 2.0.2 + minipass@7.1.2: {} + + mocha@11.7.5: + dependencies: + browser-stdout: 1.3.1 + chokidar: 4.0.3 + debug: 4.4.3(supports-color@8.1.1) + diff: 7.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 10.5.0 + he: 1.2.0 + is-path-inside: 3.0.3 + js-yaml: 4.1.1 + log-symbols: 4.1.0 + minimatch: 9.0.5 + ms: 2.1.3 + picocolors: 1.1.1 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 9.3.4 + yargs: 17.7.2 + yargs-parser: 21.1.1 + yargs-unparser: 2.0.0 + ms@2.1.3: {} muggle-string@0.4.1: {} @@ -2746,10 +3475,16 @@ snapshots: natural-compare@1.4.0: {} + normalize-path@3.0.0: {} + object-assign@4.1.1: {} obug@2.1.1: {} + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -2759,6 +3494,18 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + 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.1.2 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -2767,6 +3514,10 @@ snapshots: dependencies: p-limit: 3.1.0 + package-json-from-dist@1.0.1: {} + + pako@1.0.11: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -2777,10 +3528,17 @@ snapshots: path-key@3.1.1: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + pathe@2.0.3: {} picocolors@1.1.1: {} + picomatch@2.3.1: {} + picomatch@4.0.3: {} postcss@8.5.6: @@ -2791,6 +3549,8 @@ snapshots: prelude-ls@1.2.1: {} + process-nextick-args@2.0.1: {} + pug-error@2.1.0: {} pug-lexer@5.0.1: @@ -2806,15 +3566,42 @@ snapshots: punycode@2.3.1: {} + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + reactive-vscode@0.4.1(@types/vscode@1.88.0): dependencies: '@reactive-vscode/reactivity': 0.4.1 '@types/vscode': 1.88.0 + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.1.2: {} + request-light@0.7.0: {} + require-directory@2.1.1: {} + resolve-from@4.0.0: {} + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + rolldown@1.0.0-beta.54: dependencies: '@oxc-project/types': 0.102.0 @@ -2834,8 +3621,18 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.54 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.54 + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + semver@7.7.3: {} + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + setimmediate@1.0.5: {} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -2844,6 +3641,8 @@ snapshots: siginfo@2.0.0: {} + signal-exit@4.1.0: {} + sisteransi@1.0.5: {} source-map-js@1.2.1: {} @@ -2852,12 +3651,58 @@ snapshots: std-env@3.10.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@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.2 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + strip-json-comments@3.1.1: {} + supports-color@10.2.2: {} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + tapable@2.3.0: {} + + test-exclude@7.0.1: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 10.5.0 + minimatch: 9.0.5 + tinybench@2.9.0: {} tinyexec@1.0.2: {} @@ -2869,6 +3714,10 @@ snapshots: tinyrainbow@3.0.3: {} + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + token-stream@1.0.0: {} ts-api-utils@2.1.0(typescript@5.9.3): @@ -2896,6 +3745,14 @@ snapshots: dependencies: punycode: 2.3.1 + util-deprecate@1.0.2: {} + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.31 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + vite@8.0.0-beta.2(@types/node@22.19.2): dependencies: '@oxc-project/runtime': 0.102.0 @@ -3096,4 +3953,39 @@ snapshots: 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 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.1.2 + + y18n@5.0.8: {} + + 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 + yocto-queue@0.1.0: {} diff --git a/tsconfig.base.json b/tsconfig.base.json index 8e7bf27af5..0a13d9dcf3 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -11,7 +11,8 @@ "noUnusedParameters": true, "esModuleInterop": false, "forceConsistentCasingInFileNames": true, - "noUncheckedIndexedAccess": true + "noUncheckedIndexedAccess": true, + "types": ["mocha"] }, "include": [] } From c9ee803f04d1430bfc12e8c7135569e3583427c9 Mon Sep 17 00:00:00 2001 From: zcf0508 Date: Sat, 13 Dec 2025 18:21:07 +0800 Subject: [PATCH 02/14] chore: format --- extensions/vscode/tests/.vscode-test.js | 20 +++++------ extensions/vscode/tests/tsconfig.json | 18 +++++----- .../vscode/tests/workspace/tsconfig.json | 36 +++++++++---------- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/extensions/vscode/tests/.vscode-test.js b/extensions/vscode/tests/.vscode-test.js index a1ce683ae8..f1c39d1eef 100644 --- a/extensions/vscode/tests/.vscode-test.js +++ b/extensions/vscode/tests/.vscode-test.js @@ -2,16 +2,16 @@ const path = require('node:path'); const { defineConfig } = require('@vscode/test-cli'); module.exports = defineConfig({ - extensionDevelopmentPath: path.join(__dirname, '../'), - workspaceFolder: path.join(__dirname, './workspace'), + extensionDevelopmentPath: path.join(__dirname, '../'), + workspaceFolder: path.join(__dirname, './workspace'), - // Use a dedicated out dir for test JS files - files: ['out/**/*.test.js'], + // Use a dedicated out dir for test JS files + files: ['out/**/*.test.js'], - // Mocha options - mocha: { - ui: 'tdd', - timeout: 0, - color: true - } + // Mocha options + mocha: { + ui: 'tdd', + timeout: 0, + color: true, + }, }); diff --git a/extensions/vscode/tests/tsconfig.json b/extensions/vscode/tests/tsconfig.json index 4439a70d7a..9c6e2a2e57 100644 --- a/extensions/vscode/tests/tsconfig.json +++ b/extensions/vscode/tests/tsconfig.json @@ -1,11 +1,11 @@ { - "extends": "../tsconfig.json", - "compilerOptions": { - "outDir": "./out", - "rootDir": "./suite", - "types": ["node", "mocha", "vscode"] - }, - "include": [ - "suite/**/*.ts" - ], + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "./out", + "rootDir": "./suite", + "types": ["node", "mocha", "vscode"] + }, + "include": [ + "suite/**/*.ts" + ] } diff --git a/extensions/vscode/tests/workspace/tsconfig.json b/extensions/vscode/tests/workspace/tsconfig.json index 13bcc39ae5..3486526fa1 100644 --- a/extensions/vscode/tests/workspace/tsconfig.json +++ b/extensions/vscode/tests/workspace/tsconfig.json @@ -1,20 +1,20 @@ { - "compilerOptions": { - "target": "es2017", - "module": "commonjs", - "sourceMap": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "skipLibCheck": true, - "strictNullChecks": true, - "noUncheckedIndexedAccess": true, - }, - "include": [ - "**/*.ts", - "**/*.d.ts", - "**/*.tsx", - "**/*.vue" - ], - "exclude": ["node_modules"] + "compilerOptions": { + "target": "es2017", + "module": "commonjs", + "sourceMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "strictNullChecks": true, + "noUncheckedIndexedAccess": true + }, + "include": [ + "**/*.ts", + "**/*.d.ts", + "**/*.tsx", + "**/*.vue" + ], + "exclude": ["node_modules"] } From 05aaedae243eac4cc8b9db4ec139fb589d547c9d Mon Sep 17 00:00:00 2001 From: zcf0508 Date: Sat, 13 Dec 2025 18:28:11 +0800 Subject: [PATCH 03/14] chore: removes unused code --- extensions/vscode/tests/suite/utils.ts | 38 -------------------------- 1 file changed, 38 deletions(-) diff --git a/extensions/vscode/tests/suite/utils.ts b/extensions/vscode/tests/suite/utils.ts index 7ff5aa402e..d2ff2b3765 100644 --- a/extensions/vscode/tests/suite/utils.ts +++ b/extensions/vscode/tests/suite/utils.ts @@ -25,14 +25,6 @@ export async function openDocument(fileName: string): Promise { /** * Ensures the TypeScript language server is fully initialized and ready to provide rich type information. * - * This function works by: - * 1. Opening a 'canary.ts' file which contains a known type (`ServerReadinessProbe`). - * 2. Activating the 'prettify-ts' extension. - * 3. Repeatedly triggering a hover on the `ServerReadinessProbe` type. - * 4. Waiting until the hover content no longer shows a "loading..." message and includes - * detailed metadata (specifically, "a?: string" from the `ServerReadinessProbe` type). - * This indicates that the server has fully parsed the AST and is operational. - * * @remarks * This method of waiting for server readiness by inspecting hover content is a heuristic. * More robust or direct methods for determining server readiness should be explored @@ -105,36 +97,6 @@ type PrettifySettings = { unwrapGenericArgumentsTypeNames?: string[]; }; -/** - * Applies the given settings to the Prettify TypeScript extension. - * If a setting is not provided, it will use the default value. - */ -export async function applySettings(overrides: PrettifySettings = {}) { - const config = vscode.workspace.getConfiguration('prettify-ts'); - - const defaults: Required = { - enabled: true, - typeIndentation: 4, - maxCharacters: 20000, - hidePrivateProperties: true, - maxDepth: 2, - maxProperties: 100, - maxSubProperties: 5, - maxUnionMembers: 15, - maxFunctionSignatures: 5, - skippedTypeNames: [], - unwrapArrays: true, - unwrapFunctions: true, - unwrapGenericArgumentsTypeNames: ['Promise'], - }; - - const merged = { ...defaults, ...overrides }; - - for (const key of Object.keys(merged) as (keyof PrettifySettings)[]) { - await config.update(key, merged[key], vscode.ConfigurationTarget.Workspace); - } -} - /** * Retrieves the hover information for a given keyword in the currently opened document. * @returns {Promise} The prettified type string from the hover content with whitespace normalized. From 955ba494d65d15357ed9f5791b5ba41c9bae0c66 Mon Sep 17 00:00:00 2001 From: zcf0508 Date: Sat, 13 Dec 2025 23:30:36 +0800 Subject: [PATCH 04/14] fix: build error --- .github/workflows/test.yml | 2 ++ extensions/vscode/tests/suite/utils.ts | 38 ++++++++++------------- extensions/vscode/tests/suite/vue.test.ts | 7 +++-- extensions/vscode/tsconfig.json | 3 +- package.json | 2 +- tsconfig.base.json | 3 +- 6 files changed, 28 insertions(+), 27 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 88d570d2ab..32173abcd6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,3 +23,5 @@ jobs: - run: pnpm install --frozen-lockfile - run: npm run test + + - run: npm run test:vscode diff --git a/extensions/vscode/tests/suite/utils.ts b/extensions/vscode/tests/suite/utils.ts index d2ff2b3765..9bf0c873ce 100644 --- a/extensions/vscode/tests/suite/utils.ts +++ b/extensions/vscode/tests/suite/utils.ts @@ -78,31 +78,14 @@ export async function ensureTypeScriptServerReady(fileName: string, keyword: str throw new Error(`TypeScript server did not become ready after ${maxAttempts} attempts.`); } -/** - * Extension settings for Prettify TypeScript. - */ -type PrettifySettings = { - enabled?: boolean; - typeIndentation?: number; - maxCharacters?: number; - hidePrivateProperties?: boolean; - maxDepth?: number; - maxProperties?: number; - maxSubProperties?: number; - maxUnionMembers?: number; - maxFunctionSignatures?: number; - skippedTypeNames?: string[]; - unwrapArrays?: boolean; - unwrapFunctions?: boolean; - unwrapGenericArgumentsTypeNames?: string[]; -}; - /** * Retrieves the hover information for a given keyword in the currently opened document. * @returns {Promise} The prettified type string from the hover content with whitespace normalized. */ -export async function getHover(keyword: string): Promise { - const position = openDoc.positionAt(openDoc.getText().indexOf(keyword) + 1); +export async function getHover( + getPosition: (doc: vscode.TextDocument) => vscode.Position, +): Promise { + const position = getPosition(openDoc); const hovers = await vscode.commands.executeCommand( 'vscode.executeHoverProvider', @@ -162,3 +145,16 @@ export function assertHover(hovers: string[], expected: string): void { `Expected hover content to be "${expected}", but got "${hovers.join(', ')}"`, ); } + +/** + * Returns the index of the nth occurrence of a pattern in a string. + * @returns The index of the nth match, or -1 if not found. + */ +export function nthIndex(str: string, pattern: string, n: number): number { + let index = -1; + for (let i = 0; i < n; i++) { + index = str.indexOf(pattern, index + 1); + if (index === -1) break; + } + return index; +} diff --git a/extensions/vscode/tests/suite/vue.test.ts b/extensions/vscode/tests/suite/vue.test.ts index d9e83fbde7..a2d7c90232 100644 --- a/extensions/vscode/tests/suite/vue.test.ts +++ b/extensions/vscode/tests/suite/vue.test.ts @@ -1,4 +1,4 @@ -import { assertHover, ensureTypeScriptServerReady, getHover } from './utils'; +import { assertHover, ensureTypeScriptServerReady, getHover, nthIndex } from './utils'; suite('Vue Hover Types', () => { suiteSetup(async function() { @@ -6,7 +6,10 @@ suite('Vue Hover Types', () => { }); test('primitive', async () => { - const hover = await getHover('TestPrimitiveObj'); + const hover = await getHover( + doc => doc.positionAt(nthIndex(doc.getText(), 'TestPrimitiveObj', 1) + 1), + ); + const expected = `type TestPrimitiveObj = { value: string; }`; assertHover(hover, expected); }); diff --git a/extensions/vscode/tsconfig.json b/extensions/vscode/tsconfig.json index 43f4d046d0..51b0ae1533 100644 --- a/extensions/vscode/tsconfig.json +++ b/extensions/vscode/tsconfig.json @@ -5,7 +5,8 @@ "outDir": "out", "rootDir": "src", "module": "CommonJS", - "moduleResolution": "Node" + "moduleResolution": "Node", + "types": ["mocha"] }, "references": [ { "path": "../../packages/language-core/tsconfig.json" }, diff --git a/package.json b/package.json index b5bae74f6e..875ca5b1e8 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "build": "tsgo -b", "watch": "tsgo -b -w", "test:vscode": "cd extensions/vscode && npm run test", - "test": "npm run build && vitest run && npm run test:vscode", + "test": "npm run build && vitest run", "test:update": "npm run build && vitest run --update", "format": "dprint fmt", "lint": "tsslint --project {tsconfig.json,packages/*/tsconfig.json,extensions/*/tsconfig.json}", diff --git a/tsconfig.base.json b/tsconfig.base.json index 0a13d9dcf3..8e7bf27af5 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -11,8 +11,7 @@ "noUnusedParameters": true, "esModuleInterop": false, "forceConsistentCasingInFileNames": true, - "noUncheckedIndexedAccess": true, - "types": ["mocha"] + "noUncheckedIndexedAccess": true }, "include": [] } From 917c6b78cf0c669b7846993ad1dc47cfa6960515 Mon Sep 17 00:00:00 2001 From: zcf0508 Date: Sat, 13 Dec 2025 23:42:28 +0800 Subject: [PATCH 05/14] fix: test fail --- extensions/vscode/package.json | 1 + package.json | 1 - pnpm-lock.yaml | 8 ++++---- vitest.config.ts | 4 ++++ 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/extensions/vscode/package.json b/extensions/vscode/package.json index e43abdda9d..06c79d47d8 100644 --- a/extensions/vscode/package.json +++ b/extensions/vscode/package.json @@ -480,6 +480,7 @@ "gen-ext-meta": "vscode-ext-gen --scope vue --output src/generated-meta.ts && cd ../.. && npm run format" }, "devDependencies": { + "@types/mocha": "^10.0.10", "@types/node": "^22.10.4", "@types/vscode": "1.88.0", "@volar/typescript": "2.4.27", diff --git a/package.json b/package.json index 875ca5b1e8..63b794939d 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "@tsslint/cli": "3.0.0-alpha.0", "@tsslint/config": "3.0.0-alpha.0", "@tsslint/eslint": "3.0.0-alpha.0", - "@types/mocha": "^10.0.10", "@typescript-eslint/eslint-plugin": "latest", "@typescript/native-preview": "latest", "dprint": "latest", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3a80b0eac9..a45c2ffd62 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,9 +20,6 @@ importers: '@tsslint/eslint': specifier: 3.0.0-alpha.0 version: 3.0.0-alpha.0(typescript@5.9.3) - '@types/mocha': - specifier: ^10.0.10 - version: 10.0.10 '@typescript-eslint/eslint-plugin': specifier: latest version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.27.0)(typescript@5.9.3))(eslint@9.27.0)(typescript@5.9.3) @@ -41,6 +38,9 @@ importers: extensions/vscode: devDependencies: + '@types/mocha': + specifier: ^10.0.10 + version: 10.0.10 '@types/node': specifier: ^22.10.4 version: 22.19.2 @@ -772,7 +772,7 @@ packages: resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} peerDependencies: msw: ^2.4.9 - vite: beta + vite: ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: msw: optional: true diff --git a/vitest.config.ts b/vitest.config.ts index 54b31ab673..34470e7445 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -9,5 +9,9 @@ export default defineConfig({ isolate: false, }, }, + exclude: [ + 'extensions/vscode/tests/out/**/*', + 'extensions/vscode/tests/suite/**/*', + ], }, }); From 50ed24f85e08e09dca885c17dcd2995ada0f2963 Mon Sep 17 00:00:00 2001 From: zcf0508 Date: Sun, 14 Dec 2025 00:03:39 +0800 Subject: [PATCH 06/14] fix: test fail --- vitest.config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vitest.config.ts b/vitest.config.ts index 34470e7445..b5608f4eb7 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -9,9 +9,9 @@ export default defineConfig({ isolate: false, }, }, - exclude: [ - 'extensions/vscode/tests/out/**/*', - 'extensions/vscode/tests/suite/**/*', + include: [ + 'packages/**/*.spec.*', + 'extensions/vscode/**/*.spec.*', ], }, }); From 262fd12ec9916c2215d922c0a77c1c7a7776c128 Mon Sep 17 00:00:00 2001 From: zcf0508 Date: Sun, 14 Dec 2025 00:10:25 +0800 Subject: [PATCH 07/14] fix: test fail --- vitest.config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vitest.config.ts b/vitest.config.ts index b5608f4eb7..a1decbf257 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -10,8 +10,8 @@ export default defineConfig({ }, }, include: [ - 'packages/**/*.spec.*', - 'extensions/vscode/**/*.spec.*', + 'packages/**/*.spec.?(c|m)[jt]s?(x)', + 'extensions/vscode/**/*.spec.?(c|m)[jt]s?(x)', ], }, }); From f7f81686c653284aecfaf98ba781749bf88082a7 Mon Sep 17 00:00:00 2001 From: zcf0508 Date: Sun, 14 Dec 2025 00:14:18 +0800 Subject: [PATCH 08/14] fix: test fail --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 32173abcd6..b1695c252c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,4 +24,4 @@ jobs: - run: npm run test - - run: npm run test:vscode + - run: xvfb-run -a npm run test:vscode From 44f7a9985ad1bb7d2bec312c9934bad81ec8567e Mon Sep 17 00:00:00 2001 From: zcf0508 Date: Sun, 14 Dec 2025 00:18:13 +0800 Subject: [PATCH 09/14] fix: test fail --- .github/workflows/test.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b1695c252c..66e5883a9b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,3 +25,7 @@ jobs: - run: npm run test - run: xvfb-run -a npm run test:vscode + if: runner.os == 'Linux' + + - run: npm run test:vscode + if: runner.os != 'Linux' From d83f3e7baf0757122f12ccb457e6ca4b9b273e08 Mon Sep 17 00:00:00 2001 From: zcf0508 Date: Sun, 14 Dec 2025 00:44:17 +0800 Subject: [PATCH 10/14] refactor: avoid conflicts between e2e tests and vitest --- extensions/vscode/tests/.vscode-test.js | 2 +- .../vscode/tests/suite/{vue.test.ts => vue.e2e-test.ts} | 0 extensions/vscode/tests/tsconfig.json | 2 +- vitest.config.ts | 4 ---- 4 files changed, 2 insertions(+), 6 deletions(-) rename extensions/vscode/tests/suite/{vue.test.ts => vue.e2e-test.ts} (100%) diff --git a/extensions/vscode/tests/.vscode-test.js b/extensions/vscode/tests/.vscode-test.js index f1c39d1eef..4c81f8beff 100644 --- a/extensions/vscode/tests/.vscode-test.js +++ b/extensions/vscode/tests/.vscode-test.js @@ -6,7 +6,7 @@ module.exports = defineConfig({ workspaceFolder: path.join(__dirname, './workspace'), // Use a dedicated out dir for test JS files - files: ['out/**/*.test.js'], + files: ['out/**/*.e2e-test.js'], // Mocha options mocha: { diff --git a/extensions/vscode/tests/suite/vue.test.ts b/extensions/vscode/tests/suite/vue.e2e-test.ts similarity index 100% rename from extensions/vscode/tests/suite/vue.test.ts rename to extensions/vscode/tests/suite/vue.e2e-test.ts diff --git a/extensions/vscode/tests/tsconfig.json b/extensions/vscode/tests/tsconfig.json index 9c6e2a2e57..9cda924f13 100644 --- a/extensions/vscode/tests/tsconfig.json +++ b/extensions/vscode/tests/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../../../tsconfig.base.json", "compilerOptions": { "outDir": "./out", "rootDir": "./suite", diff --git a/vitest.config.ts b/vitest.config.ts index a1decbf257..54b31ab673 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -9,9 +9,5 @@ export default defineConfig({ isolate: false, }, }, - include: [ - 'packages/**/*.spec.?(c|m)[jt]s?(x)', - 'extensions/vscode/**/*.spec.?(c|m)[jt]s?(x)', - ], }, }); From 34204045d3a6a36d99fda7ccee634a4141e4b45c Mon Sep 17 00:00:00 2001 From: zcf0508 Date: Sun, 14 Dec 2025 01:22:19 +0800 Subject: [PATCH 11/14] refactor: move test files to `e2e` directory --- .gitignore | 2 +- extensions/vscode/{tests => e2e}/.vscode-test.js | 0 extensions/vscode/{tests => e2e}/suite/utils.ts | 0 extensions/vscode/{tests => e2e}/suite/vue.e2e-test.ts | 0 extensions/vscode/{tests => e2e}/tsconfig.json | 0 extensions/vscode/{tests => e2e}/workspace/test.vue | 0 extensions/vscode/{tests => e2e}/workspace/tsconfig.json | 0 extensions/vscode/package.json | 4 ++-- extensions/vscode/tsconfig.json | 3 +-- 9 files changed, 4 insertions(+), 5 deletions(-) rename extensions/vscode/{tests => e2e}/.vscode-test.js (100%) rename extensions/vscode/{tests => e2e}/suite/utils.ts (100%) rename extensions/vscode/{tests => e2e}/suite/vue.e2e-test.ts (100%) rename extensions/vscode/{tests => e2e}/tsconfig.json (100%) rename extensions/vscode/{tests => e2e}/workspace/test.vue (100%) rename extensions/vscode/{tests => e2e}/workspace/tsconfig.json (100%) diff --git a/.gitignore b/.gitignore index 0b9daf54f8..15fef90bc1 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ node_modules .vscode-test extensions/vscode/out -extensions/vscode/tests/out +extensions/vscode/e2e/out packages/*/*.d.ts packages/*/*.js packages/*/*.map diff --git a/extensions/vscode/tests/.vscode-test.js b/extensions/vscode/e2e/.vscode-test.js similarity index 100% rename from extensions/vscode/tests/.vscode-test.js rename to extensions/vscode/e2e/.vscode-test.js diff --git a/extensions/vscode/tests/suite/utils.ts b/extensions/vscode/e2e/suite/utils.ts similarity index 100% rename from extensions/vscode/tests/suite/utils.ts rename to extensions/vscode/e2e/suite/utils.ts diff --git a/extensions/vscode/tests/suite/vue.e2e-test.ts b/extensions/vscode/e2e/suite/vue.e2e-test.ts similarity index 100% rename from extensions/vscode/tests/suite/vue.e2e-test.ts rename to extensions/vscode/e2e/suite/vue.e2e-test.ts diff --git a/extensions/vscode/tests/tsconfig.json b/extensions/vscode/e2e/tsconfig.json similarity index 100% rename from extensions/vscode/tests/tsconfig.json rename to extensions/vscode/e2e/tsconfig.json diff --git a/extensions/vscode/tests/workspace/test.vue b/extensions/vscode/e2e/workspace/test.vue similarity index 100% rename from extensions/vscode/tests/workspace/test.vue rename to extensions/vscode/e2e/workspace/test.vue diff --git a/extensions/vscode/tests/workspace/tsconfig.json b/extensions/vscode/e2e/workspace/tsconfig.json similarity index 100% rename from extensions/vscode/tests/workspace/tsconfig.json rename to extensions/vscode/e2e/workspace/tsconfig.json diff --git a/extensions/vscode/package.json b/extensions/vscode/package.json index 06c79d47d8..9a893cea71 100644 --- a/extensions/vscode/package.json +++ b/extensions/vscode/package.json @@ -473,8 +473,8 @@ }, "scripts": { "vscode:prepublish": "npm run build", - "pretest": "tsc --project ./tests/tsconfig.json && pnpm build", - "test": "vscode-test --config ./tests/.vscode-test.js", + "pretest": "tsc --project ./e2e/tsconfig.json && pnpm build", + "test": "vscode-test --config ./e2e/.vscode-test.js", "build": "rolldown --config", "pack": "npx @vscode/vsce package", "gen-ext-meta": "vscode-ext-gen --scope vue --output src/generated-meta.ts && cd ../.. && npm run format" diff --git a/extensions/vscode/tsconfig.json b/extensions/vscode/tsconfig.json index 51b0ae1533..43f4d046d0 100644 --- a/extensions/vscode/tsconfig.json +++ b/extensions/vscode/tsconfig.json @@ -5,8 +5,7 @@ "outDir": "out", "rootDir": "src", "module": "CommonJS", - "moduleResolution": "Node", - "types": ["mocha"] + "moduleResolution": "Node" }, "references": [ { "path": "../../packages/language-core/tsconfig.json" }, From 2da7b3a7cb287efc87a0151a0bbb6c7d357efd38 Mon Sep 17 00:00:00 2001 From: zcf0508 Date: Sun, 14 Dec 2025 09:26:18 +0800 Subject: [PATCH 12/14] chore: update script and lock file --- extensions/vscode/package.json | 2 +- pnpm-lock.yaml | 102 ++++++++++++++++----------------- 2 files changed, 52 insertions(+), 52 deletions(-) diff --git a/extensions/vscode/package.json b/extensions/vscode/package.json index 9a893cea71..600b03312a 100644 --- a/extensions/vscode/package.json +++ b/extensions/vscode/package.json @@ -473,7 +473,7 @@ }, "scripts": { "vscode:prepublish": "npm run build", - "pretest": "tsc --project ./e2e/tsconfig.json && pnpm build", + "pretest": "tsgo --project ./e2e/tsconfig.json && pnpm build", "test": "vscode-test --config ./e2e/.vscode-test.js", "build": "rolldown --config", "pack": "npx @vscode/vsce package", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49378cbf4e..bebb48e52d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,7 +25,7 @@ importers: version: 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.27.0)(typescript@5.9.3))(eslint@9.27.0)(typescript@5.9.3) '@typescript/native-preview': specifier: latest - version: 7.0.0-dev.20251212.1 + version: 7.0.0-dev.20251213.1 dprint: specifier: latest version: 0.50.2 @@ -34,7 +34,7 @@ importers: version: 5.9.3 vitest: specifier: latest - version: 4.0.15(@types/node@22.19.2) + version: 4.0.15(@types/node@22.19.3) extensions/vscode: devDependencies: @@ -43,7 +43,7 @@ importers: version: 10.0.10 '@types/node': specifier: ^22.10.4 - version: 22.19.2 + version: 22.19.3 '@types/vscode': specifier: 1.88.0 version: 1.88.0 @@ -104,7 +104,7 @@ importers: devDependencies: '@types/node': specifier: ^22.10.4 - version: 22.19.2 + version: 22.19.3 '@types/path-browserify': specifier: ^1.0.1 version: 1.0.3 @@ -137,7 +137,7 @@ importers: devDependencies: '@types/node': specifier: ^22.10.4 - version: 22.19.2 + version: 22.19.3 '@types/path-browserify': specifier: ^1.0.1 version: 1.0.3 @@ -162,7 +162,7 @@ importers: devDependencies: '@types/node': specifier: ^22.10.4 - version: 22.19.2 + version: 22.19.3 '@vue/compiler-dom': specifier: ^3.5.0 version: 3.5.25 @@ -242,7 +242,7 @@ importers: devDependencies: '@types/node': specifier: ^22.10.4 - version: 22.19.2 + version: 22.19.3 '@types/path-browserify': specifier: ^1.0.1 version: 1.0.3 @@ -276,7 +276,7 @@ importers: devDependencies: '@types/node': specifier: ^22.10.4 - version: 22.19.2 + version: 22.19.3 packages/typescript-plugin: dependencies: @@ -295,7 +295,7 @@ importers: devDependencies: '@types/node': specifier: ^22.10.4 - version: 22.19.2 + version: 22.19.3 '@types/path-browserify': specifier: ^1.0.1 version: 1.0.3 @@ -649,8 +649,8 @@ packages: '@types/mocha@10.0.10': resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} - '@types/node@22.19.2': - resolution: {integrity: sha512-LPM2G3Syo1GLzXLGJAKdqoU35XvrWzGJ21/7sgZTUpbkBaOasTj8tjwn6w+hCkqaa1TfJ/w67rJSwYItlJ2mYw==} + '@types/node@22.19.3': + resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} '@types/path-browserify@1.0.3': resolution: {integrity: sha512-ZmHivEbNCBtAfcrFeBCiTjdIc2dey0l7oCGNGpSuRTy8jP6UVND7oUowlvDujBy8r2Hoa8bfFUOCiPWfmtkfxw==} @@ -720,43 +720,43 @@ packages: resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20251212.1': - resolution: {integrity: sha512-5tof0OT01yPQ0mcoKPeSrGMxQ9Dl//gTjSKCMKwbLr5urrIPxX5bNRWUH0hxWaB4A3mXQvDvxSSrWR5TMOl2aQ==} + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20251213.1': + resolution: {integrity: sha512-O8aGcVDAPoLYiimB7OEZnlsxfplFBwUdOBx1RcsC8NftZQkrTv/tZNJrwKpe7ldYKQu2zGYy/HX2c7qz0GKk8A==} cpu: [arm64] os: [darwin] - '@typescript/native-preview-darwin-x64@7.0.0-dev.20251212.1': - resolution: {integrity: sha512-zUgcCXmDfO2yo5fNZZ3wUCv8hdqc/Qbc1WZUEDYYo3ItnBUL9qp0lUtTwsLtNreL2WmHOCeTQuKWa/JQzdw89g==} + '@typescript/native-preview-darwin-x64@7.0.0-dev.20251213.1': + resolution: {integrity: sha512-dM0inoyop+XnPYFm0lJ/jqvQ+A8r8a30H7Fw8ZZv+xW5l2ryZ0+oH5h8Od1PseeoyUQ12jYAPMIhE25pXOMl8g==} cpu: [x64] os: [darwin] - '@typescript/native-preview-linux-arm64@7.0.0-dev.20251212.1': - resolution: {integrity: sha512-0P59bGDFLppvkdpqQ8/kG+kU6R0iCdQiSLFRNrbrLnaflACBfIi40D3Ono3EmeSxqKsHqh/pNRu3BUJvoNGphw==} + '@typescript/native-preview-linux-arm64@7.0.0-dev.20251213.1': + resolution: {integrity: sha512-jlths8NYx/cCVA8g7ybwyE/oR4WDM/OukgKEk7JlFo0r20Q5LB2rUlK1QlOuRC7ESIh9NypCqe9O1DsTM77fFw==} cpu: [arm64] os: [linux] - '@typescript/native-preview-linux-arm@7.0.0-dev.20251212.1': - resolution: {integrity: sha512-peQCeG2+XqMqs6/Sg6nbQPI3Kae91Esi5Qh1VyDETO4wjMbKeAzVjw8t3Qz5X6RDbWNrCpDmbk6chjukfGeWgQ==} + '@typescript/native-preview-linux-arm@7.0.0-dev.20251213.1': + resolution: {integrity: sha512-uHrWHo9o/is5SJ6qG+9gf0+LL1WbXN7SzLpDISSdKTqWhbVt/blpgywDedvemiP17AEbrZJLEWIzPjKASBcMng==} cpu: [arm] os: [linux] - '@typescript/native-preview-linux-x64@7.0.0-dev.20251212.1': - resolution: {integrity: sha512-7QFyqcPe/Sz+IakvzCqh0d5WhQg7A7bKyQil38K7rKSTaPI42LrVwLA6mVtTRfQyS5Sy2XYVinyLNXnWM8ImQQ==} + '@typescript/native-preview-linux-x64@7.0.0-dev.20251213.1': + resolution: {integrity: sha512-EiukhOwin8M7aOxVNMgwuBv9fkC0706Fuuo5zVpc4+5hmrNh4nHCkpoUTa8HmMS3cJtuajbpO5+UtVvqEw+9Hw==} cpu: [x64] os: [linux] - '@typescript/native-preview-win32-arm64@7.0.0-dev.20251212.1': - resolution: {integrity: sha512-Y8mh0dPXAcYYNtSZVZYaNcqAOlxOlbJQopJBVATn+ItCxrY4RqBwygzrBWqg+gUo9xLmFI9XLuDVqm1ZAkAfwg==} + '@typescript/native-preview-win32-arm64@7.0.0-dev.20251213.1': + resolution: {integrity: sha512-uKIVjXQiX/J8UbGGai79+Jib1WG4mv0jYs7x+P+K7dGey9sSzZtLoIrkfV+pYyH/KOs0qh7cVli8gg7zkG69ng==} cpu: [arm64] os: [win32] - '@typescript/native-preview-win32-x64@7.0.0-dev.20251212.1': - resolution: {integrity: sha512-bUPWJgGhPdsoL3OR+I8nFF81P/+hwfqyMKaAWFxTg1zeRdEl61lVdrEfgNDBI7Px5Gr+uFGELlkCsDzy/7dAyw==} + '@typescript/native-preview-win32-x64@7.0.0-dev.20251213.1': + resolution: {integrity: sha512-pCOkrGwiIlCw1U2rJKgyRK05WLzZBZ5+hHiWpXBPxGRe0FdF3ISp1zN3Pi/pq7A6dh422MO9Oca+XhwduzEz5Q==} cpu: [x64] os: [win32] - '@typescript/native-preview@7.0.0-dev.20251212.1': - resolution: {integrity: sha512-uNPMu5+ElTN7AZRFJXsTPtSAQ2b7FIXMvpQbU/L0VD5PoBp5nMiQbgO1QFSvbFiIoTTma3I2TX3WSO5olIMTLQ==} + '@typescript/native-preview@7.0.0-dev.20251213.1': + resolution: {integrity: sha512-nfVoWQJoZ4jyxqdSnlT2fqYbU0/QLFhTM92s7mWRd8FuIVVfwkNWyvncC0FouJxXrGotG3TTuLj6/MzpOppd5A==} hasBin: true '@typescript/server-harness@0.3.5': @@ -2423,7 +2423,7 @@ snapshots: '@types/mocha@10.0.10': {} - '@types/node@22.19.2': + '@types/node@22.19.3': dependencies: undici-types: 6.21.0 @@ -2524,36 +2524,36 @@ snapshots: '@typescript-eslint/types': 8.49.0 eslint-visitor-keys: 4.2.1 - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20251212.1': + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20251213.1': optional: true - '@typescript/native-preview-darwin-x64@7.0.0-dev.20251212.1': + '@typescript/native-preview-darwin-x64@7.0.0-dev.20251213.1': optional: true - '@typescript/native-preview-linux-arm64@7.0.0-dev.20251212.1': + '@typescript/native-preview-linux-arm64@7.0.0-dev.20251213.1': optional: true - '@typescript/native-preview-linux-arm@7.0.0-dev.20251212.1': + '@typescript/native-preview-linux-arm@7.0.0-dev.20251213.1': optional: true - '@typescript/native-preview-linux-x64@7.0.0-dev.20251212.1': + '@typescript/native-preview-linux-x64@7.0.0-dev.20251213.1': optional: true - '@typescript/native-preview-win32-arm64@7.0.0-dev.20251212.1': + '@typescript/native-preview-win32-arm64@7.0.0-dev.20251213.1': optional: true - '@typescript/native-preview-win32-x64@7.0.0-dev.20251212.1': + '@typescript/native-preview-win32-x64@7.0.0-dev.20251213.1': optional: true - '@typescript/native-preview@7.0.0-dev.20251212.1': + '@typescript/native-preview@7.0.0-dev.20251213.1': optionalDependencies: - '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20251212.1 - '@typescript/native-preview-darwin-x64': 7.0.0-dev.20251212.1 - '@typescript/native-preview-linux-arm': 7.0.0-dev.20251212.1 - '@typescript/native-preview-linux-arm64': 7.0.0-dev.20251212.1 - '@typescript/native-preview-linux-x64': 7.0.0-dev.20251212.1 - '@typescript/native-preview-win32-arm64': 7.0.0-dev.20251212.1 - '@typescript/native-preview-win32-x64': 7.0.0-dev.20251212.1 + '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20251213.1 + '@typescript/native-preview-darwin-x64': 7.0.0-dev.20251213.1 + '@typescript/native-preview-linux-arm': 7.0.0-dev.20251213.1 + '@typescript/native-preview-linux-arm64': 7.0.0-dev.20251213.1 + '@typescript/native-preview-linux-x64': 7.0.0-dev.20251213.1 + '@typescript/native-preview-win32-arm64': 7.0.0-dev.20251213.1 + '@typescript/native-preview-win32-x64': 7.0.0-dev.20251213.1 '@typescript/server-harness@0.3.5': {} @@ -2566,13 +2566,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.15(vite@8.0.0-beta.2(@types/node@22.19.2))': + '@vitest/mocker@4.0.15(vite@8.0.0-beta.2(@types/node@22.19.3))': dependencies: '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.0-beta.2(@types/node@22.19.2) + vite: 8.0.0-beta.2(@types/node@22.19.3) '@vitest/pretty-format@4.0.15': dependencies: @@ -3750,7 +3750,7 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - vite@8.0.0-beta.2(@types/node@22.19.2): + vite@8.0.0-beta.2(@types/node@22.19.3): dependencies: '@oxc-project/runtime': 0.102.0 fdir: 6.5.0(picomatch@4.0.3) @@ -3760,13 +3760,13 @@ snapshots: rolldown: 1.0.0-beta.54 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 22.19.2 + '@types/node': 22.19.3 fsevents: 2.3.3 - vitest@4.0.15(@types/node@22.19.2): + vitest@4.0.15(@types/node@22.19.3): dependencies: '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@8.0.0-beta.2(@types/node@22.19.2)) + '@vitest/mocker': 4.0.15(vite@8.0.0-beta.2(@types/node@22.19.3)) '@vitest/pretty-format': 4.0.15 '@vitest/runner': 4.0.15 '@vitest/snapshot': 4.0.15 @@ -3783,10 +3783,10 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 8.0.0-beta.2(@types/node@22.19.2) + vite: 8.0.0-beta.2(@types/node@22.19.3) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.19.2 + '@types/node': 22.19.3 transitivePeerDependencies: - esbuild - jiti From 880aaf0968cce612da99be66e5e591583e1315cd Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Sat, 20 Dec 2025 17:34:46 +0800 Subject: [PATCH 13/14] chore: fix release.yml --- .github/workflows/release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8dafe23e5b..c8251418ca 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -55,11 +55,11 @@ jobs: - name: Build run: npm run build + - name: NPM Login + run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc + - name: Publish to NPM - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - run: | - lerna publish from-package --yes + run: lerna publish from-package --yes publish-vscode-marketplace: runs-on: ubuntu-latest @@ -84,7 +84,7 @@ jobs: - name: Publish to VSCode Marketplace working-directory: extensions/vscode env: - VSCE_TOKEN: ${{ secrets.VSCE_TOKEN }} + VSCE_PAT: ${{ secrets.VSCE_PAT }} run: vsce publish publish-open-vsx: From 064ed4a552c6770f4f08254544346145f61225a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=90=B9=E8=89=B2=E5=BE=A1=E5=AE=88?= <85992002+KazariEX@users.noreply.github.com> Date: Sat, 20 Dec 2025 18:04:30 +0800 Subject: [PATCH 14/14] fix(component-meta): skip schema resolution correctly when `option` is `false` (#5891) --- packages/component-meta/lib/schemaResolvers.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/component-meta/lib/schemaResolvers.ts b/packages/component-meta/lib/schemaResolvers.ts index 1c7659af35..5b7381a6b0 100644 --- a/packages/component-meta/lib/schemaResolvers.ts +++ b/packages/component-meta/lib/schemaResolvers.ts @@ -30,6 +30,10 @@ export function createSchemaResolvers( return true; } + if (options === false) { + return true; + } + if (typeof options === 'object') { for (const item of options.ignore ?? []) { if (typeof item === 'function') {