Skip to content

Commit fc476cf

Browse files
authored
Merge branch 'main' into postcss-style-parsing-parser-services
2 parents 9d280d2 + 2437a81 commit fc476cf

13 files changed

+84
-68
lines changed

Diff for: .github/workflows/NodeCI.yml

+23-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
runs-on: ubuntu-latest
2424
strategy:
2525
matrix:
26-
node-version: [14.x, 16.x, 17.x, 18.x, 19.x]
26+
node-version: [16.x, 17.x, 18.x, 19.x, 20.x]
2727
steps:
2828
- uses: actions/checkout@v3
2929
- uses: pnpm/action-setup@v2
@@ -35,6 +35,26 @@ jobs:
3535
run: pnpm install
3636
- name: Test
3737
run: pnpm run test
38+
test-for-svelte-v3:
39+
runs-on: ubuntu-latest
40+
strategy:
41+
matrix:
42+
node-version: [14.x]
43+
steps:
44+
- uses: actions/checkout@v3
45+
- uses: pnpm/action-setup@v2
46+
- name: Use Node.js ${{ matrix.node-version }}
47+
uses: actions/setup-node@v3
48+
with:
49+
node-version: ${{ matrix.node-version }}
50+
- name: Install Svelte v3
51+
run: |+
52+
pnpm install -D svelte@3
53+
rm -rf node_modules
54+
- name: Install Packages
55+
run: pnpm install
56+
- name: Test
57+
run: pnpm run test
3858
test-for-ts-eslint-v4:
3959
runs-on: ubuntu-latest
4060
strategy:
@@ -49,7 +69,7 @@ jobs:
4969
node-version: ${{ matrix.node-version }}
5070
- name: Install @typescript-eslint v4
5171
run: |+
52-
pnpm install -D @typescript-eslint/parser@4 @typescript-eslint/eslint-plugin@4 eslint@7
72+
pnpm install -D @typescript-eslint/parser@4 @typescript-eslint/eslint-plugin@4 eslint@7 svelte@3
5373
rm -rf node_modules
5474
- name: Install Packages
5575
run: pnpm install
@@ -69,7 +89,7 @@ jobs:
6989
node-version: ${{ matrix.node-version }}
7090
- name: Install eslint v7
7191
run: |+
72-
pnpm install -D eslint@7
92+
pnpm install -D eslint@7 svelte@3
7393
rm -rf node_modules
7494
- name: Install Packages
7595
run: pnpm install

Diff for: CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# svelte-eslint-parser
22

