@typed/template 0.12.0 → 0.14.0

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.
Files changed (123) hide show
  1. package/compiler-tools/package.json +6 -0
  2. package/dist/cjs/Directive.js +1 -1
  3. package/dist/cjs/Directive.js.map +1 -1
  4. package/dist/cjs/ElementRef.js +4 -4
  5. package/dist/cjs/ElementRef.js.map +1 -1
  6. package/dist/cjs/ElementSource.js +11 -7
  7. package/dist/cjs/ElementSource.js.map +1 -1
  8. package/dist/cjs/EventHandler.js +1 -1
  9. package/dist/cjs/EventHandler.js.map +1 -1
  10. package/dist/cjs/Html.js +10 -10
  11. package/dist/cjs/Html.js.map +1 -1
  12. package/dist/cjs/Hydrate.js +4 -18
  13. package/dist/cjs/Hydrate.js.map +1 -1
  14. package/dist/cjs/Many.js +4 -4
  15. package/dist/cjs/Many.js.map +1 -1
  16. package/dist/cjs/Placeholder.js +2 -2
  17. package/dist/cjs/Placeholder.js.map +1 -1
  18. package/dist/cjs/Platform.js +10 -11
  19. package/dist/cjs/Platform.js.map +1 -1
  20. package/dist/cjs/Render.js +5 -5
  21. package/dist/cjs/Render.js.map +1 -1
  22. package/dist/cjs/RenderContext.js +3 -3
  23. package/dist/cjs/RenderContext.js.map +1 -1
  24. package/dist/cjs/RenderQueue.js +11 -9
  25. package/dist/cjs/RenderQueue.js.map +1 -1
  26. package/dist/cjs/RenderTemplate.js +2 -2
  27. package/dist/cjs/RenderTemplate.js.map +1 -1
  28. package/dist/cjs/Template.js.map +1 -1
  29. package/dist/cjs/Test.js +12 -12
  30. package/dist/cjs/Test.js.map +1 -1
  31. package/dist/cjs/Vitest.js +5 -5
  32. package/dist/cjs/Vitest.js.map +1 -1
  33. package/dist/cjs/compiler-tools.js +100 -0
  34. package/dist/cjs/compiler-tools.js.map +1 -0
  35. package/dist/cjs/index.js +6 -6
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/cjs/internal/EventSource.js +4 -4
  38. package/dist/cjs/internal/EventSource.js.map +1 -1
  39. package/dist/cjs/internal/HydrateContext.js.map +1 -1
  40. package/dist/cjs/internal/browser.js +1 -1
  41. package/dist/cjs/internal/browser.js.map +1 -1
  42. package/dist/cjs/internal/indexRefCounter.js +4 -4
  43. package/dist/cjs/internal/indexRefCounter.js.map +1 -1
  44. package/dist/cjs/internal/parser.js +4 -4
  45. package/dist/cjs/internal/parser.js.map +1 -1
  46. package/dist/cjs/internal/parser2.js +1 -1
  47. package/dist/cjs/internal/parser2.js.map +1 -1
  48. package/dist/cjs/internal/server-parts.js +2 -2
  49. package/dist/cjs/internal/server-parts.js.map +1 -1
  50. package/dist/cjs/internal/server.js +1 -1
  51. package/dist/cjs/internal/server.js.map +1 -1
  52. package/dist/cjs/internal/utils.js +2 -2
  53. package/dist/cjs/internal/utils.js.map +1 -1
  54. package/dist/cjs/internal/v2/parts.js +1 -1
  55. package/dist/cjs/internal/v2/parts.js.map +1 -1
  56. package/dist/cjs/internal/v2/render-sync-parts.js +3 -3
  57. package/dist/cjs/internal/v2/render-sync-parts.js.map +1 -1
  58. package/dist/cjs/internal/v2/render.js +250 -75
  59. package/dist/cjs/internal/v2/render.js.map +1 -1
  60. package/dist/cjs/internal/v2/sync-parts.js +1 -1
  61. package/dist/cjs/internal/v2/sync-parts.js.map +1 -1
  62. package/dist/dts/ElementRef.d.ts.map +1 -1
  63. package/dist/dts/ElementSource.d.ts +3 -1
  64. package/dist/dts/ElementSource.d.ts.map +1 -1
  65. package/dist/dts/EventHandler.d.ts.map +1 -1
  66. package/dist/dts/Html.d.ts +1 -1
  67. package/dist/dts/Html.d.ts.map +1 -1
  68. package/dist/dts/Hydrate.d.ts +2 -9
  69. package/dist/dts/Hydrate.d.ts.map +1 -1
  70. package/dist/dts/Platform.d.ts +5 -5
  71. package/dist/dts/Platform.d.ts.map +1 -1
  72. package/dist/dts/Render.d.ts.map +1 -1
  73. package/dist/dts/RenderQueue.d.ts.map +1 -1
  74. package/dist/dts/Template.d.ts +3 -3
  75. package/dist/dts/Template.d.ts.map +1 -1
  76. package/dist/dts/Vitest.d.ts.map +1 -1
  77. package/dist/dts/compiler-tools.d.ts +143 -0
  78. package/dist/dts/compiler-tools.d.ts.map +1 -0
  79. package/dist/dts/internal/server-parts.d.ts.map +1 -1
  80. package/dist/dts/internal/utils.d.ts.map +1 -1
  81. package/dist/dts/internal/v2/parts.d.ts.map +1 -1
  82. package/dist/dts/internal/v2/render.d.ts +31 -10
  83. package/dist/dts/internal/v2/render.d.ts.map +1 -1
  84. package/dist/dts/internal/v2/sync-parts.d.ts.map +1 -1
  85. package/dist/esm/ElementRef.js +1 -1
  86. package/dist/esm/ElementRef.js.map +1 -1
  87. package/dist/esm/ElementSource.js +14 -8
  88. package/dist/esm/ElementSource.js.map +1 -1
  89. package/dist/esm/Html.js +2 -2
  90. package/dist/esm/Html.js.map +1 -1
  91. package/dist/esm/Hydrate.js +0 -12
  92. package/dist/esm/Hydrate.js.map +1 -1
  93. package/dist/esm/Platform.js +3 -4
  94. package/dist/esm/Platform.js.map +1 -1
  95. package/dist/esm/RenderQueue.js +3 -1
  96. package/dist/esm/RenderQueue.js.map +1 -1
  97. package/dist/esm/Template.js.map +1 -1
  98. package/dist/esm/Test.js +2 -2
  99. package/dist/esm/Test.js.map +1 -1
  100. package/dist/esm/compiler-tools.js +91 -0
  101. package/dist/esm/compiler-tools.js.map +1 -0
  102. package/dist/esm/internal/HydrateContext.js.map +1 -1
  103. package/dist/esm/internal/v2/render.js +231 -63
  104. package/dist/esm/internal/v2/render.js.map +1 -1
  105. package/package.json +20 -11
  106. package/src/ElementRef.ts +35 -13
  107. package/src/ElementSource.ts +131 -53
  108. package/src/Html.ts +2 -2
  109. package/src/Hydrate.ts +2 -37
  110. package/src/Platform.ts +9 -10
  111. package/src/RenderQueue.ts +3 -1
  112. package/src/Template.ts +4 -2
  113. package/src/Test.ts +2 -2
  114. package/src/compiler-tools.ts +250 -0
  115. package/src/internal/HydrateContext.ts +0 -2
  116. package/src/internal/v2/render.ts +279 -54
  117. package/dist/cjs/internal/v2/hydrate.js +0 -202
  118. package/dist/cjs/internal/v2/hydrate.js.map +0 -1
  119. package/dist/dts/internal/v2/hydrate.d.ts +0 -7
  120. package/dist/dts/internal/v2/hydrate.d.ts.map +0 -1
  121. package/dist/esm/internal/v2/hydrate.js +0 -195
  122. package/dist/esm/internal/v2/hydrate.js.map +0 -1
  123. package/src/internal/v2/hydrate.ts +0 -289
