@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,297 @@
1
+ import { constVoid } from "effect/Function";
2
+ export const RenderQueueTypeId = "@typed/template/RenderQueue";
3
+ /**
4
+ * An abstract base class for managing the execution of rendering tasks.
5
+ * It allows prioritizing updates and scheduling them using different strategies
6
+ * (e.g., `requestAnimationFrame`, `requestIdleCallback`, `setTimeout`, or synchronous execution).
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { MixedRenderQueue, RenderPriority } from "@typed/template/RenderQueue"
11
+ *
12
+ * const queue = new MixedRenderQueue()
13
+ *
14
+ * // Add a high-priority synchronous task
15
+ * queue.add("task1", () => console.log("High priority"), () => {}, RenderPriority.Sync)
16
+ *
17
+ * // Add a medium-priority RAF task
18
+ * queue.add("task2", () => console.log("Medium priority"), () => {}, RenderPriority.Raf(5))
19
+ *
20
+ * // Add a low-priority idle task
21
+ * queue.add("task3", () => console.log("Low priority"), () => {}, RenderPriority.Idle(1))
22
+ * ```
23
+ *
24
+ * @since 1.0.0
25
+ * @category models
26
+ */
27
+ export class RenderQueue {
28
+ buckets = [];
29
+ scheduled = undefined;
30
+ [RenderQueueTypeId] = RenderQueueTypeId;
31
+ /**
32
+ * Adds a task to the render queue.
33
+ *
34
+ * @param key - A unique key to identify the task (used for deduplication/cancellation).
35
+ * @param task - The function to execute.
36
+ * @param dispose - A cleanup function to run after the task is executed.
37
+ * @param priority - The priority of the task. Higher priority tasks may run sooner depending on the implementation.
38
+ * @returns A Disposable that can be used to cancel the task.
39
+ */
40
+ add = (key, task, dispose, priority) => {
41
+ insert(this.buckets, priority, key, { task, dispose }, (entry) => entry.dispose());
42
+ this.scheduleNext();
43
+ return disposable(() => remove(this.buckets, priority, key));
44
+ };
45
+ [Symbol.dispose] = () => {
46
+ if (this.scheduled) {
47
+ dispose(this.scheduled);
48
+ this.scheduled = undefined;
49
+ }
50
+ this.buckets.length = 0;
51
+ };
52
+ runTasks(deadline) {
53
+ this.scheduled = undefined;
54
+ while (shouldContinue(deadline) && this.buckets.length > 0) {
55
+ const [_priority, map] = this.buckets.shift();
56
+ for (const { dispose, task } of map.values()) {
57
+ task();
58
+ dispose();
59
+ }
60
+ }
61
+ this.scheduleNext();
62
+ }
63
+ scheduleNext() {
64
+ if (this.buckets.length === 0) {
65
+ dispose(this);
66
+ return;
67
+ }
68
+ if (!this.scheduled) {
69
+ this.scheduled = this.schedule((deadline) => this.runTasks(deadline));
70
+ }
71
+ }
72
+ }
73
+ // 16ms to match 60fps
74
+ const DEFAULT_DURATION_ALLOWED = 16;
75
+ const SYNC_DEADLINE = { timeRemaining: () => Infinity, didTimeout: false };
76
+ /**
77
+ * A RenderQueue that executes tasks synchronously and immediately.
78
+ *
79
+ * @example
80
+ * ```ts
81
+ * import { SyncRenderQueue, RenderPriority } from "@typed/template/RenderQueue"
82
+ *
83
+ * const queue = new SyncRenderQueue()
84
+ * queue.add("task", () => console.log("Immediate"), () => {}, RenderPriority.Sync)
85
+ * ```
86
+ *
87
+ * @since 1.0.0
88
+ * @category models
89
+ */
90
+ export class SyncRenderQueue extends RenderQueue {
91
+ schedule(task) {
92
+ task(SYNC_DEADLINE);
93
+ return disposable(constVoid);
94
+ }
95
+ }
96
+ /**
97
+ * A RenderQueue that schedules tasks using `setTimeout(..., 0)`.
98
+ */
99
+ export class SetTimeoutRenderQueue extends RenderQueue {
100
+ schedule(task) {
101
+ const id = setTimeout(() => task(idleDealineFromTime(performance.now(), DEFAULT_DURATION_ALLOWED)), 0);
102
+ return disposable(() => clearTimeout(id));
103
+ }
104
+ }
105
+ /**
106
+ * A RenderQueue that schedules tasks using `requestAnimationFrame`.
107
+ * Good for visual updates that should happen before the next repaint.
108
+ *
109
+ * @example
110
+ * ```ts
111
+ * import { RequestAnimationFrameRenderQueue, RenderPriority } from "@typed/template/RenderQueue"
112
+ *
113
+ * const queue = new RequestAnimationFrameRenderQueue(16) // 16ms budget
114
+ * queue.add("update", () => updateDOM(), () => {}, RenderPriority.Raf(5))
115
+ * ```
116
+ *
117
+ * @since 1.0.0
118
+ * @category models
119
+ */
120
+ export class RequestAnimationFrameRenderQueue extends RenderQueue {
121
+ durationAllowed;
122
+ constructor(durationAllowed = DEFAULT_DURATION_ALLOWED) {
123
+ super();
124
+ this.durationAllowed = durationAllowed;
125
+ }
126
+ schedule(task) {
127
+ const id = requestAnimationFrame((time) => task(idleDealineFromTime(time, this.durationAllowed)));
128
+ return disposable(() => cancelAnimationFrame(id));
129
+ }
130
+ }
131
+ /**
132
+ * A RenderQueue that schedules tasks using `requestIdleCallback`.
133
+ * Good for low-priority background work.
134
+ */
135
+ export class RequestIdleCallbackRenderQueue extends RenderQueue {
136
+ schedule(task) {
137
+ const id = requestIdleCallback(task);
138
+ return disposable(() => cancelIdleCallback(id));
139
+ }
140
+ }
141
+ const NONE = disposable(constVoid);
142
+ /**
143
+ * A composite RenderQueue that directs tasks to different queues based on their priority.
144
+ * - High priority: Sync
145
+ * - Medium priority: RAF (or setTimeout fallback)
146
+ * - Low priority: IdleCallback (or setTimeout fallback)
147
+ *
148
+ * @example
149
+ * ```ts
150
+ * import { MixedRenderQueue, RenderPriority } from "@typed/template/RenderQueue"
151
+ *
152
+ * const queue = new MixedRenderQueue()
153
+ *
154
+ * // Tasks are automatically routed to the appropriate queue
155
+ * queue.add("sync", () => {}, () => {}, RenderPriority.Sync)
156
+ * queue.add("raf", () => {}, () => {}, RenderPriority.Raf(5))
157
+ * queue.add("idle", () => {}, () => {}, RenderPriority.Idle(1))
158
+ * ```
159
+ *
160
+ * @since 1.0.0
161
+ * @category models
162
+ */
163
+ export class MixedRenderQueue extends RenderQueue {
164
+ high;
165
+ mid;
166
+ low;
167
+ constructor(durationAllowed = DEFAULT_DURATION_ALLOWED) {
168
+ super();
169
+ this.high = new SyncRenderQueue();
170
+ this.mid =
171
+ typeof requestAnimationFrame === "function"
172
+ ? new RequestAnimationFrameRenderQueue(durationAllowed)
173
+ : new SetTimeoutRenderQueue();
174
+ this.low =
175
+ typeof requestIdleCallback === "function"
176
+ ? new RequestIdleCallbackRenderQueue()
177
+ : new SetTimeoutRenderQueue();
178
+ }
179
+ add = (key, task, dispose, priority) => {
180
+ if (priority === RenderPriority.Sync) {
181
+ return this.high.add(key, task, dispose, priority);
182
+ }
183
+ else if (priority > RenderPriority.Sync &&
184
+ priority <= RenderPriority.Raf(RAF_PRIORITY_RANGE)) {
185
+ return this.mid.add(key, task, dispose, priority);
186
+ }
187
+ else {
188
+ return this.low.add(key, task, dispose, priority);
189
+ }
190
+ };
191
+ // We let the other queues handle the actual scheduling
192
+ schedule() {
193
+ return NONE;
194
+ }
195
+ [Symbol.dispose] = () => {
196
+ dispose(this.high);
197
+ dispose(this.mid);
198
+ dispose(this.low);
199
+ };
200
+ }
201
+ const RAF_PRIORITY_RANGE = 10;
202
+ /**
203
+ * Defines priority levels for rendering tasks.
204
+ *
205
+ * @example
206
+ * ```ts
207
+ * import { RenderPriority } from "@typed/template/RenderQueue"
208
+ *
209
+ * // Synchronous execution (highest priority)
210
+ * const syncPriority = RenderPriority.Sync
211
+ *
212
+ * // RequestAnimationFrame priority (0-10)
213
+ * const rafPriority = RenderPriority.Raf(5)
214
+ *
215
+ * // Idle callback priority (lowest priority)
216
+ * const idlePriority = RenderPriority.Idle(1)
217
+ * ```
218
+ *
219
+ * @since 1.0.0
220
+ * @category utilities
221
+ */
222
+ export const RenderPriority = {
223
+ /**
224
+ * Immediate, synchronous execution.
225
+ */
226
+ Sync: -1,
227
+ /**
228
+ * Scheduled via requestAnimationFrame.
229
+ * @param priority - A value between 0 and 10.
230
+ */
231
+ Raf: (priority) => Math.max(0, Math.min(priority, RAF_PRIORITY_RANGE)),
232
+ /**
233
+ * Scheduled via requestIdleCallback.
234
+ */
235
+ Idle: (priority) => RAF_PRIORITY_RANGE + priority,
236
+ };
237
+ function idleDealineFromTime(startTime, durationAllowed) {
238
+ return {
239
+ timeRemaining: () => {
240
+ const elapsed = performance.now() - startTime;
241
+ return Math.max(0, durationAllowed - elapsed);
242
+ },
243
+ didTimeout: false,
244
+ };
245
+ }
246
+ function disposable(f) {
247
+ return {
248
+ [Symbol.dispose]: f,
249
+ };
250
+ }
251
+ function dispose(self) {
252
+ if (self === NONE)
253
+ return;
254
+ self[Symbol.dispose]();
255
+ }
256
+ function shouldContinue(deadline) {
257
+ return deadline.timeRemaining() > 0;
258
+ }
259
+ function insert(buckets, priority, key, task, onRemoved) {
260
+ const index = binarySearch(buckets, priority);
261
+ if (index === buckets.length) {
262
+ buckets.push([priority, new Map([[key, task]])]);
263
+ }
264
+ else {
265
+ const map = buckets[index][1];
266
+ const existing = map.get(key);
267
+ if (existing !== undefined) {
268
+ onRemoved(existing);
269
+ }
270
+ map.set(key, task);
271
+ }
272
+ }
273
+ function remove(buckets, priority, key) {
274
+ const index = binarySearch(buckets, priority);
275
+ if (index === buckets.length) {
276
+ return;
277
+ }
278
+ buckets[index][1].delete(key);
279
+ }
280
+ function binarySearch(buckets, priority) {
281
+ let low = 0;
282
+ let high = buckets.length - 1;
283
+ while (low <= high) {
284
+ const mid = Math.floor((low + high) / 2);
285
+ const [bucketPriority] = buckets[mid];
286
+ if (bucketPriority === priority) {
287
+ return mid;
288
+ }
289
+ else if (bucketPriority < priority) {
290
+ low = mid + 1;
291
+ }
292
+ else {
293
+ high = mid - 1;
294
+ }
295
+ }
296
+ return low;
297
+ }
@@ -0,0 +1,90 @@
1
+ import type { Scope } from "effect/Scope";
2
+ import * as ServiceMap from "effect/ServiceMap";
3
+ import type { Fx } from "@typed/fx/Fx";
4
+ import type { Renderable } from "./Renderable.ts";
5
+ import type { RenderEvent } from "./RenderEvent.ts";
6
+ declare const RenderTemplate_base: ServiceMap.ServiceClass<RenderTemplate, "RenderTemplate", <const Values extends ArrayLike<Renderable.Any>>(template: TemplateStringsArray, values: Values) => Fx<RenderEvent, Renderable.Error<Values[number]>, Renderable.Services<Values[number]> | Scope>>;
7
+ /**
8
+ * A service that defines how templates are rendered.
9
+ *
10
+ * Different implementations can be provided for different environments (e.g., `DomRenderTemplate` for browsers,
11
+ * `HtmlRenderTemplate` for SSR).
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { Effect, Layer } from "effect"
16
+ * import { html } from "@typed/template"
17
+ * import { DomRenderTemplate } from "@typed/template/Render"
18
+ * import { HtmlRenderTemplate } from "@typed/template/Html"
19
+ * import { Fx } from "@typed/fx"
20
+ *
21
+ * // Use DOM rendering for browser
22
+ * const browserApp = Effect.gen(function* () {
23
+ * const template = html`<div>Hello</div>`
24
+ * yield* render(template, document.body).pipe(
25
+ * Fx.provide(DomRenderTemplate)
26
+ * )
27
+ * })
28
+ *
29
+ * // Use HTML rendering for SSR
30
+ * const serverApp = Effect.gen(function* () {
31
+ * const template = html`<div>Hello</div>`
32
+ * const htmlString = yield* renderToHtmlString(template).pipe(
33
+ * Fx.provide(HtmlRenderTemplate)
34
+ * )
35
+ * console.log(htmlString) // "<div>Hello</div>"
36
+ * })
37
+ * ```
38
+ *
39
+ * @since 1.0.0
40
+ * @category models
41
+ */
42
+ export declare class RenderTemplate extends RenderTemplate_base {
43
+ }
44
+ /**
45
+ * The main template tag function.
46
+ *
47
+ * It creates a reactive `Fx` stream that renders the template. The actual rendering logic
48
+ * depends on the provided `RenderTemplate` service.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * import { Effect } from "effect"
53
+ * import { html } from "@typed/template"
54
+ * import { DomRenderTemplate, render } from "@typed/template/Render"
55
+ * import { Fx } from "@typed/fx"
56
+ * import { Layer } from "effect"
57
+ *
58
+ * // Simple static template
59
+ * const staticTemplate = html`<div>Hello, world!</div>`
60
+ *
61
+ * // Template with dynamic values
62
+ * const name = "Alice"
63
+ * const dynamicTemplate = html`<div>Hello, ${name}!</div>`
64
+ *
65
+ * // Template with reactive values
66
+ * const program = Effect.gen(function* () {
67
+ * const count = yield* RefSubject.make(0)
68
+ *
69
+ * const template = html`<div>
70
+ * <p>Count: ${count}</p>
71
+ * <button onclick=${RefSubject.increment(count)}>Increment</button>
72
+ * </div>`
73
+ *
74
+ * yield* render(template, document.body).pipe(
75
+ * Fx.drainLayer,
76
+ * Layer.provide(DomRenderTemplate),
77
+ * Layer.launch
78
+ * )
79
+ * })
80
+ * ```
81
+ *
82
+ * @param template - The template strings.
83
+ * @param values - The interpolated values.
84
+ * @returns An `Fx` that emits `RenderEvent`s.
85
+ * @since 1.0.0
86
+ * @category constructors
87
+ */
88
+ export declare function html<const Values extends ReadonlyArray<Renderable.Any> = readonly []>(template: TemplateStringsArray, ...values: Values): Fx<RenderEvent, Renderable.Error<Values[number]>, Renderable.Services<Values[number]> | Scope | RenderTemplate>;
89
+ export {};
90
+ //# sourceMappingURL=RenderTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RenderTemplate.d.ts","sourceRoot":"","sources":["../src/RenderTemplate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;oGAwCzC,MAAM,SAAS,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,YACnC,oBAAoB,UACtB,MAAM,KACb,EAAE,CACH,WAAW,EACX,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAChC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAC5C;AA7CL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,cAAe,SAAQ,mBAYf;CAAG;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,EACnF,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,MAAM,EAAE,MAAM,GAChB,EAAE,CACH,WAAW,EACX,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAChC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,cAAc,CAC7D,CAEA"}
@@ -0,0 +1,87 @@
1
+ import { map } from "effect/Effect";
2
+ import * as ServiceMap from "effect/ServiceMap";
3
+ import { unwrap } from "@typed/fx/Fx";
4
+ /**
5
+ * A service that defines how templates are rendered.
6
+ *
7
+ * Different implementations can be provided for different environments (e.g., `DomRenderTemplate` for browsers,
8
+ * `HtmlRenderTemplate` for SSR).
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { Effect, Layer } from "effect"
13
+ * import { html } from "@typed/template"
14
+ * import { DomRenderTemplate } from "@typed/template/Render"
15
+ * import { HtmlRenderTemplate } from "@typed/template/Html"
16
+ * import { Fx } from "@typed/fx"
17
+ *
18
+ * // Use DOM rendering for browser
19
+ * const browserApp = Effect.gen(function* () {
20
+ * const template = html`<div>Hello</div>`
21
+ * yield* render(template, document.body).pipe(
22
+ * Fx.provide(DomRenderTemplate)
23
+ * )
24
+ * })
25
+ *
26
+ * // Use HTML rendering for SSR
27
+ * const serverApp = Effect.gen(function* () {
28
+ * const template = html`<div>Hello</div>`
29
+ * const htmlString = yield* renderToHtmlString(template).pipe(
30
+ * Fx.provide(HtmlRenderTemplate)
31
+ * )
32
+ * console.log(htmlString) // "<div>Hello</div>"
33
+ * })
34
+ * ```
35
+ *
36
+ * @since 1.0.0
37
+ * @category models
38
+ */
39
+ export class RenderTemplate extends ServiceMap.Service()("RenderTemplate") {
40
+ }
41
+ /**
42
+ * The main template tag function.
43
+ *
44
+ * It creates a reactive `Fx` stream that renders the template. The actual rendering logic
45
+ * depends on the provided `RenderTemplate` service.
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * import { Effect } from "effect"
50
+ * import { html } from "@typed/template"
51
+ * import { DomRenderTemplate, render } from "@typed/template/Render"
52
+ * import { Fx } from "@typed/fx"
53
+ * import { Layer } from "effect"
54
+ *
55
+ * // Simple static template
56
+ * const staticTemplate = html`<div>Hello, world!</div>`
57
+ *
58
+ * // Template with dynamic values
59
+ * const name = "Alice"
60
+ * const dynamicTemplate = html`<div>Hello, ${name}!</div>`
61
+ *
62
+ * // Template with reactive values
63
+ * const program = Effect.gen(function* () {
64
+ * const count = yield* RefSubject.make(0)
65
+ *
66
+ * const template = html`<div>
67
+ * <p>Count: ${count}</p>
68
+ * <button onclick=${RefSubject.increment(count)}>Increment</button>
69
+ * </div>`
70
+ *
71
+ * yield* render(template, document.body).pipe(
72
+ * Fx.drainLayer,
73
+ * Layer.provide(DomRenderTemplate),
74
+ * Layer.launch
75
+ * )
76
+ * })
77
+ * ```
78
+ *
79
+ * @param template - The template strings.
80
+ * @param values - The interpolated values.
81
+ * @returns An `Fx` that emits `RenderEvent`s.
82
+ * @since 1.0.0
83
+ * @category constructors
84
+ */
85
+ export function html(template, ...values) {
86
+ return unwrap(map(RenderTemplate.asEffect(), (render) => render(template, values)));
87
+ }
@@ -0,0 +1,88 @@
1
+ import type * as Effect from "effect/Effect";
2
+ import type * as Stream from "effect/Stream";
3
+ import type { Fx } from "@typed/fx";
4
+ import type { RenderEvent } from "./RenderEvent.js";
5
+ /**
6
+ * Represents any value that can be rendered into a template.
7
+ *
8
+ * This includes:
9
+ * - Primitives (string, number, boolean, null, undefined)
10
+ * - Arrays of Renderables
11
+ * - Effects that produce a Renderable
12
+ * - Streams (Fx or Stream) that emit Renderables
13
+ * - Objects (typically for setting properties or attributes)
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * import { Effect } from "effect"
18
+ * import { html } from "@typed/template"
19
+ * import { Fx } from "@typed/fx"
20
+ * import * as RefSubject from "@typed/fx/RefSubject"
21
+ *
22
+ * // Primitives
23
+ * const primitive = html`<div>${"Hello"}</div>`
24
+ * const number = html`<div>${42}</div>`
25
+ * const boolean = html`<div>${true}</div>`
26
+ *
27
+ * // Effects
28
+ * const effect = html`<div>${Effect.succeed("Async value")}</div>`
29
+ *
30
+ * // Fx streams (reactive)
31
+ * const count = yield* RefSubject.make(0)
32
+ * const reactive = html`<div>Count: ${count}</div>`
33
+ *
34
+ * // Arrays
35
+ * const items = [1, 2, 3]
36
+ * const list = html`<ul>${items.map((n) => html`<li>${n}</li>`)}</ul>`
37
+ *
38
+ * // Objects (for attributes)
39
+ * const withProps = html`<div .data=${{ foo: "bar" }}></div>`
40
+ * ```
41
+ *
42
+ * @since 1.0.0
43
+ * @category models
44
+ */
45
+ export type Renderable<A, E = never, R = never> = A | {
46
+ readonly [key: string]: Renderable<unknown, E, R>;
47
+ } | ReadonlyArray<Renderable<A, E, R>> | Effect.Effect<A, E, R> | Stream.Stream<A, E, R> | Fx.Fx<A, E, R>;
48
+ export declare namespace Renderable {
49
+ /**
50
+ * A type alias for any Renderable value with any error/context.
51
+ */
52
+ type Any = Renderable<any, any, any> | Renderable<any, never, never> | Renderable<never, any, any> | Renderable<never, never, any>;
53
+ /**
54
+ * The basic primitive types that can be rendered directly.
55
+ */
56
+ type Primitive = string | number | boolean | bigint | null | undefined | void | RenderEvent;
57
+ /**
58
+ * Extracts the required services from a Renderable type.
59
+ */
60
+ type Services<T> = Fx.Services<T> | (T extends Stream.Stream<any, any, any> ? Stream.Services<T> : never) | Effect.Services<T>;
61
+ /**
62
+ * Extracts the error type from a Renderable type.
63
+ */
64
+ type Error<T> = Fx.Error<T> | (T extends Stream.Stream<any, any, any> ? Stream.Error<T> : never) | Effect.Error<T>;
65
+ /**
66
+ * Extracts the success type from a Renderable type.
67
+ */
68
+ type Success<T> = Fx.Success<T> | (T extends Stream.Stream<any, any, any> ? Stream.Success<T> : never) | Effect.Success<T>;
69
+ /**
70
+ * Traverse all keys in an object and extract the services from each value. If
71
+ * the value is a function, extract the services from the return type of the function.
72
+ */
73
+ type ServicesFromObject<T> = [
74
+ {
75
+ [K in keyof T]: T[K] extends (...args: Array<any>) => any ? Services<ReturnType<T[K]>> : Services<T[K]>;
76
+ }[keyof T]
77
+ ] extends [infer U] ? U : never;
78
+ /**
79
+ * Traverse all keys in an object and extract the error from each value. If
80
+ * the value is a function, extract the error from the return type of the function.
81
+ */
82
+ type ErrorFromObject<T> = [
83
+ {
84
+ [K in keyof T]: T[K] extends (...args: Array<any>) => any ? Error<ReturnType<T[K]>> : Error<T[K]>;
85
+ }[keyof T]
86
+ ] extends [infer U] ? U : never;
87
+ }
88
+ //# sourceMappingURL=Renderable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Renderable.d.ts","sourceRoot":"","sources":["../src/Renderable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // oxlint-disable typescript/no-redundant-type-constituents
2
+ // oxlint-disable typescript/no-duplicate-type-constituents
3
+ export {};