3+
## 0.30.0
4+
5+
### Minor Changes
6+
7+
- [#343](https://github.com/sveltejs/svelte-eslint-parser/pull/343) [`2c76b13`](https://github.com/sveltejs/svelte-eslint-parser/commit/2c76b1378bad41bf8493d06813eb28283755d570) Thanks [@ota-meshi](https://github.com/ota-meshi)! - feat: add experimental support for Svelte v4
8+
39
## 0.29.0
410

511
### 💥 Breaking Changes

Diff for: explorer-v2/src/lib/Header.svelte

+3-12
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,14 @@
1414

1515
<header class="header">
1616
<span class="title">svelte-eslint-parser</span>
17-
<a
18-
class="menu"
19-
class:active={isActive($page.url.pathname, `/`)}
20-
sveltekit:prefetch
21-
href="{baseUrl}/">AST</a
22-
>
17+
<a class="menu" class:active={isActive($page.url.pathname, `/`)} href="{baseUrl}/">AST</a>
2318
<a
2419
class="menu"
2520
class:active={isActive($page.url.pathname, `/playground`)}
26-
sveltekit:prefetch
2721
href="{baseUrl}/playground">Playgroud</a
2822
>
29-
<a
30-
class="menu"
31-
class:active={isActive($page.url.pathname, `/scope`)}
32-
sveltekit:prefetch
33-
href="{baseUrl}/scope">Scope</a
23+
<a class="menu" class:active={isActive($page.url.pathname, `/scope`)} href="{baseUrl}/scope"
24+
>Scope</a
3425
>
3526
<a
3627
class="menu"

Diff for: package.json

+40-42
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "svelte-eslint-parser",
3-
"version": "0.29.0",
3+
"version": "0.30.0",
44
"description": "Svelte parser for ESLint",
55
"repository": "git+https://github.com/sveltejs/svelte-eslint-parser.git",
66
"homepage": "https://github.com/sveltejs/svelte-eslint-parser#readme",
@@ -10,7 +10,7 @@
1010
],
1111
"funding": "https://github.com/sponsors/ota-meshi",
1212
"license": "MIT",
13-
"packageManager": "pnpm@7.32.5",
13+
"packageManager": "pnpm@7.33.0",
1414
"engines": {
1515
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
1616
},
@@ -45,7 +45,7 @@
4545
"version:ci": "env-cmd -e version-ci pnpm run build:meta && changeset version"
4646
},
4747
"peerDependencies": {
48-
"svelte": "^3.37.0"
48+
"svelte": "^3.37.0 || ^4.0.0-0"
4949
},
5050
"peerDependenciesMeta": {
5151
"svelte": {
@@ -60,55 +60,53 @@
6060
"postcss-scss": "^4.0.6"
6161
},
6262
"devDependencies": {
63-
"@changesets/changelog-github": "^0.4.6",
64-
"@changesets/cli": "^2.24.2",
65-
"@changesets/get-release-plan": "^3.0.0",
66-
"@ota-meshi/eslint-plugin": "^0.13.0",
67-
"@types/benchmark": "^2.1.1",
68-
"@types/chai": "^4.3.0",
69-
"@types/eslint": "^8.0.0",
70-
"@types/eslint-scope": "^3.7.0",
63+
"@changesets/changelog-github": "^0.4.8",
64+
"@changesets/cli": "^2.26.1",
65+
"@changesets/get-release-plan": "^3.0.16",
66+
"@ota-meshi/eslint-plugin": "^0.13.7",
67+
"@types/benchmark": "^2.1.2",
68+
"@types/chai": "^4.3.5",
69+
"@types/eslint": "^8.40.1",
70+
"@types/eslint-scope": "^3.7.4",
7171
"@types/eslint-visitor-keys": "^1.0.0",
72-
"@types/estree": "^1.0.0",
73-
"@types/mocha": "^10.0.0",
74-
"@types/node": "^18.11.0",
75-
"@types/semver": "^7.3.9",
76-
"@typescript-eslint/eslint-plugin": "^5.4.0",
77-
"@typescript-eslint/parser": "~5.59.0",
78-
"@typescript-eslint/types": "^5.59.5",
72+
"@types/estree": "^1.0.1",
73+
"@types/mocha": "^10.0.1",
74+
"@types/node": "^18.16.16",
75+
"@types/semver": "^7.5.0",
76+
"@typescript-eslint/eslint-plugin": "^5.59.9",
77+
"@typescript-eslint/parser": "~5.59.9",
78+
"@typescript-eslint/types": "^5.59.9",
7979
"benchmark": "^2.1.4",
80-
"chai": "^4.3.4",
80+
"chai": "^4.3.7",
8181
"env-cmd": "^10.1.0",
82-
"esbuild": "^0.17.0",
83-
"esbuild-register": "^3.3.3",
84-
"eslint": "^8.2.0",
82+
"esbuild": "^0.17.19",
83+
"esbuild-register": "^3.4.2",
84+
"eslint": "^8.42.0",
8585
"eslint-config-prettier": "^8.8.0",
8686
"eslint-plugin-eslint-comments": "^3.2.0",
87-
"eslint-plugin-json-schema-validator": "^4.0.0",
88-
"eslint-plugin-jsonc": "^2.0.0",
87+
"eslint-plugin-json-schema-validator": "^4.5.0",
88+
"eslint-plugin-jsonc": "^2.8.0",
8989
"eslint-plugin-node": "^11.1.0",
9090
"eslint-plugin-node-dependencies": "^0.11.0",
91-
"eslint-plugin-prettier": "^4.0.0",
92-
"eslint-plugin-regexp": "^1.5.0",
93-
"eslint-plugin-svelte": "^2.28.0",
94-
"eslint-plugin-svelte3": "^4.0.0",
95-
"eslint-plugin-yml": "^1.0.0",
96-
"estree-walker": "^3.0.0",
91+
"eslint-plugin-prettier": "^4.2.1",
92+
"eslint-plugin-regexp": "^1.15.0",
93+
"eslint-plugin-svelte": "^2.30.0",
94+
"eslint-plugin-yml": "^1.7.0",
95+
"estree-walker": "^3.0.3",
9796
"locate-character": "^2.0.5",
9897
"magic-string": "^0.30.0",
99-
"mocha": "^10.0.0",
100-
"mocha-chai-jest-snapshot": "^1.1.3",
98+
"mocha": "^10.2.0",
99+
"mocha-chai-jest-snapshot": "^1.1.4",
101100
"nyc": "^15.1.0",
102-
"prettier": "^2.8.0",
103-
"prettier-plugin-pkg": "^0.17.0",
104-
"prettier-plugin-svelte": "^2.10.0",
105-
"rimraf": "^5.0.0",
106-
"semver": "^7.3.5",
107-
"svelte": "^3.57.0",
108-
"svelte2tsx": "^0.6.11",
109-
"typescript": "~5.0.0",
110-
"typescript-eslint-parser-for-extra-files": "^0.5.0",
111-
"vue-eslint-parser": "^9.0.0"
101+
"prettier": "^2.8.8",
102+
"prettier-plugin-pkg": "^0.17.1",
103+
"prettier-plugin-svelte": "^2.10.1",
104+
"rimraf": "^5.0.1",
105+
"semver": "^7.5.1",
106+
"svelte": "^4.0.0-next.1",
107+
"svelte2tsx": "^0.6.15",
108+
"typescript": "~5.1.3",
109+
"typescript-eslint-parser-for-extra-files": "^0.5.0"
112110
},
113111
"publishConfig": {
114112
"access": "public"

Diff for: src/meta.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
// This file has been automatically generated,
33
// in order to update its content execute "pnpm run build:meta"
44
export const name = "svelte-eslint-parser" as const;
5-
export const version = "0.29.0" as const;
5+
export const version = "0.30.0" as const;

Diff for: src/parser/template.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type {} from "svelte"; // FIXME: Workaround to get type information for "svelte/compiler"
12
import { parse } from "svelte/compiler";
23
import type * as SvAST from "./svelte-ast-types";
34
import type { Context } from "../context";
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="typescript">
2-
import Component from 'foo.svelte' // Component: typeof SvelteComponentDev
2+
import Component from 'foo.svelte' // Component: any
33
</script>
44
<button on:click="{e=>{}}"></button> <!-- e: MouseEvent & { currentTarget: EventTarget & HTMLButtonElement; } -->
5-
<Component on:click="{e=>{}}"></Component> <!-- Component: typeof SvelteComponentDev, e: CustomEvent<any> -->
5+
<Component on:click="{e=>{}}"></Component> <!-- Component: any, e: any -->

Diff for: tests/fixtures/parser/ast/ts-event03-type-output.svelte

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts">
2-
import {createEventDispatcher} from 'svelte' // createEventDispatcher: <EventMap extends {} = any>() => <EventKey extends Extract<keyof EventMap, string>>(type: EventKey, detail?: EventMap[EventKey] | undefined, options?: DispatchOptions | undefined) => boolean, createEventDispatcher: <EventMap extends {} = any>() => <EventKey extends Extract<keyof EventMap, string>>(type: EventKey, detail?: EventMap[EventKey] | undefined, options?: DispatchOptions | undefined) => boolean
3-
const emit = createEventDispatcher<{ // emit: <EventKey extends "foo" | "bar">(type: EventKey, detail?: { foo: number; bar: string; }[EventKey] | undefined, options?: DispatchOptions | undefined) => boolean, createEventDispatcher<{ foo: number, bar: string }>(): <EventKey extends "foo" | "bar">(type: EventKey, detail?: { foo: number; bar: string; }[EventKey] | undefined, options?: DispatchOptions | undefined) => boolean
2+
import {createEventDispatcher} from 'svelte' // createEventDispatcher: <EventMap extends Record<string, any> = any>() => EventDispatcher<EventMap>, createEventDispatcher: <EventMap extends Record<string, any> = any>() => EventDispatcher<EventMap>
3+
const emit = createEventDispatcher<{ // emit: EventDispatcher<{ foo: number; bar: string; }>, createEventDispatcher<{ foo: number, bar: string }>(): EventDispatcher<{ foo: number; bar: string; }>
44
foo: number,
55
bar: string
66
}>()

Diff for: tests/fixtures/parser/ast/ts-event05-type-output.svelte

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<script lang="ts">
2-
import Component from './ts-event03-input.svelte'; // Component: typeof SvelteComponentDev
2+
import Component from './ts-event03-input.svelte'; // Component: any
33
</script>
44

5-
<Component on:foo="{e=>{ // Component: typeof SvelteComponentDev, e: CustomEvent<any>
5+
<Component on:foo="{e=>{ // Component: any, e: any
66
// e.detail is number
77
// `@typescript-eslint/parser` doesn't get the correct types.
88
// Using `typescript-eslint-parser-for-extra-files` will give we the correct types.

Diff for: tests/fixtures/parser/ast/ts-reactive02-type-output.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts">
2-
import { writable } from 'svelte/store'; // writable: <T>(value?: T | undefined, start?: StartStopNotifier<T> | undefined) => Writable<T>, writable: <T>(value?: T | undefined, start?: StartStopNotifier<T> | undefined) => Writable<T>
2+
import { writable } from 'svelte/store'; // writable: <T_1>(value?: T_1 | undefined, start?: StartStopNotifier<T_1> | undefined) => Writable<T_1>, writable: <T_1>(value?: T_1 | undefined, start?: StartStopNotifier<T_1> | undefined) => Writable<T_1>
33
let x = "hello" // x: string
44
const get = ()=>"hello" // get: () => string
55

Diff for: tests/fixtures/parser/ast/ts-reactive05-type-output.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts">
2-
import { writable } from 'svelte/store'; // writable: <T>(value?: T | undefined, start?: StartStopNotifier<T> | undefined) => Writable<T>, writable: <T>(value?: T | undefined, start?: StartStopNotifier<T> | undefined) => Writable<T>
2+
import { writable } from 'svelte/store'; // writable: <T_1>(value?: T_1 | undefined, start?: StartStopNotifier<T_1> | undefined) => Writable<T_1>, writable: <T_1>(value?: T_1 | undefined, start?: StartStopNotifier<T_1> | undefined) => Writable<T_1>
33
44
const a = writable(0) // a: Writable<number>, writable(0): Writable<number>
55
$: aValue = $a // $: any, aValue: number, $a: number

Diff for: tests/fixtures/parser/ast/ts-store01-type-output.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts">
2-
import { writable } from 'svelte/store'; // writable: <T>(value?: T | undefined, start?: StartStopNotifier<T> | undefined) => Writable<T>, writable: <T>(value?: T | undefined, start?: StartStopNotifier<T> | undefined) => Writable<T>
2+
import { writable } from 'svelte/store'; // writable: <T_1>(value?: T_1 | undefined, start?: StartStopNotifier<T_1> | undefined) => Writable<T_1>, writable: <T_1>(value?: T_1 | undefined, start?: StartStopNotifier<T_1> | undefined) => Writable<T_1>
33
const a = writable(0) // a: Writable<number>, writable(0): Writable<number>
44
const b = writable(0) // b: Writable<number>, writable(0): Writable<number>
55
const $b = 'abc' // $b: "abc"

Diff for: tests/fixtures/parser/ast/ts-store02-type-output.svelte

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script context="module" lang="ts">
2-
import { writable } from 'svelte/store'; // writable: <T>(value?: T | undefined, start?: StartStopNotifier<T> | undefined) => Writable<T>, writable: <T>(value?: T | undefined, start?: StartStopNotifier<T> | undefined) => Writable<T>
2+
import { writable } from 'svelte/store'; // writable: <T_1>(value?: T_1 | undefined, start?: StartStopNotifier<T_1> | undefined) => Writable<T_1>, writable: <T_1>(value?: T_1 | undefined, start?: StartStopNotifier<T_1> | undefined) => Writable<T_1>
33
const a = writable(0) // a: Writable<number>, writable(0): Writable<number>
44
declare const $a: string // $a: string
55
</script>

0 commit comments

Comments
 (0)