@typed/template 0.9.6 → 0.10.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 (300) hide show
  1. package/RenderQueue/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 +1 -1
  5. package/dist/cjs/ElementRef.js.map +1 -1
  6. package/dist/cjs/ElementSource.js +1 -1
  7. package/dist/cjs/ElementSource.js.map +1 -1
  8. package/dist/cjs/EventHandler.js +11 -4
  9. package/dist/cjs/EventHandler.js.map +1 -1
  10. package/dist/cjs/Html.js +84 -44
  11. package/dist/cjs/Html.js.map +1 -1
  12. package/dist/cjs/HtmlChunk.js +67 -21
  13. package/dist/cjs/HtmlChunk.js.map +1 -1
  14. package/dist/cjs/Hydrate.js +6 -6
  15. package/dist/cjs/Hydrate.js.map +1 -1
  16. package/dist/cjs/Many.js +4 -4
  17. package/dist/cjs/Many.js.map +1 -1
  18. package/dist/cjs/Meta.js +10 -3
  19. package/dist/cjs/Meta.js.map +1 -1
  20. package/dist/cjs/Parser.js +1 -1
  21. package/dist/cjs/Placeholder.js +5 -9
  22. package/dist/cjs/Placeholder.js.map +1 -1
  23. package/dist/cjs/Platform.js +7 -5
  24. package/dist/cjs/Platform.js.map +1 -1
  25. package/dist/cjs/Render.js +8 -7
  26. package/dist/cjs/Render.js.map +1 -1
  27. package/dist/cjs/RenderContext.js +8 -92
  28. package/dist/cjs/RenderContext.js.map +1 -1
  29. package/dist/cjs/RenderEvent.js +9 -1
  30. package/dist/cjs/RenderEvent.js.map +1 -1
  31. package/dist/cjs/RenderQueue.js +341 -0
  32. package/dist/cjs/RenderQueue.js.map +1 -0
  33. package/dist/cjs/RenderTemplate.js +1 -1
  34. package/dist/cjs/RenderTemplate.js.map +1 -1
  35. package/dist/cjs/Template.js +12 -0
  36. package/dist/cjs/Template.js.map +1 -1
  37. package/dist/cjs/Test.js +64 -33
  38. package/dist/cjs/Test.js.map +1 -1
  39. package/dist/cjs/Vitest.js +12 -20
  40. package/dist/cjs/Vitest.js.map +1 -1
  41. package/dist/cjs/index.js +6 -3
  42. package/dist/cjs/index.js.map +1 -1
  43. package/dist/cjs/internal/EventSource.js +16 -9
  44. package/dist/cjs/internal/EventSource.js.map +1 -1
  45. package/dist/cjs/internal/HydrateContext.js.map +1 -1
  46. package/dist/cjs/internal/browser.js +11 -10
  47. package/dist/cjs/internal/browser.js.map +1 -1
  48. package/dist/cjs/internal/character-entities.js +2141 -0
  49. package/dist/cjs/internal/character-entities.js.map +1 -0
  50. package/dist/cjs/internal/errors.js +19 -2
  51. package/dist/cjs/internal/errors.js.map +1 -1
  52. package/dist/cjs/internal/indexRefCounter.js +36 -63
  53. package/dist/cjs/internal/indexRefCounter.js.map +1 -1
  54. package/dist/cjs/internal/parser.js +18 -17
  55. package/dist/cjs/internal/parser.js.map +1 -1
  56. package/dist/cjs/internal/parser2.js +382 -0
  57. package/dist/cjs/internal/parser2.js.map +1 -0
  58. package/dist/cjs/internal/server-parts.js +124 -0
  59. package/dist/cjs/internal/server-parts.js.map +1 -0
  60. package/dist/cjs/internal/server.js +15 -185
  61. package/dist/cjs/internal/server.js.map +1 -1
  62. package/dist/cjs/internal/utils.js +73 -9
  63. package/dist/cjs/internal/utils.js.map +1 -1
  64. package/dist/cjs/internal/v2/SyncPart.js +6 -0
  65. package/dist/cjs/internal/v2/SyncPart.js.map +1 -0
  66. package/dist/cjs/internal/v2/helpers.js +15 -0
  67. package/dist/cjs/internal/v2/helpers.js.map +1 -0
  68. package/dist/cjs/internal/v2/hydrate.js +202 -0
  69. package/dist/cjs/internal/v2/hydrate.js.map +1 -0
  70. package/dist/cjs/internal/v2/hydration-template.js +269 -0
  71. package/dist/cjs/internal/v2/hydration-template.js.map +1 -0
  72. package/dist/cjs/internal/v2/parts.js +169 -0
  73. package/dist/cjs/internal/v2/parts.js.map +1 -0
  74. package/dist/cjs/internal/v2/render-entry.js +110 -0
  75. package/dist/cjs/internal/v2/render-entry.js.map +1 -0
  76. package/dist/cjs/internal/v2/render-sync-parts.js +318 -0
  77. package/dist/cjs/internal/v2/render-sync-parts.js.map +1 -0
  78. package/dist/cjs/internal/v2/render.js +417 -0
  79. package/dist/cjs/internal/v2/render.js.map +1 -0
  80. package/dist/cjs/internal/v2/sync-parts.js +115 -0
  81. package/dist/cjs/internal/v2/sync-parts.js.map +1 -0
  82. package/dist/dts/ElementRef.d.ts +1 -1
  83. package/dist/dts/ElementRef.d.ts.map +1 -1
  84. package/dist/dts/ElementSource.d.ts +1 -1
  85. package/dist/dts/ElementSource.d.ts.map +1 -1
  86. package/dist/dts/EventHandler.d.ts +12 -8
  87. package/dist/dts/EventHandler.d.ts.map +1 -1
  88. package/dist/dts/Html.d.ts +6 -5
  89. package/dist/dts/Html.d.ts.map +1 -1
  90. package/dist/dts/HtmlChunk.d.ts.map +1 -1
  91. package/dist/dts/Hydrate.d.ts +1 -3
  92. package/dist/dts/Hydrate.d.ts.map +1 -1
  93. package/dist/dts/Many.d.ts +9 -11
  94. package/dist/dts/Many.d.ts.map +1 -1
  95. package/dist/dts/Meta.d.ts +5 -1
  96. package/dist/dts/Meta.d.ts.map +1 -1
  97. package/dist/dts/Parser.d.ts +1 -1
  98. package/dist/dts/Parser.d.ts.map +1 -1
  99. package/dist/dts/Part.d.ts +20 -56
  100. package/dist/dts/Part.d.ts.map +1 -1
  101. package/dist/dts/Placeholder.d.ts +6 -10
  102. package/dist/dts/Placeholder.d.ts.map +1 -1
  103. package/dist/dts/Platform.d.ts +2 -4
  104. package/dist/dts/Platform.d.ts.map +1 -1
  105. package/dist/dts/Render.d.ts +4 -8
  106. package/dist/dts/Render.d.ts.map +1 -1
  107. package/dist/dts/RenderContext.d.ts +3 -22
  108. package/dist/dts/RenderContext.d.ts.map +1 -1
  109. package/dist/dts/RenderEvent.d.ts +6 -1
  110. package/dist/dts/RenderEvent.d.ts.map +1 -1
  111. package/dist/dts/RenderQueue.d.ts +103 -0
  112. package/dist/dts/RenderQueue.d.ts.map +1 -0
  113. package/dist/dts/RenderTemplate.d.ts +3 -2
  114. package/dist/dts/RenderTemplate.d.ts.map +1 -1
  115. package/dist/dts/Renderable.d.ts +1 -1
  116. package/dist/dts/Template.d.ts +14 -1
  117. package/dist/dts/Template.d.ts.map +1 -1
  118. package/dist/dts/Test.d.ts +14 -1
  119. package/dist/dts/Test.d.ts.map +1 -1
  120. package/dist/dts/Vitest.d.ts +11 -8
  121. package/dist/dts/Vitest.d.ts.map +1 -1
  122. package/dist/dts/index.d.ts +4 -0
  123. package/dist/dts/index.d.ts.map +1 -1
  124. package/dist/dts/internal/EventSource.d.ts +2 -1
  125. package/dist/dts/internal/EventSource.d.ts.map +1 -1
  126. package/dist/dts/internal/browser.d.ts +3 -3
  127. package/dist/dts/internal/browser.d.ts.map +1 -1
  128. package/dist/dts/internal/character-entities.d.ts +2133 -0
  129. package/dist/dts/internal/character-entities.d.ts.map +1 -0
  130. package/dist/dts/internal/errors.d.ts +9 -1
  131. package/dist/dts/internal/errors.d.ts.map +1 -1
  132. package/dist/dts/internal/indexRefCounter.d.ts +0 -4
  133. package/dist/dts/internal/indexRefCounter.d.ts.map +1 -1
  134. package/dist/dts/internal/parser.d.ts +13 -0
  135. package/dist/dts/internal/parser.d.ts.map +1 -1
  136. package/dist/dts/internal/parser2.d.ts +12 -0
  137. package/dist/dts/internal/parser2.d.ts.map +1 -0
  138. package/dist/dts/internal/server-parts.d.ts +223 -0
  139. package/dist/dts/internal/server-parts.d.ts.map +1 -0
  140. package/dist/dts/internal/server.d.ts +2 -28
  141. package/dist/dts/internal/server.d.ts.map +1 -1
  142. package/dist/dts/internal/utils.d.ts +4 -1
  143. package/dist/dts/internal/utils.d.ts.map +1 -1
  144. package/dist/dts/internal/v2/SyncPart.d.ts +87 -0
  145. package/dist/dts/internal/v2/SyncPart.d.ts.map +1 -0
  146. package/dist/dts/internal/v2/helpers.d.ts +3 -0
  147. package/dist/dts/internal/v2/helpers.d.ts.map +1 -0
  148. package/dist/dts/internal/v2/hydrate.d.ts +7 -0
  149. package/dist/dts/internal/v2/hydrate.d.ts.map +1 -0
  150. package/dist/dts/internal/v2/hydration-template.d.ts +54 -0
  151. package/dist/dts/internal/v2/hydration-template.d.ts.map +1 -0
  152. package/dist/dts/internal/v2/parts.d.ts +245 -0
  153. package/dist/dts/internal/v2/parts.d.ts.map +1 -0
  154. package/dist/dts/internal/v2/render-entry.d.ts +6 -0
  155. package/dist/dts/internal/v2/render-entry.d.ts.map +1 -0
  156. package/dist/dts/internal/v2/render-sync-parts.d.ts +22 -0
  157. package/dist/dts/internal/v2/render-sync-parts.d.ts.map +1 -0
  158. package/dist/dts/internal/v2/render.d.ts +62 -0
  159. package/dist/dts/internal/v2/render.d.ts.map +1 -0
  160. package/dist/dts/internal/v2/sync-parts.d.ts +129 -0
  161. package/dist/dts/internal/v2/sync-parts.d.ts.map +1 -0
  162. package/dist/esm/ElementRef.js.map +1 -1
  163. package/dist/esm/EventHandler.js +14 -4
  164. package/dist/esm/EventHandler.js.map +1 -1
  165. package/dist/esm/Html.js +91 -50
  166. package/dist/esm/Html.js.map +1 -1
  167. package/dist/esm/HtmlChunk.js +75 -24
  168. package/dist/esm/HtmlChunk.js.map +1 -1
  169. package/dist/esm/Hydrate.js +5 -5
  170. package/dist/esm/Hydrate.js.map +1 -1
  171. package/dist/esm/Many.js +3 -3
  172. package/dist/esm/Many.js.map +1 -1
  173. package/dist/esm/Meta.js +7 -1
  174. package/dist/esm/Meta.js.map +1 -1
  175. package/dist/esm/Parser.js +1 -1
  176. package/dist/esm/Parser.js.map +1 -1
  177. package/dist/esm/Placeholder.js +4 -8
  178. package/dist/esm/Placeholder.js.map +1 -1
  179. package/dist/esm/Platform.js +3 -1
  180. package/dist/esm/Platform.js.map +1 -1
  181. package/dist/esm/Render.js +6 -5
  182. package/dist/esm/Render.js.map +1 -1
  183. package/dist/esm/RenderContext.js +5 -85
  184. package/dist/esm/RenderContext.js.map +1 -1
  185. package/dist/esm/RenderEvent.js +8 -1
  186. package/dist/esm/RenderEvent.js.map +1 -1
  187. package/dist/esm/RenderQueue.js +336 -0
  188. package/dist/esm/RenderQueue.js.map +1 -0
  189. package/dist/esm/RenderTemplate.js.map +1 -1
  190. package/dist/esm/Template.js +12 -0
  191. package/dist/esm/Template.js.map +1 -1
  192. package/dist/esm/Test.js +71 -30
  193. package/dist/esm/Test.js.map +1 -1
  194. package/dist/esm/Vitest.js +11 -8
  195. package/dist/esm/Vitest.js.map +1 -1
  196. package/dist/esm/index.js +4 -0
  197. package/dist/esm/index.js.map +1 -1
  198. package/dist/esm/internal/EventSource.js +12 -7
  199. package/dist/esm/internal/EventSource.js.map +1 -1
  200. package/dist/esm/internal/HydrateContext.js.map +1 -1
  201. package/dist/esm/internal/browser.js +10 -9
  202. package/dist/esm/internal/browser.js.map +1 -1
  203. package/dist/esm/internal/character-entities.js +2134 -0
  204. package/dist/esm/internal/character-entities.js.map +1 -0
  205. package/dist/esm/internal/errors.js +22 -2
  206. package/dist/esm/internal/errors.js.map +1 -1
  207. package/dist/esm/internal/indexRefCounter.js +36 -61
  208. package/dist/esm/internal/indexRefCounter.js.map +1 -1
  209. package/dist/esm/internal/parser.js +18 -18
  210. package/dist/esm/internal/parser.js.map +1 -1
  211. package/dist/esm/internal/parser2.js +393 -0
  212. package/dist/esm/internal/parser2.js.map +1 -0
  213. package/dist/esm/internal/server-parts.js +109 -0
  214. package/dist/esm/internal/server-parts.js.map +1 -0
  215. package/dist/esm/internal/server.js +12 -161
  216. package/dist/esm/internal/server.js.map +1 -1
  217. package/dist/esm/internal/utils.js +71 -7
  218. package/dist/esm/internal/utils.js.map +1 -1
  219. package/dist/esm/internal/v2/SyncPart.js +5 -0
  220. package/dist/esm/internal/v2/SyncPart.js.map +1 -0
  221. package/dist/esm/internal/v2/helpers.js +12 -0
  222. package/dist/esm/internal/v2/helpers.js.map +1 -0
  223. package/dist/esm/internal/v2/hydrate.js +195 -0
  224. package/dist/esm/internal/v2/hydrate.js.map +1 -0
  225. package/dist/esm/internal/v2/hydration-template.js +265 -0
  226. package/dist/esm/internal/v2/hydration-template.js.map +1 -0
  227. package/dist/esm/internal/v2/parts.js +150 -0
  228. package/dist/esm/internal/v2/parts.js.map +1 -0
  229. package/dist/esm/internal/v2/render-entry.js +102 -0
  230. package/dist/esm/internal/v2/render-entry.js.map +1 -0
  231. package/dist/esm/internal/v2/render-sync-parts.js +265 -0
  232. package/dist/esm/internal/v2/render-sync-parts.js.map +1 -0
  233. package/dist/esm/internal/v2/render.js +353 -0
  234. package/dist/esm/internal/v2/render.js.map +1 -0
  235. package/dist/esm/internal/v2/sync-parts.js +102 -0
  236. package/dist/esm/internal/v2/sync-parts.js.map +1 -0
  237. package/package.json +20 -13
  238. package/src/ElementRef.ts +1 -1
  239. package/src/ElementSource.ts +1 -1
  240. package/src/EventHandler.ts +29 -11
  241. package/src/Html.ts +199 -90
  242. package/src/HtmlChunk.ts +77 -30
  243. package/src/Hydrate.ts +20 -14
  244. package/src/Many.ts +17 -14
  245. package/src/Meta.ts +8 -1
  246. package/src/Parser.ts +1 -1
  247. package/src/Part.ts +22 -66
  248. package/src/Placeholder.ts +17 -15
  249. package/src/Platform.ts +5 -5
  250. package/src/Render.ts +23 -26
  251. package/src/RenderContext.ts +14 -142
  252. package/src/RenderEvent.ts +10 -1
  253. package/src/RenderQueue.ts +445 -0
  254. package/src/RenderTemplate.ts +7 -2
  255. package/src/Renderable.ts +1 -1
  256. package/src/Template.ts +15 -1
  257. package/src/Test.ts +122 -38
  258. package/src/Vitest.ts +20 -10
  259. package/src/index.ts +4 -0
  260. package/src/internal/EventSource.ts +14 -8
  261. package/src/internal/HydrateContext.ts +3 -4
  262. package/src/internal/browser.ts +26 -21
  263. package/src/internal/character-entities.ts +2136 -0
  264. package/src/internal/errors.ts +30 -3
  265. package/src/internal/indexRefCounter.ts +38 -70
  266. package/src/internal/parser.ts +19 -19
  267. package/src/internal/parser2.ts +468 -0
  268. package/src/internal/server-parts.ts +161 -0
  269. package/src/internal/server.ts +16 -272
  270. package/src/internal/utils.ts +83 -7
  271. package/src/internal/v2/SyncPart.ts +112 -0
  272. package/src/internal/v2/helpers.ts +13 -0
  273. package/src/internal/v2/hydrate.ts +289 -0
  274. package/src/internal/v2/hydration-template.ts +308 -0
  275. package/src/internal/v2/parts.ts +254 -0
  276. package/src/internal/v2/render-entry.ts +131 -0
  277. package/src/internal/v2/render-sync-parts.ts +440 -0
  278. package/src/internal/v2/render.ts +588 -0
  279. package/src/internal/v2/sync-parts.ts +133 -0
  280. package/dist/cjs/internal/hydrate.js +0 -274
  281. package/dist/cjs/internal/hydrate.js.map +0 -1
  282. package/dist/cjs/internal/parts.js +0 -451
  283. package/dist/cjs/internal/parts.js.map +0 -1
  284. package/dist/cjs/internal/render.js +0 -704
  285. package/dist/cjs/internal/render.js.map +0 -1
  286. package/dist/dts/internal/hydrate.d.ts +0 -33
  287. package/dist/dts/internal/hydrate.d.ts.map +0 -1
  288. package/dist/dts/internal/parts.d.ts +0 -314
  289. package/dist/dts/internal/parts.d.ts.map +0 -1
  290. package/dist/dts/internal/render.d.ts +0 -16
  291. package/dist/dts/internal/render.d.ts.map +0 -1
  292. package/dist/esm/internal/hydrate.js +0 -239
  293. package/dist/esm/internal/hydrate.js.map +0 -1
  294. package/dist/esm/internal/parts.js +0 -373
  295. package/dist/esm/internal/parts.js.map +0 -1
  296. package/dist/esm/internal/render.js +0 -689
  297. package/dist/esm/internal/render.js.map +0 -1
  298. package/src/internal/hydrate.ts +0 -366
  299. package/src/internal/parts.ts +0 -609
  300. package/src/internal/render.ts +0 -971
