@typed/template 0.14.0 → 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -2
- package/dist/EventHandler.d.ts +273 -0
- package/dist/EventHandler.d.ts.map +1 -0
- package/dist/EventHandler.js +261 -0
- package/dist/EventSource.d.ts +82 -0
- package/dist/EventSource.d.ts.map +1 -0
- package/dist/EventSource.js +127 -0
- package/dist/Html.d.ts +122 -0
- package/dist/Html.d.ts.map +1 -0
- package/dist/Html.js +250 -0
- package/dist/HtmlChunk.d.ts +118 -0
- package/dist/HtmlChunk.d.ts.map +1 -0
- package/dist/HtmlChunk.js +211 -0
- package/dist/HydrateContext.d.ts +28 -0
- package/dist/HydrateContext.d.ts.map +1 -0
- package/dist/HydrateContext.js +25 -0
- package/dist/Parser.d.ts +35 -0
- package/dist/Parser.d.ts.map +1 -0
- package/dist/Parser.js +437 -0
- package/dist/Render.d.ts +195 -0
- package/dist/Render.d.ts.map +1 -0
- package/dist/Render.js +609 -0
- package/dist/RenderEvent.d.ts +179 -0
- package/dist/RenderEvent.d.ts.map +1 -0
- package/dist/RenderEvent.js +102 -0
- package/dist/RenderQueue.d.ts +167 -0
- package/dist/RenderQueue.d.ts.map +1 -0
- package/dist/RenderQueue.js +298 -0
- package/dist/RenderTemplate.d.ts +90 -0
- package/dist/RenderTemplate.d.ts.map +1 -0
- package/dist/RenderTemplate.js +87 -0
- package/dist/Renderable.d.ts +88 -0
- package/dist/Renderable.d.ts.map +1 -0
- package/dist/Renderable.js +3 -0
- package/dist/{dts/Template.d.ts → Template.d.ts} +109 -74
- package/dist/Template.d.ts.map +1 -0
- package/dist/{esm/Template.js → Template.js} +96 -56
- package/dist/Wire.d.ts +169 -0
- package/dist/Wire.d.ts.map +1 -0
- package/dist/Wire.js +217 -0
- package/dist/errors.d.ts +145 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +159 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/internal/IndexRefCounter.d.ts +11 -0
- package/dist/internal/IndexRefCounter.d.ts.map +1 -0
- package/dist/internal/IndexRefCounter.js +42 -0
- package/dist/internal/ParentChildNodes.d.ts +6 -0
- package/dist/internal/ParentChildNodes.d.ts.map +1 -0
- package/dist/internal/ParentChildNodes.js +1 -0
- package/dist/internal/PathStack.d.ts +9 -0
- package/dist/internal/PathStack.d.ts.map +1 -0
- package/dist/internal/PathStack.js +18 -0
- package/dist/internal/buildTemplateFragement.d.ts +3 -0
- package/dist/internal/buildTemplateFragement.d.ts.map +1 -0
- package/dist/internal/buildTemplateFragement.js +61 -0
- package/dist/internal/diff.d.ts +2 -0
- package/dist/internal/diff.d.ts.map +1 -0
- package/dist/internal/diff.js +119 -0
- package/dist/internal/dom.d.ts +45 -0
- package/dist/internal/dom.d.ts.map +1 -0
- package/dist/internal/dom.js +304 -0
- package/dist/internal/encoding.d.ts +7 -0
- package/dist/internal/encoding.d.ts.map +1 -0
- package/dist/internal/encoding.js +134 -0
- package/dist/{dts/internal/v2/hydration-template.d.ts → internal/hydration.d.ts} +10 -7
- package/dist/internal/hydration.d.ts.map +1 -0
- package/dist/{esm/internal/v2/hydration-template.js → internal/hydration.js} +80 -26
- package/dist/internal/keyToPartType.d.ts +2 -0
- package/dist/internal/keyToPartType.d.ts.map +1 -0
- package/dist/internal/keyToPartType.js +110 -0
- package/dist/internal/meta.d.ts +17 -0
- package/dist/internal/meta.d.ts.map +1 -0
- package/dist/internal/meta.js +14 -0
- package/dist/internal/takeOneIfNotRenderEvent.d.ts +4 -0
- package/dist/internal/takeOneIfNotRenderEvent.d.ts.map +1 -0
- package/dist/internal/takeOneIfNotRenderEvent.js +10 -0
- package/dist/internal/templateHash.d.ts +2 -0
- package/dist/internal/templateHash.d.ts.map +1 -0
- package/dist/internal/templateHash.js +14 -0
- package/dist/many.d.ts +68 -0
- package/dist/many.d.ts.map +1 -0
- package/dist/many.js +107 -0
- package/package.json +29 -227
- package/src/EventHandler.ts +318 -86
- package/src/EventSource.ts +202 -0
- package/src/Html.test.ts +490 -0
- package/src/Html.ts +292 -333
- package/src/HtmlChunk.ts +290 -332
- package/src/HydrateContext.ts +40 -0
- package/src/Hydration.test.ts +408 -0
- package/src/Parser.test.ts +923 -0
- package/src/Parser.ts +598 -10
- package/src/Render.test.ts +337 -0
- package/src/Render.ts +878 -63
- package/src/RenderEvent.ts +169 -40
- package/src/RenderQueue.ts +291 -385
- package/src/RenderTemplate.ts +98 -31
- package/src/Renderable.ts +122 -24
- package/src/Template.ts +246 -145
- package/src/Wire.ts +309 -0
- package/src/errors.ts +173 -0
- package/src/index.ts +14 -66
- package/src/internal/IndexRefCounter.ts +53 -0
- package/src/internal/ParentChildNodes.ts +7 -0
- package/src/internal/PathStack.ts +23 -0
- package/src/internal/buildTemplateFragement.ts +82 -0
- package/src/internal/diff.ts +127 -0
- package/src/internal/dom.ts +357 -0
- package/src/internal/encoding.ts +147 -0
- package/src/internal/hydration.ts +406 -0
- package/src/internal/keyToPartType.ts +113 -0
- package/src/internal/meta.ts +25 -0
- package/src/internal/takeOneIfNotRenderEvent.ts +19 -0
- package/src/internal/templateHash.ts +18 -0
- package/src/many.ts +148 -0
- package/Directive/package.json +0 -6
- package/ElementRef/package.json +0 -6
- package/ElementSource/package.json +0 -6
- package/Entry/package.json +0 -6
- package/EventHandler/package.json +0 -6
- package/Html/package.json +0 -6
- package/HtmlChunk/package.json +0 -6
- package/Hydrate/package.json +0 -6
- package/LICENSE +0 -21
- package/Many/package.json +0 -6
- package/Meta/package.json +0 -6
- package/Parser/package.json +0 -6
- package/Part/package.json +0 -6
- package/Placeholder/package.json +0 -6
- package/Platform/package.json +0 -6
- package/Render/package.json +0 -6
- package/RenderContext/package.json +0 -6
- package/RenderEvent/package.json +0 -6
- package/RenderQueue/package.json +0 -6
- package/RenderTemplate/package.json +0 -6
- package/Renderable/package.json +0 -6
- package/Template/package.json +0 -6
- package/Test/package.json +0 -6
- package/Vitest/package.json +0 -6
- package/compiler-tools/package.json +0 -6
- package/dist/cjs/Directive.js +0 -76
- package/dist/cjs/Directive.js.map +0 -1
- package/dist/cjs/ElementRef.js +0 -92
- package/dist/cjs/ElementRef.js.map +0 -1
- package/dist/cjs/ElementSource.js +0 -246
- package/dist/cjs/ElementSource.js.map +0 -1
- package/dist/cjs/Entry.js +0 -6
- package/dist/cjs/Entry.js.map +0 -1
- package/dist/cjs/EventHandler.js +0 -76
- package/dist/cjs/EventHandler.js.map +0 -1
- package/dist/cjs/Html.js +0 -224
- package/dist/cjs/Html.js.map +0 -1
- package/dist/cjs/HtmlChunk.js +0 -306
- package/dist/cjs/HtmlChunk.js.map +0 -1
- package/dist/cjs/Hydrate.js +0 -43
- package/dist/cjs/Hydrate.js.map +0 -1
- package/dist/cjs/Many.js +0 -66
- package/dist/cjs/Many.js.map +0 -1
- package/dist/cjs/Meta.js +0 -50
- package/dist/cjs/Meta.js.map +0 -1
- package/dist/cjs/Parser.js +0 -19
- package/dist/cjs/Parser.js.map +0 -1
- package/dist/cjs/Part.js +0 -6
- package/dist/cjs/Part.js.map +0 -1
- package/dist/cjs/Placeholder.js +0 -34
- package/dist/cjs/Placeholder.js.map +0 -1
- package/dist/cjs/Platform.js +0 -65
- package/dist/cjs/Platform.js.map +0 -1
- package/dist/cjs/Render.js +0 -50
- package/dist/cjs/Render.js.map +0 -1
- package/dist/cjs/RenderContext.js +0 -67
- package/dist/cjs/RenderContext.js.map +0 -1
- package/dist/cjs/RenderEvent.js +0 -52
- package/dist/cjs/RenderEvent.js.map +0 -1
- package/dist/cjs/RenderQueue.js +0 -343
- package/dist/cjs/RenderQueue.js.map +0 -1
- package/dist/cjs/RenderTemplate.js +0 -26
- package/dist/cjs/RenderTemplate.js.map +0 -1
- package/dist/cjs/Renderable.js +0 -6
- package/dist/cjs/Renderable.js.map +0 -1
- package/dist/cjs/Template.js +0 -305
- package/dist/cjs/Template.js.map +0 -1
- package/dist/cjs/Test.js +0 -184
- package/dist/cjs/Test.js.map +0 -1
- package/dist/cjs/Vitest.js +0 -52
- package/dist/cjs/Vitest.js.map +0 -1
- package/dist/cjs/compiler-tools.js +0 -100
- package/dist/cjs/compiler-tools.js.map +0 -1
- package/dist/cjs/index.js +0 -138
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/internal/EventSource.js +0 -129
- package/dist/cjs/internal/EventSource.js.map +0 -1
- package/dist/cjs/internal/HydrateContext.js +0 -13
- package/dist/cjs/internal/HydrateContext.js.map +0 -1
- package/dist/cjs/internal/browser.js +0 -110
- package/dist/cjs/internal/browser.js.map +0 -1
- package/dist/cjs/internal/character-entities.js +0 -2141
- package/dist/cjs/internal/character-entities.js.map +0 -1
- package/dist/cjs/internal/chunks.js +0 -68
- package/dist/cjs/internal/chunks.js.map +0 -1
- package/dist/cjs/internal/errors.js +0 -52
- package/dist/cjs/internal/errors.js.map +0 -1
- package/dist/cjs/internal/indexRefCounter.js +0 -52
- package/dist/cjs/internal/indexRefCounter.js.map +0 -1
- package/dist/cjs/internal/module-augmentation.js +0 -6
- package/dist/cjs/internal/module-augmentation.js.map +0 -1
- package/dist/cjs/internal/parser.js +0 -568
- package/dist/cjs/internal/parser.js.map +0 -1
- package/dist/cjs/internal/parser2.js +0 -382
- package/dist/cjs/internal/parser2.js.map +0 -1
- package/dist/cjs/internal/server-parts.js +0 -124
- package/dist/cjs/internal/server-parts.js.map +0 -1
- package/dist/cjs/internal/server.js +0 -48
- package/dist/cjs/internal/server.js.map +0 -1
- package/dist/cjs/internal/utils.js +0 -136
- package/dist/cjs/internal/utils.js.map +0 -1
- package/dist/cjs/internal/v2/SyncPart.js +0 -6
- package/dist/cjs/internal/v2/SyncPart.js.map +0 -1
- package/dist/cjs/internal/v2/helpers.js +0 -15
- package/dist/cjs/internal/v2/helpers.js.map +0 -1
- package/dist/cjs/internal/v2/hydration-template.js +0 -269
- package/dist/cjs/internal/v2/hydration-template.js.map +0 -1
- package/dist/cjs/internal/v2/parts.js +0 -169
- package/dist/cjs/internal/v2/parts.js.map +0 -1
- package/dist/cjs/internal/v2/render-entry.js +0 -110
- package/dist/cjs/internal/v2/render-entry.js.map +0 -1
- package/dist/cjs/internal/v2/render-sync-parts.js +0 -318
- package/dist/cjs/internal/v2/render-sync-parts.js.map +0 -1
- package/dist/cjs/internal/v2/render.js +0 -592
- package/dist/cjs/internal/v2/render.js.map +0 -1
- package/dist/cjs/internal/v2/sync-parts.js +0 -115
- package/dist/cjs/internal/v2/sync-parts.js.map +0 -1
- package/dist/dts/Directive.d.ts +0 -70
- package/dist/dts/Directive.d.ts.map +0 -1
- package/dist/dts/ElementRef.d.ts +0 -42
- package/dist/dts/ElementRef.d.ts.map +0 -1
- package/dist/dts/ElementSource.d.ts +0 -79
- package/dist/dts/ElementSource.d.ts.map +0 -1
- package/dist/dts/Entry.d.ts +0 -26
- package/dist/dts/Entry.d.ts.map +0 -1
- package/dist/dts/EventHandler.d.ts +0 -73
- package/dist/dts/EventHandler.d.ts.map +0 -1
- package/dist/dts/Html.d.ts +0 -35
- package/dist/dts/Html.d.ts.map +0 -1
- package/dist/dts/HtmlChunk.d.ts +0 -56
- package/dist/dts/HtmlChunk.d.ts.map +0 -1
- package/dist/dts/Hydrate.d.ts +0 -19
- package/dist/dts/Hydrate.d.ts.map +0 -1
- package/dist/dts/Many.d.ts +0 -32
- package/dist/dts/Many.d.ts.map +0 -1
- package/dist/dts/Meta.d.ts +0 -33
- package/dist/dts/Meta.d.ts.map +0 -1
- package/dist/dts/Parser.d.ts +0 -13
- package/dist/dts/Parser.d.ts.map +0 -1
- package/dist/dts/Part.d.ts +0 -121
- package/dist/dts/Part.d.ts.map +0 -1
- package/dist/dts/Placeholder.d.ts +0 -48
- package/dist/dts/Placeholder.d.ts.map +0 -1
- package/dist/dts/Platform.d.ts +0 -21
- package/dist/dts/Platform.d.ts.map +0 -1
- package/dist/dts/Render.d.ts +0 -31
- package/dist/dts/Render.d.ts.map +0 -1
- package/dist/dts/RenderContext.d.ts +0 -70
- package/dist/dts/RenderContext.d.ts.map +0 -1
- package/dist/dts/RenderEvent.d.ts +0 -42
- package/dist/dts/RenderEvent.d.ts.map +0 -1
- package/dist/dts/RenderQueue.d.ts +0 -103
- package/dist/dts/RenderQueue.d.ts.map +0 -1
- package/dist/dts/RenderTemplate.d.ts +0 -25
- package/dist/dts/RenderTemplate.d.ts.map +0 -1
- package/dist/dts/Renderable.d.ts +0 -28
- package/dist/dts/Renderable.d.ts.map +0 -1
- package/dist/dts/Template.d.ts.map +0 -1
- package/dist/dts/Test.d.ts +0 -85
- package/dist/dts/Test.d.ts.map +0 -1
- package/dist/dts/Vitest.d.ts +0 -43
- package/dist/dts/Vitest.d.ts.map +0 -1
- package/dist/dts/compiler-tools.d.ts +0 -143
- package/dist/dts/compiler-tools.d.ts.map +0 -1
- package/dist/dts/index.d.ts +0 -65
- package/dist/dts/index.d.ts.map +0 -1
- package/dist/dts/internal/EventSource.d.ts +0 -13
- package/dist/dts/internal/EventSource.d.ts.map +0 -1
- package/dist/dts/internal/HydrateContext.d.ts +0 -2
- package/dist/dts/internal/HydrateContext.d.ts.map +0 -1
- package/dist/dts/internal/browser.d.ts +0 -8
- package/dist/dts/internal/browser.d.ts.map +0 -1
- package/dist/dts/internal/character-entities.d.ts +0 -2133
- package/dist/dts/internal/character-entities.d.ts.map +0 -1
- package/dist/dts/internal/chunks.d.ts +0 -23
- package/dist/dts/internal/chunks.d.ts.map +0 -1
- package/dist/dts/internal/errors.d.ts +0 -22
- package/dist/dts/internal/errors.d.ts.map +0 -1
- package/dist/dts/internal/indexRefCounter.d.ts +0 -7
- package/dist/dts/internal/indexRefCounter.d.ts.map +0 -1
- package/dist/dts/internal/module-augmentation.d.ts +0 -32
- package/dist/dts/internal/module-augmentation.d.ts.map +0 -1
- package/dist/dts/internal/parser.d.ts +0 -33
- package/dist/dts/internal/parser.d.ts.map +0 -1
- package/dist/dts/internal/parser2.d.ts +0 -12
- package/dist/dts/internal/parser2.d.ts.map +0 -1
- package/dist/dts/internal/server-parts.d.ts +0 -223
- package/dist/dts/internal/server-parts.d.ts.map +0 -1
- package/dist/dts/internal/server.d.ts +0 -5
- package/dist/dts/internal/server.d.ts.map +0 -1
- package/dist/dts/internal/utils.d.ts +0 -19
- package/dist/dts/internal/utils.d.ts.map +0 -1
- package/dist/dts/internal/v2/SyncPart.d.ts +0 -87
- package/dist/dts/internal/v2/SyncPart.d.ts.map +0 -1
- package/dist/dts/internal/v2/helpers.d.ts +0 -3
- package/dist/dts/internal/v2/helpers.d.ts.map +0 -1
- package/dist/dts/internal/v2/hydration-template.d.ts.map +0 -1
- package/dist/dts/internal/v2/parts.d.ts +0 -245
- package/dist/dts/internal/v2/parts.d.ts.map +0 -1
- package/dist/dts/internal/v2/render-entry.d.ts +0 -6
- package/dist/dts/internal/v2/render-entry.d.ts.map +0 -1
- package/dist/dts/internal/v2/render-sync-parts.d.ts +0 -22
- package/dist/dts/internal/v2/render-sync-parts.d.ts.map +0 -1
- package/dist/dts/internal/v2/render.d.ts +0 -83
- package/dist/dts/internal/v2/render.d.ts.map +0 -1
- package/dist/dts/internal/v2/sync-parts.d.ts +0 -129
- package/dist/dts/internal/v2/sync-parts.d.ts.map +0 -1
- package/dist/esm/Directive.js +0 -64
- package/dist/esm/Directive.js.map +0 -1
- package/dist/esm/ElementRef.js +0 -76
- package/dist/esm/ElementRef.js.map +0 -1
- package/dist/esm/ElementSource.js +0 -246
- package/dist/esm/ElementSource.js.map +0 -1
- package/dist/esm/Entry.js +0 -2
- package/dist/esm/Entry.js.map +0 -1
- package/dist/esm/EventHandler.js +0 -68
- package/dist/esm/EventHandler.js.map +0 -1
- package/dist/esm/Html.js +0 -230
- package/dist/esm/Html.js.map +0 -1
- package/dist/esm/HtmlChunk.js +0 -330
- package/dist/esm/HtmlChunk.js.map +0 -1
- package/dist/esm/Hydrate.js +0 -31
- package/dist/esm/Hydrate.js.map +0 -1
- package/dist/esm/Many.js +0 -54
- package/dist/esm/Many.js.map +0 -1
- package/dist/esm/Meta.js +0 -40
- package/dist/esm/Meta.js.map +0 -1
- package/dist/esm/Parser.js +0 -13
- package/dist/esm/Parser.js.map +0 -1
- package/dist/esm/Part.js +0 -5
- package/dist/esm/Part.js.map +0 -1
- package/dist/esm/Placeholder.js +0 -26
- package/dist/esm/Placeholder.js.map +0 -1
- package/dist/esm/Platform.js +0 -42
- package/dist/esm/Platform.js.map +0 -1
- package/dist/esm/Render.js +0 -36
- package/dist/esm/Render.js.map +0 -1
- package/dist/esm/RenderContext.js +0 -54
- package/dist/esm/RenderContext.js.map +0 -1
- package/dist/esm/RenderEvent.js +0 -43
- package/dist/esm/RenderEvent.js.map +0 -1
- package/dist/esm/RenderQueue.js +0 -338
- package/dist/esm/RenderQueue.js.map +0 -1
- package/dist/esm/RenderTemplate.js +0 -16
- package/dist/esm/RenderTemplate.js.map +0 -1
- package/dist/esm/Renderable.js +0 -2
- package/dist/esm/Renderable.js.map +0 -1
- package/dist/esm/Template.js.map +0 -1
- package/dist/esm/Test.js +0 -167
- package/dist/esm/Test.js.map +0 -1
- package/dist/esm/Vitest.js +0 -44
- package/dist/esm/Vitest.js.map +0 -1
- package/dist/esm/compiler-tools.js +0 -91
- package/dist/esm/compiler-tools.js.map +0 -1
- package/dist/esm/index.js +0 -65
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/internal/EventSource.js +0 -126
- package/dist/esm/internal/EventSource.js.map +0 -1
- package/dist/esm/internal/HydrateContext.js +0 -7
- package/dist/esm/internal/HydrateContext.js.map +0 -1
- package/dist/esm/internal/browser.js +0 -103
- package/dist/esm/internal/browser.js.map +0 -1
- package/dist/esm/internal/character-entities.js +0 -2134
- package/dist/esm/internal/character-entities.js.map +0 -1
- package/dist/esm/internal/chunks.js +0 -60
- package/dist/esm/internal/chunks.js.map +0 -1
- package/dist/esm/internal/errors.js +0 -46
- package/dist/esm/internal/errors.js.map +0 -1
- package/dist/esm/internal/indexRefCounter.js +0 -47
- package/dist/esm/internal/indexRefCounter.js.map +0 -1
- package/dist/esm/internal/module-augmentation.js +0 -2
- package/dist/esm/internal/module-augmentation.js.map +0 -1
- package/dist/esm/internal/parser.js +0 -596
- package/dist/esm/internal/parser.js.map +0 -1
- package/dist/esm/internal/parser2.js +0 -393
- package/dist/esm/internal/parser2.js.map +0 -1
- package/dist/esm/internal/server-parts.js +0 -109
- package/dist/esm/internal/server-parts.js.map +0 -1
- package/dist/esm/internal/server.js +0 -22
- package/dist/esm/internal/server.js.map +0 -1
- package/dist/esm/internal/utils.js +0 -119
- package/dist/esm/internal/utils.js.map +0 -1
- package/dist/esm/internal/v2/SyncPart.js +0 -5
- package/dist/esm/internal/v2/SyncPart.js.map +0 -1
- package/dist/esm/internal/v2/helpers.js +0 -12
- package/dist/esm/internal/v2/helpers.js.map +0 -1
- package/dist/esm/internal/v2/hydration-template.js.map +0 -1
- package/dist/esm/internal/v2/parts.js +0 -150
- package/dist/esm/internal/v2/parts.js.map +0 -1
- package/dist/esm/internal/v2/render-entry.js +0 -102
- package/dist/esm/internal/v2/render-entry.js.map +0 -1
- package/dist/esm/internal/v2/render-sync-parts.js +0 -265
- package/dist/esm/internal/v2/render-sync-parts.js.map +0 -1
- package/dist/esm/internal/v2/render.js +0 -521
- package/dist/esm/internal/v2/render.js.map +0 -1
- package/dist/esm/internal/v2/sync-parts.js +0 -102
- package/dist/esm/internal/v2/sync-parts.js.map +0 -1
- package/dist/esm/package.json +0 -4
- package/src/Directive.ts +0 -114
- package/src/ElementRef.ts +0 -148
- package/src/ElementSource.ts +0 -510
- package/src/Entry.ts +0 -28
- package/src/Hydrate.ts +0 -51
- package/src/Many.ts +0 -161
- package/src/Meta.ts +0 -45
- package/src/Part.ts +0 -154
- package/src/Placeholder.ts +0 -78
- package/src/Platform.ts +0 -70
- package/src/RenderContext.ts +0 -121
- package/src/Test.ts +0 -354
- package/src/Vitest.ts +0 -141
- package/src/compiler-tools.ts +0 -250
- package/src/internal/EventSource.ts +0 -188
- package/src/internal/HydrateContext.ts +0 -22
- package/src/internal/browser.ts +0 -138
- package/src/internal/character-entities.ts +0 -2136
- package/src/internal/chunks.ts +0 -89
- package/src/internal/errors.ts +0 -49
- package/src/internal/external.d.ts +0 -11
- package/src/internal/indexRefCounter.ts +0 -54
- package/src/internal/module-augmentation.ts +0 -44
- package/src/internal/parser.ts +0 -757
- package/src/internal/parser2.ts +0 -468
- package/src/internal/server-parts.ts +0 -161
- package/src/internal/server.ts +0 -37
- package/src/internal/utils.ts +0 -153
- package/src/internal/v2/SyncPart.ts +0 -112
- package/src/internal/v2/helpers.ts +0 -13
- package/src/internal/v2/hydration-template.ts +0 -308
- package/src/internal/v2/parts.ts +0 -254
- package/src/internal/v2/render-entry.ts +0 -131
- package/src/internal/v2/render-sync-parts.ts +0 -440
- package/src/internal/v2/render.ts +0 -813
- package/src/internal/v2/sync-parts.ts +0 -133
package/src/Template.ts
CHANGED
|
@@ -1,46 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*
|
|
1
|
+
import { type Inspectable, NodeInspectSymbol } from "effect/Inspectable";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Represents a parsed HTML template.
|
|
5
|
+
*
|
|
6
|
+
* A `Template` instance contains the static structure of an HTML template (nodes)
|
|
7
|
+
* and metadata about dynamic parts (interpolation points).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { parse } from "@typed/template/Parser"
|
|
12
|
+
* import * as Template from "@typed/template/Template"
|
|
13
|
+
*
|
|
14
|
+
* // Parse a template string
|
|
15
|
+
* const template = parse`<div>Hello ${"world"}</div>`
|
|
16
|
+
*
|
|
17
|
+
* // Access template structure
|
|
18
|
+
* console.log(template.nodes) // Array of parsed nodes
|
|
19
|
+
* console.log(template.parts) // Array of dynamic parts
|
|
20
|
+
* console.log(template.hash) // Unique hash for caching
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @since 1.0.0
|
|
24
|
+
* @category models
|
|
9
25
|
*/
|
|
10
26
|
export class Template implements Inspectable {
|
|
11
|
-
readonly _tag = "template"
|
|
27
|
+
readonly _tag = "template";
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The root nodes of the template.
|
|
31
|
+
*/
|
|
32
|
+
readonly nodes: ReadonlyArray<Node>;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* A unique hash representing the template content. Used for caching and hydration.
|
|
36
|
+
*/
|
|
37
|
+
readonly hash: string;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A list of dynamic parts in the template.
|
|
41
|
+
* Each part is associated with a path (array of indices) to locate the corresponding
|
|
42
|
+
* node in the DOM tree.
|
|
43
|
+
*/
|
|
44
|
+
readonly parts: ReadonlyArray<readonly [part: PartNode | SparsePartNode, path: Array<number>]>;
|
|
12
45
|
|
|
13
46
|
constructor(
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
47
|
+
nodes: ReadonlyArray<Node>,
|
|
48
|
+
hash: string,
|
|
49
|
+
parts: ReadonlyArray<readonly [part: PartNode | SparsePartNode, path: Array<number>]>,
|
|
50
|
+
) {
|
|
51
|
+
this.nodes = nodes;
|
|
52
|
+
this.hash = hash;
|
|
53
|
+
this.parts = parts;
|
|
54
|
+
}
|
|
22
55
|
|
|
23
56
|
toJSON() {
|
|
24
57
|
return {
|
|
25
58
|
_tag: "template",
|
|
26
59
|
nodes: this.nodes,
|
|
27
60
|
hash: this.hash,
|
|
28
|
-
parts: this.parts
|
|
29
|
-
}
|
|
61
|
+
parts: this.parts,
|
|
62
|
+
};
|
|
30
63
|
}
|
|
31
64
|
|
|
32
65
|
[NodeInspectSymbol]() {
|
|
33
|
-
return this.toJSON()
|
|
66
|
+
return this.toJSON();
|
|
34
67
|
}
|
|
35
68
|
}
|
|
36
69
|
|
|
37
70
|
/**
|
|
38
|
-
*
|
|
71
|
+
* Represents a node that can be a parent of other nodes in the template AST.
|
|
39
72
|
*/
|
|
40
|
-
export type ParentNode = ElementNode | SelfClosingElementNode | TextOnlyElement
|
|
73
|
+
export type ParentNode = ElementNode | SelfClosingElementNode | TextOnlyElement;
|
|
41
74
|
|
|
42
75
|
/**
|
|
43
|
-
*
|
|
76
|
+
* Represents any node in the template AST.
|
|
44
77
|
*/
|
|
45
78
|
export type Node =
|
|
46
79
|
| ElementNode
|
|
@@ -49,10 +82,10 @@ export type Node =
|
|
|
49
82
|
| TextNode
|
|
50
83
|
| NodePart
|
|
51
84
|
| Comment
|
|
52
|
-
| DocType
|
|
85
|
+
| DocType;
|
|
53
86
|
|
|
54
87
|
/**
|
|
55
|
-
*
|
|
88
|
+
* Represents a dynamic part of the template that will be updated at runtime.
|
|
56
89
|
*/
|
|
57
90
|
export type PartNode =
|
|
58
91
|
| AttrPartNode
|
|
@@ -65,70 +98,93 @@ export type PartNode =
|
|
|
65
98
|
| PropertiesPartNode
|
|
66
99
|
| RefPartNode
|
|
67
100
|
| TextPartNode
|
|
68
|
-
| CommentPartNode
|
|
101
|
+
| CommentPartNode;
|
|
69
102
|
|
|
70
103
|
/**
|
|
71
|
-
*
|
|
104
|
+
* Represents a "sparse" part, which is a text or attribute value composed of
|
|
105
|
+
* mix of static text and dynamic parts (e.g. `id="prefix-${id}"`).
|
|
72
106
|
*/
|
|
73
|
-
export type SparsePartNode =
|
|
107
|
+
export type SparsePartNode =
|
|
108
|
+
| SparseAttrNode
|
|
109
|
+
| SparseClassNameNode
|
|
110
|
+
| SparseCommentNode
|
|
111
|
+
| SparseTextNode;
|
|
74
112
|
|
|
75
113
|
/**
|
|
76
|
-
*
|
|
114
|
+
* Represents an HTML element with children.
|
|
77
115
|
*/
|
|
78
116
|
export class ElementNode {
|
|
79
|
-
readonly _tag = "element"
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
117
|
+
readonly _tag = "element";
|
|
118
|
+
readonly tagName: string;
|
|
119
|
+
readonly attributes: Array<Attribute>;
|
|
120
|
+
readonly children: Array<Node>;
|
|
121
|
+
constructor(tagName: string, attributes: Array<Attribute>, children: Array<Node>) {
|
|
122
|
+
this.tagName = tagName;
|
|
123
|
+
this.attributes = attributes;
|
|
124
|
+
this.children = children;
|
|
125
|
+
}
|
|
85
126
|
}
|
|
86
127
|
|
|
87
128
|
/**
|
|
88
|
-
*
|
|
129
|
+
* Represents a dynamic insertion point within the node structure (e.g. `<div>${content}</div>`).
|
|
89
130
|
*/
|
|
90
131
|
export class NodePart {
|
|
91
|
-
readonly _tag = "node"
|
|
92
|
-
|
|
132
|
+
readonly _tag = "node";
|
|
133
|
+
/**
|
|
134
|
+
* The index of the value in the interpolation array.
|
|
135
|
+
*/
|
|
136
|
+
readonly index: number;
|
|
137
|
+
constructor(index: number) {
|
|
138
|
+
this.index = index;
|
|
139
|
+
}
|
|
93
140
|
}
|
|
94
141
|
|
|
95
142
|
/**
|
|
96
|
-
*
|
|
143
|
+
* Represents a self-closing HTML element (e.g. `<br />`, `<img />`).
|
|
97
144
|
*/
|
|
98
145
|
export class SelfClosingElementNode {
|
|
99
|
-
readonly _tag = "self-closing-element"
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
146
|
+
readonly _tag = "self-closing-element";
|
|
147
|
+
readonly tagName: string;
|
|
148
|
+
readonly attributes: Array<Attribute>;
|
|
149
|
+
constructor(tagName: string, attributes: Array<Attribute>) {
|
|
150
|
+
this.tagName = tagName;
|
|
151
|
+
this.attributes = attributes;
|
|
152
|
+
}
|
|
104
153
|
}
|
|
105
154
|
|
|
106
155
|
/**
|
|
107
|
-
*
|
|
156
|
+
* Represents an element that contains only text (e.g. `<script>`, `<style>`).
|
|
108
157
|
*/
|
|
109
158
|
export class TextOnlyElement {
|
|
110
|
-
readonly _tag = "text-only-element"
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
) {
|
|
159
|
+
readonly _tag = "text-only-element";
|
|
160
|
+
|
|
161
|
+
readonly tagName: string;
|
|
162
|
+
readonly attributes: Array<Attribute>;
|
|
163
|
+
readonly textContent: Text | null;
|
|
164
|
+
constructor(tagName: string, attributes: Array<Attribute>, textContent: Text | null) {
|
|
165
|
+
this.tagName = tagName;
|
|
166
|
+
this.attributes = attributes;
|
|
167
|
+
this.textContent = textContent;
|
|
168
|
+
}
|
|
116
169
|
}
|
|
117
170
|
|
|
118
171
|
/**
|
|
119
|
-
*
|
|
172
|
+
* Represents a DOCTYPE declaration.
|
|
120
173
|
*/
|
|
121
174
|
export class DocType {
|
|
122
|
-
readonly _tag = "doctype"
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
175
|
+
readonly _tag = "doctype";
|
|
176
|
+
readonly name: string;
|
|
177
|
+
readonly publicId: string | undefined;
|
|
178
|
+
readonly systemId: string | undefined;
|
|
179
|
+
constructor(name: string, publicType?: string, systemId?: string) {
|
|
180
|
+
this.name = name;
|
|
181
|
+
this.publicId = publicType;
|
|
182
|
+
this.systemId = systemId;
|
|
183
|
+
}
|
|
128
184
|
}
|
|
129
185
|
|
|
130
186
|
/**
|
|
131
|
-
*
|
|
187
|
+
* Represents an attribute on an element.
|
|
132
188
|
*/
|
|
133
189
|
export type Attribute =
|
|
134
190
|
| AttributeNode
|
|
@@ -136,192 +192,237 @@ export type Attribute =
|
|
|
136
192
|
| SparseAttrNode
|
|
137
193
|
| BooleanNode
|
|
138
194
|
| BooleanPartNode
|
|
139
|
-
|
|
|
195
|
+
| ClassNamePartNode
|
|
140
196
|
| SparseClassNameNode
|
|
141
197
|
| DataPartNode
|
|
142
198
|
| EventPartNode
|
|
143
199
|
| PropertyPartNode
|
|
144
200
|
| PropertiesPartNode
|
|
145
|
-
| RefPartNode
|
|
201
|
+
| RefPartNode;
|
|
146
202
|
|
|
147
203
|
/**
|
|
148
|
-
*
|
|
204
|
+
* Represents a static attribute (e.g. `class="foo"`).
|
|
149
205
|
*/
|
|
150
206
|
export class AttributeNode {
|
|
151
|
-
readonly _tag = "attribute" as const
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
207
|
+
readonly _tag = "attribute" as const;
|
|
208
|
+
readonly name: string;
|
|
209
|
+
readonly value: string;
|
|
210
|
+
constructor(name: string, value: string) {
|
|
211
|
+
this.name = name;
|
|
212
|
+
this.value = value;
|
|
213
|
+
}
|
|
156
214
|
}
|
|
157
215
|
|
|
158
216
|
/**
|
|
159
|
-
*
|
|
217
|
+
* Represents a dynamic attribute (e.g. `src="${url}"`).
|
|
160
218
|
*/
|
|
161
219
|
export class AttrPartNode {
|
|
162
|
-
readonly _tag = "attr" as const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
220
|
+
readonly _tag = "attr" as const;
|
|
221
|
+
readonly name: string;
|
|
222
|
+
readonly index: number;
|
|
223
|
+
constructor(name: string, index: number) {
|
|
224
|
+
this.name = name;
|
|
225
|
+
this.index = index;
|
|
226
|
+
}
|
|
167
227
|
}
|
|
168
228
|
|
|
169
229
|
/**
|
|
170
|
-
*
|
|
230
|
+
* Represents a sparse attribute (e.g. `class="foo ${bar}"`).
|
|
171
231
|
*/
|
|
172
232
|
export class SparseAttrNode {
|
|
173
|
-
readonly _tag = "sparse-attr" as const
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
233
|
+
readonly _tag = "sparse-attr" as const;
|
|
234
|
+
readonly name: string;
|
|
235
|
+
readonly nodes: Array<AttrPartNode | TextNode>;
|
|
236
|
+
constructor(name: string, nodes: Array<AttrPartNode | TextNode>) {
|
|
237
|
+
this.name = name;
|
|
238
|
+
this.nodes = nodes;
|
|
239
|
+
}
|
|
178
240
|
}
|
|
179
241
|
|
|
180
242
|
/**
|
|
181
|
-
*
|
|
243
|
+
* Represents a boolean attribute (e.g. `disabled`).
|
|
182
244
|
*/
|
|
183
245
|
export class BooleanNode {
|
|
184
|
-
readonly _tag = "boolean" as const
|
|
185
|
-
|
|
246
|
+
readonly _tag = "boolean" as const;
|
|
247
|
+
readonly name: string;
|
|
248
|
+
constructor(name: string) {
|
|
249
|
+
this.name = name;
|
|
250
|
+
}
|
|
186
251
|
}
|
|
187
252
|
|
|
188
253
|
/**
|
|
189
|
-
*
|
|
254
|
+
* Represents a dynamic boolean attribute (e.g. `?disabled="${isDisabled}"`).
|
|
190
255
|
*/
|
|
191
256
|
export class BooleanPartNode {
|
|
192
|
-
readonly _tag = "boolean-part" as const
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
257
|
+
readonly _tag = "boolean-part" as const;
|
|
258
|
+
readonly name: string;
|
|
259
|
+
readonly index: number;
|
|
260
|
+
constructor(name: string, index: number) {
|
|
261
|
+
this.name = name;
|
|
262
|
+
this.index = index;
|
|
263
|
+
}
|
|
197
264
|
}
|
|
198
|
-
|
|
199
265
|
/**
|
|
200
|
-
*
|
|
201
|
-
*/
|
|
202
|
-
export type ClassNameNode = TextNode | ClassNamePartNode
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* @since 1.0.0
|
|
266
|
+
* Represents a dynamic class name part (e.g. `class="${classes}"`).
|
|
206
267
|
*/
|
|
207
268
|
export class ClassNamePartNode {
|
|
208
|
-
readonly _tag = "className-part" as const
|
|
209
|
-
|
|
269
|
+
readonly _tag = "className-part" as const;
|
|
270
|
+
readonly index: number;
|
|
271
|
+
constructor(index: number) {
|
|
272
|
+
this.index = index;
|
|
273
|
+
}
|
|
210
274
|
}
|
|
211
275
|
|
|
212
276
|
/**
|
|
213
|
-
*
|
|
277
|
+
* Represents a sparse class name (e.g. `class="foo ${bar}"`).
|
|
214
278
|
*/
|
|
215
279
|
export class SparseClassNameNode {
|
|
216
|
-
readonly _tag = "sparse-class-name" as const
|
|
280
|
+
readonly _tag = "sparse-class-name" as const;
|
|
217
281
|
|
|
218
|
-
|
|
282
|
+
readonly nodes: Array<ClassNamePartNode | TextNode>;
|
|
283
|
+
constructor(nodes: Array<ClassNamePartNode | TextNode>) {
|
|
284
|
+
this.nodes = nodes;
|
|
285
|
+
}
|
|
219
286
|
}
|
|
220
287
|
|
|
221
288
|
/**
|
|
222
|
-
*
|
|
289
|
+
* Represents a data attribute part (e.g. `data-foo="${value}"`).
|
|
223
290
|
*/
|
|
224
291
|
export class DataPartNode {
|
|
225
|
-
readonly _tag = "data" as const
|
|
292
|
+
readonly _tag = "data" as const;
|
|
226
293
|
|
|
227
|
-
|
|
294
|
+
readonly index: number;
|
|
295
|
+
constructor(index: number) {
|
|
296
|
+
this.index = index;
|
|
297
|
+
}
|
|
228
298
|
}
|
|
229
299
|
|
|
230
300
|
/**
|
|
231
|
-
*
|
|
301
|
+
* Represents an event listener part (e.g. `@click="${handler}"`).
|
|
232
302
|
*/
|
|
233
303
|
export class EventPartNode {
|
|
234
|
-
readonly _tag = "event" as const
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
304
|
+
readonly _tag = "event" as const;
|
|
305
|
+
readonly name: string;
|
|
306
|
+
readonly index: number;
|
|
307
|
+
constructor(name: string, index: number) {
|
|
308
|
+
this.name = name;
|
|
309
|
+
this.index = index;
|
|
310
|
+
}
|
|
240
311
|
}
|
|
241
312
|
|
|
242
313
|
/**
|
|
243
|
-
*
|
|
314
|
+
* Represents a property assignment (e.g. `.value="${value}"`).
|
|
244
315
|
*/
|
|
245
316
|
export class PropertyPartNode {
|
|
246
|
-
readonly _tag = "property" as const
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
317
|
+
readonly _tag = "property" as const;
|
|
318
|
+
readonly name: string;
|
|
319
|
+
readonly index: number;
|
|
320
|
+
constructor(name: string, index: number) {
|
|
321
|
+
this.name = name;
|
|
322
|
+
this.index = index;
|
|
323
|
+
}
|
|
252
324
|
}
|
|
253
325
|
|
|
254
326
|
/**
|
|
255
|
-
*
|
|
327
|
+
* Represents a spread of properties (e.g. `${...props}`).
|
|
256
328
|
*/
|
|
257
329
|
export class PropertiesPartNode {
|
|
258
|
-
readonly _tag = "properties" as const
|
|
259
|
-
|
|
260
|
-
constructor(
|
|
261
|
-
|
|
262
|
-
|
|
330
|
+
readonly _tag = "properties" as const;
|
|
331
|
+
readonly index: number;
|
|
332
|
+
constructor(index: number) {
|
|
333
|
+
this.index = index;
|
|
334
|
+
}
|
|
263
335
|
}
|
|
264
336
|
|
|
265
337
|
/**
|
|
266
|
-
*
|
|
338
|
+
* Represents a reference capture (e.g. `ref="${ref}"`).
|
|
267
339
|
*/
|
|
268
340
|
export class RefPartNode {
|
|
269
|
-
readonly _tag = "ref" as const
|
|
341
|
+
readonly _tag = "ref" as const;
|
|
270
342
|
|
|
271
|
-
|
|
343
|
+
readonly index: number;
|
|
344
|
+
constructor(index: number) {
|
|
345
|
+
this.index = index;
|
|
346
|
+
}
|
|
272
347
|
}
|
|
273
348
|
|
|
274
349
|
/**
|
|
275
|
-
*
|
|
350
|
+
* Represents text content.
|
|
276
351
|
*/
|
|
277
|
-
export type Text = TextNode | TextPartNode
|
|
352
|
+
export type Text = TextNode | TextPartNode | SparseTextNode;
|
|
278
353
|
|
|
279
354
|
/**
|
|
280
|
-
*
|
|
355
|
+
* Represents a static text node.
|
|
281
356
|
*/
|
|
282
357
|
export class TextNode {
|
|
283
|
-
readonly _tag = "text" as const
|
|
358
|
+
readonly _tag = "text" as const;
|
|
284
359
|
|
|
285
|
-
|
|
360
|
+
readonly value: string;
|
|
361
|
+
constructor(value: string) {
|
|
362
|
+
this.value = value;
|
|
363
|
+
}
|
|
286
364
|
}
|
|
287
365
|
|
|
288
366
|
/**
|
|
289
|
-
*
|
|
367
|
+
* Represents a dynamic text part (e.g. `${text}`).
|
|
290
368
|
*/
|
|
291
369
|
export class TextPartNode {
|
|
292
|
-
readonly _tag = "text-part" as const
|
|
370
|
+
readonly _tag = "text-part" as const;
|
|
293
371
|
|
|
294
|
-
|
|
372
|
+
readonly index: number;
|
|
373
|
+
constructor(index: number) {
|
|
374
|
+
this.index = index;
|
|
375
|
+
}
|
|
295
376
|
}
|
|
296
377
|
|
|
297
378
|
/**
|
|
298
|
-
*
|
|
379
|
+
* Represents sparse text content (e.g. `Hello ${name}!`).
|
|
299
380
|
*/
|
|
300
|
-
export
|
|
381
|
+
export class SparseTextNode {
|
|
382
|
+
readonly _tag = "sparse-text" as const;
|
|
383
|
+
readonly nodes: Array<TextNode | TextPartNode>;
|
|
384
|
+
constructor(nodes: Array<TextNode | TextPartNode>) {
|
|
385
|
+
this.nodes = nodes;
|
|
386
|
+
}
|
|
387
|
+
}
|
|
301
388
|
|
|
302
389
|
/**
|
|
303
|
-
*
|
|
390
|
+
* Represents a comment node.
|
|
391
|
+
*/
|
|
392
|
+
export type Comment = CommentNode | CommentPartNode | SparseCommentNode;
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Represents a static comment.
|
|
304
396
|
*/
|
|
305
397
|
export class CommentNode {
|
|
306
|
-
readonly _tag = "comment" as const
|
|
398
|
+
readonly _tag = "comment" as const;
|
|
307
399
|
|
|
308
|
-
|
|
400
|
+
readonly value: string;
|
|
401
|
+
constructor(value: string) {
|
|
402
|
+
this.value = value;
|
|
403
|
+
}
|
|
309
404
|
}
|
|
310
405
|
|
|
311
406
|
/**
|
|
312
|
-
*
|
|
407
|
+
* Represents a dynamic comment part.
|
|
313
408
|
*/
|
|
314
409
|
export class CommentPartNode {
|
|
315
|
-
readonly _tag = "comment-part" as const
|
|
410
|
+
readonly _tag = "comment-part" as const;
|
|
316
411
|
|
|
317
|
-
|
|
412
|
+
readonly index: number;
|
|
413
|
+
constructor(index: number) {
|
|
414
|
+
this.index = index;
|
|
415
|
+
}
|
|
318
416
|
}
|
|
319
417
|
|
|
320
418
|
/**
|
|
321
|
-
*
|
|
419
|
+
* Represents a sparse comment.
|
|
322
420
|
*/
|
|
323
421
|
export class SparseCommentNode {
|
|
324
|
-
readonly _tag = "sparse-comment" as const
|
|
422
|
+
readonly _tag = "sparse-comment" as const;
|
|
325
423
|
|
|
326
|
-
|
|
424
|
+
readonly nodes: Array<TextNode | CommentPartNode>;
|
|
425
|
+
constructor(nodes: Array<TextNode | CommentPartNode>) {
|
|
426
|
+
this.nodes = nodes;
|
|
427
|
+
}
|
|
327
428
|
}
|