@typed/template 0.14.0 → 1.0.0-beta.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 (453) hide show
  1. package/README.md +108 -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 +297 -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 +22 -224
  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 +409 -0
  94. package/src/Parser.test.ts +924 -0
  95. package/src/Parser.ts +598 -10
  96. package/src/Render.test.ts +338 -0
  97. package/src/Render.ts +878 -63
  98. package/src/RenderEvent.ts +169 -40
  99. package/src/RenderQueue.ts +290 -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/tsconfig.json +6 -0
  120. package/Directive/package.json +0 -6
  121. package/ElementRef/package.json +0 -6
  122. package/ElementSource/package.json +0 -6
  123. package/Entry/package.json +0 -6
  124. package/EventHandler/package.json +0 -6
  125. package/Html/package.json +0 -6
  126. package/HtmlChunk/package.json +0 -6
  127. package/Hydrate/package.json +0 -6
  128. package/LICENSE +0 -21
  129. package/Many/package.json +0 -6
  130. package/Meta/package.json +0 -6
  131. package/Parser/package.json +0 -6
  132. package/Part/package.json +0 -6
  133. package/Placeholder/package.json +0 -6
  134. package/Platform/package.json +0 -6
  135. package/Render/package.json +0 -6
  136. package/RenderContext/package.json +0 -6
  137. package/RenderEvent/package.json +0 -6
  138. package/RenderQueue/package.json +0 -6
  139. package/RenderTemplate/package.json +0 -6
  140. package/Renderable/package.json +0 -6
  141. package/Template/package.json +0 -6
  142. package/Test/package.json +0 -6
  143. package/Vitest/package.json +0 -6
  144. package/compiler-tools/package.json +0 -6
  145. package/dist/cjs/Directive.js +0 -76
  146. package/dist/cjs/Directive.js.map +0 -1
  147. package/dist/cjs/ElementRef.js +0 -92
  148. package/dist/cjs/ElementRef.js.map +0 -1
  149. package/dist/cjs/ElementSource.js +0 -246
  150. package/dist/cjs/ElementSource.js.map +0 -1
  151. package/dist/cjs/Entry.js +0 -6
  152. package/dist/cjs/Entry.js.map +0 -1
  153. package/dist/cjs/EventHandler.js +0 -76
  154. package/dist/cjs/EventHandler.js.map +0 -1
  155. package/dist/cjs/Html.js +0 -224
  156. package/dist/cjs/Html.js.map +0 -1
  157. package/dist/cjs/HtmlChunk.js +0 -306
  158. package/dist/cjs/HtmlChunk.js.map +0 -1
  159. package/dist/cjs/Hydrate.js +0 -43
  160. package/dist/cjs/Hydrate.js.map +0 -1
  161. package/dist/cjs/Many.js +0 -66
  162. package/dist/cjs/Many.js.map +0 -1
  163. package/dist/cjs/Meta.js +0 -50
  164. package/dist/cjs/Meta.js.map +0 -1
  165. package/dist/cjs/Parser.js +0 -19
  166. package/dist/cjs/Parser.js.map +0 -1
  167. package/dist/cjs/Part.js +0 -6
  168. package/dist/cjs/Part.js.map +0 -1
  169. package/dist/cjs/Placeholder.js +0 -34
  170. package/dist/cjs/Placeholder.js.map +0 -1
  171. package/dist/cjs/Platform.js +0 -65
  172. package/dist/cjs/Platform.js.map +0 -1
  173. package/dist/cjs/Render.js +0 -50
  174. package/dist/cjs/Render.js.map +0 -1
  175. package/dist/cjs/RenderContext.js +0 -67
  176. package/dist/cjs/RenderContext.js.map +0 -1
  177. package/dist/cjs/RenderEvent.js +0 -52
  178. package/dist/cjs/RenderEvent.js.map +0 -1
  179. package/dist/cjs/RenderQueue.js +0 -343
  180. package/dist/cjs/RenderQueue.js.map +0 -1
  181. package/dist/cjs/RenderTemplate.js +0 -26
  182. package/dist/cjs/RenderTemplate.js.map +0 -1
  183. package/dist/cjs/Renderable.js +0 -6
  184. package/dist/cjs/Renderable.js.map +0 -1
  185. package/dist/cjs/Template.js +0 -305
  186. package/dist/cjs/Template.js.map +0 -1
  187. package/dist/cjs/Test.js +0 -184
  188. package/dist/cjs/Test.js.map +0 -1
  189. package/dist/cjs/Vitest.js +0 -52
  190. package/dist/cjs/Vitest.js.map +0 -1
  191. package/dist/cjs/compiler-tools.js +0 -100
  192. package/dist/cjs/compiler-tools.js.map +0 -1
  193. package/dist/cjs/index.js +0 -138
  194. package/dist/cjs/index.js.map +0 -1
  195. package/dist/cjs/internal/EventSource.js +0 -129
  196. package/dist/cjs/internal/EventSource.js.map +0 -1
  197. package/dist/cjs/internal/HydrateContext.js +0 -13
  198. package/dist/cjs/internal/HydrateContext.js.map +0 -1
  199. package/dist/cjs/internal/browser.js +0 -110
  200. package/dist/cjs/internal/browser.js.map +0 -1
  201. package/dist/cjs/internal/character-entities.js +0 -2141
  202. package/dist/cjs/internal/character-entities.js.map +0 -1
  203. package/dist/cjs/internal/chunks.js +0 -68
  204. package/dist/cjs/internal/chunks.js.map +0 -1
  205. package/dist/cjs/internal/errors.js +0 -52
  206. package/dist/cjs/internal/errors.js.map +0 -1
  207. package/dist/cjs/internal/indexRefCounter.js +0 -52
  208. package/dist/cjs/internal/indexRefCounter.js.map +0 -1
  209. package/dist/cjs/internal/module-augmentation.js +0 -6
  210. package/dist/cjs/internal/module-augmentation.js.map +0 -1
  211. package/dist/cjs/internal/parser.js +0 -568
  212. package/dist/cjs/internal/parser.js.map +0 -1
  213. package/dist/cjs/internal/parser2.js +0 -382
  214. package/dist/cjs/internal/parser2.js.map +0 -1
  215. package/dist/cjs/internal/server-parts.js +0 -124
  216. package/dist/cjs/internal/server-parts.js.map +0 -1
  217. package/dist/cjs/internal/server.js +0 -48
  218. package/dist/cjs/internal/server.js.map +0 -1
  219. package/dist/cjs/internal/utils.js +0 -136
  220. package/dist/cjs/internal/utils.js.map +0 -1
  221. package/dist/cjs/internal/v2/SyncPart.js +0 -6
  222. package/dist/cjs/internal/v2/SyncPart.js.map +0 -1
  223. package/dist/cjs/internal/v2/helpers.js +0 -15
  224. package/dist/cjs/internal/v2/helpers.js.map +0 -1
  225. package/dist/cjs/internal/v2/hydration-template.js +0 -269
  226. package/dist/cjs/internal/v2/hydration-template.js.map +0 -1
  227. package/dist/cjs/internal/v2/parts.js +0 -169
  228. package/dist/cjs/internal/v2/parts.js.map +0 -1
  229. package/dist/cjs/internal/v2/render-entry.js +0 -110
  230. package/dist/cjs/internal/v2/render-entry.js.map +0 -1
  231. package/dist/cjs/internal/v2/render-sync-parts.js +0 -318
  232. package/dist/cjs/internal/v2/render-sync-parts.js.map +0 -1
  233. package/dist/cjs/internal/v2/render.js +0 -592
  234. package/dist/cjs/internal/v2/render.js.map +0 -1
  235. package/dist/cjs/internal/v2/sync-parts.js +0 -115
  236. package/dist/cjs/internal/v2/sync-parts.js.map +0 -1
  237. package/dist/dts/Directive.d.ts +0 -70
  238. package/dist/dts/Directive.d.ts.map +0 -1
  239. package/dist/dts/ElementRef.d.ts +0 -42
  240. package/dist/dts/ElementRef.d.ts.map +0 -1
  241. package/dist/dts/ElementSource.d.ts +0 -79
  242. package/dist/dts/ElementSource.d.ts.map +0 -1
  243. package/dist/dts/Entry.d.ts +0 -26
  244. package/dist/dts/Entry.d.ts.map +0 -1
  245. package/dist/dts/EventHandler.d.ts +0 -73
  246. package/dist/dts/EventHandler.d.ts.map +0 -1
  247. package/dist/dts/Html.d.ts +0 -35
  248. package/dist/dts/Html.d.ts.map +0 -1
  249. package/dist/dts/HtmlChunk.d.ts +0 -56
  250. package/dist/dts/HtmlChunk.d.ts.map +0 -1
  251. package/dist/dts/Hydrate.d.ts +0 -19
  252. package/dist/dts/Hydrate.d.ts.map +0 -1
  253. package/dist/dts/Many.d.ts +0 -32
  254. package/dist/dts/Many.d.ts.map +0 -1
  255. package/dist/dts/Meta.d.ts +0 -33
  256. package/dist/dts/Meta.d.ts.map +0 -1
  257. package/dist/dts/Parser.d.ts +0 -13
  258. package/dist/dts/Parser.d.ts.map +0 -1
  259. package/dist/dts/Part.d.ts +0 -121
  260. package/dist/dts/Part.d.ts.map +0 -1
  261. package/dist/dts/Placeholder.d.ts +0 -48
  262. package/dist/dts/Placeholder.d.ts.map +0 -1
  263. package/dist/dts/Platform.d.ts +0 -21
  264. package/dist/dts/Platform.d.ts.map +0 -1
  265. package/dist/dts/Render.d.ts +0 -31
  266. package/dist/dts/Render.d.ts.map +0 -1
  267. package/dist/dts/RenderContext.d.ts +0 -70
  268. package/dist/dts/RenderContext.d.ts.map +0 -1
  269. package/dist/dts/RenderEvent.d.ts +0 -42
  270. package/dist/dts/RenderEvent.d.ts.map +0 -1
  271. package/dist/dts/RenderQueue.d.ts +0 -103
  272. package/dist/dts/RenderQueue.d.ts.map +0 -1
  273. package/dist/dts/RenderTemplate.d.ts +0 -25
  274. package/dist/dts/RenderTemplate.d.ts.map +0 -1
  275. package/dist/dts/Renderable.d.ts +0 -28
  276. package/dist/dts/Renderable.d.ts.map +0 -1
  277. package/dist/dts/Template.d.ts.map +0 -1
  278. package/dist/dts/Test.d.ts +0 -85
  279. package/dist/dts/Test.d.ts.map +0 -1
  280. package/dist/dts/Vitest.d.ts +0 -43
  281. package/dist/dts/Vitest.d.ts.map +0 -1
  282. package/dist/dts/compiler-tools.d.ts +0 -143
  283. package/dist/dts/compiler-tools.d.ts.map +0 -1
  284. package/dist/dts/index.d.ts +0 -65
  285. package/dist/dts/index.d.ts.map +0 -1
  286. package/dist/dts/internal/EventSource.d.ts +0 -13
  287. package/dist/dts/internal/EventSource.d.ts.map +0 -1
  288. package/dist/dts/internal/HydrateContext.d.ts +0 -2
  289. package/dist/dts/internal/HydrateContext.d.ts.map +0 -1
  290. package/dist/dts/internal/browser.d.ts +0 -8
  291. package/dist/dts/internal/browser.d.ts.map +0 -1
  292. package/dist/dts/internal/character-entities.d.ts +0 -2133
  293. package/dist/dts/internal/character-entities.d.ts.map +0 -1
  294. package/dist/dts/internal/chunks.d.ts +0 -23
  295. package/dist/dts/internal/chunks.d.ts.map +0 -1
  296. package/dist/dts/internal/errors.d.ts +0 -22
  297. package/dist/dts/internal/errors.d.ts.map +0 -1
  298. package/dist/dts/internal/indexRefCounter.d.ts +0 -7
  299. package/dist/dts/internal/indexRefCounter.d.ts.map +0 -1
  300. package/dist/dts/internal/module-augmentation.d.ts +0 -32
  301. package/dist/dts/internal/module-augmentation.d.ts.map +0 -1
  302. package/dist/dts/internal/parser.d.ts +0 -33
  303. package/dist/dts/internal/parser.d.ts.map +0 -1
  304. package/dist/dts/internal/parser2.d.ts +0 -12
  305. package/dist/dts/internal/parser2.d.ts.map +0 -1
  306. package/dist/dts/internal/server-parts.d.ts +0 -223
  307. package/dist/dts/internal/server-parts.d.ts.map +0 -1
  308. package/dist/dts/internal/server.d.ts +0 -5
  309. package/dist/dts/internal/server.d.ts.map +0 -1
  310. package/dist/dts/internal/utils.d.ts +0 -19
  311. package/dist/dts/internal/utils.d.ts.map +0 -1
  312. package/dist/dts/internal/v2/SyncPart.d.ts +0 -87
  313. package/dist/dts/internal/v2/SyncPart.d.ts.map +0 -1
  314. package/dist/dts/internal/v2/helpers.d.ts +0 -3
  315. package/dist/dts/internal/v2/helpers.d.ts.map +0 -1
  316. package/dist/dts/internal/v2/hydration-template.d.ts.map +0 -1
  317. package/dist/dts/internal/v2/parts.d.ts +0 -245
  318. package/dist/dts/internal/v2/parts.d.ts.map +0 -1
  319. package/dist/dts/internal/v2/render-entry.d.ts +0 -6
  320. package/dist/dts/internal/v2/render-entry.d.ts.map +0 -1
  321. package/dist/dts/internal/v2/render-sync-parts.d.ts +0 -22
  322. package/dist/dts/internal/v2/render-sync-parts.d.ts.map +0 -1
  323. package/dist/dts/internal/v2/render.d.ts +0 -83
  324. package/dist/dts/internal/v2/render.d.ts.map +0 -1
  325. package/dist/dts/internal/v2/sync-parts.d.ts +0 -129
  326. package/dist/dts/internal/v2/sync-parts.d.ts.map +0 -1
  327. package/dist/esm/Directive.js +0 -64
  328. package/dist/esm/Directive.js.map +0 -1
  329. package/dist/esm/ElementRef.js +0 -76
  330. package/dist/esm/ElementRef.js.map +0 -1
  331. package/dist/esm/ElementSource.js +0 -246
  332. package/dist/esm/ElementSource.js.map +0 -1
  333. package/dist/esm/Entry.js +0 -2
  334. package/dist/esm/Entry.js.map +0 -1
  335. package/dist/esm/EventHandler.js +0 -68
  336. package/dist/esm/EventHandler.js.map +0 -1
  337. package/dist/esm/Html.js +0 -230
  338. package/dist/esm/Html.js.map +0 -1
  339. package/dist/esm/HtmlChunk.js +0 -330
  340. package/dist/esm/HtmlChunk.js.map +0 -1
  341. package/dist/esm/Hydrate.js +0 -31
  342. package/dist/esm/Hydrate.js.map +0 -1
  343. package/dist/esm/Many.js +0 -54
  344. package/dist/esm/Many.js.map +0 -1
  345. package/dist/esm/Meta.js +0 -40
  346. package/dist/esm/Meta.js.map +0 -1
  347. package/dist/esm/Parser.js +0 -13
  348. package/dist/esm/Parser.js.map +0 -1
  349. package/dist/esm/Part.js +0 -5
  350. package/dist/esm/Part.js.map +0 -1
  351. package/dist/esm/Placeholder.js +0 -26
  352. package/dist/esm/Placeholder.js.map +0 -1
  353. package/dist/esm/Platform.js +0 -42
  354. package/dist/esm/Platform.js.map +0 -1
  355. package/dist/esm/Render.js +0 -36
  356. package/dist/esm/Render.js.map +0 -1
  357. package/dist/esm/RenderContext.js +0 -54
  358. package/dist/esm/RenderContext.js.map +0 -1
  359. package/dist/esm/RenderEvent.js +0 -43
  360. package/dist/esm/RenderEvent.js.map +0 -1
  361. package/dist/esm/RenderQueue.js +0 -338
  362. package/dist/esm/RenderQueue.js.map +0 -1
  363. package/dist/esm/RenderTemplate.js +0 -16
  364. package/dist/esm/RenderTemplate.js.map +0 -1
  365. package/dist/esm/Renderable.js +0 -2
  366. package/dist/esm/Renderable.js.map +0 -1
  367. package/dist/esm/Template.js.map +0 -1
  368. package/dist/esm/Test.js +0 -167
  369. package/dist/esm/Test.js.map +0 -1
  370. package/dist/esm/Vitest.js +0 -44
  371. package/dist/esm/Vitest.js.map +0 -1
  372. package/dist/esm/compiler-tools.js +0 -91
  373. package/dist/esm/compiler-tools.js.map +0 -1
  374. package/dist/esm/index.js +0 -65
  375. package/dist/esm/index.js.map +0 -1
  376. package/dist/esm/internal/EventSource.js +0 -126
  377. package/dist/esm/internal/EventSource.js.map +0 -1
  378. package/dist/esm/internal/HydrateContext.js +0 -7
  379. package/dist/esm/internal/HydrateContext.js.map +0 -1
  380. package/dist/esm/internal/browser.js +0 -103
  381. package/dist/esm/internal/browser.js.map +0 -1
  382. package/dist/esm/internal/character-entities.js +0 -2134
  383. package/dist/esm/internal/character-entities.js.map +0 -1
  384. package/dist/esm/internal/chunks.js +0 -60
  385. package/dist/esm/internal/chunks.js.map +0 -1
  386. package/dist/esm/internal/errors.js +0 -46
  387. package/dist/esm/internal/errors.js.map +0 -1
  388. package/dist/esm/internal/indexRefCounter.js +0 -47
  389. package/dist/esm/internal/indexRefCounter.js.map +0 -1
  390. package/dist/esm/internal/module-augmentation.js +0 -2
  391. package/dist/esm/internal/module-augmentation.js.map +0 -1
  392. package/dist/esm/internal/parser.js +0 -596
  393. package/dist/esm/internal/parser.js.map +0 -1
  394. package/dist/esm/internal/parser2.js +0 -393
  395. package/dist/esm/internal/parser2.js.map +0 -1
  396. package/dist/esm/internal/server-parts.js +0 -109
  397. package/dist/esm/internal/server-parts.js.map +0 -1
  398. package/dist/esm/internal/server.js +0 -22
  399. package/dist/esm/internal/server.js.map +0 -1
  400. package/dist/esm/internal/utils.js +0 -119
  401. package/dist/esm/internal/utils.js.map +0 -1
  402. package/dist/esm/internal/v2/SyncPart.js +0 -5
  403. package/dist/esm/internal/v2/SyncPart.js.map +0 -1
  404. package/dist/esm/internal/v2/helpers.js +0 -12
  405. package/dist/esm/internal/v2/helpers.js.map +0 -1
  406. package/dist/esm/internal/v2/hydration-template.js.map +0 -1
  407. package/dist/esm/internal/v2/parts.js +0 -150
  408. package/dist/esm/internal/v2/parts.js.map +0 -1
  409. package/dist/esm/internal/v2/render-entry.js +0 -102
  410. package/dist/esm/internal/v2/render-entry.js.map +0 -1
  411. package/dist/esm/internal/v2/render-sync-parts.js +0 -265
  412. package/dist/esm/internal/v2/render-sync-parts.js.map +0 -1
  413. package/dist/esm/internal/v2/render.js +0 -521
  414. package/dist/esm/internal/v2/render.js.map +0 -1
  415. package/dist/esm/internal/v2/sync-parts.js +0 -102
  416. package/dist/esm/internal/v2/sync-parts.js.map +0 -1
  417. package/dist/esm/package.json +0 -4
  418. package/src/Directive.ts +0 -114
  419. package/src/ElementRef.ts +0 -148
  420. package/src/ElementSource.ts +0 -510
  421. package/src/Entry.ts +0 -28
  422. package/src/Hydrate.ts +0 -51
  423. package/src/Many.ts +0 -161
  424. package/src/Meta.ts +0 -45
  425. package/src/Part.ts +0 -154
  426. package/src/Placeholder.ts +0 -78
  427. package/src/Platform.ts +0 -70
  428. package/src/RenderContext.ts +0 -121
  429. package/src/Test.ts +0 -354
  430. package/src/Vitest.ts +0 -141
  431. package/src/compiler-tools.ts +0 -250
  432. package/src/internal/EventSource.ts +0 -188
  433. package/src/internal/HydrateContext.ts +0 -22
  434. package/src/internal/browser.ts +0 -138
  435. package/src/internal/character-entities.ts +0 -2136
  436. package/src/internal/chunks.ts +0 -89
  437. package/src/internal/errors.ts +0 -49
  438. package/src/internal/external.d.ts +0 -11
  439. package/src/internal/indexRefCounter.ts +0 -54
  440. package/src/internal/module-augmentation.ts +0 -44
  441. package/src/internal/parser.ts +0 -757
  442. package/src/internal/parser2.ts +0 -468
  443. package/src/internal/server-parts.ts +0 -161
  444. package/src/internal/server.ts +0 -37
  445. package/src/internal/utils.ts +0 -153
  446. package/src/internal/v2/SyncPart.ts +0 -112
  447. package/src/internal/v2/helpers.ts +0 -13
  448. package/src/internal/v2/hydration-template.ts +0 -308
  449. package/src/internal/v2/parts.ts +0 -254
  450. package/src/internal/v2/render-entry.ts +0 -131
  451. package/src/internal/v2/render-sync-parts.ts +0 -440
  452. package/src/internal/v2/render.ts +0 -813
  453. package/src/internal/v2/sync-parts.ts +0 -133
