diff --git a/package.json b/package.json index 5f6d5b13a..e2eeff50c 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "lint": "prettier --check ." }, "dependencies": { - "typescript": "^5.8.2" + "typescript": "^5.9.2" }, "devDependencies": { "cross-env": "^7.0.2", diff --git a/packages/language-server/package.json b/packages/language-server/package.json index 7ecaf5e97..668cdc65b 100644 --- a/packages/language-server/package.json +++ b/packages/language-server/package.json @@ -62,7 +62,7 @@ "prettier-plugin-svelte": "^3.4.0", "svelte": "^4.2.19", "svelte2tsx": "workspace:~", - "typescript": "^5.8.2", + "typescript": "^5.9.2", "typescript-auto-import-cache": "^0.3.6", "vscode-css-languageservice": "~6.3.5", "vscode-html-languageservice": "~5.4.0", diff --git a/packages/language-server/src/ls-config.ts b/packages/language-server/src/ls-config.ts index 1d82adebf..ff1ddb059 100644 --- a/packages/language-server/src/ls-config.ts +++ b/packages/language-server/src/ls-config.ts @@ -212,6 +212,10 @@ export interface TSUserConfig { workspaceSymbols?: TsWorkspaceSymbolsConfig; } +interface TsJsSharedConfig { + hover?: { maximumLength?: number }; +} + /** * A subset of the JS/TS VS Code settings which * are transformed to ts.UserPreferences. @@ -291,6 +295,12 @@ export interface TsWorkspaceSymbolsConfig { export type TsUserConfigLang = 'typescript' | 'javascript'; +interface TsUserConfigLangMap { + typescript?: TSUserConfig; + javascript?: TSUserConfig; + 'js/ts'?: TsJsSharedConfig; +} + /** * The config as the vscode-css-languageservice understands it */ @@ -434,10 +444,11 @@ export class LSConfigManager { ); } - updateTsJsUserPreferences(config: Record): void { + updateTsJsUserPreferences(config: TsUserConfigLangMap): void { + const shared = config['js/ts']; (['typescript', 'javascript'] as const).forEach((lang) => { if (config[lang]) { - this._updateTsUserPreferences(lang, config[lang]); + this._updateTsUserPreferences(lang, config[lang], shared); this.rawTsUserConfig[lang] = config[lang]; } }); @@ -458,7 +469,11 @@ export class LSConfigManager { this.notifyListeners(); } - private _updateTsUserPreferences(lang: TsUserConfigLang, config: TSUserConfig) { + private _updateTsUserPreferences( + lang: TsUserConfigLang, + config: TSUserConfig, + shared?: TsJsSharedConfig + ) { const { inlayHints } = config; this.tsUserPreferences[lang] = { @@ -482,6 +497,7 @@ export class LSConfigManager { includeCompletionsWithObjectLiteralMethodSnippets: config.suggest?.objectLiteralMethodSnippets?.enabled ?? true, preferTypeOnlyAutoImports: config.preferences?.preferTypeOnlyAutoImports, + maximumHoverLength: shared?.hover?.maximumLength, // Although we don't support incompletion cache. // But this will make ts resolve the module specifier more aggressively @@ -618,7 +634,7 @@ export class LSConfigManager { return this.htmlConfig; } - updateTsJsFormateConfig(config: Record): void { + updateTsJsFormateConfig(config: TsUserConfigLangMap): void { (['typescript', 'javascript'] as const).forEach((lang) => { if (config[lang]) { this._updateTsFormatConfig(lang, config[lang]); diff --git a/packages/language-server/src/plugins/typescript/features/HoverProvider.ts b/packages/language-server/src/plugins/typescript/features/HoverProvider.ts index ebd9f69c6..bb6635f87 100644 --- a/packages/language-server/src/plugins/typescript/features/HoverProvider.ts +++ b/packages/language-server/src/plugins/typescript/features/HoverProvider.ts @@ -12,7 +12,7 @@ export class HoverProviderImpl implements HoverProvider { constructor(private readonly lsAndTsDocResolver: LSAndTSDocResolver) {} async doHover(document: Document, position: Position): Promise { - const { lang, tsDoc } = await this.getLSAndTSDoc(document); + const { lang, tsDoc, userPreferences } = await this.getLSAndTSDoc(document); const eventHoverInfo = this.getEventHoverInfo(lang, document, tsDoc, position); if (eventHoverInfo) { @@ -20,7 +20,11 @@ export class HoverProviderImpl implements HoverProvider { } const offset = tsDoc.offsetAt(tsDoc.getGeneratedPosition(position)); - const info = lang.getQuickInfoAtPosition(tsDoc.filePath, offset); + const info = lang.getQuickInfoAtPosition( + tsDoc.filePath, + offset, + userPreferences.maximumHoverLength + ); if (!info) { return null; } diff --git a/packages/language-server/test/plugins/typescript/features/inlayHints/fixtures/component-handler/expectedv2.json b/packages/language-server/test/plugins/typescript/features/inlayHints/fixtures/component-handler/expectedv2.json index d36c82693..0aef681fa 100644 --- a/packages/language-server/test/plugins/typescript/features/inlayHints/fixtures/component-handler/expectedv2.json +++ b/packages/language-server/test/plugins/typescript/features/inlayHints/fixtures/component-handler/expectedv2.json @@ -12,8 +12,8 @@ "value": "MouseEvent", "location": { "range": { - "start": { "line": 16546, "character": 10 }, - "end": { "line": 16546, "character": 20 } + "start": { "line": 20928, "character": 10 }, + "end": { "line": 20928, "character": 20 } }, "uri": "/typescript/lib/lib.dom.d.ts" } diff --git a/packages/language-server/test/plugins/typescript/features/inlayHints/fixtures/element-handler/expectedv2.json b/packages/language-server/test/plugins/typescript/features/inlayHints/fixtures/element-handler/expectedv2.json index 0d85aa1e4..07b7976c0 100644 --- a/packages/language-server/test/plugins/typescript/features/inlayHints/fixtures/element-handler/expectedv2.json +++ b/packages/language-server/test/plugins/typescript/features/inlayHints/fixtures/element-handler/expectedv2.json @@ -6,8 +6,8 @@ "value": "MouseEvent", "location": { "range": { - "start": { "line": 16546, "character": 10 }, - "end": { "line": 16546, "character": 20 } + "start": { "line": 20928, "character": 10 }, + "end": { "line": 20928, "character": 20 } }, "uri": "/typescript/lib/lib.dom.d.ts" } @@ -21,8 +21,8 @@ "value": "EventTarget", "location": { "range": { - "start": { "line": 8857, "character": 10 }, - "end": { "line": 8857, "character": 21 } + "start": { "line": 11562, "character": 10 }, + "end": { "line": 11562, "character": 21 } }, "uri": "/typescript/lib/lib.dom.d.ts" } @@ -32,8 +32,8 @@ "value": "HTMLButtonElement", "location": { "range": { - "start": { "line": 10333, "character": 10 }, - "end": { "line": 10333, "character": 27 } + "start": { "line": 13261, "character": 10 }, + "end": { "line": 13261, "character": 27 } }, "uri": "/typescript/lib/lib.dom.d.ts" } diff --git a/packages/svelte-check/package.json b/packages/svelte-check/package.json index 771bdaf91..14690e918 100644 --- a/packages/svelte-check/package.json +++ b/packages/svelte-check/package.json @@ -54,7 +54,7 @@ "rollup-plugin-copy": "^3.4.0", "svelte": "^4.2.19", "svelte-language-server": "workspace:*", - "typescript": "^5.8.2", + "typescript": "^5.9.2", "vscode-languageserver": "8.0.2", "vscode-languageserver-protocol": "3.17.2", "vscode-languageserver-types": "3.17.2", diff --git a/packages/svelte-vscode/package.json b/packages/svelte-vscode/package.json index f97cf561f..74d761fbb 100644 --- a/packages/svelte-vscode/package.json +++ b/packages/svelte-vscode/package.json @@ -746,7 +746,7 @@ "js-yaml": "^3.14.0", "semver": "^7.7.2", "tslib": "^2.4.0", - "typescript": "^5.8.2", + "typescript": "^5.9.2", "vitest": "^3.2.4", "vscode-tmgrammar-test": "^0.0.11" }, diff --git a/packages/svelte-vscode/src/extension.ts b/packages/svelte-vscode/src/extension.ts index dae135bf8..b8f435a0f 100644 --- a/packages/svelte-vscode/src/extension.ts +++ b/packages/svelte-vscode/src/extension.ts @@ -175,6 +175,7 @@ export function activateSvelteLanguageServer(context: ExtensionContext) { 'emmet', 'javascript', 'typescript', + 'js/ts', 'css', 'less', 'scss', @@ -188,6 +189,7 @@ export function activateSvelteLanguageServer(context: ExtensionContext) { emmet: workspace.getConfiguration('emmet'), typescript: workspace.getConfiguration('typescript'), javascript: workspace.getConfiguration('javascript'), + 'js/ts': workspace.getConfiguration('js/ts'), css: workspace.getConfiguration('css'), less: workspace.getConfiguration('less'), scss: workspace.getConfiguration('scss'), diff --git a/packages/svelte2tsx/package.json b/packages/svelte2tsx/package.json index d11e00376..3f9268a83 100644 --- a/packages/svelte2tsx/package.json +++ b/packages/svelte2tsx/package.json @@ -40,7 +40,7 @@ "svelte": "~4.2.19", "tiny-glob": "^0.2.6", "tslib": "^2.4.0", - "typescript": "^5.8.2" + "typescript": "^5.9.2" }, "peerDependencies": { "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0", diff --git a/packages/svelte2tsx/test/emitDts/samples/javascript/expected/TestNoScript.svelte.d.ts b/packages/svelte2tsx/test/emitDts/samples/javascript/expected/TestNoScript.svelte.d.ts index 86d5e6eac..20eb7e090 100644 --- a/packages/svelte2tsx/test/emitDts/samples/javascript/expected/TestNoScript.svelte.d.ts +++ b/packages/svelte2tsx/test/emitDts/samples/javascript/expected/TestNoScript.svelte.d.ts @@ -4,7 +4,7 @@ export default class TestNoScript extends SvelteComponentTyped<{ [x: string]: never; }, { - click: MouseEvent; + click: PointerEvent; } & { [evt: string]: CustomEvent; }, { @@ -20,7 +20,7 @@ declare const __propDef: { [x: string]: never; }; events: { - click: MouseEvent; + click: PointerEvent; } & { [evt: string]: CustomEvent; }; diff --git a/packages/typescript-plugin/package.json b/packages/typescript-plugin/package.json index 25e2016db..fe6d24c04 100644 --- a/packages/typescript-plugin/package.json +++ b/packages/typescript-plugin/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/node": "^18.0.0", "svelte": "^4.2.19", - "typescript": "^5.8.2" + "typescript": "^5.9.2" }, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", diff --git a/packages/typescript-plugin/src/language-service/hover.ts b/packages/typescript-plugin/src/language-service/hover.ts index dbf6fa76d..c2abcb1e7 100644 --- a/packages/typescript-plugin/src/language-service/hover.ts +++ b/packages/typescript-plugin/src/language-service/hover.ts @@ -13,13 +13,13 @@ export function decorateHover( ): void { const getQuickInfoAtPosition = ls.getQuickInfoAtPosition; - ls.getQuickInfoAtPosition = (fileName: string, position: number) => { + ls.getQuickInfoAtPosition = (fileName: string, position: number, ...rest) => { const result = getVirtualLS(fileName, info, ts); - if (!result) return getQuickInfoAtPosition(fileName, position); + if (!result) return getQuickInfoAtPosition(fileName, position, ...rest); const { languageService, toOriginalPos, toVirtualPos } = result; const virtualPos = toVirtualPos(position); - const quickInfo = languageService.getQuickInfoAtPosition(fileName, virtualPos); + const quickInfo = languageService.getQuickInfoAtPosition(fileName, virtualPos, ...rest); if (!quickInfo) return quickInfo; const source = languageService.getProgram()?.getSourceFile(fileName); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 38c0cb205..fdd9c6d01 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: typescript: - specifier: ^5.8.2 - version: 5.8.2 + specifier: ^5.9.2 + version: 5.9.2 devDependencies: cross-env: specifier: ^7.0.2 @@ -20,7 +20,7 @@ importers: version: 3.3.3 ts-node: specifier: ^10.0.0 - version: 10.9.1(@types/node@18.19.46)(typescript@5.8.2) + version: 10.9.1(@types/node@18.19.46)(typescript@5.9.2) packages/language-server: dependencies: @@ -58,8 +58,8 @@ importers: specifier: workspace:~ version: link:../svelte2tsx typescript: - specifier: ^5.8.2 - version: 5.8.2 + specifier: ^5.9.2 + version: 5.9.2 typescript-auto-import-cache: specifier: ^0.3.6 version: 0.3.6 @@ -111,7 +111,7 @@ importers: version: 11.1.2 ts-node: specifier: ^10.0.0 - version: 10.9.1(@types/node@18.19.46)(typescript@5.8.2) + version: 10.9.1(@types/node@18.19.46)(typescript@5.9.2) packages/svelte-check: dependencies: @@ -145,7 +145,7 @@ importers: version: 5.0.2(rollup@3.7.5) '@rollup/plugin-typescript': specifier: ^10.0.0 - version: 10.0.1(rollup@3.7.5)(tslib@2.5.2)(typescript@5.8.2) + version: 10.0.1(rollup@3.7.5)(tslib@2.5.2)(typescript@5.9.2) '@types/sade': specifier: ^1.7.2 version: 1.7.4 @@ -168,8 +168,8 @@ importers: specifier: workspace:* version: link:../language-server typescript: - specifier: ^5.8.2 - version: 5.8.2 + specifier: ^5.9.2 + version: 5.9.2 vscode-languageserver: specifier: 8.0.2 version: 8.0.2 @@ -223,8 +223,8 @@ importers: specifier: ^2.4.0 version: 2.5.2 typescript: - specifier: ^5.8.2 - version: 5.8.2 + specifier: ^5.9.2 + version: 5.9.2 vitest: specifier: ^3.2.4 version: 3.2.4(@types/node@18.19.46) @@ -258,7 +258,7 @@ importers: version: 15.0.2(rollup@3.7.5) '@rollup/plugin-typescript': specifier: ^10.0.0 - version: 10.0.1(rollup@3.7.5)(tslib@2.5.2)(typescript@5.8.2) + version: 10.0.1(rollup@3.7.5)(tslib@2.5.2)(typescript@5.9.2) '@types/estree': specifier: ^0.0.42 version: 0.0.42 @@ -308,8 +308,8 @@ importers: specifier: ^2.4.0 version: 2.5.2 typescript: - specifier: ^5.8.2 - version: 5.8.2 + specifier: ^5.9.2 + version: 5.9.2 packages/typescript-plugin: dependencies: @@ -327,8 +327,8 @@ importers: specifier: ^4.2.19 version: 4.2.19 typescript: - specifier: ^5.8.2 - version: 5.8.2 + specifier: ^5.9.2 + version: 5.9.2 packages: @@ -1716,8 +1716,8 @@ packages: typescript-auto-import-cache@0.3.6: resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} - typescript@5.8.2: - resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} engines: {node: '>=14.17'} hasBin: true @@ -2087,11 +2087,11 @@ snapshots: optionalDependencies: rollup: 3.7.5 - '@rollup/plugin-typescript@10.0.1(rollup@3.7.5)(tslib@2.5.2)(typescript@5.8.2)': + '@rollup/plugin-typescript@10.0.1(rollup@3.7.5)(tslib@2.5.2)(typescript@5.9.2)': dependencies: '@rollup/pluginutils': 5.0.2(rollup@3.7.5) resolve: 1.22.2 - typescript: 5.8.2 + typescript: 5.9.2 optionalDependencies: rollup: 3.7.5 tslib: 2.5.2 @@ -3170,7 +3170,7 @@ snapshots: dependencies: is-number: 7.0.0 - ts-node@10.9.1(@types/node@18.19.46)(typescript@5.8.2): + ts-node@10.9.1(@types/node@18.19.46)(typescript@5.9.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -3184,7 +3184,7 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.8.2 + typescript: 5.9.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -3196,7 +3196,7 @@ snapshots: dependencies: semver: 7.5.1 - typescript@5.8.2: {} + typescript@5.9.2: {} undici-types@5.26.5: {}