@@ -1,171 +1,22 @@
1
- import * as Effect from "effect/Effect";
2
- import { AttributePartImpl, BooleanPartImpl, ClassNamePartImpl, CommentPartImpl, DataPartImpl, NodePartImpl, PropertiesPartImpl, PropertyPartImpl, SparseAttributePartImpl, SparseClassNamePartImpl, SparseCommentPartImpl, StaticTextImpl, TextPartImpl } from "./parts.js";
3
- export class TextRenderChunk {
4
- index;
5
- value;
6
- type = "text";
7
- constructor(index, value) {
8
- this.index = index;
9
- this.value = value;
10
- }
11
- }
12
- export class PartRenderChunk {
13
- index;
14
- chunk;
15
- part;
16
- renderable;
17
- type = "part";
18
- constructor(index, chunk, part, renderable) {
19
- this.index = index;
20
- this.chunk = chunk;
21
- this.part = part;
22
- this.renderable = renderable;
23
- }
24
- }
25
- export class SparsePartRenderChunk {
26
- index;
27
- chunk;
28
- part;
29
- renderables;
30
- type = "sparse-part";
31
- constructor(index, chunk, part, renderables) {
32
- this.index = index;
33
- this.chunk = chunk;
34
- this.part = part;
35
- this.renderables = renderables;
36
- }
37
- }
38
- const renderChunkMap = {
39
- text: (chunk, index) => new TextRenderChunk(index, chunk.value),
40
- part: (chunk, index, values, onChunk) => new PartRenderChunk(index, chunk, partNodeToPart(chunk.node, (v) => onChunk(index, chunk.render(v))), values[chunk.node.index]),
41
- "sparse-part": (chunk, index, values, onChunk) => new SparsePartRenderChunk(index, chunk, sparsePartNodeToPart(chunk.node, (v) => onChunk(index, chunk.render(v))),
42
- // @ts-ignore Type Instantiation is excessively deep and possibly infinite
43
- chunk.node.nodes.map((n) => (n._tag === "text" ? n.value : values[n.index])))
44
- };
45
- export function htmlChunksToRenderChunks(chunks, values, onChunk) {
46
- const output = Array(chunks.length);
47
- for (let i = 0; i < chunks.length; i++) {
48
- // @ts-ignore Type Instantiation is excessively deep and possibly infinite
49
- output[i] = renderChunkMap[chunks[i]._tag](chunks[i], i, values, onChunk);
50
- }
51
- return output;
52
- }
1
+ import * as impls from "./server-parts.js";
53
2
  const partNodeMap = {
54
- attr: (node, onChunk) => new AttributePartImpl(node.name, node.index, ({ value }) => onChunk(value), null),
55
- "boolean-part": (node, onChunk) => new BooleanPartImpl(node.name, node.index, ({ value }) => onChunk(value), null),
56
- "className-part": (node, onChunk) => new ClassNamePartImpl(node.index, ({ value }) => onChunk(value), null),
57
- "comment-part": (node, onChunk) => new CommentPartImpl(node.index, ({ value }) => onChunk(value), null),
58
- "data": (node, onChunk) => new DataPartImpl(node.index, ({ value }) => onChunk(value), null),
59
- "event": () => {
3
+ attr: (node, onChunk) => new impls.AttributePartImpl(node.name, node.index, ({ value }) => onChunk(value), null),
4
+ "boolean-part": (node, onChunk) => new impls.BooleanPartImpl(node.name, node.index, ({ value }) => onChunk(value), null),
5
+ "className-part": (node, onChunk) => new impls.ClassNamePartImpl(node.index, ({ value }) => onChunk(value), []),
6
+ "comment-part": (node, onChunk) => new impls.CommentPartImpl(node.index, ({ value }) => onChunk(value), null),
7
+ data: (node, onChunk) => new impls.DataPartImpl(node.index, ({ value }) => onChunk(value), null),
8
+ event: () => {
60
9
  throw new Error("Events are not utilized on the server");
61
10
  },
62
- "node": (node, onChunk) => new NodePartImpl(node.index, ({ value }) => onChunk(value), null),
63
- "property": (node, onChunk) => new PropertyPartImpl(node.name, node.index, ({ value }) => onChunk(value), null),
64
- "ref": () => {
11
+ node: (node, onChunk) => new impls.NodePartImpl(node.index, ({ value }) => onChunk(value), null),
12
+ property: (node, onChunk) => new impls.PropertyPartImpl(node.name, node.index, ({ value }) => onChunk(value), null),
13
+ ref: () => {
65
14
  throw new Error("Refs are not utilized on the server");
66
15
  },
67
- "text-part": (node, onChunk) => new TextPartImpl(node.index, ({ value }) => onChunk(value), null),
68
- "properties": (node, onChunk) => new PropertiesPartImpl(node.index, ({ value }) => onChunk(value), null)
16
+ "text-part": (node, onChunk) => new impls.TextPartImpl(node.index, ({ value }) => onChunk(value), null),
17
+ properties: (node, onChunk) => new impls.PropertiesPartImpl(node.index, ({ value }) => onChunk(value), [])
69
18
  };
70
19
  export function partNodeToPart(node, onChunk) {
71
20
  return partNodeMap[node._tag](node, onChunk);
72
21
  }
73
- function sparsePartNodeToPart(node, onChunk) {
74
- if (node._tag === "sparse-attr") {
75
- return renderSparseAttr(node, onChunk);
76
- }
77
- else if (node._tag === "sparse-class-name") {
78
- return renderSparseClassName(node, onChunk);
79
- }
80
- else {
81
- return renderSparseComment(node, onChunk);
82
- }
83
- }
84
- function renderSparseAttr(attrNode, setAttribute) {
85
- const { nodes } = attrNode;
86
- const values = new Map();
87
- function getValue() {
88
- return (part.value = Array.from({ length: nodes.length }, (_, i) => values.get(i) || ""));
89
- }
90
- function setValue(value, index) {
91
- return Effect.suspend(() => {
92
- values.set(index, value);
93
- if (values.size === nodes.length)
94
- return setAttribute(getValue().join(""));
95
- return Effect.unit;
96
- });
97
- }
98
- const parts = [];
99
- let partIndex = 0;
100
- for (let i = 0; i < nodes.length; i++) {
101
- const node = nodes[i];
102
- if (node._tag === "text") {
103
- values.set(i, node.value);
104
- parts.push(new StaticTextImpl(node.value));
105
- }
106
- else {
107
- parts.push(new AttributePartImpl(node.name, partIndex++, ({ value }) => setValue(value || "", i), null));
108
- }
109
- }
110
- const part = new SparseAttributePartImpl(attrNode.name, parts, ({ value }) => setAttribute(value.join("")));
111
- return part;
112
- }
113
- function renderSparseClassName(classNameNode, setClassName) {
114
- const { nodes } = classNameNode;
115
- const values = new Map();
116
- function getValue() {
117
- return (part.value = Array.from({ length: nodes.length }, (_, i) => values.get(i) || ""));
118
- }
119
- function setValue(value, index) {
120
- return Effect.suspend(() => {
121
- values.set(index, value);
122
- if (values.size === nodes.length)
123
- return setClassName(getValue().join(""));
124
- return Effect.unit;
125
- });
126
- }
127
- const parts = [];
128
- let partIndex = 0;
129
- for (let i = 0; i < nodes.length; i++) {
130
- const node = nodes[i];
131
- if (node._tag === "text") {
132
- values.set(i, node.value);
133
- parts.push(new StaticTextImpl(node.value));
134
- }
135
- else {
136
- parts.push(new ClassNamePartImpl(partIndex++, ({ value }) => setValue(value?.join(" ") || null, i), null));
137
- }
138
- }
139
- const part = new SparseClassNamePartImpl(parts, ({ value }) => setClassName(value.join("")), []);
140
- return part;
141
- }
142
- function renderSparseComment(commentNode, setComment) {
143
- const { nodes } = commentNode;
144
- const values = new Map();
145
- function getValue() {
146
- return (part.value = Array.from({ length: nodes.length }, (_, i) => values.get(i) || ""));
147
- }
148
- function setValue(value, index) {
149
- return Effect.suspend(() => {
150
- values.set(index, value);
151
- if (values.size === nodes.length)
152
- return setComment(getValue().join(""));
153
- return Effect.unit;
154
- });
155
- }
156
- const parts = [];
157
- let partIndex = 0;
158
- for (let i = 0; i < nodes.length; i++) {
159
- const node = nodes[i];
160
- if (node._tag === "text") {
161
- values.set(i, node.value);
162
- parts.push(new StaticTextImpl(node.value));
163
- }
164
- else {
165
- parts.push(new CommentPartImpl(partIndex++, ({ value }) => setValue(value, i), null));
166
- }
167
- }
168
- const part = new SparseCommentPartImpl(parts, ({ value }) => setComment(value.join("")), []);
169
- return part;
170
- }
171
22
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/internal/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/internal/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAA;AAS1C,MAAM,WAAW,GAAgB;IAC/B,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IAChH,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAChC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IACvF,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC/G,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IAC7G,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IAChG,KAAK,EAAE,GAAG,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IACD,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IAChG,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IACnH,GAAG,EAAE,GAAG,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;IACD,WAAW,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;IACvG,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;CAC3G,CAAA;AAED,MAAM,UAAU,cAAc,CAC5B,IAAc,EACd,OAAgD;IAEhD,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAW,EAAE,OAAO,CAAC,CAAA;AACrD,CAAC"}
@@ -2,8 +2,11 @@ import { getOption } from "@typed/context";
2
2
  import * as Chunk from "effect/Chunk";
3
3
  import * as Effect from "effect/Effect";
4
4
  import { isSome } from "effect/Option";
5
+ import { uncapitalize } from "effect/String";
5
6
  import { TestClock } from "effect/TestClock";
6
7
  import { TEXT_START, TYPED_START } from "../Meta.js";
8
+ import { CouldNotFindCommentError } from "./errors.js";
9
+ import { getNodesExcludingStartComment } from "./v2/hydration-template.js";
7
10
  export function isComment(node) {
8
11
  return node.nodeType === node.COMMENT_NODE;
9
12
  }
@@ -24,15 +27,25 @@ export function findHoleComment(parent, index) {
24
27
  return node;
25
28
  }
26
29
  }
27
- throw new Error(`Unable to find hole comment for index ${index}`);
30
+ throw new CouldNotFindCommentError(index);
28
31
  }
