@@ -125,7 +125,7 @@ export interface SvelteHTMLElement extends BaseSvelteElement {
125125 | SvelteProgram
126126 | SvelteElement
127127 | SvelteIfBlock
128- | SvelteElseBlock
128+ | SvelteElseBlockAlone
129129 | SvelteEachBlock
130130 | SvelteAwaitPendingBlock
131131 | SvelteAwaitThenBlock
@@ -144,7 +144,7 @@ export interface SvelteComponentElement extends BaseSvelteElement {
144144 | SvelteProgram
145145 | SvelteElement
146146 | SvelteIfBlock
147- | SvelteElseBlock
147+ | SvelteElseBlockAlone
148148 | SvelteEachBlock
149149 | SvelteAwaitPendingBlock
150150 | SvelteAwaitThenBlock
@@ -163,7 +163,7 @@ export interface SvelteSpecialElement extends BaseSvelteElement {
163163 | SvelteProgram
164164 | SvelteElement
165165 | SvelteIfBlock
166- | SvelteElseBlock
166+ | SvelteElseBlockAlone
167167 | SvelteEachBlock
168168 | SvelteAwaitPendingBlock
169169 | SvelteAwaitThenBlock
@@ -215,7 +215,7 @@ type Child =
215215 | SvelteText
216216 | SvelteMustacheTag
217217 | SvelteDebugTag
218- | SvelteIfBlock
218+ | SvelteIfBlockAlone
219219 | SvelteEachBlock
220220 | SvelteAwaitBlock
221221 | SvelteKeyBlock
@@ -230,7 +230,7 @@ export interface SvelteText extends BaseNode {
230230 | SvelteElement
231231 | SvelteStyleElement
232232 | SvelteIfBlock
233- | SvelteElseBlock
233+ | SvelteElseBlockAlone
234234 | SvelteEachBlock
235235 | SvelteAwaitPendingBlock
236236 | SvelteAwaitThenBlock
@@ -244,32 +244,51 @@ export interface SvelteLiteral extends BaseNode {
244244 parent: SvelteAttribute
245245}
246246
247+ /** Node of mustache tag. e.g. `{...}`, `{@html ...}`. Like JSXExpressionContainer */
248+ export type SvelteMustacheTag = SvelteMustacheTagText | SvelteMustacheTagRaw
247249interface BaseSvelteMustacheTag extends BaseNode {
250+ type: "SvelteMustacheTag"
251+ kind: "text" | "raw"
252+ expression: ESTree.Expression
248253 parent:
249254 | SvelteProgram
250255 | SvelteElement
251256 | SvelteIfBlock
252- | SvelteElseBlock
257+ | SvelteElseBlockAlone
253258 | SvelteEachBlock
254259 | SvelteAwaitPendingBlock
255260 | SvelteAwaitThenBlock
256261 | SvelteAwaitCatchBlock
257262 | SvelteKeyBlock
258263 | SvelteAttribute
259264}
260- /** Node of mustache tag. e.g. `{...}`, `{@html ...}`. Like JSXExpressionContainer */
261- export interface SvelteMustacheTag extends BaseSvelteMustacheTag {
262- type: "SvelteMustacheTag"
263- kind: "text" | "raw"
264- expression: ESTree.Expression
265+ /** Node of mustache tag. e.g. `{...}``. Like JSXExpressionContainer */
266+ export interface SvelteMustacheTagText extends BaseSvelteMustacheTag {
267+ kind: "text"
268+ }
269+ /** Node of mustache tag. e.g. `{@html ...}`. Like JSXExpressionContainer */
270+ export interface SvelteMustacheTagRaw extends BaseSvelteMustacheTag {
271+ kind: "raw"
265272}
266273/** Node of debug mustache tag. e.g. `{@debug}` */
267- export interface SvelteDebugTag extends BaseSvelteMustacheTag {
274+ export interface SvelteDebugTag extends BaseNode {
268275 type: "SvelteDebugTag"
269276 identifiers: ESTree.Identifier[]
277+ parent:
278+ | SvelteProgram
279+ | SvelteElement
280+ | SvelteIfBlock
281+ | SvelteElseBlockAlone
282+ | SvelteEachBlock
283+ | SvelteAwaitPendingBlock
284+ | SvelteAwaitThenBlock
285+ | SvelteAwaitCatchBlock
286+ | SvelteKeyBlock
287+ | SvelteAttribute
270288}
271289/** Node of if block. e.g. `{#if}` */
272- export interface SvelteIfBlock extends BaseNode {
290+ export type SvelteIfBlock = SvelteIfBlockAlone | SvelteIfBlockElseIf
291+ interface BaseSvelteIfBlock extends BaseNode {
273292 type: "SvelteIfBlock"
274293 elseif: boolean
275294 expression: ESTree.Expression
@@ -286,12 +305,35 @@ export interface SvelteIfBlock extends BaseNode {
286305 | SvelteAwaitCatchBlock
287306 | SvelteKeyBlock
288307}
308+ /** Node of if block. e.g. `{#if}` */
309+ export interface SvelteIfBlockAlone extends BaseSvelteIfBlock {
310+ elseif: false
311+ parent: Exclude<BaseSvelteIfBlock["parent"], SvelteElseBlockElseIf>
312+ }
313+ /** Node of if block. e.g. `{:else #if}` */
314+ export interface SvelteIfBlockElseIf extends BaseSvelteIfBlock {
315+ elseif: true
316+ parent: SvelteElseBlockElseIf
317+ }
318+
289319/** Node of else block. e.g. `{:else}` */
290- export interface SvelteElseBlock extends BaseNode {
320+ export type SvelteElseBlock = SvelteElseBlockAlone | SvelteElseBlockElseIf
321+ interface BaseSvelteElseBlock extends BaseNode {
291322 type: "SvelteElseBlock"
292- children: Child[]
323+ elseif: boolean
324+ children: (Child | SvelteIfBlockElseIf)[]
293325 parent: SvelteIfBlock | SvelteEachBlock
294326}
327+ /** Node of else block. e.g. `{:else}` */
328+ export interface SvelteElseBlockAlone extends BaseSvelteElseBlock {
329+ elseif: false
330+ children: Child[]
331+ }
332+ /** Node of else block. e.g. `{:else if ...}` */
333+ export interface SvelteElseBlockElseIf extends BaseSvelteElseBlock {
334+ elseif: true
335+ children: [SvelteIfBlockElseIf]
336+ }
295337/** Node of each block. e.g. `{#each}` */
296338export interface SvelteEachBlock extends BaseNode {
297339 type: "SvelteEachBlock"
@@ -300,56 +342,116 @@ export interface SvelteEachBlock extends BaseNode {
300342 index: ESTree.Identifier | null
301343 key: ESTree.Expression | null
302344 children: Child[]
303- else: SvelteElseBlock | null
345+ else: SvelteElseBlockAlone | null
304346 parent:
305347 | SvelteProgram
306348 | SvelteElement
307349 | SvelteIfBlock
308- | SvelteElseBlock
350+ | SvelteElseBlockAlone
309351 | SvelteEachBlock
310352 | SvelteAwaitPendingBlock
311353 | SvelteAwaitThenBlock
312354 | SvelteAwaitCatchBlock
313355 | SvelteKeyBlock
314356}
315- /** Node of await block. e.g. `{#await}` */
316- export interface SvelteAwaitBlock extends BaseNode {
357+ /** Node of await block. e.g. `{#await}`, `{#await ... then ... }`, `{#await ... catch ... }` */
358+ export type SvelteAwaitBlock =
359+ | SvelteAwaitBlockAwaitPending
360+ | SvelteAwaitBlockAwaitThen
361+ | SvelteAwaitBlockAwaitCatch
362+ interface BaseSvelteAwaitBlock extends BaseNode {
317363 type: "SvelteAwaitBlock"
318364 expression: ESTree.Expression
365+ kind: "await" | "await-then" | "await-catch"
319366 pending: SvelteAwaitPendingBlock | null
320367 then: SvelteAwaitThenBlock | null
321368 catch: SvelteAwaitCatchBlock | null
322369 parent:
323370 | SvelteProgram
324371 | SvelteElement
325372 | SvelteIfBlock
326- | SvelteElseBlock
373+ | SvelteElseBlockAlone
327374 | SvelteEachBlock
328375 | SvelteAwaitPendingBlock
329376 | SvelteAwaitThenBlock
330377 | SvelteAwaitCatchBlock
331378 | SvelteKeyBlock
332379}
380+ /** Node of await block. e.g. `{#await}` */
381+ export interface SvelteAwaitBlockAwaitPending extends BaseSvelteAwaitBlock {
382+ kind: "await"
383+ pending: SvelteAwaitPendingBlock
384+ then: SvelteAwaitThenBlockAlone | null
385+ catch: SvelteAwaitCatchBlockAlone | null
386+ }
387+ /** Node of await block. e.g. `{#await ... then ... }` */
388+ export interface SvelteAwaitBlockAwaitThen extends BaseSvelteAwaitBlock {
389+ kind: "await-then"
390+ pending: null
391+ then: SvelteAwaitThenBlockAwaitThen
392+ catch: SvelteAwaitCatchBlockAlone | null
393+ }
394+ /** Node of await block. e.g. `{#await ... catch ... }` */
395+ export interface SvelteAwaitBlockAwaitCatch extends BaseSvelteAwaitBlock {
396+ kind: "await-catch"
397+ pending: null
398+ then: null
399+ catch: SvelteAwaitCatchBlockAwaitCatch
400+ }
401+
333402/** Node of await pending block. e.g. `{#await expr} ... {:then}` */
334403export interface SvelteAwaitPendingBlock extends BaseNode {
335404 type: "SvelteAwaitPendingBlock"
336405 children: Child[]
337406 parent: SvelteAwaitBlock
338407}
339- /** Node of await then block. e.g. `{:then}` */
340- export interface SvelteAwaitThenBlock extends BaseNode {
408+ /** Node of await then block. e.g. `{:then}`, `{#await ... then ...}` */
409+ export type SvelteAwaitThenBlock =
410+ | SvelteAwaitThenBlockAlone
411+ | SvelteAwaitThenBlockAwaitThen
412+ interface BaseSvelteAwaitThenBlock extends BaseNode {
341413 type: "SvelteAwaitThenBlock"
414+ awaitThen: boolean
342415 value: ESTree.Pattern | null
343416 children: Child[]
344417 parent: SvelteAwaitBlock
345418}
346- /** Node of await catch block. e.g. `{:catch}` */
347- export interface SvelteAwaitCatchBlock extends BaseNode {
419+ /** Node of await then block. e.g. `{:then}` */
420+ export interface SvelteAwaitThenBlockAlone extends BaseSvelteAwaitThenBlock {
421+ awaitThen: false
422+ parent: SvelteAwaitBlockAwaitPending
423+ }
424+ /** Node of await then block. e.g. `{#await ... then ...}` */
425+ export interface SvelteAwaitThenBlockAwaitThen
426+ extends BaseSvelteAwaitThenBlock {
427+ awaitThen: true
428+ parent: SvelteAwaitBlockAwaitThen
429+ }
430+
431+ /** Node of await catch block. e.g. `{:catch}`, `{#await ... catch ... }` */
432+ export type SvelteAwaitCatchBlock =
433+ | SvelteAwaitCatchBlockAlone
434+ | SvelteAwaitCatchBlockAwaitCatch
435+ interface BaseSvelteAwaitCatchBlock extends BaseNode {
348436 type: "SvelteAwaitCatchBlock"
437+ awaitCatch: boolean
349438 error: ESTree.Pattern | null
350439 children: Child[]
351440 parent: SvelteAwaitBlock
352441}
442+ /** Node of await catch block. e.g. `{:catch}` */
443+ export interface SvelteAwaitCatchBlockAlone extends BaseSvelteAwaitCatchBlock {
444+ awaitCatch: false
445+ parent: SvelteAwaitBlockAwaitPending | SvelteAwaitBlockAwaitThen
446+ }
447+ /** Node of await catch block. e.g. `{#await ... catch ... }` */
448+ export interface SvelteAwaitCatchBlockAwaitCatch
449+ extends BaseSvelteAwaitCatchBlock {
450+ awaitCatch: true
451+ error: ESTree.Pattern | null
452+ children: Child[]
453+ parent: SvelteAwaitBlockAwaitCatch
454+ }
353455/** Node of key block. e.g. `{#key}` */
354456export interface SvelteKeyBlock extends BaseNode {
355457 type: "SvelteKeyBlock"
@@ -359,7 +461,7 @@ export interface SvelteKeyBlock extends BaseNode {
359461 | SvelteProgram
360462 | SvelteElement
361463 | SvelteIfBlock
362- | SvelteElseBlock
464+ | SvelteElseBlockAlone
363465 | SvelteEachBlock
364466 | SvelteAwaitPendingBlock
365467 | SvelteAwaitThenBlock
@@ -374,7 +476,7 @@ export interface SvelteHTMLComment extends BaseNode {
374476 | SvelteProgram
375477 | SvelteElement
376478 | SvelteIfBlock
377- | SvelteElseBlock
479+ | SvelteElseBlockAlone
378480 | SvelteEachBlock
379481 | SvelteAwaitPendingBlock
380482 | SvelteAwaitThenBlock
0 commit comments