From c1204dce45e05e4e21d0ca4dbb0c7ebd1e308e82 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Wed, 26 Feb 2025 15:40:06 +0100 Subject: [PATCH 1/9] fix: switch to our fork acorn typescript plugin --- packages/svelte/package.json | 2 +- .../src/compiler/phases/1-parse/acorn.js | 2 +- .../src/compiler/phases/1-parse/ambient.d.ts | 3 --- packages/svelte/tsconfig.json | 1 - pnpm-lock.yaml | 24 +++++++++---------- 5 files changed, 14 insertions(+), 18 deletions(-) delete mode 100644 packages/svelte/src/compiler/phases/1-parse/ambient.d.ts diff --git a/packages/svelte/package.json b/packages/svelte/package.json index dd472e44136a..cce516fcc404 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -150,7 +150,7 @@ "@jridgewell/sourcemap-codec": "^1.5.0", "@types/estree": "^1.0.5", "acorn": "^8.12.1", - "acorn-typescript": "^1.4.13", + "@sveltejs/acorn-typescript": "^1.0.0", "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", diff --git a/packages/svelte/src/compiler/phases/1-parse/acorn.js b/packages/svelte/src/compiler/phases/1-parse/acorn.js index 6c106e0a841b..3b07258792c2 100644 --- a/packages/svelte/src/compiler/phases/1-parse/acorn.js +++ b/packages/svelte/src/compiler/phases/1-parse/acorn.js @@ -2,7 +2,7 @@ /** @import { Node } from 'acorn' */ import * as acorn from 'acorn'; import { walk } from 'zimmerframe'; -import { tsPlugin } from 'acorn-typescript'; +import { tsPlugin } from '@sveltejs/acorn-typescript'; import { locator } from '../../state.js'; const ParserWithTS = acorn.Parser.extend(tsPlugin({ allowSatisfies: true })); diff --git a/packages/svelte/src/compiler/phases/1-parse/ambient.d.ts b/packages/svelte/src/compiler/phases/1-parse/ambient.d.ts deleted file mode 100644 index 8243dd0a428c..000000000000 --- a/packages/svelte/src/compiler/phases/1-parse/ambient.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -// Silence the acorn typescript errors through this ambient type definition + tsconfig.json path alias -// That way we can omit `"skipLibCheck": true` and catch other errors in our d.ts files -declare module 'acorn-typescript'; diff --git a/packages/svelte/tsconfig.json b/packages/svelte/tsconfig.json index c9f0fb3b2bba..76005add13be 100644 --- a/packages/svelte/tsconfig.json +++ b/packages/svelte/tsconfig.json @@ -15,7 +15,6 @@ "allowJs": true, "checkJs": true, "paths": { - "acorn-typescript": ["./src/compiler/phases/1-parse/ambient.d.ts"], "svelte": ["./src/index.d.ts"], "svelte/action": ["./src/action/public.d.ts"], "svelte/compiler": ["./src/compiler/public.d.ts"], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2457a9404186..b90ad40ef3c0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,15 +65,15 @@ importers: '@jridgewell/sourcemap-codec': specifier: ^1.5.0 version: 1.5.0 + '@sveltejs/acorn-typescript': + specifier: ^1.0.0 + version: 1.0.1(acorn@8.14.0) '@types/estree': specifier: ^1.0.5 version: 1.0.6 acorn: specifier: ^8.12.1 version: 8.14.0 - acorn-typescript: - specifier: ^1.4.13 - version: 1.4.13(acorn@8.14.0) aria-query: specifier: ^5.3.1 version: 5.3.1 @@ -626,6 +626,11 @@ packages: peerDependencies: eslint: '>=8.40.0' + '@sveltejs/acorn-typescript@1.0.1': + resolution: {integrity: sha512-MPvOVpdeRE5pA7hNPmPJwbVxoMC7dQWsIsn0PBJsfXlWyJJtwas4qSMNyArbLkpiNsMzlkyNU1k5Asckp57Srg==} + peerDependencies: + acorn: '>=8.9.0' + '@sveltejs/eslint-config@8.1.0': resolution: {integrity: sha512-cfgp4lPREYBjNd4ZzaP/jA85ufm7vfXiaV7h9vILXNogne80IbZRNhRCQ8XoOqTAOY/pChIzWTBuR8aDNMbAEA==} peerDependencies: @@ -779,11 +784,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-typescript@1.4.13: - resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} - peerDependencies: - acorn: '>=8.9.0' - acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} @@ -2720,6 +2720,10 @@ snapshots: eslint-visitor-keys: 3.4.3 espree: 9.6.1 + '@sveltejs/acorn-typescript@1.0.1(acorn@8.14.0)': + dependencies: + acorn: 8.14.0 + '@sveltejs/eslint-config@8.1.0(@stylistic/eslint-plugin-js@1.8.0(eslint@9.9.1))(eslint-config-prettier@9.1.0(eslint@9.9.1))(eslint-plugin-n@17.9.0(eslint@9.9.1))(eslint-plugin-svelte@2.38.0(eslint@9.9.1)(svelte@packages+svelte))(eslint@9.9.1)(typescript-eslint@8.2.0(eslint@9.9.1)(typescript@5.5.4))(typescript@5.5.4)': dependencies: '@stylistic/eslint-plugin-js': 1.8.0(eslint@9.9.1) @@ -2926,10 +2930,6 @@ snapshots: dependencies: acorn: 8.14.0 - acorn-typescript@1.4.13(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - acorn@8.14.0: {} agent-base@7.1.1: From 7b0637585bfd694a04a0d74aa519ea34c6c987ac Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Wed, 26 Feb 2025 15:40:30 +0100 Subject: [PATCH 2/9] changeset --- .changeset/selfish-cougars-allow.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/selfish-cougars-allow.md diff --git a/.changeset/selfish-cougars-allow.md b/.changeset/selfish-cougars-allow.md new file mode 100644 index 000000000000..8cea0e52df5e --- /dev/null +++ b/.changeset/selfish-cougars-allow.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +chore: switch acorn-typescript plugin From eeb3c323a0801f8544c9a21353de956899f45b22 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Thu, 27 Feb 2025 21:55:41 +0100 Subject: [PATCH 3/9] bump --- packages/svelte/package.json | 2 +- pnpm-lock.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/svelte/package.json b/packages/svelte/package.json index cce516fcc404..7a53a89f1117 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -150,7 +150,7 @@ "@jridgewell/sourcemap-codec": "^1.5.0", "@types/estree": "^1.0.5", "acorn": "^8.12.1", - "@sveltejs/acorn-typescript": "^1.0.0", + "@sveltejs/acorn-typescript": "^1.0.1", "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b90ad40ef3c0..bfb988c7a7bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,7 +66,7 @@ importers: specifier: ^1.5.0 version: 1.5.0 '@sveltejs/acorn-typescript': - specifier: ^1.0.0 + specifier: ^1.0.1 version: 1.0.1(acorn@8.14.0) '@types/estree': specifier: ^1.0.5 From 2c6247278fa97a68b65778fa30c36275c93539a4 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Thu, 27 Feb 2025 22:00:10 +0100 Subject: [PATCH 4/9] bump --- packages/svelte/package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 7a53a89f1117..7d95b8685ba9 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -150,7 +150,7 @@ "@jridgewell/sourcemap-codec": "^1.5.0", "@types/estree": "^1.0.5", "acorn": "^8.12.1", - "@sveltejs/acorn-typescript": "^1.0.1", + "@sveltejs/acorn-typescript": "^1.0.2", "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bfb988c7a7bb..72e8ed1e9a16 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,8 +66,8 @@ importers: specifier: ^1.5.0 version: 1.5.0 '@sveltejs/acorn-typescript': - specifier: ^1.0.1 - version: 1.0.1(acorn@8.14.0) + specifier: ^1.0.2 + version: 1.0.2(acorn@8.14.0) '@types/estree': specifier: ^1.0.5 version: 1.0.6 @@ -626,10 +626,10 @@ packages: peerDependencies: eslint: '>=8.40.0' - '@sveltejs/acorn-typescript@1.0.1': - resolution: {integrity: sha512-MPvOVpdeRE5pA7hNPmPJwbVxoMC7dQWsIsn0PBJsfXlWyJJtwas4qSMNyArbLkpiNsMzlkyNU1k5Asckp57Srg==} + '@sveltejs/acorn-typescript@1.0.2': + resolution: {integrity: sha512-38Pff7qkxTQnWDHSaesgXGllvZoX5sc5A7sITVnCn56OZhDmMwD8kOr1fXTNAPjulB4mFNQMhUktkfsLHxWH2Q==} peerDependencies: - acorn: '>=8.9.0' + acorn: ^8.9.0 '@sveltejs/eslint-config@8.1.0': resolution: {integrity: sha512-cfgp4lPREYBjNd4ZzaP/jA85ufm7vfXiaV7h9vILXNogne80IbZRNhRCQ8XoOqTAOY/pChIzWTBuR8aDNMbAEA==} @@ -2720,7 +2720,7 @@ snapshots: eslint-visitor-keys: 3.4.3 espree: 9.6.1 - '@sveltejs/acorn-typescript@1.0.1(acorn@8.14.0)': + '@sveltejs/acorn-typescript@1.0.2(acorn@8.14.0)': dependencies: acorn: 8.14.0 From 934d1a6fa69208c9a03183505e4925e5dad91e3e Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Thu, 27 Feb 2025 22:20:53 +0100 Subject: [PATCH 5/9] bump --- packages/svelte/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 7d95b8685ba9..3a3d700df479 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -150,7 +150,7 @@ "@jridgewell/sourcemap-codec": "^1.5.0", "@types/estree": "^1.0.5", "acorn": "^8.12.1", - "@sveltejs/acorn-typescript": "^1.0.2", + "@sveltejs/acorn-typescript": "^1.0.3", "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 72e8ed1e9a16..5592fbf4dcce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,8 +66,8 @@ importers: specifier: ^1.5.0 version: 1.5.0 '@sveltejs/acorn-typescript': - specifier: ^1.0.2 - version: 1.0.2(acorn@8.14.0) + specifier: ^1.0.3 + version: 1.0.3(acorn@8.14.0) '@types/estree': specifier: ^1.0.5 version: 1.0.6 @@ -626,8 +626,8 @@ packages: peerDependencies: eslint: '>=8.40.0' - '@sveltejs/acorn-typescript@1.0.2': - resolution: {integrity: sha512-38Pff7qkxTQnWDHSaesgXGllvZoX5sc5A7sITVnCn56OZhDmMwD8kOr1fXTNAPjulB4mFNQMhUktkfsLHxWH2Q==} + '@sveltejs/acorn-typescript@1.0.3': + resolution: {integrity: sha512-vHZ4ogoVUXHiPrZfHxcukqVhrENf76jlejs6XYmAUzOJCH5DlPDF1yvh+L4ZVXTAWLZAFxucr3fcbrNPcQDzvQ==} peerDependencies: acorn: ^8.9.0 @@ -2720,7 +2720,7 @@ snapshots: eslint-visitor-keys: 3.4.3 espree: 9.6.1 - '@sveltejs/acorn-typescript@1.0.2(acorn@8.14.0)': + '@sveltejs/acorn-typescript@1.0.3(acorn@8.14.0)': dependencies: acorn: 8.14.0 From 07e421a4ee441c7d34296c0c4a0a7419dfaa34d1 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Thu, 27 Feb 2025 23:00:37 +0100 Subject: [PATCH 6/9] adjust snapshots --- .../samples/comment-before-script/output.json | 2 +- .../tests/parser-modern/samples/snippets/output.json | 2 +- .../samples/typescript-in-event-handler/output.json | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/svelte/tests/parser-modern/samples/comment-before-script/output.json b/packages/svelte/tests/parser-modern/samples/comment-before-script/output.json index 13c099a85757..1aca0ce03607 100644 --- a/packages/svelte/tests/parser-modern/samples/comment-before-script/output.json +++ b/packages/svelte/tests/parser-modern/samples/comment-before-script/output.json @@ -75,7 +75,7 @@ "id": { "type": "Identifier", "start": 52, - "end": 57, + "end": 65, "loc": { "start": { "line": 3, diff --git a/packages/svelte/tests/parser-modern/samples/snippets/output.json b/packages/svelte/tests/parser-modern/samples/snippets/output.json index 2cf2596b18a5..acf484d8ae16 100644 --- a/packages/svelte/tests/parser-modern/samples/snippets/output.json +++ b/packages/svelte/tests/parser-modern/samples/snippets/output.json @@ -28,7 +28,7 @@ { "type": "Identifier", "start": 43, - "end": 46, + "end": 54, "loc": { "start": { "line": 3, diff --git a/packages/svelte/tests/parser-modern/samples/typescript-in-event-handler/output.json b/packages/svelte/tests/parser-modern/samples/typescript-in-event-handler/output.json index 5d72e01b0ab6..9c515ad9058f 100644 --- a/packages/svelte/tests/parser-modern/samples/typescript-in-event-handler/output.json +++ b/packages/svelte/tests/parser-modern/samples/typescript-in-event-handler/output.json @@ -25,7 +25,6 @@ "end": 147, "type": "OnDirective", "name": "click", - "modifiers": [], "expression": { "type": "ArrowFunctionExpression", "start": 73, @@ -48,7 +47,7 @@ { "type": "Identifier", "start": 74, - "end": 75, + "end": 87, "loc": { "start": { "line": 6, @@ -155,7 +154,7 @@ "id": { "type": "Identifier", "start": 102, - "end": 106, + "end": 114, "loc": { "start": { "line": 7, @@ -316,7 +315,8 @@ } ] } - } + }, + "modifiers": [] } ], "fragment": { From 636b9cc00fe1f4819c4ae66825a7483a7de9c9ee Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Thu, 27 Feb 2025 23:00:53 +0100 Subject: [PATCH 7/9] this should be obsolete now --- .../src/compiler/phases/1-parse/acorn.js | 45 +------------------ 1 file changed, 1 insertion(+), 44 deletions(-) diff --git a/packages/svelte/src/compiler/phases/1-parse/acorn.js b/packages/svelte/src/compiler/phases/1-parse/acorn.js index 3b07258792c2..36f7688c49a3 100644 --- a/packages/svelte/src/compiler/phases/1-parse/acorn.js +++ b/packages/svelte/src/compiler/phases/1-parse/acorn.js @@ -1,11 +1,9 @@ /** @import { Comment, Program } from 'estree' */ -/** @import { Node } from 'acorn' */ import * as acorn from 'acorn'; import { walk } from 'zimmerframe'; import { tsPlugin } from '@sveltejs/acorn-typescript'; -import { locator } from '../../state.js'; -const ParserWithTS = acorn.Parser.extend(tsPlugin({ allowSatisfies: true })); +const ParserWithTS = acorn.Parser.extend(tsPlugin()); /** * @param {string} source @@ -48,7 +46,6 @@ export function parse(source, typescript, is_script) { } } - if (typescript) amend(source, ast); add_comments(ast); return /** @type {Program} */ (ast); @@ -71,7 +68,6 @@ export function parse_expression_at(source, typescript, index) { locations: true }); - if (typescript) amend(source, ast); add_comments(ast); return ast; @@ -173,42 +169,3 @@ function get_comment_handlers(source) { } }; } - -/** - * Tidy up some stuff left behind by acorn-typescript - * @param {string} source - * @param {Node} node - */ -function amend(source, node) { - return walk(node, null, { - _(node, context) { - // @ts-expect-error - delete node.loc.start.index; - // @ts-expect-error - delete node.loc.end.index; - - if (typeof node.loc?.end === 'number') { - const loc = locator(node.loc.end); - if (loc) { - node.loc.end = { - line: loc.line, - column: loc.column - }; - } - } - - if ( - /** @type {any} */ (node).typeAnnotation && - (node.end === undefined || node.end < node.start) - ) { - // i think there might be a bug in acorn-typescript that prevents - // `end` from being assigned when there's a type annotation - let end = /** @type {any} */ (node).typeAnnotation.start; - while (/\s/.test(source[end - 1])) end -= 1; - node.end = end; - } - - context.next(); - } - }); -} From 16431b77df7f4738470c9732c175cd28e784f5c3 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Thu, 27 Feb 2025 23:01:33 +0100 Subject: [PATCH 8/9] bump --- packages/svelte/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 3a3d700df479..e89b1f328218 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -150,7 +150,7 @@ "@jridgewell/sourcemap-codec": "^1.5.0", "@types/estree": "^1.0.5", "acorn": "^8.12.1", - "@sveltejs/acorn-typescript": "^1.0.3", + "@sveltejs/acorn-typescript": "^1.0.4", "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5592fbf4dcce..93207ce2ddbc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,8 +66,8 @@ importers: specifier: ^1.5.0 version: 1.5.0 '@sveltejs/acorn-typescript': - specifier: ^1.0.3 - version: 1.0.3(acorn@8.14.0) + specifier: ^1.0.4 + version: 1.0.4(acorn@8.14.0) '@types/estree': specifier: ^1.0.5 version: 1.0.6 @@ -626,8 +626,8 @@ packages: peerDependencies: eslint: '>=8.40.0' - '@sveltejs/acorn-typescript@1.0.3': - resolution: {integrity: sha512-vHZ4ogoVUXHiPrZfHxcukqVhrENf76jlejs6XYmAUzOJCH5DlPDF1yvh+L4ZVXTAWLZAFxucr3fcbrNPcQDzvQ==} + '@sveltejs/acorn-typescript@1.0.4': + resolution: {integrity: sha512-nPVrutUss4Xt1EOeO19nDICo9rN6NqqCyNyg+SoUQPbHsc5N0avH0f+RWqOjUrI8vWsaIGBC84T0nHkN9pE1gw==} peerDependencies: acorn: ^8.9.0 @@ -2720,7 +2720,7 @@ snapshots: eslint-visitor-keys: 3.4.3 espree: 9.6.1 - '@sveltejs/acorn-typescript@1.0.3(acorn@8.14.0)': + '@sveltejs/acorn-typescript@1.0.4(acorn@8.14.0)': dependencies: acorn: 8.14.0 From b1877db70c7de5e61e9ec105dbecad341019f9f8 Mon Sep 17 00:00:00 2001 From: Simon Holthausen Date: Tue, 4 Mar 2025 11:29:20 +0100 Subject: [PATCH 9/9] bump --- packages/svelte/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/svelte/package.json b/packages/svelte/package.json index e89b1f328218..68dd2f66f68e 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -150,7 +150,7 @@ "@jridgewell/sourcemap-codec": "^1.5.0", "@types/estree": "^1.0.5", "acorn": "^8.12.1", - "@sveltejs/acorn-typescript": "^1.0.4", + "@sveltejs/acorn-typescript": "^1.0.5", "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 93207ce2ddbc..9ea9c9e92966 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,8 +66,8 @@ importers: specifier: ^1.5.0 version: 1.5.0 '@sveltejs/acorn-typescript': - specifier: ^1.0.4 - version: 1.0.4(acorn@8.14.0) + specifier: ^1.0.5 + version: 1.0.5(acorn@8.14.0) '@types/estree': specifier: ^1.0.5 version: 1.0.6 @@ -626,8 +626,8 @@ packages: peerDependencies: eslint: '>=8.40.0' - '@sveltejs/acorn-typescript@1.0.4': - resolution: {integrity: sha512-nPVrutUss4Xt1EOeO19nDICo9rN6NqqCyNyg+SoUQPbHsc5N0avH0f+RWqOjUrI8vWsaIGBC84T0nHkN9pE1gw==} + '@sveltejs/acorn-typescript@1.0.5': + resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==} peerDependencies: acorn: ^8.9.0 @@ -2720,7 +2720,7 @@ snapshots: eslint-visitor-keys: 3.4.3 espree: 9.6.1 - '@sveltejs/acorn-typescript@1.0.4(acorn@8.14.0)': + '@sveltejs/acorn-typescript@1.0.5(acorn@8.14.0)': dependencies: acorn: 8.14.0