@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.
Files changed (452) hide show
  1. package/README.md +121 -2
  2. package/dist/EventHandler.d.ts +273 -0
  3. package/dist/EventHandler.d.ts.map +1 -0
  4. package/dist/EventHandler.js +261 -0
  5. package/dist/EventSource.d.ts +82 -0
  6. package/dist/EventSource.d.ts.map +1 -0
  7. package/dist/EventSource.js +127 -0
  8. package/dist/Html.d.ts +122 -0
  9. package/dist/Html.d.ts.map +1 -0
  10. package/dist/Html.js +250 -0
  11. package/dist/HtmlChunk.d.ts +118 -0
  12. package/dist/HtmlChunk.d.ts.map +1 -0
  13. package/dist/HtmlChunk.js +211 -0
  14. package/dist/HydrateContext.d.ts +28 -0
  15. package/dist/HydrateContext.d.ts.map +1 -0
  16. package/dist/HydrateContext.js +25 -0
  17. package/dist/Parser.d.ts +35 -0
  18. package/dist/Parser.d.ts.map +1 -0
  19. package/dist/Parser.js +437 -0
  20. package/dist/Render.d.ts +195 -0
  21. package/dist/Render.d.ts.map +1 -0
  22. package/dist/Render.js +609 -0
  23. package/dist/RenderEvent.d.ts +179 -0
  24. package/dist/RenderEvent.d.ts.map +1 -0
  25. package/dist/RenderEvent.js +102 -0
  26. package/dist/RenderQueue.d.ts +167 -0
  27. package/dist/RenderQueue.d.ts.map +1 -0
  28. package/dist/RenderQueue.js +298 -0
  29. package/dist/RenderTemplate.d.ts +90 -0
  30. package/dist/RenderTemplate.d.ts.map +1 -0
  31. package/dist/RenderTemplate.js +87 -0
  32. package/dist/Renderable.d.ts +88 -0
  33. package/dist/Renderable.d.ts.map +1 -0
  34. package/dist/Renderable.js +3 -0
  35. package/dist/{dts/Template.d.ts → Template.d.ts} +109 -74
  36. package/dist/Template.d.ts.map +1 -0
  37. package/dist/{esm/Template.js → Template.js} +96 -56
  38. package/dist/Wire.d.ts +169 -0
  39. package/dist/Wire.d.ts.map +1 -0
  40. package/dist/Wire.js +217 -0
  41. package/dist/errors.d.ts +145 -0
  42. package/dist/errors.d.ts.map +1 -0
  43. package/dist/errors.js +159 -0
  44. package/dist/index.d.ts +15 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +14 -0
  47. package/dist/internal/IndexRefCounter.d.ts +11 -0
  48. package/dist/internal/IndexRefCounter.d.ts.map +1 -0
  49. package/dist/internal/IndexRefCounter.js +42 -0
  50. package/dist/internal/ParentChildNodes.d.ts +6 -0
  51. package/dist/internal/ParentChildNodes.d.ts.map +1 -0
  52. package/dist/internal/ParentChildNodes.js +1 -0
  53. package/dist/internal/PathStack.d.ts +9 -0
  54. package/dist/internal/PathStack.d.ts.map +1 -0
  55. package/dist/internal/PathStack.js +18 -0
  56. package/dist/internal/buildTemplateFragement.d.ts +3 -0
  57. package/dist/internal/buildTemplateFragement.d.ts.map +1 -0
  58. package/dist/internal/buildTemplateFragement.js +61 -0
  59. package/dist/internal/diff.d.ts +2 -0
  60. package/dist/internal/diff.d.ts.map +1 -0
  61. package/dist/internal/diff.js +119 -0
  62. package/dist/internal/dom.d.ts +45 -0
  63. package/dist/internal/dom.d.ts.map +1 -0
  64. package/dist/internal/dom.js +304 -0
  65. package/dist/internal/encoding.d.ts +7 -0
  66. package/dist/internal/encoding.d.ts.map +1 -0
  67. package/dist/internal/encoding.js +134 -0
  68. package/dist/{dts/internal/v2/hydration-template.d.ts → internal/hydration.d.ts} +10 -7
  69. package/dist/internal/hydration.d.ts.map +1 -0
  70. package/dist/{esm/internal/v2/hydration-template.js → internal/hydration.js} +80 -26
  71. package/dist/internal/keyToPartType.d.ts +2 -0
  72. package/dist/internal/keyToPartType.d.ts.map +1 -0
  73. package/dist/internal/keyToPartType.js +110 -0
  74. package/dist/internal/meta.d.ts +17 -0
  75. package/dist/internal/meta.d.ts.map +1 -0
  76. package/dist/internal/meta.js +14 -0
  77. package/dist/internal/takeOneIfNotRenderEvent.d.ts +4 -0
  78. package/dist/internal/takeOneIfNotRenderEvent.d.ts.map +1 -0
  79. package/dist/internal/takeOneIfNotRenderEvent.js +10 -0
  80. package/dist/internal/templateHash.d.ts +2 -0
  81. package/dist/internal/templateHash.d.ts.map +1 -0
  82. package/dist/internal/templateHash.js +14 -0
  83. package/dist/many.d.ts +68 -0
  84. package/dist/many.d.ts.map +1 -0
  85. package/dist/many.js +107 -0
  86. package/package.json +29 -227
  87. package/src/EventHandler.ts +318 -86
  88. package/src/EventSource.ts +202 -0
  89. package/src/Html.test.ts +490 -0
  90. package/src/Html.ts +292 -333
  91. package/src/HtmlChunk.ts +290 -332
  92. package/src/HydrateContext.ts +40 -0
  93. package/src/Hydration.test.ts +408 -0
  94. package/src/Parser.test.ts +923 -0
  95. package/src/Parser.ts +598 -10
  96. package/src/Render.test.ts +337 -0
  97. package/src/Render.ts +878 -63
  98. package/src/RenderEvent.ts +169 -40
  99. package/src/RenderQueue.ts +291 -385
  100. package/src/RenderTemplate.ts +98 -31
  101. package/src/Renderable.ts +122 -24
  102. package/src/Template.ts +246 -145
  103. package/src/Wire.ts +309 -0
  104. package/src/errors.ts +173 -0
  105. package/src/index.ts +14 -66
  106. package/src/internal/IndexRefCounter.ts +53 -0
  107. package/src/internal/ParentChildNodes.ts +7 -0
  108. package/src/internal/PathStack.ts +23 -0
  109. package/src/internal/buildTemplateFragement.ts +82 -0
  110. package/src/internal/diff.ts +127 -0
  111. package/src/internal/dom.ts +357 -0
  112. package/src/internal/encoding.ts +147 -0
  113. package/src/internal/hydration.ts +406 -0
  114. package/src/internal/keyToPartType.ts +113 -0
  115. package/src/internal/meta.ts +25 -0
  116. package/src/internal/takeOneIfNotRenderEvent.ts +19 -0
  117. package/src/internal/templateHash.ts +18 -0
  118. package/src/many.ts +148 -0
  119. package/Directive/package.json +0 -6
  120. package/ElementRef/package.json +0 -6
  121. package/ElementSource/package.json +0 -6
  122. package/Entry/package.json +0 -6
  123. package/EventHandler/package.json +0 -6
  124. package/Html/package.json +0 -6
  125. package/HtmlChunk/package.json +0 -6
  126. package/Hydrate/package.json +0 -6
  127. package/LICENSE +0 -21
  128. package/Many/package.json +0 -6
  129. package/Meta/package.json +0 -6
  130. package/Parser/package.json +0 -6
  131. package/Part/package.json +0 -6
  132. package/Placeholder/package.json +0 -6
  133. package/Platform/package.json +0 -6
  134. package/Render/package.json +0 -6
  135. package/RenderContext/package.json +0 -6
  136. package/RenderEvent/package.json +0 -6
  137. package/RenderQueue/package.json +0 -6
  138. package/RenderTemplate/package.json +0 -6
  139. package/Renderable/package.json +0 -6
  140. package/Template/package.json +0 -6
  141. package/Test/package.json +0 -6
  142. package/Vitest/package.json +0 -6
  143. package/compiler-tools/package.json +0 -6
  144. package/dist/cjs/Directive.js +0 -76
  145. package/dist/cjs/Directive.js.map +0 -1
  146. package/dist/cjs/ElementRef.js +0 -92
  147. package/dist/cjs/ElementRef.js.map +0 -1
  148. package/dist/cjs/ElementSource.js +0 -246
  149. package/dist/cjs/ElementSource.js.map +0 -1
  150. package/dist/cjs/Entry.js +0 -6
  151. package/dist/cjs/Entry.js.map +0 -1
  152. package/dist/cjs/EventHandler.js +0 -76
  153. package/dist/cjs/EventHandler.js.map +0 -1
  154. package/dist/cjs/Html.js +0 -224
  155. package/dist/cjs/Html.js.map +0 -1
  156. package/dist/cjs/HtmlChunk.js +0 -306
  157. package/dist/cjs/HtmlChunk.js.map +0 -1
  158. package/dist/cjs/Hydrate.js +0 -43
  159. package/dist/cjs/Hydrate.js.map +0 -1
  160. package/dist/cjs/Many.js +0 -66
  161. package/dist/cjs/Many.js.map +0 -1
  162. package/dist/cjs/Meta.js +0 -50
  163. package/dist/cjs/Meta.js.map +0 -1
  164. package/dist/cjs/Parser.js +0 -19
  165. package/dist/cjs/Parser.js.map +0 -1
  166. package/dist/cjs/Part.js +0 -6
  167. package/dist/cjs/Part.js.map +0 -1
  168. package/dist/cjs/Placeholder.js +0 -34
  169. package/dist/cjs/Placeholder.js.map +0 -1
  170. package/dist/cjs/Platform.js +0 -65
  171. package/dist/cjs/Platform.js.map +0 -1
  172. package/dist/cjs/Render.js +0 -50
  173. package/dist/cjs/Render.js.map +0 -1
  174. package/dist/cjs/RenderContext.js +0 -67
  175. package/dist/cjs/RenderContext.js.map +0 -1
  176. package/dist/cjs/RenderEvent.js +0 -52
  177. package/dist/cjs/RenderEvent.js.map +0 -1
  178. package/dist/cjs/RenderQueue.js +0 -343
  179. package/dist/cjs/RenderQueue.js.map +0 -1
  180. package/dist/cjs/RenderTemplate.js +0 -26
  181. package/dist/cjs/RenderTemplate.js.map +0 -1
  182. package/dist/cjs/Renderable.js +0 -6
  183. package/dist/cjs/Renderable.js.map +0 -1
  184. package/dist/cjs/Template.js +0 -305
  185. package/dist/cjs/Template.js.map +0 -1
  186. package/dist/cjs/Test.js +0 -184
  187. package/dist/cjs/Test.js.map +0 -1
  188. package/dist/cjs/Vitest.js +0 -52
  189. package/dist/cjs/Vitest.js.map +0 -1
  190. package/dist/cjs/compiler-tools.js +0 -100
  191. package/dist/cjs/compiler-tools.js.map +0 -1
  192. package/dist/cjs/index.js +0 -138
  193. package/dist/cjs/index.js.map +0 -1
  194. package/dist/cjs/internal/EventSource.js +0 -129
  195. package/dist/cjs/internal/EventSource.js.map +0 -1
  196. package/dist/cjs/internal/HydrateContext.js +0 -13
  197. package/dist/cjs/internal/HydrateContext.js.map +0 -1
  198. package/dist/cjs/internal/browser.js +0 -110
  199. package/dist/cjs/internal/browser.js.map +0 -1
  200. package/dist/cjs/internal/character-entities.js +0 -2141
  201. package/dist/cjs/internal/character-entities.js.map +0 -1
  202. package/dist/cjs/internal/chunks.js +0 -68
  203. package/dist/cjs/internal/chunks.js.map +0 -1
  204. package/dist/cjs/internal/errors.js +0 -52
  205. package/dist/cjs/internal/errors.js.map +0 -1
  206. package/dist/cjs/internal/indexRefCounter.js +0 -52
  207. package/dist/cjs/internal/indexRefCounter.js.map +0 -1
  208. package/dist/cjs/internal/module-augmentation.js +0 -6
  209. package/dist/cjs/internal/module-augmentation.js.map +0 -1
  210. package/dist/cjs/internal/parser.js +0 -568
  211. package/dist/cjs/internal/parser.js.map +0 -1
  212. package/dist/cjs/internal/parser2.js +0 -382
  213. package/dist/cjs/internal/parser2.js.map +0 -1
  214. package/dist/cjs/internal/server-parts.js +0 -124
  215. package/dist/cjs/internal/server-parts.js.map +0 -1
  216. package/dist/cjs/internal/server.js +0 -48
  217. package/dist/cjs/internal/server.js.map +0 -1
  218. package/dist/cjs/internal/utils.js +0 -136
  219. package/dist/cjs/internal/utils.js.map +0 -1
  220. package/dist/cjs/internal/v2/SyncPart.js +0 -6
  221. package/dist/cjs/internal/v2/SyncPart.js.map +0 -1
  222. package/dist/cjs/internal/v2/helpers.js +0 -15
  223. package/dist/cjs/internal/v2/helpers.js.map +0 -1
  224. package/dist/cjs/internal/v2/hydration-template.js +0 -269
  225. package/dist/cjs/internal/v2/hydration-template.js.map +0 -1
  226. package/dist/cjs/internal/v2/parts.js +0 -169
  227. package/dist/cjs/internal/v2/parts.js.map +0 -1
  228. package/dist/cjs/internal/v2/render-entry.js +0 -110
  229. package/dist/cjs/internal/v2/render-entry.js.map +0 -1
  230. package/dist/cjs/internal/v2/render-sync-parts.js +0 -318
  231. package/dist/cjs/internal/v2/render-sync-parts.js.map +0 -1
  232. package/dist/cjs/internal/v2/render.js +0 -592
  233. package/dist/cjs/internal/v2/render.js.map +0 -1
  234. package/dist/cjs/internal/v2/sync-parts.js +0 -115
  235. package/dist/cjs/internal/v2/sync-parts.js.map +0 -1
  236. package/dist/dts/Directive.d.ts +0 -70
  237. package/dist/dts/Directive.d.ts.map +0 -1
  238. package/dist/dts/ElementRef.d.ts +0 -42
  239. package/dist/dts/ElementRef.d.ts.map +0 -1
  240. package/dist/dts/ElementSource.d.ts +0 -79
  241. package/dist/dts/ElementSource.d.ts.map +0 -1
  242. package/dist/dts/Entry.d.ts +0 -26
  243. package/dist/dts/Entry.d.ts.map +0 -1
  244. package/dist/dts/EventHandler.d.ts +0 -73
  245. package/dist/dts/EventHandler.d.ts.map +0 -1
  246. package/dist/dts/Html.d.ts +0 -35
  247. package/dist/dts/Html.d.ts.map +0 -1
  248. package/dist/dts/HtmlChunk.d.ts +0 -56
  249. package/dist/dts/HtmlChunk.d.ts.map +0 -1
  250. package/dist/dts/Hydrate.d.ts +0 -19
  251. package/dist/dts/Hydrate.d.ts.map +0 -1
  252. package/dist/dts/Many.d.ts +0 -32
  253. package/dist/dts/Many.d.ts.map +0 -1
  254. package/dist/dts/Meta.d.ts +0 -33
  255. package/dist/dts/Meta.d.ts.map +0 -1
  256. package/dist/dts/Parser.d.ts +0 -13
  257. package/dist/dts/Parser.d.ts.map +0 -1
  258. package/dist/dts/Part.d.ts +0 -121
  259. package/dist/dts/Part.d.ts.map +0 -1
  260. package/dist/dts/Placeholder.d.ts +0 -48
  261. package/dist/dts/Placeholder.d.ts.map +0 -1
  262. package/dist/dts/Platform.d.ts +0 -21
  263. package/dist/dts/Platform.d.ts.map +0 -1
  264. package/dist/dts/Render.d.ts +0 -31
  265. package/dist/dts/Render.d.ts.map +0 -1
  266. package/dist/dts/RenderContext.d.ts +0 -70
  267. package/dist/dts/RenderContext.d.ts.map +0 -1
  268. package/dist/dts/RenderEvent.d.ts +0 -42
  269. package/dist/dts/RenderEvent.d.ts.map +0 -1
  270. package/dist/dts/RenderQueue.d.ts +0 -103
  271. package/dist/dts/RenderQueue.d.ts.map +0 -1
  272. package/dist/dts/RenderTemplate.d.ts +0 -25
  273. package/dist/dts/RenderTemplate.d.ts.map +0 -1
  274. package/dist/dts/Renderable.d.ts +0 -28
  275. package/dist/dts/Renderable.d.ts.map +0 -1
  276. package/dist/dts/Template.d.ts.map +0 -1
  277. package/dist/dts/Test.d.ts +0 -85
  278. package/dist/dts/Test.d.ts.map +0 -1
  279. package/dist/dts/Vitest.d.ts +0 -43
  280. package/dist/dts/Vitest.d.ts.map +0 -1
  281. package/dist/dts/compiler-tools.d.ts +0 -143
  282. package/dist/dts/compiler-tools.d.ts.map +0 -1
  283. package/dist/dts/index.d.ts +0 -65
  284. package/dist/dts/index.d.ts.map +0 -1
  285. package/dist/dts/internal/EventSource.d.ts +0 -13
  286. package/dist/dts/internal/EventSource.d.ts.map +0 -1
  287. package/dist/dts/internal/HydrateContext.d.ts +0 -2
  288. package/dist/dts/internal/HydrateContext.d.ts.map +0 -1
  289. package/dist/dts/internal/browser.d.ts +0 -8
  290. package/dist/dts/internal/browser.d.ts.map +0 -1
  291. package/dist/dts/internal/character-entities.d.ts +0 -2133
  292. package/dist/dts/internal/character-entities.d.ts.map +0 -1
  293. package/dist/dts/internal/chunks.d.ts +0 -23
  294. package/dist/dts/internal/chunks.d.ts.map +0 -1
  295. package/dist/dts/internal/errors.d.ts +0 -22
  296. package/dist/dts/internal/errors.d.ts.map +0 -1
  297. package/dist/dts/internal/indexRefCounter.d.ts +0 -7
  298. package/dist/dts/internal/indexRefCounter.d.ts.map +0 -1
  299. package/dist/dts/internal/module-augmentation.d.ts +0 -32
  300. package/dist/dts/internal/module-augmentation.d.ts.map +0 -1
  301. package/dist/dts/internal/parser.d.ts +0 -33
  302. package/dist/dts/internal/parser.d.ts.map +0 -1
  303. package/dist/dts/internal/parser2.d.ts +0 -12
  304. package/dist/dts/internal/parser2.d.ts.map +0 -1
  305. package/dist/dts/internal/server-parts.d.ts +0 -223
  306. package/dist/dts/internal/server-parts.d.ts.map +0 -1
  307. package/dist/dts/internal/server.d.ts +0 -5
  308. package/dist/dts/internal/server.d.ts.map +0 -1
  309. package/dist/dts/internal/utils.d.ts +0 -19
  310. package/dist/dts/internal/utils.d.ts.map +0 -1
  311. package/dist/dts/internal/v2/SyncPart.d.ts +0 -87
  312. package/dist/dts/internal/v2/SyncPart.d.ts.map +0 -1
  313. package/dist/dts/internal/v2/helpers.d.ts +0 -3
  314. package/dist/dts/internal/v2/helpers.d.ts.map +0 -1
  315. package/dist/dts/internal/v2/hydration-template.d.ts.map +0 -1
  316. package/dist/dts/internal/v2/parts.d.ts +0 -245
  317. package/dist/dts/internal/v2/parts.d.ts.map +0 -1
  318. package/dist/dts/internal/v2/render-entry.d.ts +0 -6
  319. package/dist/dts/internal/v2/render-entry.d.ts.map +0 -1
  320. package/dist/dts/internal/v2/render-sync-parts.d.ts +0 -22
  321. package/dist/dts/internal/v2/render-sync-parts.d.ts.map +0 -1
  322. package/dist/dts/internal/v2/render.d.ts +0 -83
  323. package/dist/dts/internal/v2/render.d.ts.map +0 -1
  324. package/dist/dts/internal/v2/sync-parts.d.ts +0 -129
  325. package/dist/dts/internal/v2/sync-parts.d.ts.map +0 -1
  326. package/dist/esm/Directive.js +0 -64
  327. package/dist/esm/Directive.js.map +0 -1
  328. package/dist/esm/ElementRef.js +0 -76
  329. package/dist/esm/ElementRef.js.map +0 -1
  330. package/dist/esm/ElementSource.js +0 -246
  331. package/dist/esm/ElementSource.js.map +0 -1
  332. package/dist/esm/Entry.js +0 -2
  333. package/dist/esm/Entry.js.map +0 -1
  334. package/dist/esm/EventHandler.js +0 -68
  335. package/dist/esm/EventHandler.js.map +0 -1
  336. package/dist/esm/Html.js +0 -230
  337. package/dist/esm/Html.js.map +0 -1
  338. package/dist/esm/HtmlChunk.js +0 -330
  339. package/dist/esm/HtmlChunk.js.map +0 -1
  340. package/dist/esm/Hydrate.js +0 -31
  341. package/dist/esm/Hydrate.js.map +0 -1
  342. package/dist/esm/Many.js +0 -54
  343. package/dist/esm/Many.js.map +0 -1
  344. package/dist/esm/Meta.js +0 -40
  345. package/dist/esm/Meta.js.map +0 -1
  346. package/dist/esm/Parser.js +0 -13
  347. package/dist/esm/Parser.js.map +0 -1
  348. package/dist/esm/Part.js +0 -5
  349. package/dist/esm/Part.js.map +0 -1
  350. package/dist/esm/Placeholder.js +0 -26
  351. package/dist/esm/Placeholder.js.map +0 -1
  352. package/dist/esm/Platform.js +0 -42
  353. package/dist/esm/Platform.js.map +0 -1
  354. package/dist/esm/Render.js +0 -36
  355. package/dist/esm/Render.js.map +0 -1
  356. package/dist/esm/RenderContext.js +0 -54
  357. package/dist/esm/RenderContext.js.map +0 -1
  358. package/dist/esm/RenderEvent.js +0 -43
  359. package/dist/esm/RenderEvent.js.map +0 -1
  360. package/dist/esm/RenderQueue.js +0 -338
  361. package/dist/esm/RenderQueue.js.map +0 -1
  362. package/dist/esm/RenderTemplate.js +0 -16
  363. package/dist/esm/RenderTemplate.js.map +0 -1
  364. package/dist/esm/Renderable.js +0 -2
  365. package/dist/esm/Renderable.js.map +0 -1
  366. package/dist/esm/Template.js.map +0 -1
  367. package/dist/esm/Test.js +0 -167
  368. package/dist/esm/Test.js.map +0 -1
  369. package/dist/esm/Vitest.js +0 -44
  370. package/dist/esm/Vitest.js.map +0 -1
  371. package/dist/esm/compiler-tools.js +0 -91
  372. package/dist/esm/compiler-tools.js.map +0 -1
  373. package/dist/esm/index.js +0 -65
  374. package/dist/esm/index.js.map +0 -1
  375. package/dist/esm/internal/EventSource.js +0 -126
  376. package/dist/esm/internal/EventSource.js.map +0 -1
  377. package/dist/esm/internal/HydrateContext.js +0 -7
  378. package/dist/esm/internal/HydrateContext.js.map +0 -1
  379. package/dist/esm/internal/browser.js +0 -103
  380. package/dist/esm/internal/browser.js.map +0 -1
  381. package/dist/esm/internal/character-entities.js +0 -2134
  382. package/dist/esm/internal/character-entities.js.map +0 -1
  383. package/dist/esm/internal/chunks.js +0 -60
  384. package/dist/esm/internal/chunks.js.map +0 -1
  385. package/dist/esm/internal/errors.js +0 -46
  386. package/dist/esm/internal/errors.js.map +0 -1
  387. package/dist/esm/internal/indexRefCounter.js +0 -47
  388. package/dist/esm/internal/indexRefCounter.js.map +0 -1
  389. package/dist/esm/internal/module-augmentation.js +0 -2
  390. package/dist/esm/internal/module-augmentation.js.map +0 -1
  391. package/dist/esm/internal/parser.js +0 -596
  392. package/dist/esm/internal/parser.js.map +0 -1
  393. package/dist/esm/internal/parser2.js +0 -393
  394. package/dist/esm/internal/parser2.js.map +0 -1
  395. package/dist/esm/internal/server-parts.js +0 -109
  396. package/dist/esm/internal/server-parts.js.map +0 -1
  397. package/dist/esm/internal/server.js +0 -22
  398. package/dist/esm/internal/server.js.map +0 -1
  399. package/dist/esm/internal/utils.js +0 -119
  400. package/dist/esm/internal/utils.js.map +0 -1
  401. package/dist/esm/internal/v2/SyncPart.js +0 -5
  402. package/dist/esm/internal/v2/SyncPart.js.map +0 -1
  403. package/dist/esm/internal/v2/helpers.js +0 -12
  404. package/dist/esm/internal/v2/helpers.js.map +0 -1
  405. package/dist/esm/internal/v2/hydration-template.js.map +0 -1
  406. package/dist/esm/internal/v2/parts.js +0 -150
  407. package/dist/esm/internal/v2/parts.js.map +0 -1
  408. package/dist/esm/internal/v2/render-entry.js +0 -102
  409. package/dist/esm/internal/v2/render-entry.js.map +0 -1
  410. package/dist/esm/internal/v2/render-sync-parts.js +0 -265
  411. package/dist/esm/internal/v2/render-sync-parts.js.map +0 -1
  412. package/dist/esm/internal/v2/render.js +0 -521
  413. package/dist/esm/internal/v2/render.js.map +0 -1
  414. package/dist/esm/internal/v2/sync-parts.js +0 -102
  415. package/dist/esm/internal/v2/sync-parts.js.map +0 -1
  416. package/dist/esm/package.json +0 -4
  417. package/src/Directive.ts +0 -114
  418. package/src/ElementRef.ts +0 -148
  419. package/src/ElementSource.ts +0 -510
  420. package/src/Entry.ts +0 -28
  421. package/src/Hydrate.ts +0 -51
  422. package/src/Many.ts +0 -161
  423. package/src/Meta.ts +0 -45
  424. package/src/Part.ts +0 -154
  425. package/src/Placeholder.ts +0 -78
  426. package/src/Platform.ts +0 -70
  427. package/src/RenderContext.ts +0 -121
  428. package/src/Test.ts +0 -354
  429. package/src/Vitest.ts +0 -141
  430. package/src/compiler-tools.ts +0 -250
  431. package/src/internal/EventSource.ts +0 -188
  432. package/src/internal/HydrateContext.ts +0 -22
  433. package/src/internal/browser.ts +0 -138
  434. package/src/internal/character-entities.ts +0 -2136
  435. package/src/internal/chunks.ts +0 -89
  436. package/src/internal/errors.ts +0 -49
  437. package/src/internal/external.d.ts +0 -11
  438. package/src/internal/indexRefCounter.ts +0 -54
  439. package/src/internal/module-augmentation.ts +0 -44
  440. package/src/internal/parser.ts +0 -757
  441. package/src/internal/parser2.ts +0 -468
  442. package/src/internal/server-parts.ts +0 -161
  443. package/src/internal/server.ts +0 -37
  444. package/src/internal/utils.ts +0 -153
  445. package/src/internal/v2/SyncPart.ts +0 -112
  446. package/src/internal/v2/helpers.ts +0 -13
  447. package/src/internal/v2/hydration-template.ts +0 -308
  448. package/src/internal/v2/parts.ts +0 -254
  449. package/src/internal/v2/render-entry.ts +0 -131
  450. package/src/internal/v2/render-sync-parts.ts +0 -440
  451. package/src/internal/v2/render.ts +0 -813
  452. package/src/internal/v2/sync-parts.ts +0 -133
