@@ -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