Skip to content

Commit 69af8e6

Browse files
committed
support for $host and $state.snapshot
1 parent 44dc916 commit 69af8e6

File tree

84 files changed

+510
-6
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+510
-6
lines changed

src/parser/globals.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export const globalsForRunes = [
88
"$props",
99
"$bindable",
1010
"$inspect",
11+
"$host",
1112
] as const;
1213
const globalsForSvelte5 = [...globalsForSvelte4, ...globalsForRunes];
1314
export const globals = svelteVersion.gte(5)

src/parser/typescript/analyze/index.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ function analyzeDollarDollarVariables(
262262
case "$props":
263263
case "$bindable":
264264
case "$inspect":
265+
case "$host":
265266
// Processed by `analyzeRuneVariables`.
266267
break;
267268
default: {
@@ -318,7 +319,7 @@ function analyzeRuneVariables(
318319
continue;
319320
}
320321
switch (globalName) {
321-
// See https://github.com/sveltejs/svelte/blob/dfc55c18f010f620b966e13eb0ad1f9791b5798f/packages/svelte/types/index.d.ts#L2492
322+
// See https://github.com/sveltejs/svelte/blob/bda32edb1a4f2d383d96071750d6bfa9421b2175/packages/svelte/types/index.d.ts#L2585
322323
case "$state": {
323324
appendDeclareFunctionVirtualScripts(globalName, [
324325
"<T>(initial: T): T",
@@ -328,9 +329,12 @@ function analyzeRuneVariables(
328329
"export function frozen<T>(initial: T): Readonly<T>;",
329330
"export function frozen<T>(): Readonly<T> | undefined;",
330331
]);
332+
appendDeclareNamespaceVirtualScripts(globalName, [
333+
"export function snapshot<T>(state: T): T;",
334+
]);
331335
break;
332336
}
333-
// See https://github.com/sveltejs/svelte/blob/dfc55c18f010f620b966e13eb0ad1f9791b5798f/packages/svelte/types/index.d.ts#L2535
337+
// See https://github.com/sveltejs/svelte/blob/bda32edb1a4f2d383d96071750d6bfa9421b2175/packages/svelte/types/index.d.ts#L2648
334338
case "$derived": {
335339
appendDeclareFunctionVirtualScripts(globalName, [
336340
"<T>(expression: T): T",
@@ -340,7 +344,7 @@ function analyzeRuneVariables(
340344
]);
341345
break;
342346
}
343-
// See https://github.com/sveltejs/svelte/blob/dfc55c18f010f620b966e13eb0ad1f9791b5798f/packages/svelte/types/index.d.ts#L2574
347+
// See https://github.com/sveltejs/svelte/blob/bda32edb1a4f2d383d96071750d6bfa9421b2175/packages/svelte/types/index.d.ts#L2687
344348
case "$effect": {
345349
appendDeclareFunctionVirtualScripts(globalName, [
346350
"(fn: () => void | (() => void)): void",
@@ -352,23 +356,30 @@ function analyzeRuneVariables(
352356
]);
353357
break;
354358
}
355-
// See https://github.com/sveltejs/svelte/blob/dfc55c18f010f620b966e13eb0ad1f9791b5798f/packages/svelte/types/index.d.ts#L2655
359+
// See https://github.com/sveltejs/svelte/blob/bda32edb1a4f2d383d96071750d6bfa9421b2175/packages/svelte/types/index.d.ts#L2768
356360
case "$props": {
357361
appendDeclareFunctionVirtualScripts(globalName, ["(): any"]);
358362
break;
359363
}
360-
// See https://github.com/sveltejs/svelte/blob/dfc55c18f010f620b966e13eb0ad1f9791b5798f/packages/svelte/types/index.d.ts#L2666
364+
// See https://github.com/sveltejs/svelte/blob/bda32edb1a4f2d383d96071750d6bfa9421b2175/packages/svelte/types/index.d.ts#L2779
361365
case "$bindable": {
362366
appendDeclareFunctionVirtualScripts(globalName, ["<T>(t?: T): T"]);
363367
break;
364368
}
365-
// See https://github.com/sveltejs/svelte/blob/dfc55c18f010f620b966e13eb0ad1f9791b5798f/packages/svelte/types/index.d.ts#L2686
369+
// See https://github.com/sveltejs/svelte/blob/bda32edb1a4f2d383d96071750d6bfa9421b2175/packages/svelte/types/index.d.ts#L2799
366370
case "$inspect": {
367371
appendDeclareFunctionVirtualScripts(globalName, [
368372
`<T extends any[]>(...values: T): { with: (fn: (type: 'init' | 'update', ...values: T) => void) => void }`,
369373
]);
370374
break;
371375
}
376+
// See https://github.com/sveltejs/svelte/blob/bda32edb1a4f2d383d96071750d6bfa9421b2175/packages/svelte/types/index.d.ts#L2822
377+
case "$host": {
378+
appendDeclareFunctionVirtualScripts(globalName, [
379+
`<El extends HTMLElement = HTMLElement>(): El`,
380+
]);
381+
break;
382+
}
372383
default: {
373384
const _: never = globalName;
374385
throw Error(`Unknown global: ${_}`);

tests/fixtures/parser/ast/$$slots-scope-output-svelte5.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@
7777
"identifiers": [],
7878
"defs": [],
7979
"references": []
80+
},
81+
{
82+
"name": "$host",
83+
"identifiers": [],
84+
"defs": [],
85+
"references": []
8086
}
8187
]
8288
}

tests/fixtures/parser/ast/docs/template-syntax/02-attributes-and-props/10-scope-output-svelte5.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@
7777
"identifiers": [],
7878
"defs": [],
7979
"references": []
80+
},
81+
{
82+
"name": "$host",
83+
"identifiers": [],
84+
"defs": [],
85+
"references": []
8086
}
8187
]
8288
}

tests/fixtures/parser/ast/docs/template-syntax/02-attributes-and-props/11-scope-output-svelte5.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@
7777
"identifiers": [],
7878
"defs": [],
7979
"references": []
80+
},
81+
{
82+
"name": "$host",
83+
"identifiers": [],
84+
"defs": [],
85+
"references": []
8086
}
8187
]
8288
}