package/dist/many.d.ts ADDED
@@ -0,0 +1,68 @@
1
+ import type { Scope } from "effect/Scope";
2
+ import { Fx, RefSubject } from "@typed/fx";
3
+ import { type RenderEvent } from "./RenderEvent.js";
4
+ /**
5
+ * Efficiently renders a reactive list of items by using keys to minimize DOM operations and maintain component state.
6
+ *
7
+ * `many` optimizes list rendering by:
8
+ * 1. **Keyed Diffing**: Uniquely identifies items using `getKey`. Components are only mounted when a new key appears and unmounted when a key disappears.
9
+ * 2. **Granular Updates**: Instead of re-rendering the component when an item changes, `many` passes a `RefSubject<A>` to the `render` function.
10
+ * The component remains mounted, and the `RefSubject` emits the updated value, allowing the component to update only the changed parts of the DOM.
11
+ *
12
+ * This pattern is essential for performance when rendering lists where items may be reordered, added, removed, or modified in place.
13
+ *
14
+ * **Rendering Modes:**
15
+ *
16
+ * `many` behaves differently based on the environment:
17
+ * - **HTML/SSR** (Computed Behavior = `'one'`): Concurrently renders all portions of the list but streams ready pieces in the order of their definitions.
18
+ * - **DOM** (Computed Behavior = `'multiple'`): Integrates with hydration behaviors to reuse existing DOM nodes or efficiently update the DOM using keyed diffing.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { Effect } from "effect"
23
+ * import { html, many } from "@typed/template"
24
+ * import { DomRenderTemplate, render } from "@typed/template/Render"
25
+ * import { Fx } from "@typed/fx"
26
+ * import { Layer } from "effect"
27
+ * import * as RefSubject from "@typed/fx/RefSubject"
28
+ *
29
+ * interface Todo {
30
+ * readonly id: string
31
+ * readonly text: string
32
+ * readonly completed: boolean
33
+ * }
34
+ *
35
+ * const program = Effect.gen(function* () {
36
+ * const todos = yield* RefSubject.make<Todo[]>([
37
+ * { id: "1", text: "Learn Effect", completed: false },
38
+ * { id: "2", text: "Build app", completed: false }
39
+ * ])
40
+ *
41
+ * const todoList = many(
42
+ * todos,
43
+ * (todo) => todo.id, // Key function
44
+ * (todoRef, key) => // Render function receives RefSubject
45
+ * html`<li>
46
+ * ${RefSubject.map(todoRef, (todo) => todo.text)}
47
+ * <button onclick=${RefSubject.update(todoRef, (todo) =>
48
+ * ({ ...todo, completed: !todo.completed })
49
+ * )}>Toggle</button>
50
+ * </li>`
51
+ * )
52
+ *
53
+ * const template = html`<ul>${todoList}</ul>`
54
+ *
55
+ * yield* render(template, document.body).pipe(
56
+ * Fx.drainLayer,
57
+ * Layer.provide(DomRenderTemplate),
58
+ * Layer.launch
59
+ * )
60
+ * })
61
+ * ```
62
+ *
63
+ * @since 1.0.0
64
+ * @category rendering
65
+ */
66
+ export declare function many<A, E, R, B extends PropertyKey, R2, E2>(values: Fx.Fx<ReadonlyArray<A>, E, R>, getKey: (a: A) => B, render: (value: RefSubject.RefSubject<A>, key: B) => Fx.Fx<RenderEvent, E2, R2 | Scope>): Fx.Fx<RenderEvent, E | E2, R | R2 | Scope>;
67
+ export declare const MANY_HOLE: (key: PropertyKey) => string;
68
+ //# sourceMappingURL=many.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"many.d.ts","sourceRoot":"","sources":["../src/many.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG3C,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAS1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,WAAW,EAAE,EAAE,EAAE,EAAE,EACzD,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACrC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EACnB,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,GACtF,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAiC5C;AA0BD,eAAO,MAAM,SAAS,GAAI,KAAK,WAAW,WAAkC,CAAC"}
package/dist/many.js ADDED
@@ -0,0 +1,107 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import * as Option from "effect/Option";
4
+ import * as ServiceMap from "effect/ServiceMap";
5
+ import { Fx, RefSubject } from "@typed/fx";
6
+ import { HydrateContext } from "./HydrateContext.js";
7
+ import { renderToString } from "./internal/encoding.js";
8
+ import { DomRenderEvent, HtmlRenderEvent, isHtmlRenderEvent, } from "./RenderEvent.js";
9
+ // We wrap the all the nodes in a single RenderEvent so that we can micro-optimize
10
+ // the downstream behaviors of diffing/patching.
11
+ const wrapInRenderEvent = Fx.map((events) => DomRenderEvent(events.flatMap(getNodesFromRendered)));
12
+ /**
13
+ * Efficiently renders a reactive list of items by using keys to minimize DOM operations and maintain component state.
14
+ *
15
+ * `many` optimizes list rendering by:
16
+ * 1. **Keyed Diffing**: Uniquely identifies items using `getKey`. Components are only mounted when a new key appears and unmounted when a key disappears.
17
+ * 2. **Granular Updates**: Instead of re-rendering the component when an item changes, `many` passes a `RefSubject<A>` to the `render` function.
18
+ * The component remains mounted, and the `RefSubject` emits the updated value, allowing the component to update only the changed parts of the DOM.
19
+ *
20
+ * This pattern is essential for performance when rendering lists where items may be reordered, added, removed, or modified in place.
21
+ *
22
+ * **Rendering Modes:**
23
+ *
24
+ * `many` behaves differently based on the environment:
25
+ * - **HTML/SSR** (Computed Behavior = `'one'`): Concurrently renders all portions of the list but streams ready pieces in the order of their definitions.
26
+ * - **DOM** (Computed Behavior = `'multiple'`): Integrates with hydration behaviors to reuse existing DOM nodes or efficiently update the DOM using keyed diffing.
27
+ *
28
+ * @example
29
+ * ```ts
30
+ * import { Effect } from "effect"
31
+ * import { html, many } from "@typed/template"
32
+ * import { DomRenderTemplate, render } from "@typed/template/Render"
33
+ * import { Fx } from "@typed/fx"
34
+ * import { Layer } from "effect"
35
+ * import * as RefSubject from "@typed/fx/RefSubject"
36
+ *
37
+ * interface Todo {
38
+ * readonly id: string
39
+ * readonly text: string
40
+ * readonly completed: boolean
41
+ * }
42
+ *
43
+ * const program = Effect.gen(function* () {
44
+ * const todos = yield* RefSubject.make<Todo[]>([
45
+ * { id: "1", text: "Learn Effect", completed: false },
46
+ * { id: "2", text: "Build app", completed: false }
47
+ * ])
48
+ *
49
+ * const todoList = many(
50
+ * todos,
51
+ * (todo) => todo.id, // Key function
52
+ * (todoRef, key) => // Render function receives RefSubject
53
+ * html`<li>
54
+ * ${RefSubject.map(todoRef, (todo) => todo.text)}
55
+ * <button onclick=${RefSubject.update(todoRef, (todo) =>
56
+ * ({ ...todo, completed: !todo.completed })
57
+ * )}>Toggle</button>
58
+ * </li>`
59
+ * )
60
+ *
61
+ * const template = html`<ul>${todoList}</ul>`
62
+ *
63
+ * yield* render(template, document.body).pipe(
64
+ * Fx.drainLayer,
65
+ * Layer.provide(DomRenderTemplate),
66
+ * Layer.launch
67
+ * )
68
+ * })
69
+ * ```
70
+ *
71
+ * @since 1.0.0
72
+ * @category rendering
73
+ */
74
+ export function many(values, getKey, render) {
75
+ return Fx.gen(function* () {
76
+ const behavior = yield* RefSubject.CurrentComputedBehavior;
77
+ if (behavior === "multiple") {
78
+ const services = yield* Effect.services();
79
+ const hydrateContext = ServiceMap.getOption(services, HydrateContext);
80
+ // If we're hydrating, attempt to provide the correct HydrateContext to rendering Fx
81
+ if (Option.isSome(hydrateContext) && hydrateContext.value.hydrate) {
82
+ return Fx.keyed(values, {
83
+ getKey,
84
+ onValue: (ref, key) => Fx.provide(render(ref, key), Layer.succeedServices(HydrateContext.serviceMap({ ...hydrateContext.value, manyKey: key.toString() }))),
85
+ }).pipe(wrapInRenderEvent);
86
+ }
87
+ return Fx.keyed(values, { getKey, onValue: render }).pipe(wrapInRenderEvent);
88
+ }
89
+ const initial = yield* Fx.first(values);
90
+ if (Option.isNone(initial) || initial.value.length === 0)
91
+ return Fx.empty;
92
+ const initialValues = initial.value;
93
+ const lastIndex = initialValues.length - 1;
94
+ return Fx.mergeOrdered(...initialValues.map((value, i) => renderValue(value, getKey, render, i === lastIndex)));
95
+ });
96
+ }
97
+ function renderValue(value, getKey, render, last) {
98
+ return Fx.unwrap(Effect.map(RefSubject.make(value), (ref) => {
99
+ const key = getKey(value);
100
+ return render(RefSubject.slice(ref, 0, 1), key).pipe(Fx.dropAfter((e) => isHtmlRenderEvent(e) && e.last), Fx.map((r) => HtmlRenderEvent(renderToString(r, ""), false)), Fx.append(HtmlRenderEvent(MANY_HOLE(key), last)));
101
+ }));
102
+ }
103
+ function getNodesFromRendered(rendered) {
104
+ const value = rendered.valueOf();
105
+ return Array.isArray(value) ? value : [value];
106
+ }
107
+ export const MANY_HOLE = (key) => `<!--/m_${key.toString()}-->`;
package/package.json CHANGED
@@ -1,234 +1,36 @@
1
1
  {
2
2
  "name": "@typed/template",
3
- "version": "0.14.0",
4
- "description": "",
5
- "license": "MIT",
6
- "repository": {
7
- "type": "git",
8
- "url": "https://github.com/tylors/typed.git"
9
- },
10
- "sideEffects": [],
11
- "author": "Typed contributors",
12
- "homepage": "https://github.com/tylors/typed",
13
- "dependencies": {
14
- "@effect/platform": "^0.66.2",
15
- "@effect/schema": "^0.74.1",
16
- "effect": "^3.8.4",
17
- "fast-check": "^3.22.0",
18
- "html5parser": "^2.0.2",
19
- "typed-query-selector": "^2.12.0",
20
- "udomdiff": "^1.1.0",
21
- "@typed/context": "0.30.0",
22
- "@typed/dom": "18.0.0",
23
- "@typed/environment": "0.11.0",
24
- "@typed/fx": "1.32.0",
25
- "@typed/wire": "0.6.0"
26
- },
27
- "main": "./dist/cjs/index.js",
28
- "module": "./dist/esm/index.js",
29
- "types": "./dist/dts/index.d.ts",
3
+ "version": "1.0.0-beta.1",
4
+ "type": "module",
30
5
  "exports": {
31
- "./package.json": "./package.json",
32
6
  ".": {
33
- "types": "./dist/dts/index.d.ts",
34
- "import": "./dist/esm/index.js",
35
- "default": "./dist/cjs/index.js"
36
- },
37
- "./Directive": {
38
- "types": "./dist/dts/Directive.d.ts",
39
- "import": "./dist/esm/Directive.js",
40
- "default": "./dist/cjs/Directive.js"
41
- },
42
- "./ElementRef": {
43
- "types": "./dist/dts/ElementRef.d.ts",
44
- "import": "./dist/esm/ElementRef.js",
45
- "default": "./dist/cjs/ElementRef.js"
46
- },
47
- "./ElementSource": {
48
- "types": "./dist/dts/ElementSource.d.ts",
49
- "import": "./dist/esm/ElementSource.js",
50
- "default": "./dist/cjs/ElementSource.js"
51
- },
52
- "./Entry": {
53
- "types": "./dist/dts/Entry.d.ts",
54
- "import": "./dist/esm/Entry.js",
55
- "default": "./dist/cjs/Entry.js"
56
- },
57
- "./EventHandler": {
58
- "types": "./dist/dts/EventHandler.d.ts",
59
- "import": "./dist/esm/EventHandler.js",
60
- "default": "./dist/cjs/EventHandler.js"
61
- },
62
- "./Html": {
63
- "types": "./dist/dts/Html.d.ts",
64
- "import": "./dist/esm/Html.js",
65
- "default": "./dist/cjs/Html.js"
66
- },
67
- "./HtmlChunk": {
68
- "types": "./dist/dts/HtmlChunk.d.ts",
69
- "import": "./dist/esm/HtmlChunk.js",
70
- "default": "./dist/cjs/HtmlChunk.js"
71
- },
72
- "./Hydrate": {
73
- "types": "./dist/dts/Hydrate.d.ts",
74
- "import": "./dist/esm/Hydrate.js",
75
- "default": "./dist/cjs/Hydrate.js"
76
- },
77
- "./Many": {
78
- "types": "./dist/dts/Many.d.ts",
79
- "import": "./dist/esm/Many.js",
80
- "default": "./dist/cjs/Many.js"
81
- },
82
- "./Meta": {
83
- "types": "./dist/dts/Meta.d.ts",
84
- "import": "./dist/esm/Meta.js",
85
- "default": "./dist/cjs/Meta.js"
86
- },
87
- "./Parser": {
88
- "types": "./dist/dts/Parser.d.ts",
89
- "import": "./dist/esm/Parser.js",
90
- "default": "./dist/cjs/Parser.js"
91
- },
92
- "./Part": {
93
- "types": "./dist/dts/Part.d.ts",
94
- "import": "./dist/esm/Part.js",
95
- "default": "./dist/cjs/Part.js"
96
- },
97
- "./Placeholder": {
98
- "types": "./dist/dts/Placeholder.d.ts",
99
- "import": "./dist/esm/Placeholder.js",
100
- "default": "./dist/cjs/Placeholder.js"
7
+ "types": "./dist/index.d.ts",
8
+ "import": "./dist/index.js"
101
9
  },
102
- "./Platform": {
103
- "types": "./dist/dts/Platform.d.ts",
104
- "import": "./dist/esm/Platform.js",
105
- "default": "./dist/cjs/Platform.js"
106
- },
107
- "./Render": {
108
- "types": "./dist/dts/Render.d.ts",
109
- "import": "./dist/esm/Render.js",
110
- "default": "./dist/cjs/Render.js"
111
- },
112
- "./RenderContext": {
113
- "types": "./dist/dts/RenderContext.d.ts",
114
- "import": "./dist/esm/RenderContext.js",
115
- "default": "./dist/cjs/RenderContext.js"
116
- },
117
- "./RenderEvent": {
118
- "types": "./dist/dts/RenderEvent.d.ts",
119
- "import": "./dist/esm/RenderEvent.js",
120
- "default": "./dist/cjs/RenderEvent.js"
121
- },
122
- "./RenderQueue": {
123
- "types": "./dist/dts/RenderQueue.d.ts",
124
- "import": "./dist/esm/RenderQueue.js",
125
- "default": "./dist/cjs/RenderQueue.js"
126
- },
127
- "./RenderTemplate": {
128
- "types": "./dist/dts/RenderTemplate.d.ts",
129
- "import": "./dist/esm/RenderTemplate.js",
130
- "default": "./dist/cjs/RenderTemplate.js"
131
- },
132
- "./Renderable": {
133
- "types": "./dist/dts/Renderable.d.ts",
134
- "import": "./dist/esm/Renderable.js",
135
- "default": "./dist/cjs/Renderable.js"
136
- },
137
- "./Template": {
138
- "types": "./dist/dts/Template.d.ts",
139
- "import": "./dist/esm/Template.js",
140
- "default": "./dist/cjs/Template.js"
141
- },
142
- "./Test": {
143
- "types": "./dist/dts/Test.d.ts",
144
- "import": "./dist/esm/Test.js",
145
- "default": "./dist/cjs/Test.js"
146
- },
147
- "./Vitest": {
148
- "types": "./dist/dts/Vitest.d.ts",
149
- "import": "./dist/esm/Vitest.js",
150
- "default": "./dist/cjs/Vitest.js"
151
- },
152
- "./compiler-tools": {
153
- "types": "./dist/dts/compiler-tools.d.ts",
154
- "import": "./dist/esm/compiler-tools.js",
155
- "default": "./dist/cjs/compiler-tools.js"
10
+ "./*": {
11
+ "types": "./dist/*.d.ts",
12
+ "import": "./dist/*.js"
156
13
  }
157
14
  },
158
- "typesVersions": {
159
- "*": {
160
- "Directive": [
161
- "./dist/dts/Directive.d.ts"
162
- ],
163
- "ElementRef": [
164
- "./dist/dts/ElementRef.d.ts"
165
- ],
166
- "ElementSource": [
167
- "./dist/dts/ElementSource.d.ts"
168
- ],
169
- "Entry": [
170
- "./dist/dts/Entry.d.ts"
171
- ],
172
- "EventHandler": [
173
- "./dist/dts/EventHandler.d.ts"
174
- ],
175
- "Html": [
176
- "./dist/dts/Html.d.ts"
177
- ],
178
- "HtmlChunk": [
179
- "./dist/dts/HtmlChunk.d.ts"
180
- ],
181
- "Hydrate": [
182
- "./dist/dts/Hydrate.d.ts"
183
- ],
184
- "Many": [
185
- "./dist/dts/Many.d.ts"
186
- ],
187
- "Meta": [
188
- "./dist/dts/Meta.d.ts"
189
- ],
190
- "Parser": [
191
- "./dist/dts/Parser.d.ts"
192
- ],
193
- "Part": [
194
- "./dist/dts/Part.d.ts"
195
- ],
196
- "Placeholder": [
197
- "./dist/dts/Placeholder.d.ts"
198
- ],
199
- "Platform": [
200
- "./dist/dts/Platform.d.ts"
201
- ],
202
- "Render": [
203
- "./dist/dts/Render.d.ts"
204
- ],
205
- "RenderContext": [
206
- "./dist/dts/RenderContext.d.ts"
207
- ],
208
- "RenderEvent": [
209
- "./dist/dts/RenderEvent.d.ts"
210
- ],
211
- "RenderQueue": [
212
- "./dist/dts/RenderQueue.d.ts"
213
- ],
214
- "RenderTemplate": [
215
- "./dist/dts/RenderTemplate.d.ts"
216
- ],
217
- "Renderable": [
218
- "./dist/dts/Renderable.d.ts"
219
- ],
220
- "Template": [
221
- "./dist/dts/Template.d.ts"
222
- ],
223
- "Test": [
224
- "./dist/dts/Test.d.ts"
225
- ],
226
- "Vitest": [
227
- "./dist/dts/Vitest.d.ts"
228
- ],
229
- "compiler-tools": [
230
- "./dist/dts/compiler-tools.d.ts"
231
- ]
232
- }
233
- }
234
- }
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "scripts": {
19
+ "build": "[ -d dist ] || rm -f tsconfig.tsbuildinfo; tsc",
20
+ "test": "vitest run --passWithNoTests"
21
+ },
22
+ "dependencies": {
23
+ "@typed/fx": "workspace:*",
24
+ "effect": "catalog:",
25
+ "html5parser": "2.0.2"
26
+ },
27
+ "devDependencies": {
28
+ "happy-dom": "catalog:",
29
+ "typescript": "catalog:",
30
+ "vitest": "catalog:"
31
+ },
32
+ "files": [
33
+ "dist",
34
+ "src"
35
+ ]
36
+ }