@@ -0,0 +1,338 @@
1
+ import assert from "node:assert";
2
+ import { describe, it } from "vitest";
3
+ import type { Scope } from "effect";
4
+ import { Effect } from "effect";
5
+ import { Fx } from "@typed/fx";
6
+ import type { Renderable, RenderTemplate } from "./index.js";
7
+ import { DomRenderTemplate, EventHandler, html, render } from "./index.js";
8
+ import type { Rendered } from "./Wire.js";
9
+ import { Window } from "happy-dom";
10
+
11
+ describe("Render", () => {
12
+ it("renders a simple template", () =>
13
+ Effect.gen(function* () {
14
+ yield* renderHtmlElement`<div>Hello, world!</div>`;
15
+ }).pipe(Effect.scoped, Effect.runPromise));
16
+
17
+ it("renders template with static attribute", () =>
18
+ Effect.gen(function* () {
19
+ const staticExample = yield* renderHtmlElement`<div data-foo="Hello, world!"></div>`;
20
+ assert(staticExample.getAttribute("data-foo") === "Hello, world!");
21
+ assert(staticExample.dataset.foo === "Hello, world!");
22
+ }).pipe(Effect.scoped, Effect.runPromise));
23
+
24
+ it("renders template with primitive attribute interpolation", () =>
25
+ Effect.gen(function* () {
26
+ const primitiveExample = yield* renderHtmlElement`<div data-foo=${"Hello, world!"}></div>`;
27
+ assert(primitiveExample.getAttribute("data-foo") === "Hello, world!");
28
+ assert(primitiveExample.dataset.foo === "Hello, world!");
29
+ }).pipe(Effect.scoped, Effect.runPromise));
30
+
31
+ it("renders template with Effect attribute", () =>
32
+ Effect.gen(function* () {
33
+ const effectExample =
34
+ yield* renderHtmlElement`<div data-foo=${Effect.succeed("Hello, world!")}></div>`;
35
+ assert(effectExample.getAttribute("data-foo") === "Hello, world!");
36
+ assert(effectExample.dataset.foo === "Hello, world!");
37
+ }).pipe(Effect.scoped, Effect.runPromise));
38
+
39
+ it("renders template with reactive Fx attribute", () =>
40
+ Effect.gen(function* () {
41
+ const values = ["A", "B", "C"];
42
+ const interval = 100;
43
+ const fxExample = yield* renderHtmlElement`<div data-foo=${Fx.mergeAll(
44
+ ...values.map((value, index) => Fx.at(value, interval * index)),
45
+ )}></div>`;
46
+ assert(fxExample.getAttribute("data-foo") === "A");
47
+ assert.equal(fxExample.dataset["foo"], "A");
48
+
49
+ yield* Effect.sleep(interval * 1.5);
50
+ assert(fxExample.getAttribute("data-foo") === "B");
51
+ assert.equal(fxExample.dataset["foo"], "B");
52
+
53
+ yield* Effect.sleep(interval * 1.5);
54
+ assert(fxExample.getAttribute("data-foo") === "C");
55
+ assert.equal(fxExample.dataset["foo"], "C");
56
+ }).pipe(Effect.scoped, Effect.runPromise));
57
+
58
+ it("renders template with a boolean attribute", () =>
59
+ Effect.gen(function* () {
60
+ const trueExample = yield* renderHtmlElement`<div ?hidden=${true}></div>`;
61
+ assert(trueExample.hasAttribute("hidden"));
62
+
63
+ const falseExample = yield* renderHtmlElement`<div ?hidden=${false}></div>`;
64
+ assert(!falseExample.hasAttribute("hidden"));
65
+
66
+ const effectTrueExample =
67
+ yield* renderHtmlElement`<div ?hidden=${Effect.succeed(true)}></div>`;
68
+ assert(effectTrueExample.hasAttribute("hidden"));
69
+
70
+ const effectFalseExample =
71
+ yield* renderHtmlElement`<div ?hidden=${Effect.succeed(false)}></div>`;
72
+ assert(!effectFalseExample.hasAttribute("hidden"));
73
+
74
+ const fxTrueExample = yield* renderHtmlElement`<div ?hidden=${Fx.succeed(true)}></div>`;
75
+ assert(fxTrueExample.hasAttribute("hidden"));
76
+
77
+ const fxFalseExample = yield* renderHtmlElement`<div ?hidden=${Fx.succeed(false)}></div>`;
78
+ assert(!fxFalseExample.hasAttribute("hidden"));
79
+ }).pipe(Effect.scoped, Effect.runPromise));
80
+
81
+ it("renders template with a class name", () =>
82
+ Effect.gen(function* () {
83
+ const staticExample = yield* renderHtmlElement`<div class="foo"></div>`;
84
+ assert(staticExample.classList.contains("foo"));
85
+
86
+ const primitiveExample = yield* renderHtmlElement`<div class=${"foo"}></div>`;
87
+ assert(primitiveExample.classList.contains("foo"));
88
+
89
+ const effectExample = yield* renderHtmlElement`<div class=${Effect.succeed("foo")}></div>`;
90
+ assert(effectExample.classList.contains("foo"));
91
+
92
+ const fxExample = yield* renderHtmlElement`<div class=${Fx.succeed("foo")}></div>`;
93
+ assert(fxExample.classList.contains("foo"));
94
+ }).pipe(Effect.scoped, Effect.runPromise));
95
+
96
+ it("renders template with a class name interpolation", () =>
97
+ Effect.gen(function* () {
98
+ const classNameExample = yield* renderHtmlElement`<div class=${"foo bar baz"}></div>`;
99
+ assert(classNameExample.classList.contains("foo"));
100
+ assert(classNameExample.classList.contains("bar"));
101
+ assert(classNameExample.classList.contains("baz"));
102
+ }).pipe(Effect.scoped, Effect.runPromise));
103
+
104
+ it("renders template with a class name interpolation with holes", () =>
105
+ Effect.gen(function* () {
106
+ const classNameExample =
107
+ yield* renderHtmlElement`<div class="${"foo"} ${Effect.succeed("bar")} ${Fx.succeed(
108
+ "baz",
109
+ )}"></div>`;
110
+ assert(classNameExample.classList.contains("foo"));
111
+ assert(classNameExample.classList.contains("bar"));
112
+ assert(classNameExample.classList.contains("baz"));
113
+ }).pipe(Effect.scoped, Effect.runPromise));
114
+
115
+ it("renders template with data attributes", () =>
116
+ Effect.gen(function* () {
117
+ const dataExample = yield* renderHtmlElement`<div .data=${{
118
+ a: "a",
119
+ b: Effect.succeed("b"),
120
+ c: Fx.succeed("c"),
121
+ }} />`;
122
+
123
+ assert(dataExample.dataset.a === "a");
124
+ assert(dataExample.dataset.b === "b");
125
+ assert(dataExample.dataset.c === "c");
126
+ }).pipe(Effect.scoped, Effect.runPromise));
127
+
128
+ it("renders comments", () =>
129
+ Effect.gen(function* () {
130
+ const commentExample = yield* renderComment`<!--Hello, world!-->`;
131
+ assert.equal(commentExample.textContent, "Hello, world!");
132
+ }).pipe(Effect.scoped, Effect.runPromise));
133
+
134
+ it("renders comments with holes", () =>
135
+ Effect.gen(function* () {
136
+ const commentExample = yield* renderComment`<!--${"Hello, world!"}-->`;
137
+ assert.equal(commentExample.textContent, "Hello, world!");
138
+ }).pipe(Effect.scoped, Effect.runPromise));
139
+
140
+ it("renders comments with multiple holes", () =>
141
+ Effect.gen(function* () {
142
+ const commentExample =
143
+ yield* renderComment`<!--${"Hello"}, ${Effect.succeed("world")}${Fx.succeed("!")}-->`;
144
+ assert.equal(commentExample.textContent, "Hello, world!");
145
+ }).pipe(Effect.scoped, Effect.runPromise));
146
+
147
+ it("renders template with property syntax", () =>
148
+ Effect.gen(function* () {
149
+ const x = {};
150
+ const propertyExample = yield* renderHtmlElement`<div .foo=${Effect.succeed(x)}></div>`;
151
+ assert((propertyExample as any).foo === x);
152
+ }).pipe(Effect.scoped, Effect.runPromise));
153
+
154
+ it("supports ref parts", () =>
155
+ Effect.gen(function* () {
156
+ let element: HTMLElement | undefined;
157
+ const refExample = yield* renderHtmlElement`<div ref=${(el: HTMLElement) => {
158
+ element = el;
159
+ }}></div>`;
160
+ assert(element === refExample);
161
+ }).pipe(Effect.scoped, Effect.runPromise));
162
+
163
+ it("supports sparse attributes", () =>
164
+ Effect.gen(function* () {
165
+ const sparseExample = yield* renderHtmlElement`<div attr="${"foo"} ${"bar"} ${"baz"}"></div>`;
166
+ assert(sparseExample.getAttribute("attr") === "foo bar baz");
167
+ }).pipe(Effect.scoped, Effect.runPromise));
168
+
169
+ it("supports text only elements", () =>
170
+ Effect.gen(function* () {
171
+ const textOnlyExample =
172
+ yield* renderHtmlElement`<script>console.log("${"Hello, world!"}")</script>`;
173
+ assert.equal(textOnlyExample.textContent, 'console.log("Hello, world!")');
174
+ }).pipe(Effect.scoped, Effect.runPromise));
175
+
176
+ it("supports text only elements with multipleholes", () =>
177
+ Effect.gen(function* () {
178
+ const textOnlyExample =
179
+ yield* renderHtmlElement`<script>console.log("${"Hello"}, ${Effect.succeed("world")}${Fx.succeed(
180
+ "!",
181
+ )}")</script>`;
182
+ assert.equal(textOnlyExample.textContent, 'console.log("Hello, world!")');
183
+ }).pipe(Effect.scoped, Effect.runPromise));
184
+
185
+ it("supports spread attributes", () =>
186
+ Effect.gen(function* () {
187
+ const spreadExample = yield* renderHtmlElement`<div ...${{ foo: "bar", baz: "qux" }}></div>`;
188
+ assert(spreadExample.getAttribute("foo") === "bar");
189
+ assert(spreadExample.getAttribute("baz") === "qux");
190
+ }).pipe(Effect.scoped, Effect.runPromise));
191
+
192
+ it("supports effects as event handlers using @event syntax", () =>
193
+ Effect.gen(function* () {
194
+ let clicked = false;
195
+ const eventExample = yield* renderHtmlElement`<div @click=${Effect.sync(() => {
196
+ clicked = true;
197
+ })}></div>`;
198
+ eventExample.click();
199
+ assert(clicked);
200
+ }).pipe(Effect.scoped, Effect.runPromise));
201
+
202
+ it("supports EventHandlers using @event syntax", () =>
203
+ Effect.gen(function* () {
204
+ let clicked = false;
205
+ const eventExample = yield* renderHtmlElement`<div @click=${EventHandler.make(() => {
206
+ clicked = true;
207
+ })}></div>`;
208
+ eventExample.click();
209
+ assert(clicked);
210
+ }).pipe(Effect.scoped, Effect.runPromise));
211
+
212
+ it("supports effects as event handlers using onclick attribute", () =>
213
+ Effect.gen(function* () {
214
+ let clicked = false;
215
+ const eventExample = yield* renderHtmlElement`<div onclick=${Effect.sync(() => {
216
+ clicked = true;
217
+ })}></div>`;
218
+ eventExample.click();
219
+ assert(clicked);
220
+ }).pipe(Effect.scoped, Effect.runPromise));
221
+
222
+ it("supports EventHandlers using onclick attribute", () =>
223
+ Effect.gen(function* () {
224
+ let clicked = false;
225
+ const eventExample = yield* renderHtmlElement`<div onclick=${EventHandler.make(() => {
226
+ clicked = true;
227
+ })}></div>`;
228
+ eventExample.click();
229
+ assert(clicked);
230
+ }).pipe(Effect.scoped, Effect.runPromise));
231
+
232
+ it("event handler allows camelCase event names", () =>
233
+ Effect.gen(function* () {
234
+ let clicked = false;
235
+ const eventExample = yield* renderHtmlElement`<div onClick=${EventHandler.make(
236
+ (event) => {
237
+ clicked = true;
238
+ assert(event.defaultPrevented);
239
+ },
240
+ { preventDefault: true },
241
+ )}></div>`;
242
+ eventExample.click();
243
+ assert(clicked);
244
+ }).pipe(Effect.scoped, Effect.runPromise));
245
+
246
+ it("interpolates primitive children", () =>
247
+ Effect.gen(function* () {
248
+ const numberExample = yield* renderHtmlElement`<div>${1}</div>`;
249
+ assert.equal(numberExample.textContent, "1");
250
+ const stringExample = yield* renderHtmlElement`<div>${"Hello, world!"}</div>`;
251
+ assert.equal(stringExample.textContent, "Hello, world!");
252
+ const booleanExample = yield* renderHtmlElement`<div>${true}</div>`;
253
+ assert.equal(booleanExample.textContent, "true");
254
+ const bigintExample = yield* renderHtmlElement`<div>${BigInt(1)}</div>`;
255
+ assert.equal(bigintExample.textContent, "1");
256
+ const symbolExample = yield* renderHtmlElement`<div>${Symbol("foo")}</div>`;
257
+ assert.equal(symbolExample.textContent, "Symbol(foo)");
258
+ const undefinedExample = yield* renderHtmlElement`<div>${undefined}</div>`;
259
+ assert.equal(undefinedExample.textContent, "");
260
+ const nullExample = yield* renderHtmlElement`<div>${null}</div>`;
261
+ assert.equal(nullExample.textContent, "");
262
+ const arrayExample = yield* renderHtmlElement`<div>${[1, "Hello", true]}</div>`;
263
+ assert.equal(arrayExample.textContent, "1Hellotrue");
264
+ }).pipe(Effect.scoped, Effect.runPromise));
265
+
266
+ it("interpolates dom render events", () =>
267
+ Effect.gen(function* () {
268
+ const renderEventExample = yield* renderHtmlElement`<div>${html`
269
+ <p>Hello, world!</p>
270
+ `}</div>`;
271
+ assert.equal(renderEventExample.innerHTML, `<p>Hello, world!</p>${TYPED_NODE_END(0)}`);
272
+ }).pipe(Effect.scoped, Effect.runPromise));
273
+
274
+ it("interpolates array of render events", () =>
275
+ Effect.gen(function* () {
276
+ const renderEventExample = yield* renderHtmlElement`<div>${[
277
+ html`
278
+ <p>A</p>
279
+ `,
280
+ html`
281
+ <p>B</p>
282
+ `,
283
+ ]}</div>`;
284
+ assert.equal(renderEventExample.innerHTML, `<p>A</p><p>B</p>${TYPED_NODE_END(0)}`);
285
+ }).pipe(Effect.scoped, Effect.runPromise));
286
+ });
287
+
288
+ function renderHtmlElement<Values extends ReadonlyArray<Renderable.Any>>(
289
+ template: TemplateStringsArray,
290
+ ...values: Values
291
+ ) {
292
+ return renderTemplate(template, values, (example, window): asserts example is HTMLElement =>
293
+ assert(example instanceof window.HTMLElement),
294
+ );
295
+ }
296
+
297
+ function renderComment<Values extends ReadonlyArray<Renderable.Any>>(
298
+ template: TemplateStringsArray,
299
+ ...values: Values
300
+ ) {
301
+ return renderTemplate(template, values, (example, window): asserts example is Comment =>
302
+ assert(example instanceof window.Comment),
303
+ );
304
+ }
305
+
306
+ function renderTemplate<Values extends ReadonlyArray<Renderable.Any>, T extends Rendered>(
307
+ template: TemplateStringsArray,
308
+ values: Values,
309
+ assertion: (
310
+ example: Rendered,
311
+ window: globalThis.Window & typeof globalThis,
312
+ ) => asserts example is T,
313
+ ): Effect.Effect<
314
+ T,
315
+ Renderable.Error<Values[number]>,
316
+ Scope.Scope | Exclude<Renderable.Services<Values[number]>, RenderTemplate>
317
+ > {
318
+ return Effect.gen(function* () {
319
+ const [window, layer] = createHappyDomLayer();
320
+ const [example] = yield* render(html(template, ...values), window.document.body).pipe(
321
+ Fx.provide(layer),
322
+ Fx.take(1),
323
+ Fx.collectAll,
324
+ );
325
+
326
+ assertion(example, window);
327
+
328
+ return example;
329
+ });
330
+ }
331
+
332
+ function createHappyDomLayer(...params: ConstructorParameters<typeof Window>) {
333
+ const window = new Window(...params) as unknown as globalThis.Window & typeof globalThis;
334
+ const layer = DomRenderTemplate.using(window.document);
335
+ return [window, layer] as const;
336
+ }
337
+
338
+ const TYPED_NODE_END = (i: number) => `<!--/n_${i}-->`;