@@ -0,0 +1,250 @@
1
+ /**
2
+ * A collection of tools utilized by @typed/compiler to setup templates imperatively.
3
+ * This is not intended for direct usage by end-users and the API surface is not guaranteed
4
+ * to have the same stabilitiy as the rest of the library.
5
+ *
6
+ * @since 1.0.0
7
+ */
8
+
9
+ import type { Option } from "effect"
10
+ import type * as Cause from "effect/Cause"
11
+ import type * as Chunk from "effect/Chunk"
12
+ import type * as Effect from "effect/Effect"
13
+ import type * as Scope from "effect/Scope"
14
+ import type * as internalHydrateContext from "./internal/HydrateContext.js"
15
+ import * as utils from "./internal/utils.js"
16
+ import * as hydrationTemplate from "./internal/v2/hydration-template.js"
17
+ import * as render from "./internal/v2/render.js"
18
+ import type { Placeholder } from "./Placeholder.js"
19
+ import type { Renderable } from "./Renderable.js"
20
+ import type { RenderContext } from "./RenderContext.js"
21
+ import type { RenderQueue } from "./RenderQueue.js"
22
+ import type * as Template from "./Template.js"
23
+
24
+ /**
25
+ * @since 1.0.0
26
+ */
27
+ export interface TemplateContext extends render.TemplateContext {}
28
+
29
+ /**
30
+ * @since 1.0.0
31
+ */
32
+ export interface HydrateContext extends internalHydrateContext.HydrateContext {}
33
+
34
+ /**
35
+ * @since 1.0.0
36
+ */
37
+ export interface HydrationTemplate extends hydrationTemplate.HydrationTemplate {}
38
+
39
+ /**
40
+ * @since 1.0.0
41
+ */
42
+ export type HydrationNode = hydrationTemplate.HydrationNode
43
+
44
+ /**
45
+ * @since 1.0.0
46
+ */
47
+ export interface HydrationHole extends hydrationTemplate.HydrationHole {}
48
+
49
+ /**
50
+ * @since 1.0.0
51
+ */
52
+ export interface HydrationMany extends hydrationTemplate.HydrationMany {}
53
+
54
+ /**
55
+ * @since 1.0.0
56
+ */
57
+ export interface HydrationElement extends hydrationTemplate.HydrationElement {}
58
+
59
+ /**
60
+ * @since 1.0.0
61
+ */
62
+ export interface HydrationLiteral extends hydrationTemplate.HydrationLiteral {}
63
+
64
+ /**
65
+ * @since 1.0.0
66
+ */
67
+ export const makeTemplateContext: <Values extends ReadonlyArray<Renderable<any, any>>>(
68
+ document: Document,
69
+ renderContext: RenderContext,
70
+ values: ReadonlyArray<Renderable<any, any>>,
71
+ onCause: (cause: Cause.Cause<Placeholder.Error<Values[number]>>) => Effect.Effect<unknown, never, never>
72
+ ) => Effect.Effect<TemplateContext, never, Scope.Scope | RenderQueue | Placeholder.Context<Values[number]>> =
73
+ render.makeTemplateContext
74
+
75
+ /**
76
+ * @since 1.0.0
77
+ */
78
+ export const setupAttrPart: (
79
+ { index, name }: Pick<Template.AttrPartNode, "index" | "name">,
80
+ element: HTMLElement | SVGElement,
81
+ ctx: TemplateContext,
82
+ renderable: Renderable<any, any>
83
+ ) => Effect.Effect<void, any, any> | null = render.setupAttrPart
84
+
85
+ /**
86
+ * @since 1.0.0
87
+ */
88
+ export const setupBooleanPart: (
89
+ { index, name }: Pick<Template.BooleanPartNode, "index" | "name">,
90
+ element: HTMLElement | SVGElement,
91
+ ctx: TemplateContext,
92
+ renderable: Renderable<any, any>
93
+ ) => Effect.Effect<void, any, any> | null = render.setupBooleanPart
94
+
95
+ /**
96
+ * @since 1.0.0
97
+ */
98
+ export const setupClassNamePart: (
99
+ { index }: Pick<Template.ClassNamePartNode, "index">,
100
+ element: HTMLElement | SVGElement,
101
+ ctx: TemplateContext,
102
+ renderable: Renderable<any, any>
103
+ ) => Effect.Effect<void, any, any> | null = render.setupClassNamePart
104
+
105
+ /**
106
+ * @since 1.0.0
107
+ */
108
+ export const setupCommentPart: (
109
+ { index }: Pick<Template.CommentPartNode, "index">,
110
+ comment: Comment,
111
+ ctx: render.TemplateContext,
112
+ renderable: Renderable<any, any>
113
+ ) => Effect.Effect<void, any, any> | null = render.setupCommentPart
114
+
115
+ /**
116
+ * @since 1.0.0
117
+ */
118
+ export const setupDataPart: (
119
+ { index }: Pick<Template.DataPartNode, "index">,
120
+ element: HTMLElement | SVGElement,
121
+ ctx: TemplateContext,
122
+ renderable: Renderable<any, any>
123
+ ) => Effect.Effect<void, any, any> | null = render.setupDataPart
124
+
125
+ /**
126
+ * @since 1.0.0
127
+ */
128
+ export const setupEventPart: (
129
+ { index, name }: Pick<Template.EventPartNode, "index" | "name">,
130
+ element: HTMLElement | SVGElement,
131
+ ctx: TemplateContext,
132
+ renderable: Renderable<any, any>
133
+ ) => Effect.Effect<unknown, unknown, unknown> | null = render.setupEventPart
134
+
135
+ /**
136
+ * @since 1.0.0
137
+ */
138
+ export const setupNodePart: (
139
+ { index }: Template.NodePart,
140
+ comment: Comment,
141
+ ctx: TemplateContext,
142
+ text: Text | null,
143
+ nodes: Array<Node>
144
+ ) => Effect.Effect<void, any, any> | null = render.setupNodePart
145
+
146
+ /**
147
+ * @since 1.0.0
148
+ */
149
+ export const setupHydratedNodePart: (
150
+ part: Template.NodePart,
151
+ hole: hydrationTemplate.HydrationHole,
152
+ ctx: render.HydrateTemplateContext
153
+ ) => Effect.Effect<void, any, any> | null = render.setupHydratedNodePart
154
+
155
+ /**
156
+ * @since 1.0.0
157
+ */
158
+ export const setupPropertyPart: (
159
+ { index, name }: Pick<Template.PropertyPartNode, "index" | "name">,
160
+ element: HTMLElement | SVGElement,
161
+ ctx: TemplateContext,
162
+ renderable: Renderable<any, any>
163
+ ) => Effect.Effect<void, any, any> | null = render.setupPropertyPart
164
+
165
+ /**
166
+ * @since 1.0.0
167
+ */
168
+ export const setupRefPart: (
169
+ { index }: Pick<Template.RefPartNode, "index">,
170
+ element: HTMLElement | SVGElement,
171
+ renderable: Renderable<any, any>
172
+ ) => Effect.Effect<void, any, any> | null = render.setupRefPart
173
+
174
+ /**
175
+ * @since 1.0.0
176
+ */
177
+ export const setupPropertiesPart: (
178
+ element: HTMLElement | SVGElement,
179
+ ctx: render.TemplateContext,
180
+ renderable: Renderable<any, any>
181
+ ) => Effect.Effect<Array<void>, any, any> | null = render.setupPropertiesPart
182
+
183
+ /**
184
+ * @since 1.0.0
185
+ */
186
+ export const setupSparseAttrPart: (
187
+ { name, nodes }: Pick<Template.SparseAttrNode, "name" | "nodes">,
188
+ element: HTMLElement | SVGElement,
189
+ ctx: render.TemplateContext
190
+ ) => Effect.Effect<void, any, any> = render.setupSparseAttrPart
191
+
192
+ /**
193
+ * @since 1.0.0
194
+ */
195
+ export const setupSparseClassNamePart: (
196
+ { nodes }: Pick<Template.SparseClassNameNode, "nodes">,
197
+ element: HTMLElement | SVGElement,
198
+ ctx: render.TemplateContext
199
+ ) => Effect.Effect<void, any, any> = render.setupSparseClassNamePart
200
+
201
+ /**
202
+ * @since 1.0.0
203
+ */
204
+ export const setupSparseCommentPart: (
205
+ { nodes }: Template.SparseCommentNode,
206
+ comment: Comment,
207
+ ctx: render.TemplateContext
208
+ ) => Effect.Effect<void, any, any> = render.setupSparseCommentPart
209
+
210
+ /**
211
+ * @since 1.0.0
212
+ */
213
+ export const setupTextPart: (
214
+ { index }: Template.TextPartNode,
215
+ comment: Comment,
216
+ ctx: render.TemplateContext
217
+ ) => Effect.Effect<void, any, any> | null = render.setupTextPart
218
+
219
+ /**
220
+ * @since 1.0.0
221
+ */
222
+ export const findHydrationHole: (
223
+ nodes: Array<hydrationTemplate.HydrationNode>,
224
+ index: number
225
+ ) => hydrationTemplate.HydrationHole | null = hydrationTemplate.findHydrationHole
226
+
227
+ /**
228
+ * @since 1.0.0
229
+ */
230
+ export const getChildNodes: (node: hydrationTemplate.HydrationNode) => Array<hydrationTemplate.HydrationNode> =
231
+ hydrationTemplate.getChildNodes
232
+
233
+ /**
234
+ * @since 1.0.0
235
+ */
236
+ export const findHydratePath: (node: hydrationTemplate.HydrationNode, path: Chunk.Chunk<number>) => Node =
237
+ utils.findHydratePath
238
+
239
+ /**
240
+ * @since 1.0.0
241
+ */
242
+ export const attemptHydration: (
243
+ ctx: TemplateContext,
244
+ hash: string
245
+ ) => Option.Option<
246
+ {
247
+ readonly where: HydrationTemplate
248
+ readonly hydrateCtx: HydrateContext
249
+ }
250
+ > = render.attemptHydration
@@ -1,5 +1,4 @@
1
1
  import { Tagged } from "@typed/context"
2
- import type { Template } from "../Template.js"
3
2
  import type { HydrationNode } from "./v2/hydration-template.js"
4
3
 
5
4
  /**
@@ -8,7 +7,6 @@ import type { HydrationNode } from "./v2/hydration-template.js"
8
7
  */
9
8
  export type HydrateContext = {
10
9
  readonly where: HydrationNode
11
- readonly parentTemplate: Template | null
12
10
 
13
11
  // Used to match sibling components using many() to the correct elements
14
12
  readonly manyKey?: string