From d5efd035f0c1c0373b0b86918a3810a40066e290 Mon Sep 17 00:00:00 2001 From: baseballyama Date: Thu, 4 Dec 2025 00:20:02 +0900 Subject: [PATCH] fix: Support `name_loc` property --- .changeset/wet-carrots-open.md | 5 ++ package.json | 2 +- pnpm-lock.yaml | 54 ++++++++++++--------- src/parser/compat.ts | 2 + src/parser/html.ts | 3 ++ tests/src/parser/__snapshots__/html.ts.snap | 20 ++++++++ 6 files changed, 61 insertions(+), 25 deletions(-) create mode 100644 .changeset/wet-carrots-open.md diff --git a/.changeset/wet-carrots-open.md b/.changeset/wet-carrots-open.md new file mode 100644 index 00000000..725a4bbc --- /dev/null +++ b/.changeset/wet-carrots-open.md @@ -0,0 +1,5 @@ +--- +"svelte-eslint-parser": patch +--- + +fix: Support `name_loc` property diff --git a/package.json b/package.json index bc600c3a..b54a745d 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "prettier-plugin-svelte": "^3.4.0", "rimraf": "^6.0.1", "semver": "^7.7.2", - "svelte": "^5.41.0", + "svelte": "^5.45.4", "svelte2tsx": "^0.7.45", "tsx": "^4.20.5", "typescript": "~5.9.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a23b94d6..e0034e86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -125,7 +125,7 @@ importers: version: 2.10.0(eslint@9.38.0) eslint-plugin-svelte: specifier: ^3.12.2 - version: 3.12.4(eslint@9.38.0)(svelte@5.41.0) + version: 3.12.4(eslint@9.38.0)(svelte@5.45.4) eslint-plugin-yml: specifier: ^1.18.0 version: 1.19.0(eslint@9.38.0) @@ -149,7 +149,7 @@ importers: version: 0.21.2(prettier@3.6.2) prettier-plugin-svelte: specifier: ^3.4.0 - version: 3.4.0(prettier@3.6.2)(svelte@5.41.0) + version: 3.4.0(prettier@3.6.2)(svelte@5.45.4) rimraf: specifier: ^6.0.1 version: 6.0.1 @@ -157,11 +157,11 @@ importers: specifier: ^7.7.2 version: 7.7.3 svelte: - specifier: ^5.41.0 - version: 5.41.0 + specifier: ^5.45.4 + version: 5.45.4 svelte2tsx: specifier: ^0.7.45 - version: 0.7.45(svelte@5.41.0)(typescript@5.9.3) + version: 0.7.45(svelte@5.45.4)(typescript@5.9.3) tsx: specifier: ^4.20.5 version: 4.20.6 @@ -173,7 +173,7 @@ importers: version: 8.46.1(eslint@9.38.0)(typescript@5.9.3) typescript-eslint-parser-for-extra-files: specifier: ^0.9.0 - version: 0.9.0(@typescript-eslint/parser@8.46.1(eslint@9.38.0)(typescript@5.9.3))(svelte2tsx@0.7.45(svelte@5.41.0)(typescript@5.9.3))(typescript@5.9.3) + version: 0.9.0(@typescript-eslint/parser@8.46.1(eslint@9.38.0)(typescript@5.9.3))(svelte2tsx@0.7.45(svelte@5.45.4)(typescript@5.9.3))(typescript@5.9.3) packages: @@ -1017,6 +1017,9 @@ packages: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} + devalue@5.5.0: + resolution: {integrity: sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==} + diff-sequences@27.5.1: resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -1221,8 +1224,8 @@ packages: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} - esrap@2.1.0: - resolution: {integrity: sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA==} + esrap@2.2.1: + resolution: {integrity: sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} @@ -1981,8 +1984,8 @@ packages: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 - svelte@5.41.0: - resolution: {integrity: sha512-mP3vFFv5OUM5JN189+nJVW74kQ1dGqUrXTEzvCEVZqessY0GxZDls1nWVvt4Sxyv2USfQvAZO68VRaeIZvpzKg==} + svelte@5.45.4: + resolution: {integrity: sha512-1/Y6ZfAQ30GjebMrDFM8ktL1WZ0ylljLabotDAFN41MTrDOY4gGzDDYnIKV+p8YXcnxEEDpVfVWE+I6u69jJ7A==} engines: {node: '>=18'} synckit@0.11.11: @@ -2959,6 +2962,8 @@ snapshots: detect-indent@6.1.0: {} + devalue@5.5.0: {} + diff-sequences@27.5.1: {} diff@7.0.0: {} @@ -3181,7 +3186,7 @@ snapshots: regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-svelte@3.12.4(eslint@9.38.0)(svelte@5.41.0): + eslint-plugin-svelte@3.12.4(eslint@9.38.0)(svelte@5.45.4): dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0) '@jridgewell/sourcemap-codec': 1.5.5 @@ -3193,9 +3198,9 @@ snapshots: postcss-load-config: 3.1.4(postcss@8.5.6) postcss-safe-parser: 7.0.1(postcss@8.5.6) semver: 7.7.3 - svelte-eslint-parser: 1.3.3(svelte@5.41.0) + svelte-eslint-parser: 1.3.3(svelte@5.45.4) optionalDependencies: - svelte: 5.41.0 + svelte: 5.45.4 transitivePeerDependencies: - ts-node @@ -3279,7 +3284,7 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@2.1.0: + esrap@2.2.1: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -3777,10 +3782,10 @@ snapshots: dependencies: prettier: 3.6.2 - prettier-plugin-svelte@3.4.0(prettier@3.6.2)(svelte@5.41.0): + prettier-plugin-svelte@3.4.0(prettier@3.6.2)(svelte@5.45.4): dependencies: prettier: 3.6.2 - svelte: 5.41.0 + svelte: 5.45.4 prettier@2.8.8: {} @@ -3944,7 +3949,7 @@ snapshots: dependencies: has-flag: 4.0.0 - svelte-eslint-parser@1.3.3(svelte@5.41.0): + svelte-eslint-parser@1.3.3(svelte@5.45.4): dependencies: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -3953,16 +3958,16 @@ snapshots: postcss-scss: 4.0.9(postcss@8.5.6) postcss-selector-parser: 7.1.0 optionalDependencies: - svelte: 5.41.0 + svelte: 5.45.4 - svelte2tsx@0.7.45(svelte@5.41.0)(typescript@5.9.3): + svelte2tsx@0.7.45(svelte@5.45.4)(typescript@5.9.3): dependencies: dedent-js: 1.0.1 scule: 1.3.0 - svelte: 5.41.0 + svelte: 5.45.4 typescript: 5.9.3 - svelte@5.41.0: + svelte@5.45.4: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 @@ -3972,8 +3977,9 @@ snapshots: aria-query: 5.3.2 axobject-query: 4.1.0 clsx: 2.1.1 + devalue: 5.5.0 esm-env: 1.2.2 - esrap: 2.1.0 + esrap: 2.2.1 is-reference: 3.0.3 locate-character: 3.0.0 magic-string: 0.30.19 @@ -4039,12 +4045,12 @@ snapshots: type-fest@4.2.0: {} - typescript-eslint-parser-for-extra-files@0.9.0(@typescript-eslint/parser@8.46.1(eslint@9.38.0)(typescript@5.9.3))(svelte2tsx@0.7.45(svelte@5.41.0)(typescript@5.9.3))(typescript@5.9.3): + typescript-eslint-parser-for-extra-files@0.9.0(@typescript-eslint/parser@8.46.1(eslint@9.38.0)(typescript@5.9.3))(svelte2tsx@0.7.45(svelte@5.45.4)(typescript@5.9.3))(typescript@5.9.3): dependencies: '@typescript-eslint/parser': 8.46.1(eslint@9.38.0)(typescript@5.9.3) tinyglobby: 0.2.15 optionalDependencies: - svelte2tsx: 0.7.45(svelte@5.41.0)(typescript@5.9.3) + svelte2tsx: 0.7.45(svelte@5.45.4)(typescript@5.9.3) typescript: 5.9.3 typescript-eslint@8.46.1(eslint@9.38.0)(typescript@5.9.3): diff --git a/src/parser/compat.ts b/src/parser/compat.ts index d3a1ce07..12985762 100644 --- a/src/parser/compat.ts +++ b/src/parser/compat.ts @@ -37,6 +37,8 @@ export function getOptionsFromRoot( return { type: "SvelteOptions", name: "svelte:options", + // @ts-expect-error - name_loc is required in Svelte since 5.45.3 but we can not set it. + name_loc: null, attributes: root.options.attributes, fragment: { type: "Fragment", diff --git a/src/parser/html.ts b/src/parser/html.ts index 6c713bc8..2be4eeb5 100644 --- a/src/parser/html.ts +++ b/src/parser/html.ts @@ -83,6 +83,7 @@ function parseAttribute(state: State): Compiler.Attribute { return { type: "Attribute", name: key, + name_loc: null, value: true, start, end: keyEnd, @@ -93,6 +94,7 @@ function parseAttribute(state: State): Compiler.Attribute { return { type: "Attribute", name: key, + name_loc: null, value: true, start, end: keyEnd, @@ -103,6 +105,7 @@ function parseAttribute(state: State): Compiler.Attribute { return { type: "Attribute", name: key, + name_loc: null, value: [value], start, end: state.index, diff --git a/tests/src/parser/__snapshots__/html.ts.snap b/tests/src/parser/__snapshots__/html.ts.snap index bffe7bf1..54740751 100644 --- a/tests/src/parser/__snapshots__/html.ts.snap +++ b/tests/src/parser/__snapshots__/html.ts.snap @@ -13,6 +13,7 @@ Object { Object { "end": 17, "name": "lang", + "name_loc": null, "start": 8, "type": "Attribute", "value": Array [ @@ -36,6 +37,7 @@ Object { Object { "end": 17, "name": "lang", + "name_loc": null, "start": 8, "type": "Attribute", "value": Array [ @@ -59,6 +61,7 @@ Object { Object { "end": 15, "name": "lang", + "name_loc": null, "start": 8, "type": "Attribute", "value": Array [ @@ -82,6 +85,7 @@ Object { Object { "end": 13, "name": "global", + "name_loc": null, "start": 7, "type": "Attribute", "value": true, @@ -97,6 +101,7 @@ Object { Object { "end": 13, "name": "global", + "name_loc": null, "start": 7, "type": "Attribute", "value": true, @@ -112,6 +117,7 @@ Object { Object { "end": 4, "name": "attr", + "name_loc": null, "start": 0, "type": "Attribute", "value": true, @@ -127,6 +133,7 @@ Object { Object { "end": 4, "name": "attr", + "name_loc": null, "start": 0, "type": "Attribute", "value": true, @@ -142,6 +149,7 @@ Object { Object { "end": 16, "name": "attr", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [ @@ -165,6 +173,7 @@ Object { Object { "end": 12, "name": "attr", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [ @@ -188,6 +197,7 @@ Object { Object { "end": 8, "name": "empty", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [ @@ -211,6 +221,7 @@ Object { Object { "end": 8, "name": "empty", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [ @@ -234,6 +245,7 @@ Object { Object { "end": 13, "name": "expr", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [ @@ -263,6 +275,7 @@ Object { Object { "end": 13, "name": "expr", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [ @@ -292,6 +305,7 @@ Object { Object { "end": 10, "name": "expr", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [ @@ -321,6 +335,7 @@ Object { Object { "end": 10, "name": "expr", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [ @@ -350,6 +365,7 @@ Object { Object { "end": 15, "name": "expr", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [ @@ -387,6 +403,7 @@ Object { Object { "end": 19, "name": "expr", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [ @@ -429,6 +446,7 @@ Object { Object { "end": 11, "name": "expr", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [ @@ -458,6 +476,7 @@ Object { Object { "end": 9, "name": "quote", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [ @@ -481,6 +500,7 @@ Object { Object { "end": 9, "name": "quote", + "name_loc": null, "start": 0, "type": "Attribute", "value": Array [