tests/fixtures/parser/ast/docs/template-syntax/13-slot/02-$$slots/01-scope-output-svelte5.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,12 @@
7777
"identifiers": [],
7878
"defs": [],
7979
"references": []
80+
},
81+
{
82+
"name": "$host",
83+
"identifiers": [],
84+
"defs": [],
85+
"references": []
8086
}
8187
]
8288
}

tests/fixtures/parser/ast/svelte5/docs/fine-grained-reactivity/example01-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,12 @@
124124
"identifiers": [],
125125
"defs": [],
126126
"references": []
127+
},
128+
{
129+
"name": "$host",
130+
"identifiers": [],
131+
"defs": [],
132+
"references": []
127133
}
128134
],
129135
"references": [],

tests/fixtures/parser/ast/svelte5/docs/functions/01-untrack-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@
102102
"identifiers": [],
103103
"defs": [],
104104
"references": []
105+
},
106+
{
107+
"name": "$host",
108+
"identifiers": [],
109+
"defs": [],
110+
"references": []
105111
}
106112
],
107113
"references": [],

tests/fixtures/parser/ast/svelte5/docs/old-vs-new/01-counter-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,12 @@
126126
"identifiers": [],
127127
"defs": [],
128128
"references": []
129+
},
130+
{
131+
"name": "$host",
132+
"identifiers": [],
133+
"defs": [],
134+
"references": []
129135
}
130136
],
131137
"references": [],

tests/fixtures/parser/ast/svelte5/docs/old-vs-new/02-tracking-dependencies-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,12 @@
125125
"identifiers": [],
126126
"defs": [],
127127
"references": []
128+
},
129+
{
130+
"name": "$host",
131+
"identifiers": [],
132+
"defs": [],
133+
"references": []
128134
}
129135
],
130136
"references": [],

tests/fixtures/parser/ast/svelte5/docs/old-vs-new/03-untracking-dependencies-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,12 @@
125125
"identifiers": [],
126126
"defs": [],
127127
"references": []
128+
},
129+
{
130+
"name": "$host",
131+
"identifiers": [],
132+
"defs": [],
133+
"references": []
128134
}
129135
],
130136
"references": [],

tests/fixtures/parser/ast/svelte5/docs/old-vs-new/04-simple-component-props-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@
7878
"identifiers": [],
7979
"defs": [],
8080
"references": []
81+
},
82+
{
83+
"name": "$host",
84+
"identifiers": [],
85+
"defs": [],
86+
"references": []
8187
}
8288
],
8389
"references": [],

tests/fixtures/parser/ast/svelte5/docs/old-vs-new/05-advanced-component-props-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@
7878
"identifiers": [],
7979
"defs": [],
8080
"references": []
81+
},
82+
{
83+
"name": "$host",
84+
"identifiers": [],
85+
"defs": [],
86+
"references": []
8187
}
8288
],
8389
"references": [],

