From c3195a11b9da01ccc23183d287110f5a64d0b386 Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Wed, 2 Sep 2026 17:38:10 +0800 Subject: [PATCH 1/4] v4: embed typescript-native-bridge, drop Volar-based framework support - @tsslint/cli now depends on typescript-native-bridge (pinned 6.0.3-bridge.15.tsgo.7.0.2) instead of the typescript peer dep; type checking runs on the TS 7 (tsgo) engine - Remove --vue-project/--vue-vine-project/--mdx-project/--astro-project/ --ts-macro-project flags and the Volar language plugin wiring (@volar/language-core, @volar/language-hub, @volar/typescript) - Meta-framework support will be provided by the TS 7.1 content mapper (tsconfig contentMappers) once TNB rebases onto tsgo 7.1 - Remove fixtures/meta-frameworks and untracked tsgo/relay experiments --- README.md | 28 +- fixtures/meta-frameworks/fixture.astro | 3 - fixtures/meta-frameworks/fixture.mdx | 6 - fixtures/meta-frameworks/fixture.tsx | 3 - fixtures/meta-frameworks/fixture.vine.ts | 6 - fixtures/meta-frameworks/fixture.vue | 3 - fixtures/meta-frameworks/package.json | 12 - fixtures/meta-frameworks/tsconfig.json | 7 - fixtures/meta-frameworks/tsslint.config.ts | 7 - package.json | 2 +- packages/cli/README.md | 4 +- packages/cli/index.ts | 78 +- packages/cli/lib/languagePlugins.ts | 35 - packages/cli/lib/worker.ts | 141 +-- packages/cli/package.json | 9 +- packages/vscode/README.md | 2 +- pnpm-lock.yaml | 1273 ++------------------ 17 files changed, 122 insertions(+), 1497 deletions(-) delete mode 100644 fixtures/meta-frameworks/fixture.astro delete mode 100644 fixtures/meta-frameworks/fixture.mdx delete mode 100644 fixtures/meta-frameworks/fixture.tsx delete mode 100644 fixtures/meta-frameworks/fixture.vine.ts delete mode 100644 fixtures/meta-frameworks/fixture.vue delete mode 100644 fixtures/meta-frameworks/package.json delete mode 100644 fixtures/meta-frameworks/tsconfig.json delete mode 100644 fixtures/meta-frameworks/tsslint.config.ts delete mode 100644 packages/cli/lib/languagePlugins.ts diff --git a/README.md b/README.md index b0792b88..82460edf 100644 --- a/README.md +++ b/README.md @@ -202,11 +202,6 @@ Flags: | Flag | | |---|---| | `--project ` | TypeScript projects to lint | -| `--vue-project ` | Vue projects | -| `--vue-vine-project ` | Vue Vine projects | -| `--mdx-project ` | MDX projects | -| `--astro-project ` | Astro projects | -| `--ts-macro-project ` | TS Macro projects | | `--filter ` | Restrict to matching files | | `--fix` | Apply fixes | | `--force` | Ignore cache | @@ -217,28 +212,7 @@ TSSLint produces diagnostics and edits — it does not format. Run dprint or Pre ## Framework support -The `--*-project` flags wire in [Volar](https://volarjs.dev/) language plugins so framework files (Vue SFCs, MDX, Astro components, etc.) are virtualized as TypeScript before linting. Anything `tsserver` can see, TSSLint can lint. - -``` - .vue ──┐ - .mdx ──┤ ┌──────────────┐ ┌──────────────────┐ - .astro──┼───▶│ Framework │───▶│ tsserver │───▶ diagnostics - .ts ──┘ │ adapters │ │ │ in editor - │ │ │ TypeChecker │ - │ ─▶ virtual │ │ + │ - │ TS file │ │ TSSLint plugin │ - └──────────────┘ └──────────────────┘ -``` - -Each flag resolves the language plugin from your project's `node_modules`, so you must install the corresponding package: - -| Flag | Required package(s) | -|---|---| -| `--vue-project` | `@vue/language-core` or `vue-tsc` | -| `--vue-vine-project` | `@vue-vine/language-service` or `vue-vine-tsc` | -| `--mdx-project` | `@mdx-js/language-service` | -| `--astro-project` | `@astrojs/ts-plugin` | -| `--ts-macro-project` | `@ts-macro/language-plugin` or `@ts-macro/tsc` | +Since v4, meta-framework support is provided by the TS 7.1 content mapper (tsconfig `contentMappers`); see the release notes for the migration guide. ## Importing ESLint, TSLint, or TSL rules diff --git a/fixtures/meta-frameworks/fixture.astro b/fixtures/meta-frameworks/fixture.astro deleted file mode 100644 index d28c6842..00000000 --- a/fixtures/meta-frameworks/fixture.astro +++ /dev/null @@ -1,3 +0,0 @@ ---- -console.log('Hello, world!'); ---- diff --git a/fixtures/meta-frameworks/fixture.mdx b/fixtures/meta-frameworks/fixture.mdx deleted file mode 100644 index 8df956a7..00000000 --- a/fixtures/meta-frameworks/fixture.mdx +++ /dev/null @@ -1,6 +0,0 @@ -{/** Description of `Component` */} -export function Component() { - console.log('Hello, world!'); -} - -Hello diff --git a/fixtures/meta-frameworks/fixture.tsx b/fixtures/meta-frameworks/fixture.tsx deleted file mode 100644 index 59e3239f..00000000 --- a/fixtures/meta-frameworks/fixture.tsx +++ /dev/null @@ -1,3 +0,0 @@ -function MyComponent() { - return
{console.log('Hello, world!')}
; -} diff --git a/fixtures/meta-frameworks/fixture.vine.ts b/fixtures/meta-frameworks/fixture.vine.ts deleted file mode 100644 index f674a6b8..00000000 --- a/fixtures/meta-frameworks/fixture.vine.ts +++ /dev/null @@ -1,6 +0,0 @@ -function MyComponent() { - return vine`
{{ console.log('Hello, world!') }}
`; -} - -// This is also valid -const AnotherComponent = () => vine`
Hello World
`; diff --git a/fixtures/meta-frameworks/fixture.vue b/fixtures/meta-frameworks/fixture.vue deleted file mode 100644 index aa4f600b..00000000 --- a/fixtures/meta-frameworks/fixture.vue +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/fixtures/meta-frameworks/package.json b/fixtures/meta-frameworks/package.json deleted file mode 100644 index 7eddf1ca..00000000 --- a/fixtures/meta-frameworks/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "private": true, - "name": "@tsslint-fixtures/meta-frameworks-support", - "version": "3.1.4", - "devDependencies": { - "@astrojs/ts-plugin": "latest", - "@mdx-js/language-service": "latest", - "@ts-macro/language-plugin": "latest", - "@vue-vine/language-service": "latest", - "@vue/language-core": "latest" - } -} diff --git a/fixtures/meta-frameworks/tsconfig.json b/fixtures/meta-frameworks/tsconfig.json deleted file mode 100644 index 28378984..00000000 --- a/fixtures/meta-frameworks/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "include": ["fixture.*"], - "compilerOptions": { - "noEmit": true, - "allowImportingTsExtensions": true - } -} diff --git a/fixtures/meta-frameworks/tsslint.config.ts b/fixtures/meta-frameworks/tsslint.config.ts deleted file mode 100644 index 5a057d37..00000000 --- a/fixtures/meta-frameworks/tsslint.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from '../../packages/config/index.js'; - -export default defineConfig({ - rules: { - 'no-console': (await import('../noConsoleRule.ts')), - }, -}); diff --git a/package.json b/package.json index f9096cb0..d6cad0f9 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "format": "dprint fmt", "lint": "packages/cli/bin/tsslint.js --project {tsconfig.json,packages/*/tsconfig.json}", "lint:fix": "npm run lint -- --fix && npm run format", - "lint:fixtures": "packages/cli/bin/tsslint.js --project fixtures/*/tsconfig.json --vue-project fixtures/meta-frameworks/tsconfig.json --mdx-project fixtures/meta-frameworks/tsconfig.json --astro-project fixtures/meta-frameworks/tsconfig.json --ts-macro-project fixtures/meta-frameworks/tsconfig.json" + "lint:fixtures": "packages/cli/bin/tsslint.js --project fixtures/*/tsconfig.json" }, "devDependencies": { "@lerna-lite/cli": "latest", diff --git a/packages/cli/README.md b/packages/cli/README.md index 88088dc5..0b25fd85 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -1,6 +1,6 @@ # @tsslint/cli -Command-line runner for TSSLint. Lints TypeScript projects — and Vue / Vue Vine / MDX / Astro / TS Macro projects via Volar language plugins — in CI or from the terminal. +Command-line runner for TSSLint. Lints TypeScript projects in CI or from the terminal. ## Usage @@ -16,4 +16,4 @@ npx tsslint --project 'packages/*/tsconfig.json' --filter 'src/**/*.ts' Run `tsslint --help` for the full flag list. -See the [root README](../../README.md) for framework project flags (`--vue-project`, `--mdx-project`, …), caching behavior, and how diagnostics are emitted. +See the [root README](../../README.md) for caching behavior and how diagnostics are emitted. diff --git a/packages/cli/index.ts b/packages/cli/index.ts index c92a93f0..0f3e55d7 100644 --- a/packages/cli/index.ts +++ b/packages/cli/index.ts @@ -9,13 +9,12 @@ if (process.argv.includes('--debug-estree')) { process.env.TSSLINT_DEBUG_ESTREE = '1'; } -import ts = require('typescript'); +import ts = require('typescript-native-bridge'); import path = require('path'); import worker = require('./lib/worker.js'); import cache = require('./lib/cache.js'); import fs = require('fs'); import minimatch = require('minimatch'); -import languagePlugins = require('./lib/languagePlugins.js'); import colors = require('./lib/colors.js'); import render = require('./lib/render.js'); @@ -24,11 +23,6 @@ Usage: tsslint [options] Options: --project Lint TypeScript/JavaScript projects - --vue-project Lint Vue projects - --vue-vine-project Lint Vue Vine projects - --mdx-project Lint MDX projects - --astro-project Lint Astro projects - --ts-macro-project Lint TS Macro projects --filter Filter files to lint --fix Apply automatic fixes --force Ignore cache (re-lint every file) @@ -47,9 +41,6 @@ Examples: # Multiple projects with brace expansion tsslint --project {tsconfig.json,packages/*/tsconfig.json} - # Mixed framework projects - tsslint --project packages/*/tsconfig.json --vue-project apps/web/tsconfig.json - # With filter and fix tsslint --project tsconfig.json --filter "src/**/*.ts" --fix `; @@ -60,20 +51,7 @@ if (process.argv.includes('--help') || process.argv.includes('-h')) { } const PROJECT_FLAGS = [ - { flag: '--project', language: undefined }, - { flag: '--vue-project', language: 'vue' }, - { flag: '--vue-vine-project', language: 'vue-vine' }, - { flag: '--mdx-project', language: 'mdx' }, - { flag: '--astro-project', language: 'astro' }, - { flag: '--ts-macro-project', language: 'ts-macro' }, -] as const; - -const LANGUAGE_LABELS = [ - { key: 'ts-macro', label: 'TS Macro', color: colors.tsMacroColor }, - { key: 'vue', label: 'Vue', color: colors.vueColor }, - { key: 'vue-vine', label: 'Vue Vine', color: colors.vueVineColor }, - { key: 'mdx', label: 'MDX', color: colors.mdxColor }, - { key: 'astro', label: 'Astro', color: colors.astroColor }, + { flag: '--project' }, ] as const; class Project { @@ -94,26 +72,12 @@ class Project { constructor( public tsconfig: string, - public languages: string[], ) {} async init(renderer: render.Renderer, filesFilter: string[]) { this.configFile = ts.findConfigFile(path.dirname(this.tsconfig), ts.sys.fileExists, 'tsslint.config.ts'); - const labels: string[] = []; - - if (this.languages.length === 0) { - labels.push(colors.tsColor('TS')); - } - else { - for (const { key, label, color } of LANGUAGE_LABELS) { - if (this.languages.includes(key)) { - labels.push(color(label)); - } - } - } - - const label = labels.join(colors.gray(' | ')); + const label = colors.tsColor('TS'); const relPath = path.relative(process.cwd(), this.tsconfig); if (!this.configFile) { @@ -123,7 +87,7 @@ class Project { return this; } - const commonLine = await parseCommonLine(this.tsconfig, this.languages); + const commonLine = await parseCommonLine(this.tsconfig); this.rawFileNames = commonLine.fileNames; this.options = commonLine.options; @@ -164,7 +128,7 @@ class Project { this.cacheData = cache.loadCache( this.tsconfig, this.configFile, - this.languages, + [], ts.version, ts.sys.createHash, ); @@ -182,7 +146,7 @@ const formatHost: ts.FormatDiagnosticsHost = { (async () => { const renderer = render.createRenderer(); - const tsconfigAndLanguages = new Map(); + const tsconfigs = new Set(); function fail(msg: string): never { renderer.error(colors.red(msg)); @@ -209,7 +173,7 @@ const formatHost: ts.FormatDiagnosticsHost = { process.exit(1); } - for (const { flag, language } of PROJECT_FLAGS) { + for (const { flag } of PROJECT_FLAGS) { if (!process.argv.includes(flag)) { continue; } @@ -221,18 +185,12 @@ const formatHost: ts.FormatDiagnosticsHost = { } foundArg = true; const searchGlob = process.argv[i]; - const tsconfigs = fs.globSync(searchGlob); - if (!tsconfigs.length) { + const matches = fs.globSync(searchGlob); + if (!matches.length) { fail(`No projects found for ${flag} ${searchGlob}.`); } - for (let tsconfig of tsconfigs) { - tsconfig = resolvePath(tsconfig); - if (!tsconfigAndLanguages.has(tsconfig)) { - tsconfigAndLanguages.set(tsconfig, []); - } - if (language) { - tsconfigAndLanguages.get(tsconfig)!.push(language); - } + for (const tsconfig of matches) { + tsconfigs.add(resolvePath(tsconfig)); } } if (!foundArg) { @@ -265,8 +223,8 @@ const formatHost: ts.FormatDiagnosticsHost = { } } - for (const [tsconfig, languages] of tsconfigAndLanguages) { - projects.push(await new Project(tsconfig, languages).init(renderer, filters)); + for (const tsconfig of tsconfigs) { + projects.push(await new Project(tsconfig).init(renderer, filters)); } projects = projects.filter(project => project.configFile && project.fileNames.length); @@ -450,8 +408,6 @@ const formatHost: ts.FormatDiagnosticsHost = { } const setupResult = await linterWorker.setup( - project.tsconfig, - project.languages, project.configFile!, project.rawFileNames, project.options, @@ -572,7 +528,7 @@ const formatHost: ts.FormatDiagnosticsHost = { cache.saveCache( project.tsconfig, project.configFile!, - project.languages, + [], ts.version, project.cacheData, ts.sys.createHash, @@ -618,17 +574,13 @@ function formatConfigError(configFile: string, errorText: string): string { return out.join('\n'); } -async function parseCommonLine(tsconfig: string, languages: string[]) { +async function parseCommonLine(tsconfig: string) { const jsonConfigFile = ts.readJsonConfigFile(tsconfig, ts.sys.readFile); - const plugins = await languagePlugins.load(tsconfig, languages); - const extraFileExtensions = plugins.flatMap(plugin => plugin.typescript?.extraFileExtensions ?? []).flat(); return ts.parseJsonSourceFileConfigFileContent( jsonConfigFile, ts.sys, path.dirname(tsconfig), {}, tsconfig, - undefined, - extraFileExtensions, ); } diff --git a/packages/cli/lib/languagePlugins.ts b/packages/cli/lib/languagePlugins.ts deleted file mode 100644 index 6e2ce88c..00000000 --- a/packages/cli/lib/languagePlugins.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { LanguagePlugin } from '@volar/language-core'; -import { - createAstroPlugin, - createMdxPlugin, - createTsMacroPlugins, - createVuePlugin, - createVueVinePlugins, -} from '@volar/language-hub'; -import ts = require('typescript'); - -const cache = new Map[]>(); - -export async function load(tsconfig: string, languages: string[]) { - if (cache.has(tsconfig)) { - return cache.get(tsconfig)!; - } - const plugins: LanguagePlugin[] = []; - if (languages.includes('vue')) { - plugins.push(createVuePlugin(ts, tsconfig)); - } - if (languages.includes('vue-vine')) { - plugins.push(...createVueVinePlugins(ts, tsconfig)); - } - if (languages.includes('mdx')) { - plugins.push(await createMdxPlugin(ts, tsconfig)); - } - if (languages.includes('astro')) { - plugins.push(createAstroPlugin(ts, tsconfig)); - } - if (languages.includes('ts-macro')) { - plugins.push(...await createTsMacroPlugins(ts, tsconfig)); - } - cache.set(tsconfig, plugins); - return plugins; -} diff --git a/packages/cli/lib/worker.ts b/packages/cli/lib/worker.ts index 825e308b..044273b3 100644 --- a/packages/cli/lib/worker.ts +++ b/packages/cli/lib/worker.ts @@ -1,31 +1,29 @@ -import ts = require('typescript'); +import ts = require('typescript-native-bridge'); import type config = require('@tsslint/config'); import core = require('@tsslint/core'); import url = require('url'); import path = require('path'); import fs = require('fs'); import crypto = require('crypto'); -import languagePlugins = require('./languagePlugins.js'); import cacheFlow = require('./cache-flow.js'); import incrementalState = require('./incremental-state.js'); import type { FileCache } from './cache.js'; import type { IncrementalState } from './incremental-state.js'; +// @tsslint/core typings are declared against stock `typescript`; the two +// modules are nominally distinct types. TNB is a drop-in with the same API +// surface. +const tsStock = ts as unknown as typeof import('typescript'); + // Fallback if `ts.sys.createHash` is undefined on this host (Node ≥ 22.6 // always provides it via crypto, but the type is optional). sha256 hex. const defaultHash = (s: string) => crypto.createHash('sha256').update(s).digest('hex'); -import { createLanguage, FileMap, isCodeActionsEnabled, type Language } from '@volar/language-core'; -import { createProxyLanguageService, decorateLanguageServiceHost, resolveFileLanguageId } from '@volar/typescript'; -import { transformDiagnostic, transformFileTextChanges } from '@volar/typescript/lib/node/transform'; - let projectVersion = 0; let typeRootsVersion = 0; let options: ts.CompilerOptions = {}; let fileNames: string[] = []; -let language: Language | undefined; let linter: core.Linter; -let linterLanguageService!: ts.LanguageService; // Layer 2 state. We wrap the LS program in a SemanticDiagnostics- // BuilderProgram (with the prev session's BP fed back via TS's internal // `tsBuildInfoText` round-trip) and walk affected files once. cache- @@ -39,7 +37,7 @@ let currentBuilder: ts.SemanticDiagnosticsBuilderProgram | undefined; const snapshots = new Map(); const versions = new Map(); -const originalHost: ts.LanguageServiceHost = { +const languageServiceHost: ts.LanguageServiceHost = { ...ts.sys, useCaseSensitiveFileNames() { return ts.sys.useCaseSensitiveFileNames; @@ -75,27 +73,25 @@ const originalHost: ts.LanguageServiceHost = { return snapshots.get(fileName); }, getScriptKind(fileName) { - const languageId = resolveFileLanguageId(fileName); - switch (languageId) { - case 'javascript': + switch (path.extname(fileName).toLowerCase()) { + case '.js': + case '.mjs': + case '.cjs': return ts.ScriptKind.JS; - case 'javascriptreact': + case '.jsx': return ts.ScriptKind.JSX; - case 'typescript': - return ts.ScriptKind.TS; - case 'typescriptreact': + case '.tsx': return ts.ScriptKind.TSX; - case 'json': + case '.json': return ts.ScriptKind.JSON; } - return ts.ScriptKind.Unknown; + return ts.ScriptKind.TS; }, getDefaultLibFileName(options) { return ts.getDefaultLibFilePath(options); }, }; -const linterHost: ts.LanguageServiceHost = { ...originalHost }; -const originalService = ts.createLanguageService(linterHost); +const languageService = ts.createLanguageService(languageServiceHost); // Linter is single-threaded by design. The previous version split into a // worker_threads worker for TTY mode (so the spinner could update during a @@ -129,8 +125,6 @@ export function create() { } async function setup( - tsconfig: string, - languages: string[], configFile: string, _fileNames: string[], _options: ts.CompilerOptions, @@ -148,19 +142,6 @@ async function setup( return String(err); } - for (let key in linterHost) { - if (!(key in originalHost)) { - // @ts-ignore - delete linterHost[key]; - } - else { - // @ts-ignore - linterHost[key] = originalHost[key]; - } - } - linterLanguageService = originalService; - language = undefined; - // Reset per-project state. Multi-project runs reuse the same worker // (in-process) — without this, cross-project file paths accumulate in // `snapshots` / `versions` (memory leak) and `affectedFiles` from a @@ -171,29 +152,6 @@ async function setup( affectedFiles = undefined; currentBuilder = undefined; - const plugins = await languagePlugins.load(tsconfig, languages); - if (plugins.length) { - const { getScriptSnapshot } = originalHost; - language = createLanguage( - [ - ...plugins, - { getLanguageId: fileName => resolveFileLanguageId(fileName) }, - ], - new FileMap(ts.sys.useCaseSensitiveFileNames), - fileName => { - const snapshot = getScriptSnapshot(fileName); - if (snapshot) { - language!.scripts.set(fileName, snapshot); - } - }, - ); - decorateLanguageServiceHost(ts, language, linterHost); - - const proxy = createProxyLanguageService(linterLanguageService); - proxy.initialize(language); - linterLanguageService = proxy.proxy; - } - projectVersion++; typeRootsVersion++; fileNames = _fileNames; @@ -203,17 +161,15 @@ async function setup( // The synthetic path is never written to disk — captured via // writeFile callback at end of session. options = { - ...(plugins.some(plugin => plugin.typescript?.extraFileExtensions.length) - ? { ..._options, allowNonTsExtensions: true } - : _options), + ..._options, incremental: true, tsBuildInfoFile: incrementalState.SYNTHETIC_BUILD_INFO_PATH, }; linter = core.createLinter( { - languageService: linterLanguageService, - languageServiceHost: linterHost, - typescript: ts, + languageService, + languageServiceHost, + typescript: tsStock, }, path.dirname(configFile), config, @@ -222,10 +178,10 @@ async function setup( ); { - const program = linterLanguageService.getProgram()!; + const program = languageService.getProgram()!; // Reconstruct the prev session's BP from cached buildinfo text, // fall through to undefined on any failure (cold-start path). - const oldBuilder = incrementalState.reconstructOldBuilder(ts, prevIncrementalState, { + const oldBuilder = incrementalState.reconstructOldBuilder(tsStock, prevIncrementalState, { useCaseSensitiveFileNames: () => ts.sys.useCaseSensitiveFileNames, getCurrentDirectory: () => ts.sys.getCurrentDirectory(), }); @@ -311,23 +267,16 @@ function lint(fileName: string, fix: boolean, fileCache: FileCache, fileMtime: n let pass = 0; let converged = false; for (; pass < MAX_FIX_PASSES; pass++) { - const program = linterLanguageService.getProgram()!; + const program = languageService.getProgram()!; diagnostics = cacheFlow.lintWithCache(linter, fileName, fileCache, fileMtime, program, { incremental: true, typeAwareUnaffected, }); - let fixes = linter + const fixes = linter .getCodeFixes(fileName, 0, Number.MAX_VALUE, diagnostics) .filter(fix => fix.fixId === 'tsslint'); - if (language) { - fixes = fixes.map(fix => { - fix.changes = transformFileTextChanges(language!, fix.changes, false, isCodeActionsEnabled); - return fix; - }); - } - const textChanges = core.combineCodeFixes(fileName, fixes); if (!textChanges.length) { converged = true; @@ -372,52 +321,20 @@ function lint(fileName: string, fix: boolean, fileCache: FileCache, fileMtime: n } if (shouldCheck) { - const program = linterLanguageService.getProgram()!; + const program = languageService.getProgram()!; diagnostics = cacheFlow.lintWithCache(linter, fileName, fileCache, fileMtime, program, { incremental: true, typeAwareUnaffected, }); } - // Language-transform path (Vue/MDX/etc.): diagnostics map back from - // the transformed file to the original source. The original file - // might not be in the language service's program, so we substitute a - // SourceFile-shaped POJO with the real source text — `formatDiagnostics- - // WithColorAndContext` reads `.file.text` to render code snippets. - if (language) { - diagnostics = diagnostics - .map(d => transformDiagnostic(language!, d, (originalService as any).getCurrentProgram(), false)) - .filter(d => !!d); - const fileShim = new Map(); - const getShim = (fn: string) => { - let s = fileShim.get(fn); - if (!s) { - s = { fileName: fn, text: getFileText(fn) }; - fileShim.set(fn, s); - } - return s; - }; - diagnostics = diagnostics.map(d => ({ - ...d, - file: getShim(d.file.fileName) as any, - relatedInformation: d.relatedInformation?.map(info => ({ - ...info, - file: info.file ? getShim(info.file.fileName) as any : undefined, - })), - })); - } - // Plain-TS path: leave diagnostics as-is. `.file` is the program's real - // `ts.SourceFile` which already shares `lineMap` cache across all - // diagnostics on the same file (so `formatDiagnosticsWithColorAndContext` - // only computes line starts once per file). - + // Diagnostics are already in the original file's coordinates — the + // program's real `ts.SourceFile`, which shares its `lineMap` cache + // across all diagnostics on the same file (so `formatDiagnosticsWith- + // ColorAndContext` only computes line starts once per file). return diagnostics; } -function getFileText(fileName: string) { - return originalHost.getScriptSnapshot(fileName)!.getText(0, Number.MAX_VALUE); -} - function hasCodeFixes(fileName: string) { return linter.hasCodeFixes(fileName); } diff --git a/packages/cli/package.json b/packages/cli/package.json index 86e410e2..d1652eaf 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -24,12 +24,7 @@ "@tsslint/config": "3.1.4", "@tsslint/core": "3.1.4", "@tsslint/types": "3.1.4", - "@volar/language-core": "~2.4.0", - "@volar/language-hub": "0.0.1", - "@volar/typescript": "~2.4.0", - "minimatch": "^10.0.1" - }, - "peerDependencies": { - "typescript": "*" + "minimatch": "^10.0.1", + "typescript-native-bridge": "6.0.3-bridge.15.tsgo.7.0.2" } } diff --git a/packages/vscode/README.md b/packages/vscode/README.md index 8cdc0e13..03b1af6e 100644 --- a/packages/vscode/README.md +++ b/packages/vscode/README.md @@ -8,7 +8,7 @@ TSSLint is a high-performance, project-centric linter that runs directly as a Ty * **Instant Diagnostics**: Violations from your custom TSSLint rules are reported instantly as you type. * **Auto Fix on Save**: Supports quick fixes and automatic application of fixes upon saving the file. -* **Framework Support**: Seamlessly lints TypeScript code within virtual files created by extensions like **Vue Official (Volar)**, **Astro**, and **MDX**. +* **Framework Support**: Seamlessly lints TypeScript code within virtual files created by framework extensions such as **Vue Official**, **Astro**, and **MDX**. ## Installation diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 03fa2261..9256f198 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,24 +60,6 @@ importers: specifier: ^6.1.3 version: 6.1.3(typescript@6.0.3) - fixtures/meta-frameworks: - devDependencies: - '@astrojs/ts-plugin': - specifier: latest - version: 1.10.9 - '@mdx-js/language-service': - specifier: latest - version: 0.7.3 - '@ts-macro/language-plugin': - specifier: latest - version: 0.3.7 - '@vue-vine/language-service': - specifier: latest - version: 1.7.27(typescript@6.0.3) - '@vue/language-core': - specifier: latest - version: 3.3.5 - fixtures/typescript-plugin: devDependencies: '@tsslint/typescript-plugin': @@ -98,21 +80,12 @@ importers: '@tsslint/types': specifier: 3.1.4 version: link:../types - '@volar/language-core': - specifier: ~2.4.0 - version: 2.4.28 - '@volar/language-hub': - specifier: 0.0.1 - version: 0.0.1 - '@volar/typescript': - specifier: ~2.4.0 - version: 2.4.28 minimatch: specifier: ^10.0.1 version: 10.2.5 - typescript: - specifier: '*' - version: 6.0.3 + typescript-native-bridge: + specifier: 6.0.3-bridge.15.tsgo.7.0.2 + version: 6.0.3-bridge.15.tsgo.7.0.2 packages/compat-eslint: dependencies: @@ -197,15 +170,6 @@ importers: packages: - '@astrojs/compiler@2.13.1': - resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} - - '@astrojs/ts-plugin@1.10.9': - resolution: {integrity: sha512-2pNc9EMXJcvYsmjQahYyqOiUNN9hMzgnxgIE/fZBLJAeOxPeOCSMa6BdngwV+bMgZDJcUSfC3qFt3+9abuUxtQ==} - - '@astrojs/yaml2ts@0.2.4': - resolution: {integrity: sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==} - '@azu/format-text@1.0.2': resolution: {integrity: sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==} @@ -260,23 +224,10 @@ packages: resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.2': - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} - engines: {node: '>=6.9.0'} - '@conventional-changelog/git-client@2.7.0': resolution: {integrity: sha512-j7A8/LBEQ+3rugMzPXoKYzyUPpw/0CBQCyvtTR7Lmu4olG4yRC/Tfkq79Mr3yuPs0SUitlO2HwGP3gitMJnRFw==} engines: {node: '>=18'} @@ -677,9 +628,6 @@ packages: '@isaacs/string-locale-compare@1.1.0': resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@lerna-lite/cli@5.3.0': resolution: {integrity: sha512-gm+XWT2XRR3H8XXDMuWhL1jlqaAt0llwLZCGA/uUwe05HS2QKbEsYeaK0kZZKtt1ff7DAZYadMW4uazz9iHczg==} engines: {node: ^22.17.0 || >=24.0.0} @@ -725,9 +673,6 @@ packages: resolution: {integrity: sha512-ZZUE/ajuCFj1WLNY08wKFmiSD+RYeT0mPosHKYbXejzUGKIBcuOdTApxvRcBr/G2pAWqQowCtE1sOM7AUbvzsw==} engines: {node: ^22.17.0 || >=24.0.0} - '@mdx-js/language-service@0.7.3': - resolution: {integrity: sha512-Kspcrl7Z8iFQ9KlA5/NAbMEXPH1ssSzyHsPxslFhDU6Tw8E2SBBSj1Z9Qyj73pvfdwirT7YKWZdeY/QfIWbCiw==} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -953,12 +898,6 @@ packages: '@textlint/types@15.5.4': resolution: {integrity: sha512-mY28j2U7nrWmZbxyKnRvB8vJxJab4AxqOobLfb6iozrLelJbqxcOTvBQednadWPfAk9XWaZVMqUr9Nird3mutg==} - '@ts-macro/language-plugin@0.3.7': - resolution: {integrity: sha512-fZBCGoYmM3fm1EE7v2FQ0Ovab1sOqgDaz48Wypw4KkO3yG8pEtYtpa24PxNY43ydCf0yMNwShufdyV5qt5sRmg==} - - '@ts-morph/common@0.27.0': - resolution: {integrity: sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==} - '@tufjs/canonical-json@2.0.0': resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} engines: {node: ^16.14.0 || >=18.0.0} @@ -967,33 +906,18 @@ packages: resolution: {integrity: sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==} engines: {node: ^20.17.0 || >=22.9.0} - '@types/debug@4.1.13': - resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} - '@types/eslint@8.56.12': resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} '@types/esrecurse@4.3.1': resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} - '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - - '@types/ms@2.1.0': - resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@25.9.3': resolution: {integrity: sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==} @@ -1007,12 +931,6 @@ packages: '@types/sarif@2.1.7': resolution: {integrity: sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==} - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/vscode@1.116.0': resolution: {integrity: sha512-sYHp4MO6BqJ2PD7Hjt0hlIS3tMaYsVPJrd0RUjDJ8HtOYnyJIEej0bLSccM8rE77WrC+Xox/kdBwEFDO8MsxNA==} @@ -1119,42 +1037,44 @@ packages: resolution: {integrity: sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typespec/ts-http-runtime@0.3.5': - resolution: {integrity: sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw==} - engines: {node: '>=20.0.0'} - - '@umami/node@0.4.0': - resolution: {integrity: sha512-pyphprbiF7KiDSc+SWZ4/rVM8B5vU27zIiFfEPj2lEqczpI4xAKSp+dM3tlzyRAWJL32fcbCfAaLGhJZQV13Rg==} - - '@volar/language-core@2.4.20': - resolution: {integrity: sha512-dRDF1G33xaAIDqR6+mXUIjXYdu9vzSxlMGfMEwBxQsfY/JMUEXSpLTR057oTKlUQ2nIvCmP9k94A8h8z2VrNSA==} - - '@volar/language-core@2.4.28': - resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} - - '@volar/language-hub@0.0.1': - resolution: {integrity: sha512-2eOUnlMKTyjtlXIVd+6pfAtcuVugxCOgpNgcLWmlPuncQTG5C1E5mTDL/PUMw7aEnLySUOtMTIp8lT3vk/7w6Q==} + '@typescript-native-bridge/darwin-arm64@6.0.3-bridge.15.tsgo.7.0.2': + resolution: {integrity: sha512-nrhPj8nED29uhZH2V7yHXFPy5O8ro5vRMVnChO1CvMf8tDg9tlhlBPFeeYgvp001upBRZu8JmTYw1wpcRUvDVA==} + cpu: [arm64] + os: [darwin] - '@volar/language-server@2.4.20': - resolution: {integrity: sha512-fNNFzEad0sO4pVZnpHggglbIeaKjLs4vH1JPPN+zd/4hSEI2u8+Qck10JhswCSO6xFTFbKxVquvWu2U2tT0EHQ==} + '@typescript-native-bridge/darwin-x64@6.0.3-bridge.15.tsgo.7.0.2': + resolution: {integrity: sha512-JiS2e3W+Vtr8u/oTYeTdCK7S+seB2cBz3l7gQYuon4oTiHS0Mi+YGEYhSG2v2iuRkTMcrVrr9+XazwMcPlIW+Q==} + cpu: [x64] + os: [darwin] - '@volar/language-service@2.4.20': - resolution: {integrity: sha512-LoCD4rEI1Bj5ld6b+2GH1SbDGnoisvJ5skHlrkFEtJWw0T2+bhqGUXwekFudV/bRtp8fPhvD5ZUtjWSW0VRztg==} + '@typescript-native-bridge/linux-arm64@6.0.3-bridge.15.tsgo.7.0.2': + resolution: {integrity: sha512-BFkIGbpdRf+iNK0IHCKUYAvAIQ4tnTRegNU+BLaYUbQ5ER/YGytSzKQqh2c2zls1H+Gc0DyZcDsBIFr0gC6BDg==} + cpu: [arm64] + os: [linux] - '@volar/language-service@2.4.28': - resolution: {integrity: sha512-Rh/wYCZJrI5vCwMk9xyw/Z+MsWxlJY1rmMZPsxUoJKfzIRjS/NF1NmnuEcrMbEVGja00aVpCsInJfixQTMdvLw==} + '@typescript-native-bridge/linux-arm@6.0.3-bridge.15.tsgo.7.0.2': + resolution: {integrity: sha512-VlvPkt0x7ShuPmI58wSsS7VBa9uq4fQtaz82GC8yK1bFP+FdHcLJleM2SyAvHpxyd8nIyKMzcJolY+qffaBRUg==} + cpu: [arm] + os: [linux] - '@volar/source-map@2.4.20': - resolution: {integrity: sha512-mVjmFQH8mC+nUaVwmbxoYUy8cww+abaO8dWzqPUjilsavjxH0jCJ3Mp8HFuHsdewZs2c+SP+EO7hCd8Z92whJg==} + '@typescript-native-bridge/linux-x64@6.0.3-bridge.15.tsgo.7.0.2': + resolution: {integrity: sha512-QB6q8kNk5HO/mc3iyJBx1I7mx2+ObNxK/SgeX18gVydcooVdjLYv9lSDjv/FuA9iYzuhYjfrOuRxuhxKoAOcmQ==} + cpu: [x64] + os: [linux] - '@volar/source-map@2.4.28': - resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} + '@typescript-native-bridge/win32-arm64@6.0.3-bridge.15.tsgo.7.0.2': + resolution: {integrity: sha512-ZWY1I/6dsInK3S2ue4sKHj3zp3nmqD+9iqq7LfjELNjjYSUvseYfqv3170zeqZV2PQRzjA3Qtd85pkYr0SQDEQ==} + cpu: [arm64] + os: [win32] - '@volar/typescript@2.4.20': - resolution: {integrity: sha512-Oc4DczPwQyXcVbd+5RsNEqX6ia0+w3p+klwdZQ6ZKhFjWoBP9PCPQYlKYRi/tDemWphW93P/Vv13vcE9I9D2GQ==} + '@typescript-native-bridge/win32-x64@6.0.3-bridge.15.tsgo.7.0.2': + resolution: {integrity: sha512-LqaVPjvllVQm/OfID0z9ubDPEuO6asNOH/qrV1xTGFxgHRRn8UUz3/te4zaERalVRgwNWYlSbzSQb+jttLjvMA==} + cpu: [x64] + os: [win32] - '@volar/typescript@2.4.28': - resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + '@typespec/ts-http-runtime@0.3.5': + resolution: {integrity: sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw==} + engines: {node: '>=20.0.0'} '@vscode/vsce-sign-alpine-arm64@2.0.6': resolution: {integrity: sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==} @@ -1209,38 +1129,6 @@ packages: engines: {node: '>= 20'} hasBin: true - '@vue-vine/compiler@1.7.27': - resolution: {integrity: sha512-aWLc1TaCq1m379hMGAUdgZRe6OR7fTqQllSb3BR9oz3SA3hiIZbcvcH89lFr0Vj48CPj2RC16p8bAVCdZDrXAg==} - - '@vue-vine/language-service@1.7.27': - resolution: {integrity: sha512-x/ZFv9WyMeh4fBTOd8xsRziQDd48wkDdI+fRr21kEueRahksoGnuoY5KyygoHZOQP237cls6oqZ48fuHe36scA==} - - '@vue/compiler-core@3.5.33': - resolution: {integrity: sha512-3PZLQwFw4Za3TC8t0FvTy3wI16Kt+pmwcgNZca4Pj9iWL2E72a/gZlpBtAJvEdDMdCxdG/qq0C7PN0bsJuv0Rw==} - - '@vue/compiler-dom@3.5.33': - resolution: {integrity: sha512-PXq0yrfCLzzL07rbXO4awtXY1Z06LG2eu6Adg3RJFa/j3Cii217XxxLXG22N330gw7GmALCY0Z8RgXEviwgpjA==} - - '@vue/compiler-ssr@3.5.33': - resolution: {integrity: sha512-IErjYdnj1qIupG5xxiVIYiiRvDhGWV4zuh/RCrwfYpuL+HWQzeU6lCk/nF9r7olWMnjKxCAkOctT2qFWFkzb1A==} - - '@vue/compiler-vue2@2.7.16': - resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} - - '@vue/language-core@3.0.3': - resolution: {integrity: sha512-I9wY0ULMN9tMSua+2C7g+ez1cIziVMUzIHlDYGSl2rtru3Eh4sXj95vZ+4GBuXwwPnEmYfzSApVbXiVbI8V5Gg==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/language-core@3.3.5': - resolution: {integrity: sha512-UkKu5nhX89fg4VhlG/FOeI10G3cj/7radKT/cy9BT4Q9qJmJlSTAc/dP63Xqs29aypN4f39xUV6PsLNk/dcD6g==} - - '@vue/shared@3.5.33': - resolution: {integrity: sha512-5vR2QIlmaLG77Ygd4pMP6+SGQ5yox9VhtnbDWTy9DzMzdmeLxZ1QqxrywEZ9sa1AVubfIJyaCG3ytyWU81ufcQ==} - abbrev@4.0.0: resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} engines: {node: ^20.17.0 || >=22.9.0} @@ -1265,12 +1153,6 @@ packages: ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - alien-signals@2.0.8: - resolution: {integrity: sha512-844G1VLkk0Pe2SJjY0J8vp8ADI73IM4KliNu2OGlYzWpO28NexEUvjHTcFjFX3VXoiUtwTbHxLNI9ImkcoBqzA==} - - alien-signals@3.2.1: - resolution: {integrity: sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==} - ansi-escapes@7.3.0: resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} engines: {node: '>=18'} @@ -1314,9 +1196,6 @@ packages: azure-devops-node-api@12.5.0: resolution: {integrity: sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==} - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1391,9 +1270,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -1406,18 +1282,6 @@ packages: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -1452,9 +1316,6 @@ packages: resolution: {integrity: sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==} engines: {node: '>=16'} - code-block-writer@13.0.3: - resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -1540,9 +1401,6 @@ packages: engines: {node: '>=4'} hasBin: true - de-indent@1.0.2: - resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -1552,9 +1410,6 @@ packages: supports-color: optional: true - decode-named-character-reference@1.3.0: - resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} @@ -1582,10 +1437,6 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - detect-indent@7.0.2: resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} engines: {node: '>=12.20'} @@ -1594,9 +1445,6 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff@4.0.4: resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} engines: {node: '>=0.3.1'} @@ -1785,21 +1633,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-util-scope@1.0.0: - resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} - - estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -1811,9 +1644,6 @@ packages: exponential-backoff@3.1.3: resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - fast-content-type-parse@3.0.0: resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} @@ -1917,9 +1747,6 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-tsconfig@4.14.0: - resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} - git-up@8.1.1: resolution: {integrity: sha512-FDenSF3fVqBYSaJoYy1KSc2wosx0gCvKP+c+PRBht7cAaiCeQlBtfBDX9vgnNOHmdePlSFITVcn4pFfcgNvx3g==} @@ -1987,17 +1814,10 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - hash-sum@2.0.0: - resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} - hasown@2.0.3: resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} engines: {node: '>= 0.4'} - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} @@ -2086,19 +1906,10 @@ packages: resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2116,9 +1927,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -2143,9 +1951,6 @@ packages: resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} engines: {node: '>=16'} - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -2153,10 +1958,6 @@ packages: resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} engines: {node: '>=20'} - isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - istextorbinary@9.5.0: resolution: {integrity: sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==} engines: {node: '>=4'} @@ -2255,9 +2056,6 @@ packages: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} - line-column@1.0.2: - resolution: {integrity: sha512-Ktrjk5noGYlHsVnYWh62FLVs4hTb8A3e+vucNZMgPeAOITdshMSgv4cCZQeRDjm7+goqmo6+liZwTXo+U3sVww==} - linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} @@ -2299,9 +2097,6 @@ packages: lodash@4.18.1: resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -2313,9 +2108,6 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} - magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - make-fetch-happen@15.0.5: resolution: {integrity: sha512-uCbIa8jWWmQZt4dSnEStkVC6gdakiinAm4PiGsywIkguF0eWMdcjDz0ECYhUolFU3pFLOev9VNPCEygydXnddg==} engines: {node: ^20.17.0 || >=22.9.0} @@ -2328,30 +2120,6 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - mdast-util-from-markdown@2.0.3: - resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} - - mdast-util-mdx-expression@2.0.1: - resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - - mdast-util-mdx-jsx@3.2.0: - resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} - - mdast-util-mdx@3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -2359,97 +2127,10 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} - merge-source-map@1.1.0: - resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromark-core-commonmark@2.0.3: - resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - - micromark-extension-mdx-expression@3.0.1: - resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} - - micromark-extension-mdx-jsx@3.0.2: - resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} - - micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - - micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - - micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - - micromark-factory-destination@2.0.1: - resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - - micromark-factory-label@2.0.1: - resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - - micromark-factory-mdx-expression@2.0.3: - resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} - - micromark-factory-space@2.0.1: - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - - micromark-factory-title@2.0.1: - resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - - micromark-factory-whitespace@2.0.1: - resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - - micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - - micromark-util-chunked@2.0.1: - resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - - micromark-util-classify-character@2.0.1: - resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - - micromark-util-combine-extensions@2.0.1: - resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - - micromark-util-decode-numeric-character-reference@2.0.2: - resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - - micromark-util-decode-string@2.0.1: - resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - - micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - - micromark-util-events-to-acorn@2.0.3: - resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} - - micromark-util-html-tag-name@2.0.1: - resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - - micromark-util-normalize-identifier@2.0.1: - resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - - micromark-util-resolve-all@2.0.1: - resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - - micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - - micromark-util-subtokenize@2.1.0: - resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} - - micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - - micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - - micromark@4.0.2: - resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -2523,9 +2204,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - muggle-string@0.4.1: - resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} @@ -2533,11 +2211,6 @@ packages: resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} engines: {node: ^20.17.0 || >=22.9.0} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} @@ -2663,9 +2336,6 @@ packages: resolution: {integrity: sha512-ZHEmNKMq1wyJXNwLxyHnluPfRAFSIliBvbK/UiOceROt4Xh9Pz0fq49NytIaeaCUf5VR86hwQ/34FCcNU5/LKQ==} engines: {node: ^20.17.0 || >=22.9.0} - parse-entities@4.0.2: - resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - parse-json@8.3.0: resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} engines: {node: '>=18'} @@ -2689,9 +2359,6 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -2744,10 +2411,6 @@ packages: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} - postcss@8.5.10: - resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} - engines: {node: ^10 || ^12 || >=14} - prebuild-install@7.1.3: resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} engines: {node: '>=10'} @@ -2816,15 +2479,6 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - remark-mdx@3.1.1: - resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - request-light@0.7.0: - resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} - require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -2841,9 +2495,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.12: resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} engines: {node: '>= 0.4'} @@ -2853,15 +2504,6 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup-utils@0.0.5: - resolution: {integrity: sha512-Naai1vGKHGTrvrSuWOX1rSJSKodmJ8aZ3mtF0hHFP64NOtsKvnOGbxD4162fWGePdCWxAckEBNHQ/QX7S81H4g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - run-applescript@7.1.0: resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} @@ -2960,10 +2602,6 @@ packages: resolution: {integrity: sha512-ueSlHJMwpIw42CJ4B11Uxzh/S0p0AlOyiNktlv2KOu5e1JpUE6DlC4AAUjXqesHdBRv/g0wC9Q4vwq0NP2pA9w==} engines: {node: '>=20'} - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -3007,9 +2645,6 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -3091,21 +2726,12 @@ packages: resolution: {integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@2.5.0: resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' - ts-macro@0.3.7: - resolution: {integrity: sha512-5BinbTKn5WXRslotv5/VWTn3catfK0thWoB4BZI5VNEdxMu6r9AUPFalut4wLEK3nGvxhywA9aAdZnJ+Fnug9A==} - - ts-morph@26.0.0: - resolution: {integrity: sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==} - ts-pattern@5.9.0: resolution: {integrity: sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg==} @@ -3156,6 +2782,11 @@ packages: typed-rest-client@1.8.11: resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==} + typescript-native-bridge@6.0.3-bridge.15.tsgo.7.0.2: + resolution: {integrity: sha512-utlvj8zRana8mutK9LgoPLtMcMT/j/0ot5eh/YUJgDSVQUGLIC6m6Dwt1SP820HMJZI3Yg8fXnqFrkDaa2Gk4g==} + engines: {node: '>=20.19'} + hasBin: true + typescript@6.0.3: resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} @@ -3191,27 +2822,6 @@ packages: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - - unist-util-is@6.0.1: - resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} - - unist-util-lsp@2.1.0: - resolution: {integrity: sha512-ICI1PWbalSfOrsdosGk+WXdZBvdjhZVjbkgHOzKFdkCdzBpVEi8GjsVTAG6NR3VLGcwTOGLj/+k4L0HwGQYvEQ==} - - unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@6.0.2: - resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} - - unist-util-visit@5.1.0: - resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - universal-user-agent@7.0.3: resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} @@ -3243,32 +2853,6 @@ packages: resolution: {integrity: sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==} engines: {node: '>=4'} - vfile-message@4.0.3: - resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - - vscode-jsonrpc@8.2.0: - resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} - engines: {node: '>=14.0.0'} - - vscode-languageserver-protocol@3.17.5: - resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} - - vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} - - vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - - vscode-languageserver@9.0.1: - resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} - hasBin: true - - vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - walk-up-path@4.0.0: resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} engines: {node: 20 || >=22} @@ -3341,11 +2925,6 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml@2.8.3: - resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} - engines: {node: '>= 14.6'} - hasBin: true - yaml@2.9.0: resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} @@ -3376,27 +2955,8 @@ packages: zod@4.3.6: resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - snapshots: - '@astrojs/compiler@2.13.1': {} - - '@astrojs/ts-plugin@1.10.9': - dependencies: - '@astrojs/compiler': 2.13.1 - '@astrojs/yaml2ts': 0.2.4 - '@jridgewell/sourcemap-codec': 1.5.5 - '@volar/language-core': 2.4.28 - '@volar/typescript': 2.4.28 - semver: 7.7.4 - vscode-languageserver-textdocument: 1.0.12 - - '@astrojs/yaml2ts@0.2.4': - dependencies: - yaml: 2.8.3 - '@azu/format-text@1.0.2': {} '@azu/style-format@1.0.1': @@ -3492,19 +3052,8 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.29.2': - dependencies: - '@babel/types': 7.29.0 - - '@babel/types@7.29.0': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@conventional-changelog/git-client@2.7.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)': dependencies: '@simple-libs/child-process-utils': 1.0.2 @@ -3828,8 +3377,6 @@ snapshots: '@isaacs/string-locale-compare@1.1.0': {} - '@jridgewell/sourcemap-codec@1.5.5': {} - '@lerna-lite/cli@5.3.0(@lerna-lite/publish@5.3.0(@types/node@25.9.3)(conventional-commits-filter@5.0.0))(@lerna-lite/version@5.3.0(@lerna-lite/publish@5.3.0(@types/node@25.9.3)(conventional-commits-filter@5.0.0))(@types/node@25.9.3)(conventional-commits-filter@5.0.0))(@types/node@25.9.3)': dependencies: '@lerna-lite/core': 5.3.0(@types/node@25.9.3) @@ -3930,26 +3477,6 @@ snapshots: - '@types/node' - conventional-commits-filter - '@mdx-js/language-service@0.7.3': - dependencies: - '@types/estree': 1.0.8 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - '@volar/language-service': 2.4.28 - estree-util-scope: 1.0.0 - estree-walker: 3.0.3 - mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.2 - remark-mdx: 3.1.1 - remark-parse: 11.0.0 - unified: 11.0.5 - unist-util-lsp: 2.1.0 - unist-util-visit-parents: 6.0.2 - vfile-message: 4.0.3 - vscode-uri: 3.1.0 - transitivePeerDependencies: - - supports-color - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4290,23 +3817,6 @@ snapshots: dependencies: '@textlint/ast-node-types': 15.5.4 - '@ts-macro/language-plugin@0.3.7': - dependencies: - '@volar/language-core': 2.4.28 - '@volar/typescript': 2.4.28 - jiti: 2.6.1 - rollup-utils: 0.0.5 - ts-macro: 0.3.7 - vscode-uri: 3.1.0 - transitivePeerDependencies: - - rollup - - '@ts-morph/common@0.27.0': - dependencies: - fast-glob: 3.3.3 - minimatch: 10.2.5 - path-browserify: 1.0.1 - '@tufjs/canonical-json@2.0.0': {} '@tufjs/models@4.1.0': @@ -4314,10 +3824,6 @@ snapshots: '@tufjs/canonical-json': 2.0.0 minimatch: 10.2.5 - '@types/debug@4.1.13': - dependencies: - '@types/ms': 2.1.0 - '@types/eslint@8.56.12': dependencies: '@types/estree': 1.0.8 @@ -4325,24 +3831,10 @@ snapshots: '@types/esrecurse@4.3.1': {} - '@types/estree-jsx@1.0.5': - dependencies: - '@types/estree': 1.0.8 - '@types/estree@1.0.8': {} - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.3 - '@types/json-schema@7.0.15': {} - '@types/mdast@4.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/ms@2.1.0': {} - '@types/node@25.9.3': dependencies: undici-types: 7.24.6 @@ -4355,10 +3847,6 @@ snapshots: '@types/sarif@2.1.7': {} - '@types/unist@2.0.11': {} - - '@types/unist@3.0.3': {} - '@types/vscode@1.116.0': {} '@typescript-eslint/eslint-plugin@8.61.1(@typescript-eslint/parser@8.59.0(eslint@10.2.1(jiti@2.6.1))(typescript@6.0.3))(eslint@10.2.1(jiti@2.6.1))(typescript@6.0.3)': @@ -4515,67 +4003,34 @@ snapshots: '@typescript-eslint/types': 8.61.1 eslint-visitor-keys: 5.0.1 - '@typespec/ts-http-runtime@0.3.5': - dependencies: - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@umami/node@0.4.0': {} - - '@volar/language-core@2.4.20': - dependencies: - '@volar/source-map': 2.4.20 - - '@volar/language-core@2.4.28': - dependencies: - '@volar/source-map': 2.4.28 - - '@volar/language-hub@0.0.1': {} + '@typescript-native-bridge/darwin-arm64@6.0.3-bridge.15.tsgo.7.0.2': + optional: true - '@volar/language-server@2.4.20': - dependencies: - '@volar/language-core': 2.4.20 - '@volar/language-service': 2.4.20 - '@volar/typescript': 2.4.20 - path-browserify: 1.0.1 - request-light: 0.7.0 - vscode-languageserver: 9.0.1 - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 + '@typescript-native-bridge/darwin-x64@6.0.3-bridge.15.tsgo.7.0.2': + optional: true - '@volar/language-service@2.4.20': - dependencies: - '@volar/language-core': 2.4.20 - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 + '@typescript-native-bridge/linux-arm64@6.0.3-bridge.15.tsgo.7.0.2': + optional: true - '@volar/language-service@2.4.28': - dependencies: - '@volar/language-core': 2.4.28 - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.1.0 + '@typescript-native-bridge/linux-arm@6.0.3-bridge.15.tsgo.7.0.2': + optional: true - '@volar/source-map@2.4.20': {} + '@typescript-native-bridge/linux-x64@6.0.3-bridge.15.tsgo.7.0.2': + optional: true - '@volar/source-map@2.4.28': {} + '@typescript-native-bridge/win32-arm64@6.0.3-bridge.15.tsgo.7.0.2': + optional: true - '@volar/typescript@2.4.20': - dependencies: - '@volar/language-core': 2.4.20 - path-browserify: 1.0.1 - vscode-uri: 3.1.0 + '@typescript-native-bridge/win32-x64@6.0.3-bridge.15.tsgo.7.0.2': + optional: true - '@volar/typescript@2.4.28': + '@typespec/ts-http-runtime@0.3.5': dependencies: - '@volar/language-core': 2.4.28 - path-browserify: 1.0.1 - vscode-uri: 3.1.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color '@vscode/vsce-sign-alpine-arm64@2.0.6': optional: true @@ -4652,84 +4107,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@vue-vine/compiler@1.7.27': - dependencies: - '@babel/parser': 7.29.2 - '@babel/types': 7.29.0 - '@vue/compiler-dom': 3.5.33 - '@vue/compiler-ssr': 3.5.33 - '@vue/shared': 3.5.33 - get-tsconfig: 4.14.0 - hash-sum: 2.0.0 - line-column: 1.0.2 - lru-cache: 11.3.5 - magic-string: 0.30.21 - merge-source-map: 1.1.0 - postcss: 8.5.10 - postcss-selector-parser: 7.1.1 - ts-morph: 26.0.0 - - '@vue-vine/language-service@1.7.27(typescript@6.0.3)': - dependencies: - '@umami/node': 0.4.0 - '@volar/language-core': 2.4.20 - '@volar/language-server': 2.4.20 - '@volar/typescript': 2.4.20 - '@vue-vine/compiler': 1.7.27 - '@vue/language-core': 3.0.3(typescript@6.0.3) - '@vue/shared': 3.5.33 - muggle-string: 0.4.1 - transitivePeerDependencies: - - typescript - - '@vue/compiler-core@3.5.33': - dependencies: - '@babel/parser': 7.29.2 - '@vue/shared': 3.5.33 - entities: 7.0.1 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - - '@vue/compiler-dom@3.5.33': - dependencies: - '@vue/compiler-core': 3.5.33 - '@vue/shared': 3.5.33 - - '@vue/compiler-ssr@3.5.33': - dependencies: - '@vue/compiler-dom': 3.5.33 - '@vue/shared': 3.5.33 - - '@vue/compiler-vue2@2.7.16': - dependencies: - de-indent: 1.0.2 - he: 1.2.0 - - '@vue/language-core@3.0.3(typescript@6.0.3)': - dependencies: - '@volar/language-core': 2.4.20 - '@vue/compiler-dom': 3.5.33 - '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.33 - alien-signals: 2.0.8 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - picomatch: 4.0.4 - optionalDependencies: - typescript: 6.0.3 - - '@vue/language-core@3.3.5': - dependencies: - '@volar/language-core': 2.4.28 - '@vue/compiler-dom': 3.5.33 - '@vue/shared': 3.5.33 - alien-signals: 3.2.1 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - picomatch: 4.0.4 - - '@vue/shared@3.5.33': {} - abbrev@4.0.0: {} acorn-jsx@5.3.2(acorn@8.16.0): @@ -4754,10 +4131,6 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - alien-signals@2.0.8: {} - - alien-signals@3.2.1: {} - ansi-escapes@7.3.0: dependencies: environment: 1.1.0 @@ -4793,8 +4166,6 @@ snapshots: tunnel: 0.0.6 typed-rest-client: 1.8.11 - bail@2.0.2: {} - balanced-match@1.0.2: {} balanced-match@4.0.4: {} @@ -4881,8 +4252,6 @@ snapshots: callsites@3.1.0: {} - ccount@2.0.1: {} - chalk@2.4.2: dependencies: ansi-styles: 3.2.1 @@ -4896,14 +4265,6 @@ snapshots: chalk@5.6.2: {} - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - - character-entities@2.0.2: {} - - character-reference-invalid@2.0.1: {} - cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 @@ -4946,8 +4307,6 @@ snapshots: cockatiel@3.2.1: {} - code-block-writer@13.0.3: {} - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -5040,16 +4399,10 @@ snapshots: cssesc@3.0.0: {} - de-indent@1.0.2: {} - debug@4.4.3: dependencies: ms: 2.1.3 - decode-named-character-reference@1.3.0: - dependencies: - character-entities: 2.0.2 - decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 @@ -5071,17 +4424,11 @@ snapshots: delayed-stream@1.0.0: {} - dequal@2.0.3: {} - detect-indent@7.0.2: {} detect-libc@2.1.2: optional: true - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - diff@4.0.4: {} dom-serializer@2.0.0: @@ -5364,24 +4711,6 @@ snapshots: estraverse@5.3.0: {} - estree-util-is-identifier-name@3.0.0: {} - - estree-util-scope@1.0.0: - dependencies: - '@types/estree': 1.0.8 - devlop: 1.1.0 - - estree-util-visit@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.3 - - estree-walker@2.0.2: {} - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.8 - esutils@2.0.3: {} expand-template@2.0.3: @@ -5389,8 +4718,6 @@ snapshots: exponential-backoff@3.1.3: {} - extend@3.0.2: {} - fast-content-type-parse@3.0.0: {} fast-deep-equal@3.1.3: {} @@ -5503,10 +4830,6 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-tsconfig@4.14.0: - dependencies: - resolve-pkg-maps: 1.0.0 - git-up@8.1.1: dependencies: is-ssh: 1.4.1 @@ -5580,14 +4903,10 @@ snapshots: dependencies: has-symbols: 1.1.0 - hash-sum@2.0.0: {} - hasown@2.0.3: dependencies: function-bind: 1.1.2 - he@1.2.0: {} - hosted-git-info@4.1.0: dependencies: lru-cache: 6.0.0 @@ -5675,19 +4994,10 @@ snapshots: ip-address@10.1.0: {} - is-alphabetical@2.0.1: {} - - is-alphanumerical@2.0.1: - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - is-core-module@2.16.1: dependencies: hasown: 2.0.3 - is-decimal@2.0.1: {} - is-docker@3.0.0: {} is-extglob@2.1.1: {} @@ -5698,8 +5008,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-hexadecimal@2.0.1: {} - is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 @@ -5718,23 +5026,18 @@ snapshots: dependencies: is-inside-container: 1.0.0 - isarray@1.0.0: {} - isexe@2.0.0: {} isexe@4.0.0: {} - isobject@2.1.0: - dependencies: - isarray: 1.0.0 - istextorbinary@9.5.0: dependencies: binaryextensions: 6.11.0 editions: 6.22.0 textextensions: 6.11.0 - jiti@2.6.1: {} + jiti@2.6.1: + optional: true js-tokens@4.0.0: {} @@ -5840,11 +5143,6 @@ snapshots: lilconfig@3.1.3: {} - line-column@1.0.2: - dependencies: - isarray: 1.0.0 - isobject: 2.1.0 - linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 @@ -5877,8 +5175,6 @@ snapshots: lodash@4.18.1: {} - longest-streak@3.1.0: {} - lru-cache@10.4.3: {} lru-cache@11.3.5: {} @@ -5887,10 +5183,6 @@ snapshots: dependencies: yallist: 4.0.0 - magic-string@0.30.21: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - make-fetch-happen@15.0.5: dependencies: '@gar/promise-retry': 1.0.3 @@ -5919,309 +5211,12 @@ snapshots: math-intrinsics@1.1.0: {} - mdast-util-from-markdown@2.0.3: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.2 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-decode-string: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-expression@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-jsx@3.2.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 - stringify-entities: 4.0.4 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.3 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx@3.0.0: - dependencies: - mdast-util-from-markdown: 2.0.3 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdxjs-esm@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.4 - unist-util-is: 6.0.1 - - mdast-util-to-markdown@2.1.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-classify-character: 2.0.1 - micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.1.0 - zwitch: 2.0.4 - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdurl@2.0.0: {} meow@13.2.0: {} - merge-source-map@1.1.0: - dependencies: - source-map: 0.6.1 - merge2@1.4.1: {} - micromark-core-commonmark@2.0.3: - dependencies: - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - micromark-factory-destination: 2.0.1 - micromark-factory-label: 2.0.1 - micromark-factory-space: 2.0.1 - micromark-factory-title: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-html-tag-name: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-mdx-expression@3.0.1: - dependencies: - '@types/estree': 1.0.8 - devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-mdx-jsx@3.0.2: - dependencies: - '@types/estree': 1.0.8 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 - - micromark-extension-mdx-md@2.0.0: - dependencies: - micromark-util-types: 2.0.2 - - micromark-extension-mdxjs-esm@3.0.0: - dependencies: - '@types/estree': 1.0.8 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 - - micromark-extension-mdxjs@3.0.0: - dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) - micromark-extension-mdx-expression: 3.0.1 - micromark-extension-mdx-jsx: 3.0.2 - micromark-extension-mdx-md: 2.0.0 - micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-destination@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-label@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-mdx-expression@2.0.3: - dependencies: - '@types/estree': 1.0.8 - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 - - micromark-factory-space@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-types: 2.0.2 - - micromark-factory-title@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-whitespace@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-character@2.1.1: - dependencies: - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-chunked@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-classify-character@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-combine-extensions@2.0.1: - dependencies: - micromark-util-chunked: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-decode-numeric-character-reference@2.0.2: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-decode-string@2.0.1: - dependencies: - decode-named-character-reference: 1.3.0 - micromark-util-character: 2.1.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-symbol: 2.0.1 - - micromark-util-encode@2.0.1: {} - - micromark-util-events-to-acorn@2.0.3: - dependencies: - '@types/estree': 1.0.8 - '@types/unist': 3.0.3 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 - - micromark-util-html-tag-name@2.0.1: {} - - micromark-util-normalize-identifier@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-resolve-all@2.0.1: - dependencies: - micromark-util-types: 2.0.2 - - micromark-util-sanitize-uri@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-encode: 2.0.1 - micromark-util-symbol: 2.0.1 - - micromark-util-subtokenize@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-symbol@2.0.1: {} - - micromark-util-types@2.0.2: {} - - micromark@4.0.2: - dependencies: - '@types/debug': 4.1.13 - debug: 4.4.3 - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-combine-extensions: 2.0.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-encode: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - transitivePeerDependencies: - - supports-color - micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -6291,14 +5286,10 @@ snapshots: ms@2.1.3: {} - muggle-string@0.4.1: {} - mute-stream@0.0.8: {} mute-stream@3.0.0: {} - nanoid@3.3.11: {} - napi-build-utils@2.0.0: optional: true @@ -6470,16 +5461,6 @@ snapshots: just-diff: 6.0.2 just-diff-apply: 5.5.0 - parse-entities@4.0.2: - dependencies: - '@types/unist': 2.0.11 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.3.0 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - parse-json@8.3.0: dependencies: '@babel/code-frame': 7.29.0 @@ -6512,8 +5493,6 @@ snapshots: dependencies: entities: 6.0.1 - path-browserify@1.0.1: {} - path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -6550,12 +5529,6 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.5.10: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - prebuild-install@7.1.3: dependencies: detect-libc: 2.1.2 @@ -6638,24 +5611,6 @@ snapshots: util-deprecate: 1.0.2 optional: true - remark-mdx@3.1.1: - dependencies: - mdast-util-mdx: 3.0.0 - micromark-extension-mdxjs: 3.0.0 - transitivePeerDependencies: - - supports-color - - remark-parse@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 - micromark-util-types: 2.0.2 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - request-light@0.7.0: {} - require-from-string@2.0.2: {} resolve-cwd@3.0.0: @@ -6666,8 +5621,6 @@ snapshots: resolve-from@5.0.0: {} - resolve-pkg-maps@1.0.0: {} - resolve@1.22.12: dependencies: es-errors: 1.3.0 @@ -6677,13 +5630,6 @@ snapshots: reusify@1.1.0: {} - rollup-utils@0.0.5: - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - path-browserify: 1.0.1 - picomatch: 4.0.4 - run-applescript@7.1.0: {} run-parallel@1.2.0: @@ -6798,8 +5744,6 @@ snapshots: dependencies: is-plain-obj: 4.1.0 - source-map-js@1.2.1: {} - source-map@0.6.1: {} spdx-correct@3.2.0: @@ -6848,11 +5792,6 @@ snapshots: safe-buffer: 5.2.1 optional: true - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -6944,21 +5883,10 @@ snapshots: treeverse@3.0.0: {} - trough@2.2.0: {} - ts-api-utils@2.5.0(typescript@6.0.3): dependencies: typescript: 6.0.3 - ts-macro@0.3.7: - dependencies: - muggle-string: 0.4.1 - - ts-morph@26.0.0: - dependencies: - '@ts-morph/common': 0.27.0 - code-block-writer: 13.0.3 - ts-pattern@5.9.0: {} tsl@1.0.30(typescript@6.0.3): @@ -7020,6 +5948,16 @@ snapshots: tunnel: 0.0.6 underscore: 1.13.8 + typescript-native-bridge@6.0.3-bridge.15.tsgo.7.0.2: + optionalDependencies: + '@typescript-native-bridge/darwin-arm64': 6.0.3-bridge.15.tsgo.7.0.2 + '@typescript-native-bridge/darwin-x64': 6.0.3-bridge.15.tsgo.7.0.2 + '@typescript-native-bridge/linux-arm': 6.0.3-bridge.15.tsgo.7.0.2 + '@typescript-native-bridge/linux-arm64': 6.0.3-bridge.15.tsgo.7.0.2 + '@typescript-native-bridge/linux-x64': 6.0.3-bridge.15.tsgo.7.0.2 + '@typescript-native-bridge/win32-arm64': 6.0.3-bridge.15.tsgo.7.0.2 + '@typescript-native-bridge/win32-x64': 6.0.3-bridge.15.tsgo.7.0.2 + typescript@6.0.3: {} uc.micro@2.1.0: {} @@ -7039,44 +5977,6 @@ snapshots: unicorn-magic@0.3.0: {} - unified@11.0.5: - dependencies: - '@types/unist': 3.0.3 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.3 - - unist-util-is@6.0.1: - dependencies: - '@types/unist': 3.0.3 - - unist-util-lsp@2.1.0: - dependencies: - '@types/unist': 3.0.3 - vscode-languageserver-types: 3.17.5 - - unist-util-position-from-estree@2.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-visit-parents@6.0.2: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.1 - - unist-util-visit@5.1.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.1 - unist-util-visit-parents: 6.0.2 - universal-user-agent@7.0.3: {} universalify@2.0.1: {} @@ -7100,33 +6000,6 @@ snapshots: version-range@4.15.0: {} - vfile-message@4.0.3: - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 - - vfile@6.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile-message: 4.0.3 - - vscode-jsonrpc@8.2.0: {} - - vscode-languageserver-protocol@3.17.5: - dependencies: - vscode-jsonrpc: 8.2.0 - vscode-languageserver-types: 3.17.5 - - vscode-languageserver-textdocument@1.0.12: {} - - vscode-languageserver-types@3.17.5: {} - - vscode-languageserver@9.0.1: - dependencies: - vscode-languageserver-protocol: 3.17.5 - - vscode-uri@3.1.0: {} - walk-up-path@4.0.0: {} whatwg-encoding@3.1.1: @@ -7188,8 +6061,6 @@ snapshots: yallist@5.0.0: {} - yaml@2.8.3: {} - yaml@2.9.0: {} yargs-parser@22.0.0: {} @@ -7220,5 +6091,3 @@ snapshots: graphmatch: 1.1.1 zod@4.3.6: {} - - zwitch@2.0.4: {} From 99bb697c0bb3ae3625cf11e608ae4e1dbef38a16 Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Wed, 2 Sep 2026 17:45:39 +0800 Subject: [PATCH 2/4] Remove languagePlugins.ts from dogfood corpus The file was deleted with the Volar wiring; the hardcoded corpus list in packages/compat-eslint/test/bench/dogfood-corpus.ts still referenced it, failing lazy-estree.test.js with ENOENT in CI. --- packages/compat-eslint/test/bench/dogfood-corpus.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/compat-eslint/test/bench/dogfood-corpus.ts b/packages/compat-eslint/test/bench/dogfood-corpus.ts index 1bdf17fa..5491a73e 100644 --- a/packages/compat-eslint/test/bench/dogfood-corpus.ts +++ b/packages/compat-eslint/test/bench/dogfood-corpus.ts @@ -13,7 +13,6 @@ export const DOGFOOD_FILES = [ 'packages/cli/lib/cache.ts', 'packages/cli/lib/colors.ts', 'packages/cli/lib/fs-cache.ts', - 'packages/cli/lib/languagePlugins.ts', 'packages/cli/lib/render.ts', 'packages/cli/lib/worker.ts', 'packages/compat-eslint/index.ts', From c28e3582f959d87dc214149a9e7b7f048d4059b8 Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Thu, 10 Sep 2026 07:07:34 +0800 Subject: [PATCH 3/4] Bump typescript-native-bridge to bridge.16, drop leftover languages plumbing - packages/cli now pins typescript-native-bridge 6.0.3-bridge.16.tsgo.7.0.2 - remove the languages parameter from the cache layer (dead since the Volar removal); the cache key no longer carries it, which also invalidates existing caches --- packages/cli/index.ts | 8 ++-- packages/cli/lib/cache.ts | 10 ++--- packages/cli/package.json | 2 +- packages/cli/test/cache.test.ts | 42 ++++++++++----------- pnpm-lock.yaml | 66 ++++++++++++++++----------------- 5 files changed, 61 insertions(+), 67 deletions(-) diff --git a/packages/cli/index.ts b/packages/cli/index.ts index 0f3e55d7..954c96d4 100644 --- a/packages/cli/index.ts +++ b/packages/cli/index.ts @@ -121,14 +121,13 @@ class Project { }`; // Load layer-1 cache unless --force was passed. The cache file path - // key includes tsslint version, TS version, tsconfig, languages, - // and configFile mtime+size — anything that changes the rule set or - // the toolchain mints a fresh file. See packages/cli/lib/cache.ts. + // key includes tsslint version, TS version, tsconfig, and configFile + // mtime+size — anything that changes the rule set or the toolchain + // mints a fresh file. See packages/cli/lib/cache.ts. if (!process.argv.includes('--force')) { this.cacheData = cache.loadCache( this.tsconfig, this.configFile, - [], ts.version, ts.sys.createHash, ); @@ -528,7 +527,6 @@ const formatHost: ts.FormatDiagnosticsHost = { cache.saveCache( project.tsconfig, project.configFile!, - [], ts.version, project.cacheData, ts.sys.createHash, diff --git a/packages/cli/lib/cache.ts b/packages/cli/lib/cache.ts index 804a8df4..aa61c7b6 100644 --- a/packages/cli/lib/cache.ts +++ b/packages/cli/lib/cache.ts @@ -7,7 +7,7 @@ // - tsslint version (segment) → bumping the package invalidates everything // - typescript version (segment) → .tsbuildinfo format / TS internals can // change across TS majors, so segregate per TS version -// - hash of (configFilePath, tsconfig, languages, configFile mtime+size) +// - hash of (configFilePath, tsconfig, configFile mtime+size) // → editing tsslint.config.ts mints a fresh cache file // // Cache file shape — see packages/cli/CACHE.md "Cache file format" section. @@ -72,11 +72,10 @@ export type SerializedRelatedInfo = Omit string = defaultHash, ): CacheData { - const filePath = getCacheFilePath(tsconfig, configFilePath, languages, tsVersion, createHash); + const filePath = getCacheFilePath(tsconfig, configFilePath, tsVersion, createHash); if (!fs.statSync(filePath, { throwIfNoEntry: false })?.isFile()) { return emptyCache(); } @@ -106,12 +105,11 @@ export function loadCache( export function saveCache( tsconfig: string, configFilePath: string, - languages: string[], tsVersion: string, cache: CacheData, createHash: (s: string) => string = defaultHash, ): void { - const filePath = getCacheFilePath(tsconfig, configFilePath, languages, tsVersion, createHash); + const filePath = getCacheFilePath(tsconfig, configFilePath, tsVersion, createHash); fs.mkdirSync(path.dirname(filePath), { recursive: true }); const tmpPath = filePath + '.tmp'; fs.writeFileSync(tmpPath, JSON.stringify(cache)); @@ -154,7 +152,6 @@ function isCacheData(x: unknown): x is CacheData { function getCacheFilePath( tsconfig: string, configFilePath: string, - languages: string[], tsVersion: string, createHash: (s: string) => string, ): string { @@ -162,7 +159,6 @@ function getCacheFilePath( const cacheKey = [ configFilePath, tsconfig, - languages.sort().join(','), configStat?.mtimeMs ?? 0, configStat?.size ?? 0, ].join('\0'); diff --git a/packages/cli/package.json b/packages/cli/package.json index d1652eaf..a9023b6b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -25,6 +25,6 @@ "@tsslint/core": "3.1.4", "@tsslint/types": "3.1.4", "minimatch": "^10.0.1", - "typescript-native-bridge": "6.0.3-bridge.15.tsgo.7.0.2" + "typescript-native-bridge": "6.0.3-bridge.16.tsgo.7.0.2" } } diff --git a/packages/cli/test/cache.test.ts b/packages/cli/test/cache.test.ts index ca0e8d29..5133a6d9 100644 --- a/packages/cli/test/cache.test.ts +++ b/packages/cli/test/cache.test.ts @@ -49,7 +49,7 @@ function configWithMarker(marker: string): string { { const tsconfig = tmpFile('tsconfig1.json', '{}'); const config = configWithMarker('t1-' + Date.now()); - const data = cache.loadCache(tsconfig, config, [], '6.0.0'); + const data = cache.loadCache(tsconfig, config, '6.0.0'); check('empty cache when file missing', data.files !== undefined && Object.keys(data.files).length === 0); check('ruleModes empty', Object.keys(data.ruleModes).length === 0); check('version present', typeof data.version === 'string'); @@ -71,8 +71,8 @@ function configWithMarker(marker: string): string { }, }, }; - cache.saveCache(tsconfig, config, [], '6.0.0', original); - const loaded = cache.loadCache(tsconfig, config, [], '6.0.0'); + cache.saveCache(tsconfig, config, '6.0.0', original); + const loaded = cache.loadCache(tsconfig, config, '6.0.0'); check('round-trip: ruleModes preserved', loaded.ruleModes['no-undef'] === 'type-aware'); check('round-trip: file mtime preserved', loaded.files['/abs/foo.ts']?.mtime === 1234567890); check('round-trip: rule entry preserved', !!loaded.files['/abs/foo.ts']?.rules['semi']); @@ -82,7 +82,7 @@ function configWithMarker(marker: string): string { { const tsconfig = tmpFile('tsconfig3.json', '{}'); const config = configWithMarker('t3-' + Date.now()); - cache.saveCache(tsconfig, config, [], '6.0.0', cache.emptyCache()); + cache.saveCache(tsconfig, config, '6.0.0', cache.emptyCache()); // Find the cache file and corrupt it. const cacheRoot = path.join(os.tmpdir(), 'tsslint-cache'); @@ -123,7 +123,7 @@ function configWithMarker(marker: string): string { check('found newly-written cache file', !!cacheFile); if (cacheFile) { fs.writeFileSync(cacheFile, '{not valid json'); - const loaded = cache.loadCache(tsconfig, config, [], '6.0.0'); + const loaded = cache.loadCache(tsconfig, config, '6.0.0'); check('corrupted JSON → empty cache', Object.keys(loaded.files).length === 0); } } @@ -138,8 +138,8 @@ function configWithMarker(marker: string): string { files: { '/x': { mtime: 1, rules: {} } }, }; // Manually write a stale-version file - cache.saveCache(tsconfig, config, [], '6.0.0', stale as any); - const loaded = cache.loadCache(tsconfig, config, [], '6.0.0'); + cache.saveCache(tsconfig, config, '6.0.0', stale as any); + const loaded = cache.loadCache(tsconfig, config, '6.0.0'); check('version mismatch → empty', Object.keys(loaded.ruleModes).length === 0); } @@ -147,7 +147,7 @@ function configWithMarker(marker: string): string { { const tsconfig = tmpFile('tsconfig5.json', '{}'); const config = configWithMarker('t5-' + Date.now()); - cache.saveCache(tsconfig, config, [], '6.0.0', cache.emptyCache()); + cache.saveCache(tsconfig, config, '6.0.0', cache.emptyCache()); // Corrupt to a valid-JSON-but-wrong-shape value. Find the file we // just wrote (heuristic: empty cache contents). const cacheRoot = path.join(os.tmpdir(), 'tsslint-cache'); @@ -186,7 +186,7 @@ function configWithMarker(marker: string): string { } if (target) { fs.writeFileSync(target, '"just a string"'); - const loaded = cache.loadCache(tsconfig, config, [], '6.0.0'); + const loaded = cache.loadCache(tsconfig, config, '6.0.0'); check('shape mismatch → empty', Object.keys(loaded.files).length === 0); } } @@ -200,9 +200,9 @@ function configWithMarker(marker: string): string { ruleModes: { 'rule6a': 'type-aware' }, files: {}, }; - cache.saveCache(tsconfig, config, [], '6.0.0', data); - const loadedSameVersion = cache.loadCache(tsconfig, config, [], '6.0.0'); - const loadedDifferentVersion = cache.loadCache(tsconfig, config, [], '7.0.0'); + cache.saveCache(tsconfig, config, '6.0.0', data); + const loadedSameVersion = cache.loadCache(tsconfig, config, '6.0.0'); + const loadedDifferentVersion = cache.loadCache(tsconfig, config, '7.0.0'); check( 'same ts version finds the cache', @@ -227,7 +227,7 @@ function configWithMarker(marker: string): string { ruleModes: { 'rule7': 'type-aware' }, files: {}, }; - cache.saveCache(tsconfig, config, [], '6.0.0', data); + cache.saveCache(tsconfig, config, '6.0.0', data); // Bump config size + mtime. fs.writeFileSync(config, '// changed content'); @@ -236,7 +236,7 @@ function configWithMarker(marker: string): string { const newTime = new Date(Date.now() + 60_000); fs.utimesSync(config, newTime, newTime); - const loaded = cache.loadCache(tsconfig, config, [], '6.0.0'); + const loaded = cache.loadCache(tsconfig, config, '6.0.0'); check( 'config edit invalidates cache (different path key)', !loaded.ruleModes['rule7'], @@ -252,7 +252,7 @@ function configWithMarker(marker: string): string { { const tsconfig = tmpFile('tsconfig8.json', '{}'); const config = configWithMarker('t8-' + Date.now()); - cache.saveCache(tsconfig, config, [], '6.0.0', cache.emptyCache()); + cache.saveCache(tsconfig, config, '6.0.0', cache.emptyCache()); const cacheRoot = path.join(os.tmpdir(), 'tsslint-cache'); let tmpLeaked = false; @@ -283,7 +283,7 @@ function configWithMarker(marker: string): string { { const tsconfig = tmpFile('tsconfig9.json', '{}'); const config = configWithMarker('t9-' + Date.now()); - cache.saveCache(tsconfig, config, [], '6.0.0', cache.emptyCache()); + cache.saveCache(tsconfig, config, '6.0.0', cache.emptyCache()); const cacheRoot = path.join(os.tmpdir(), 'tsslint-cache'); let target: string | null = null; const stack = [cacheRoot]; @@ -320,7 +320,7 @@ function configWithMarker(marker: string): string { files: { '/x': { mtime: 'not-a-number', rules: {} } }, }; fs.writeFileSync(target, JSON.stringify(corrupt)); - const loaded = cache.loadCache(tsconfig, config, [], '6.0.0'); + const loaded = cache.loadCache(tsconfig, config, '6.0.0'); check('inner mtime mismatch → empty cache', Object.keys(loaded.files).length === 0); // rules is null — must also reject. @@ -330,7 +330,7 @@ function configWithMarker(marker: string): string { files: { '/x': { mtime: 1, rules: null } }, }; fs.writeFileSync(target, JSON.stringify(corrupt2)); - const loaded2 = cache.loadCache(tsconfig, config, [], '6.0.0'); + const loaded2 = cache.loadCache(tsconfig, config, '6.0.0'); check('inner rules null → empty cache', Object.keys(loaded2.files).length === 0); } } @@ -344,7 +344,7 @@ function configWithMarker(marker: string): string { { const tsconfig = tmpFile('tsconfig10.json', '{}'); const config = configWithMarker('t10-' + Date.now()); - cache.saveCache(tsconfig, config, [], '6.0.0', cache.emptyCache()); + cache.saveCache(tsconfig, config, '6.0.0', cache.emptyCache()); const cacheRoot = path.join(os.tmpdir(), 'tsslint-cache'); let target: string | null = null; const stack = [cacheRoot]; @@ -376,7 +376,7 @@ function configWithMarker(marker: string): string { if (target) { const corrupt = { version: 'v2', ruleModes: {}, files: {}, incrementalState: 42 }; fs.writeFileSync(target, JSON.stringify(corrupt)); - const loaded = cache.loadCache(tsconfig, config, [], '6.0.0'); + const loaded = cache.loadCache(tsconfig, config, '6.0.0'); check('incrementalState wrong type → empty cache', loaded.incrementalState === undefined); const corrupt2 = { @@ -386,7 +386,7 @@ function configWithMarker(marker: string): string { incrementalState: { version: 'v3' /* tsBuildInfoText missing */ }, }; fs.writeFileSync(target, JSON.stringify(corrupt2)); - const loaded2 = cache.loadCache(tsconfig, config, [], '6.0.0'); + const loaded2 = cache.loadCache(tsconfig, config, '6.0.0'); check('incrementalState missing field → empty cache', loaded2.incrementalState === undefined); } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9256f198..0f15ee0d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -84,8 +84,8 @@ importers: specifier: ^10.0.1 version: 10.2.5 typescript-native-bridge: - specifier: 6.0.3-bridge.15.tsgo.7.0.2 - version: 6.0.3-bridge.15.tsgo.7.0.2 + specifier: 6.0.3-bridge.16.tsgo.7.0.2 + version: 6.0.3-bridge.16.tsgo.7.0.2 packages/compat-eslint: dependencies: @@ -1037,38 +1037,38 @@ packages: resolution: {integrity: sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-native-bridge/darwin-arm64@6.0.3-bridge.15.tsgo.7.0.2': - resolution: {integrity: sha512-nrhPj8nED29uhZH2V7yHXFPy5O8ro5vRMVnChO1CvMf8tDg9tlhlBPFeeYgvp001upBRZu8JmTYw1wpcRUvDVA==} + '@typescript-native-bridge/darwin-arm64@6.0.3-bridge.16.tsgo.7.0.2': + resolution: {integrity: sha512-D0yL7T3gDXwn4XiRtA1x7bW+0zedMUVG3PnIt+X4lxblnId+Wo2FBvf+2ZLZpPOO3DILGz5bdX+Aq8tqboeGEg==} cpu: [arm64] os: [darwin] - '@typescript-native-bridge/darwin-x64@6.0.3-bridge.15.tsgo.7.0.2': - resolution: {integrity: sha512-JiS2e3W+Vtr8u/oTYeTdCK7S+seB2cBz3l7gQYuon4oTiHS0Mi+YGEYhSG2v2iuRkTMcrVrr9+XazwMcPlIW+Q==} + '@typescript-native-bridge/darwin-x64@6.0.3-bridge.16.tsgo.7.0.2': + resolution: {integrity: sha512-HLPoAVsmkgDec3UZpUPI4hquvA/X/qZ71w4dQXP7LbsN+5ROpum7gWx9S0ZwVgvoaC4++iu08Qnw1l5gXknyvg==} cpu: [x64] os: [darwin] - '@typescript-native-bridge/linux-arm64@6.0.3-bridge.15.tsgo.7.0.2': - resolution: {integrity: sha512-BFkIGbpdRf+iNK0IHCKUYAvAIQ4tnTRegNU+BLaYUbQ5ER/YGytSzKQqh2c2zls1H+Gc0DyZcDsBIFr0gC6BDg==} + '@typescript-native-bridge/linux-arm64@6.0.3-bridge.16.tsgo.7.0.2': + resolution: {integrity: sha512-tVOhuwktZREiVdfOTgh4K8sLaJZHyXOz5SwtwkMknM3A6tSdYTqQ3s7s/hDkB18l33+ZWBKYfJ69Sge8pGeKJw==} cpu: [arm64] os: [linux] - '@typescript-native-bridge/linux-arm@6.0.3-bridge.15.tsgo.7.0.2': - resolution: {integrity: sha512-VlvPkt0x7ShuPmI58wSsS7VBa9uq4fQtaz82GC8yK1bFP+FdHcLJleM2SyAvHpxyd8nIyKMzcJolY+qffaBRUg==} + '@typescript-native-bridge/linux-arm@6.0.3-bridge.16.tsgo.7.0.2': + resolution: {integrity: sha512-rCqqctyc4801hX2pCVM1kv7rYfBiSi0SGJU+Nv3RQ5C2gBXkShBA39+Vw0bsqrX+Fj+Tre4kuOdSlUnSeDv2GA==} cpu: [arm] os: [linux] - '@typescript-native-bridge/linux-x64@6.0.3-bridge.15.tsgo.7.0.2': - resolution: {integrity: sha512-QB6q8kNk5HO/mc3iyJBx1I7mx2+ObNxK/SgeX18gVydcooVdjLYv9lSDjv/FuA9iYzuhYjfrOuRxuhxKoAOcmQ==} + '@typescript-native-bridge/linux-x64@6.0.3-bridge.16.tsgo.7.0.2': + resolution: {integrity: sha512-WKIuVkh9YuL1udrL0Dp+XvNLaM9maQZMz38ukNn93kwNhSXIXa+62xK69IKdc8osVZU6fDk0ZbIKkcrGkOi51A==} cpu: [x64] os: [linux] - '@typescript-native-bridge/win32-arm64@6.0.3-bridge.15.tsgo.7.0.2': - resolution: {integrity: sha512-ZWY1I/6dsInK3S2ue4sKHj3zp3nmqD+9iqq7LfjELNjjYSUvseYfqv3170zeqZV2PQRzjA3Qtd85pkYr0SQDEQ==} + '@typescript-native-bridge/win32-arm64@6.0.3-bridge.16.tsgo.7.0.2': + resolution: {integrity: sha512-u0/Aq5bkdFcuw463Y6zsYSKRdX1rcTtLkAK1PTwRH70aMkaU6vkr7BSIjvLj3lDCqsySFuoHHuNg5J2pmqxp3A==} cpu: [arm64] os: [win32] - '@typescript-native-bridge/win32-x64@6.0.3-bridge.15.tsgo.7.0.2': - resolution: {integrity: sha512-LqaVPjvllVQm/OfID0z9ubDPEuO6asNOH/qrV1xTGFxgHRRn8UUz3/te4zaERalVRgwNWYlSbzSQb+jttLjvMA==} + '@typescript-native-bridge/win32-x64@6.0.3-bridge.16.tsgo.7.0.2': + resolution: {integrity: sha512-l0OPZ6xD69vQpyfS5yTSwJ5xJTYM2hUKFRYlvyyUSvbFubUz8jQRLcrn+WU4QehV9WkVIQIx8CLgNCI0Zqhmyg==} cpu: [x64] os: [win32] @@ -2782,8 +2782,8 @@ packages: typed-rest-client@1.8.11: resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==} - typescript-native-bridge@6.0.3-bridge.15.tsgo.7.0.2: - resolution: {integrity: sha512-utlvj8zRana8mutK9LgoPLtMcMT/j/0ot5eh/YUJgDSVQUGLIC6m6Dwt1SP820HMJZI3Yg8fXnqFrkDaa2Gk4g==} + typescript-native-bridge@6.0.3-bridge.16.tsgo.7.0.2: + resolution: {integrity: sha512-bO+fh23fh4j0mK2NmlFOrlbR9Ke5cHpjOsDaM2czXlSXqxNchGdDVyAdaVCFz0DofkFOov96HLvQaP3W57F+CA==} engines: {node: '>=20.19'} hasBin: true @@ -4003,25 +4003,25 @@ snapshots: '@typescript-eslint/types': 8.61.1 eslint-visitor-keys: 5.0.1 - '@typescript-native-bridge/darwin-arm64@6.0.3-bridge.15.tsgo.7.0.2': + '@typescript-native-bridge/darwin-arm64@6.0.3-bridge.16.tsgo.7.0.2': optional: true - '@typescript-native-bridge/darwin-x64@6.0.3-bridge.15.tsgo.7.0.2': + '@typescript-native-bridge/darwin-x64@6.0.3-bridge.16.tsgo.7.0.2': optional: true - '@typescript-native-bridge/linux-arm64@6.0.3-bridge.15.tsgo.7.0.2': + '@typescript-native-bridge/linux-arm64@6.0.3-bridge.16.tsgo.7.0.2': optional: true - '@typescript-native-bridge/linux-arm@6.0.3-bridge.15.tsgo.7.0.2': + '@typescript-native-bridge/linux-arm@6.0.3-bridge.16.tsgo.7.0.2': optional: true - '@typescript-native-bridge/linux-x64@6.0.3-bridge.15.tsgo.7.0.2': + '@typescript-native-bridge/linux-x64@6.0.3-bridge.16.tsgo.7.0.2': optional: true - '@typescript-native-bridge/win32-arm64@6.0.3-bridge.15.tsgo.7.0.2': + '@typescript-native-bridge/win32-arm64@6.0.3-bridge.16.tsgo.7.0.2': optional: true - '@typescript-native-bridge/win32-x64@6.0.3-bridge.15.tsgo.7.0.2': + '@typescript-native-bridge/win32-x64@6.0.3-bridge.16.tsgo.7.0.2': optional: true '@typespec/ts-http-runtime@0.3.5': @@ -5948,15 +5948,15 @@ snapshots: tunnel: 0.0.6 underscore: 1.13.8 - typescript-native-bridge@6.0.3-bridge.15.tsgo.7.0.2: + typescript-native-bridge@6.0.3-bridge.16.tsgo.7.0.2: optionalDependencies: - '@typescript-native-bridge/darwin-arm64': 6.0.3-bridge.15.tsgo.7.0.2 - '@typescript-native-bridge/darwin-x64': 6.0.3-bridge.15.tsgo.7.0.2 - '@typescript-native-bridge/linux-arm': 6.0.3-bridge.15.tsgo.7.0.2 - '@typescript-native-bridge/linux-arm64': 6.0.3-bridge.15.tsgo.7.0.2 - '@typescript-native-bridge/linux-x64': 6.0.3-bridge.15.tsgo.7.0.2 - '@typescript-native-bridge/win32-arm64': 6.0.3-bridge.15.tsgo.7.0.2 - '@typescript-native-bridge/win32-x64': 6.0.3-bridge.15.tsgo.7.0.2 + '@typescript-native-bridge/darwin-arm64': 6.0.3-bridge.16.tsgo.7.0.2 + '@typescript-native-bridge/darwin-x64': 6.0.3-bridge.16.tsgo.7.0.2 + '@typescript-native-bridge/linux-arm': 6.0.3-bridge.16.tsgo.7.0.2 + '@typescript-native-bridge/linux-arm64': 6.0.3-bridge.16.tsgo.7.0.2 + '@typescript-native-bridge/linux-x64': 6.0.3-bridge.16.tsgo.7.0.2 + '@typescript-native-bridge/win32-arm64': 6.0.3-bridge.16.tsgo.7.0.2 + '@typescript-native-bridge/win32-x64': 6.0.3-bridge.16.tsgo.7.0.2 typescript@6.0.3: {} From 92f6375f62814777f6788abba86e81636f0318bc Mon Sep 17 00:00:00 2001 From: Johnson Chu Date: Thu, 10 Sep 2026 07:07:34 +0800 Subject: [PATCH 4/4] docs: v4 migration guide - README: real framework-support section (tsconfig contentMappers), updated requirements (bundled engine, no typescript pin, musl unsupported) - docs/migration-v4.md: breaking changes, flag -> contentMappers mapping, engine behavior notes, editor status, availability gates --- README.md | 21 ++++++++-- docs/migration-v4.md | 91 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 docs/migration-v4.md diff --git a/README.md b/README.md index 82460edf..26091a1c 100644 --- a/README.md +++ b/README.md @@ -212,7 +212,21 @@ TSSLint produces diagnostics and edits — it does not format. Run dprint or Pre ## Framework support -Since v4, meta-framework support is provided by the TS 7.1 content mapper (tsconfig `contentMappers`); see the release notes for the migration guide. +Since v4, framework files (`.vue`, `.astro`, `.mdx`, `.svelte`, …) are checked through TypeScript 7.1's **content mapper** — the same mechanism `tsc` uses — instead of Volar language plugins. Declare the mappers in `tsconfig.json`; TSSLint picks them up with the project: + +```jsonc +{ + "contentMappers": [ + { "package": "vue-content-mapper", "extensions": [".vue"] } + ] +} +``` + +Rules run against the transformed TypeScript, and diagnostics and fixes are mapped back to the original file through the mapper's span map. Fixes are only offered on exact (verbatim) spans — the same restriction `tsc` applies to edits. + +The v3 flags `--vue-project`, `--vue-vine-project`, `--mdx-project`, `--astro-project`, and `--ts-macro-project` are gone; the mapper configuration in `tsconfig.json` replaces them. See [docs/migration-v4.md](docs/migration-v4.md). + +> **Availability**: content mapper support activates once `typescript-native-bridge` moves to tsgo 7.1. Until then the CLI checks plain TypeScript files only. ## Importing ESLint, TSLint, or TSL rules @@ -309,8 +323,9 @@ Build your own with the `Plugin` type from `@tsslint/types`. ## Requirements - Node.js **22.6.0+** (uses `--experimental-strip-types` to load `tsslint.config.ts` directly — no transpile step) -- Any TypeScript version with Language Service Plugin support -- Not compatible with `typescript-go` (v7), which does not yet support Language Service Plugins +- The CLI bundles its own TypeScript engine ([`typescript-native-bridge`](https://github.com/johnsoncodehk/typescript-native-bridge), TS 7 / tsgo) — you no longer install or pin `typescript` to lint +- Not supported on musl-based systems (Alpine) — the bundled engine links a glibc native binary +- `@tsslint/typescript-plugin` still runs against a classic TypeScript tsserver; the TS 7 language server path is being rebuilt (see [docs/migration-v4.md](docs/migration-v4.md)) ## License diff --git a/docs/migration-v4.md b/docs/migration-v4.md new file mode 100644 index 00000000..f621d463 --- /dev/null +++ b/docs/migration-v4.md @@ -0,0 +1,91 @@ +# Migrating to TSSLint v4 + +v4 moves the lint engine onto TypeScript 7 and replaces the Volar-based +framework support with TypeScript's own content mapper. + +## Breaking changes + +### 1. The CLI bundles its own TypeScript engine + +`@tsslint/cli` no longer declares `typescript` as a peer dependency. It depends +on [`typescript-native-bridge`](https://github.com/johnsoncodehk/typescript-native-bridge) +(exact-pinned), which keeps the classic `typescript` API surface but runs the +TS 7 (tsgo) checker in-process. + +- You no longer need to install or pin `typescript` for linting, and package + manager overrides that redirected `typescript` to the bridge are no longer + required for TSSLint itself. +- Diagnostics come from the tsgo checker. On a real project the output can + differ from TS 6.x in edge cases — that difference is the engine, not a + TSSLint regression. +- The bridge does not support custom module resolvers or JS custom transformers. + If your setup remaps imports to different files on disk, those remappings are + not honoured. + +### 2. Framework flags are gone + +The Volar integration — and with it the five project flags — has been removed: + +| v3 | v4 | +|---|---| +| `tsslint --project tsconfig.json --vue-project tsconfig.json` | declare `contentMappers` in `tsconfig.json`, then `tsslint --project tsconfig.json` | +| `--vue-vine-project`, `--mdx-project`, `--astro-project`, `--ts-macro-project` | same — mapper entries in `tsconfig.json` | + +There is no replacement flag; the tsconfig is the single source of truth. + +### 3. Platform requirements + +- Node.js **22.6.0+** (unchanged) — the bridge itself needs ≥ 20.19. +- **musl-based systems (Alpine) are not supported.** The bridge links a glibc + native binary; run the lint step in a glibc image and copy results into your + Alpine deploy stage. +- Peak memory on checker-heavy runs rises to roughly 1.9× the previous engine. + +## Framework projects + +Framework files are checked through TypeScript 7.1's content mapper. Add the +mapper package for your framework to `tsconfig.json`: + +```jsonc +{ + "compilerOptions": { }, + "contentMappers": [ + { "package": "vue-content-mapper", "extensions": [".vue"], "options": { } } + ], + "include": ["src"] +} +``` + +The mapper package declares how it runs in its own `package.json`: + +```jsonc +{ + "typescript": { + "contentMapper": { + "exec": ["node", "dist/server.js"], + "compilerOptions": ["module", "jsx", "jsxImportSource"] + } + } +} +``` + +Notes that affect what you can lint: + +- Rules run on the transformed TypeScript. Diagnostics and fixes are mapped back + to the original file through the mapper's span map; **fixes are only offered + on exact (verbatim) spans**, matching the edit-safety rule `tsc` applies. +- The protocol has no per-diagnostic-code filtering and does not drop diagnostics + on unmapped (synthetic) regions — both are deliberate design choices upstream. +- `tsc` requires `--runExternalCode` to execute mappers; TSSLint runs them as + part of loading the project. + +**Availability**: content mapper support activates once `typescript-native-bridge` +rebases onto tsgo 7.1. Until then the CLI checks plain TypeScript files only. +Mapper packages per framework follow their own ecosystems' adoption. + +## Editors + +`@tsslint/typescript-plugin` still targets a classic TypeScript tsserver and is +unaffected by the CLI change. The TS 7 language server path (LSP middleware plus +content mapper registration) is being rebuilt on the TS 7.1 APIs; until that +lands, editor diagnostics for framework files keep using the previous setup.