29
32
  const previousComments = new Set([TEXT_START, TYPED_START]);
30
- export function getPreviousNodes(comment, index) {
33
+ export function getPreviousNodes(comment, index, hash) {
31
34
  const nodes = [];
32
35
  let node = comment.previousSibling;
33
36
  const previousHole = `hole${index - 1}`;
37
+ const typedHash = hash ? `typed-${hash}` : "";
34
38
  previousComments.add(previousHole);
35
- while (node && !previousComments.has(String(node.nodeValue))) {
39
+ while (node) {
40
+ if (isComment(node)) {
41
+ if (previousComments.has(node.data)) {
42
+ break;
43
+ }
44
+ if (node.data === typedHash) {
45
+ nodes.unshift(node);
46
+ break;
47
+ }
48
+ }
36
49
  nodes.unshift(node);
37
50
  node = node.previousSibling;
38
51
  }
@@ -40,16 +53,67 @@ export function getPreviousNodes(comment, index) {
40
53
  return nodes;
41
54
  }
42
55
  export const findPath = (node, path) => Chunk.reduce(path, node, ({ childNodes }, index) => childNodes[index]);
56
+ export const findHydratePath = (node, path) => {
57
+ if (Chunk.isEmpty(path)) {
58
+ return getNodesExcludingStartComment(node)[0];
59
+ }
60
+ const [first, ...rest] = path;
61
+ // Hydration adds an extra starting comment node which should not be included in the path
62
+ let current = getNodesExcludingStartComment(node)[first];
63
+ for (const index of rest) {
64
+ current = Array.from(current.childNodes).filter(isNotStartComment)[index];
65
+ }
66
+ return current;
67
+ };
68
+ function isNotStartComment(node) {
69
+ return !isComment(node) || !node.data.startsWith("hole");
70
+ }
43
71
  export function adjustTime(input) {
44
- return Effect.gen(function* (_) {
45
- const ctx = yield* _(Effect.context());
72
+ return Effect.gen(function* () {
73
+ const ctx = yield* Effect.context();
46
74
  const testClock = getOption(ctx, TestClock);
47
75
  if (isSome(testClock)) {
48
- yield* _(testClock.value.adjust(input ?? 1));
76
+ yield* testClock.value.adjust(input ?? 1);
49
77
  }
50
78
  else if (input) {
51
- yield* _(Effect.sleep(input));
79
+ yield* Effect.sleep(input);
52
80
  }
53
81
  });
54
82
  }
83
+ export function keyToPartType(key) {
84
+ switch (key[0]) {
85
+ case "?":
86
+ return ["boolean", key.slice(1)];
87
+ case ".": {
88
+ const propertyName = key.slice(1);
89
+ if (propertyName === "data") {
90
+ return ["data"];
91
+ }
92
+ else if (propertyName === "props" || propertyName === "properties") {
93
+ return ["properties"];
94
+ }
95
+ else {
96
+ return ["property", propertyName];
97
+ }
98
+ }
99
+ case "@":
100
+ return ["event", uncapitalize(key.slice(1))];
101
+ case "o": {
102
+ if (key[1] === "n") {
103
+ const name = uncapitalize(key.slice(2));
104
+ return ["event", name];
105
+ }
106
+ }
107
+ }
108
+ const lower = key.toLowerCase();
109
+ if (lower === "ref") {
110
+ return ["ref"];
111
+ }
112
+ else if (lower === "class" || lower === "classname") {
113
+ return ["class"];
114
+ }
115
+ else {
116
+ return ["attr", key];
117
+ }
118
+ }
55
119
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/internal/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/internal/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=SyncPart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncPart.js","sourceRoot":"","sources":["../../../../src/internal/v2/SyncPart.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,12 @@
1
+ import { hasProperty } from "effect/Predicate";
2
+ export function isNullOrUndefined(value) {
3
+ return value === null || value === undefined;
4
+ }
5
+ export function renderToString(value) {
6
+ return isNullOrUndefined(value)
7
+ ? ""
8
+ : hasProperty(value, "toString") && typeof value.toString === "function"
9
+ ? value.toString()
10
+ : String(value);
11
+ }
12
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/internal/v2/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,UAAU,iBAAiB,CAAI,KAA2B;IAC9D,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,iBAAiB,CAAC,KAAK,CAAC;QAC7B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU;YACxE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE;YAClB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACnB,CAAC"}
@@ -0,0 +1,195 @@
1
+ import * as Fx from "@typed/fx";
2
+ import { isText } from "@typed/wire";
3
+ import { unsafeGet } from "effect/Context";
4
+ import * as Effect from "effect/Effect";
5
+ import { flow } from "effect/Function";
6
+ import * as Scope from "effect/Scope";
7
+ import { DomRenderEvent } from "../../RenderEvent.js";
8
+ import { CouldNotFindCommentError, isHydrationError } from "../errors.js";
9
+ import { HydrateContext } from "../HydrateContext.js";
10
+ import { findHydratePath, isCommentWithValue } from "../utils.js";
11
+ import { findHydrationHole, findHydrationMany, findHydrationTemplate, getChildNodes, getNodes, getPreviousNodes } from "./hydration-template.js";
12
+ import { getBrowserEntry } from "./render-entry.js";
13
+ import { makeTemplateContext, renderTemplate, setupAttrPart, setupBooleanPart, setupClassNamePart, setupCommentPart, setupDataPart, setupEventPart, setupNodePart, setupPropertiesPart, setupPropertyPart, setupRefPart, setupSparseAttrPart, setupSparseClassNamePart, setupSparseCommentPart, setupTextPart } from "./render.js";
14
+ function findWhere(hydrateCtx, entry) {
15
+ // If there is not a manyKey, we can just find the template by its hash
16
+ if (hydrateCtx.manyKey === undefined) {
17
+ return findHydrationTemplate(getChildNodes(hydrateCtx.where), entry.template.hash);
18
+ }
19
+ // If there is a manyKey, we need to find the many node first
20
+ const many = findHydrationMany(getChildNodes(hydrateCtx.where), hydrateCtx.manyKey);
21
+ if (many === null)
22
+ return null;
23
+ // Then we can find the template by its hash
24
+ return findHydrationTemplate(getChildNodes(many), entry.template.hash);
25
+ }
26
+ export const hydrateTemplate = (document, renderContext) => {
27
+ const render_ = renderTemplate(document, renderContext);
28
+ return (templateStrings, values) => {
29
+ const entry = getBrowserEntry(document, renderContext, templateStrings);
30
+ return Fx.make((sink) => Effect.catchAllDefect(Effect.gen(function* () {
31
+ const ctx = yield* makeTemplateContext(entry.content, document, renderContext, values, sink.onFailure);
32
+ const hydrateCtx = unsafeGet(ctx.context, HydrateContext);
33
+ // If we're not longer hydrating, just render normally
34
+ if (hydrateCtx.hydrate === false) {
35
+ return yield* render_(templateStrings, values).run(sink);
36
+ }
37
+ const where = findWhere(hydrateCtx, entry);
38
+ if (where === null) {
39
+ hydrateCtx.hydrate = false;
40
+ return yield* render_(templateStrings, values).run(sink);
41
+ }
42
+ const wire = getWire(where);
43
+ if (entry.template.parts.length === 0)
44
+ return yield* sink.onSuccess(DomRenderEvent(wire));
45
+ const makeHydrateContext = (where) => ({
46
+ where,
47
+ parentTemplate: entry.template,
48
+ hydrate: true
49
+ });
50
+ const effects = setupParts(entry.template.parts, {
51
+ ...ctx,
52
+ where,
53
+ manyKey: hydrateCtx.manyKey,
54
+ makeHydrateContext
55
+ });
56
+ if (effects.length > 0) {
57
+ yield* Effect.forEach(effects, flow(Effect.catchAllCause(ctx.onCause), Effect.forkIn(ctx.scope)));
58
+ }
59
+ // Setup our event listeners for our wire.
60
+ // We use the parentScope to allow event listeners to exist
61
+ // beyond the lifetime of the current Fiber, but no further than its parent template.
62
+ yield* ctx.eventSource.setup(wire, ctx.parentScope);
63
+ // We're done setting up so we can resume in "regular" rendering mode when
64
+ // and new templates come in.
65
+ hydrateCtx.hydrate = false;
66
+ // Emit our DomRenderEvent
67
+ yield* sink.onSuccess(DomRenderEvent(wire)).pipe(
68
+ // Ensure our templates last forever in the DOM environment
69
+ // so event listeners are kept attached to the current Scope.
70
+ Effect.zipRight(Effect.never),
71
+ // Close our scope whenever the current Fiber is interrupted
72
+ Effect.onExit((exit) => Scope.close(ctx.scope, exit)));
73
+ }), (defect) => Effect.gen(function* (_) {
74
+ if (isHydrationError(defect)) {
75
+ yield* _(Effect.logError(defect));
76
+ const hydrateCtx = yield* _(HydrateContext);
77
+ hydrateCtx.hydrate = false;
78
+ return yield* _(render_(templateStrings, values).run(sink));
79
+ }
80
+ else {
81
+ return yield* _(Effect.die(defect));
82
+ }
83
+ })));
84
+ };
85
+ };
86
+ function setupParts(parts, ctx) {
87
+ const effects = [];
88
+ for (const [part, path] of parts) {
89
+ const effect = setupPart(part, path, ctx);
90
+ if (effect) {
91
+ effects.push(effect);
92
+ }
93
+ }
94
+ return effects;
95
+ }
96
+ function setupPart(part, path, ctx) {
97
+ switch (part._tag) {
98
+ case "attr":
99
+ return setupAttrPart(part, findHydratePath(ctx.where, path), ctx, ctx.values[part.index]);
100
+ case "boolean-part":
101
+ return setupBooleanPart(part, findHydratePath(ctx.where, path), ctx, ctx.values[part.index]);
102
+ case "className-part":
103
+ return setupClassNamePart(part, findHydratePath(ctx.where, path), ctx, ctx.values[part.index]);
104
+ case "comment-part":
105
+ return setupCommentPart(part, findHydratePath(ctx.where, path), ctx);
106
+ case "data":
107
+ return setupDataPart(part, findHydratePath(ctx.where, path), ctx, ctx.values[part.index]);
108
+ case "event":
109
+ return setupEventPart(part, findHydratePath(ctx.where, path), ctx, ctx.values[part.index]);
110
+ case "node": {
111
+ const hole = findHydrationHole(getChildNodes(ctx.where), part.index);
112
+ if (hole === null) {
113
+ throw new CouldNotFindCommentError(part.index);
114
+ }
115
+ return setupHydratedNodePart(part, hole, ctx);
116
+ }
117
+ case "properties":
118
+ return setupPropertiesPart(part, findHydratePath(ctx.where, path), ctx);
119
+ case "property":
120
+ return setupPropertyPart(part, findHydratePath(ctx.where, path), ctx, ctx.values[part.index]);
121
+ case "ref":
122
+ return setupRefPart(part, findHydratePath(ctx.where, path), ctx);
123
+ case "sparse-attr":
124
+ return setupSparseAttrPart(part, findHydratePath(ctx.where, path), ctx);
125
+ case "sparse-class-name":
126
+ return setupSparseClassNamePart(part, findHydratePath(ctx.where, path), ctx);
127
+ case "sparse-comment":
128
+ return setupSparseCommentPart(part, findHydratePath(ctx.where, path), ctx);
129
+ case "text-part": {
130
+ const hole = findHydrationHole(getChildNodes(ctx.where), part.index);
131
+ if (hole === null)
132
+ throw new CouldNotFindCommentError(part.index);
133
+ return setupTextPart(part, hole.endComment, ctx);
134
+ }
135
+ }
136
+ }
137
+ function setupHydratedNodePart(part, hole, ctx) {
138
+ const nestedCtx = ctx.makeHydrateContext(hole, part.index);
139
+ const previousNodes = getPreviousNodes(hole);
140
+ const text = previousNodes.length === 2 && isCommentWithValue(previousNodes[0], "text") && isText(previousNodes[1])
141
+ ? previousNodes[1]
142
+ : null;
143
+ const effect = setupNodePart(part, hole.endComment, ctx, text, text === null ? previousNodes : [text]);
144
+ if (effect === null)
145
+ return null;
146
+ return Effect.provideService(effect, HydrateContext, nestedCtx);
147
+ }
148
+ export function findRootParentChildNodes(where) {
149
+ const childNodes = findRootChildNodes(where);
150
+ return {
151
+ parentNode: where,
152
+ childNodes
153
+ };
154
+ }
155
+ const START = "typed-start";
156
+ const END = "typed-end";
157
+ // Finds all of the childNodes between the "typed-start" and "typed-end" comments
158
+ export function findRootChildNodes(where) {
159
+ let start = -1;
160
+ let end = -1;
161
+ const { childNodes } = where;
162
+ const length = childNodes.length;
163
+ for (let i = 0; i < length; i++) {
164
+ const node = childNodes[i];
165
+ if (node.nodeType === node.COMMENT_NODE && node.nodeValue === START) {
166
+ start = i;
167
+ break;
168
+ }
169
+ }
170
+ for (let i = length - 1; i >= Math.max(start, 0); i--) {
171
+ const node = childNodes[i];
172
+ if (node.nodeType === node.COMMENT_NODE && node.nodeValue === END) {
173
+ end = i;
174
+ break;
175
+ }
176
+ }
177
+ // If we can't find the start and end comments, just return all childNodes
178
+ if (start === -1 && end === -1) {
179
+ return Array.from(childNodes);
180
+ }
181
+ start = start === -1 ? 0 : start;
182
+ end = end === -1 ? length - 1 : end;
183
+ const rootChildNodes = Array(end - start);
184
+ for (let i = start + 1, j = 0; i <= end; i++) {
185
+ rootChildNodes[j++] = childNodes[i];
186
+ }
187
+ return rootChildNodes;
188
+ }
189
+ function getWire(where) {
190
+ const nodes = getNodes(where);
191
+ if (nodes.length === 1)
192
+ return nodes[0];
193
+ return nodes;
194
+ }
195
+ //# sourceMappingURL=hydrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydrate.js","sourceRoot":"","sources":["../../../../src/internal/v2/hydrate.ts"],"names":[],"mappings":"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"}