tests/fixtures/parser/ast/svelte5/docs/old-vs-new/06-autoscroll-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,12 @@
125125
"identifiers": [],
126126
"defs": [],
127127
"references": []
128+
},
129+
{
130+
"name": "$host",
131+
"identifiers": [],
132+
"defs": [],
133+
"references": []
128134
}
129135
],
130136
"references": [],

tests/fixtures/parser/ast/svelte5/docs/runes/01-$state-frozen-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@
7878
"identifiers": [],
7979
"defs": [],
8080
"references": []
81+
},
82+
{
83+
"name": "$host",
84+
"identifiers": [],
85+
"defs": [],
86+
"references": []
8187
}
8288
],
8389
"references": [],

tests/fixtures/parser/ast/svelte5/docs/runes/01-$state-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@
7878
"identifiers": [],
7979
"defs": [],
8080
"references": []
81+
},
82+
{
83+
"name": "$host",
84+
"identifiers": [],
85+
"defs": [],
86+
"references": []
8187
}
8288
],
8389
"references": [],

tests/fixtures/parser/ast/svelte5/docs/runes/02-$derived-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@
102102
"identifiers": [],
103103
"defs": [],
104104
"references": []
105+
},
106+
{
107+
"name": "$host",
108+
"identifiers": [],
109+
"defs": [],
110+
"references": []
105111
}
106112
],
107113
"references": [],

tests/fixtures/parser/ast/svelte5/docs/runes/02-2-$derived-by-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@
102102
"identifiers": [],
103103
"defs": [],
104104
"references": []
105+
},
106+
{
107+
"name": "$host",
108+
"identifiers": [],
109+
"defs": [],
110+
"references": []
105111
}
106112
],
107113
"references": [],

tests/fixtures/parser/ast/svelte5/docs/runes/03-$effect-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,12 @@
126126
"identifiers": [],
127127
"defs": [],
128128
"references": []
129+
},
130+
{
131+
"name": "$host",
132+
"identifiers": [],
133+
"defs": [],
134+
"references": []
129135
}
130136
],
131137
"references": [],

tests/fixtures/parser/ast/svelte5/docs/runes/04-$effect-pre-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@
7878
"identifiers": [],
7979
"defs": [],
8080
"references": []
81+
},
82+
{
83+
"name": "$host",
84+
"identifiers": [],
85+
"defs": [],
86+
"references": []
8187
}
8288
],
8389
"references": [],

tests/fixtures/parser/ast/svelte5/docs/runes/05-$props-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@
7878
"identifiers": [],
7979
"defs": [],
8080
"references": []
81+
},
82+
{
83+
"name": "$host",
84+
"identifiers": [],
85+
"defs": [],
86+
"references": []
8187
}
8288
],
8389
"references": [],

tests/fixtures/parser/ast/svelte5/docs/runes/06-$props-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@
7878
"identifiers": [],
7979
"defs": [],
8080
"references": []
81+
},
82+
{
83+
"name": "$host",
84+
"identifiers": [],
85+
"defs": [],
86+
"references": []
8187
}
8288
],
8389
"references": [],

tests/fixtures/parser/ast/svelte5/docs/runes/07-$props-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@
7878
"identifiers": [],
7979
"defs": [],
8080
"references": []
81+
},
82+
{
83+
"name": "$host",
84+
"identifiers": [],
85+
"defs": [],
86+
"references": []
8187
}
8288
],
8389
"references": [],

tests/fixtures/parser/ast/svelte5/docs/runes/08-$props-ts-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@
7878
"identifiers": [],
7979
"defs": [],
8080
"references": []
81+
},
82+
{
83+
"name": "$host",
84+
"identifiers": [],
85+
"defs": [],
86+
"references": []
8187
}
8288
],
8389
"references": [],

tests/fixtures/parser/ast/svelte5/docs/runes/08-2-$bindable-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@
102102
"identifiers": [],
103103
"defs": [],
104104
"references": []
105+
},
106+
{
107+
"name": "$host",
108+
"identifiers": [],
109+
"defs": [],
110+
"references": []
105111
}
106112
],
107113
"references": [],

tests/fixtures/parser/ast/svelte5/docs/runes/08-3-$bindable-scope-output.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@
102102
"identifiers": [],
103103
"defs": [],
104104
"references": []
105+
},
106+
{
107+
"name": "$host",
108+
"identifiers": [],
109+
"defs": [],
110+
"references": []
105111
}
106112
],
107113
"references": [],

0 commit comments

Comments
 (0)