@typed/template 0.13.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 -223
  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 -383
  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 -242
  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 -66
  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 -341
  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 -77
  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 -240
  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 -43
  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 -336
  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 -126
  420. package/src/ElementSource.ts +0 -432
  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 -71
  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,134 @@
1
+ import { isOption, match } from "effect/Option";
2
+ import { hasProperty, isNullish } from "effect/Predicate";
3
+ import { isHtmlRenderEvent } from "../RenderEvent.js";
4
+ export function escape(s) {
5
+ switch (typeof s) {
6
+ case "string":
7
+ case "number":
8
+ case "boolean":
9
+ case "bigint":
10
+ return escapeHtml(String(s));
11
+ case "object": {
12
+ if (isNullish(s)) {
13
+ return "";
14
+ }
15
+ else if (Array.isArray(s)) {
16
+ return s.map(escape).join("");
17
+ }
18
+ else if (s instanceof Date) {
19
+ return escapeHtml(s.toISOString());
20
+ }
21
+ else if (s instanceof RegExp) {
22
+ return escapeHtml(s.toString());
23
+ }
24
+ else {
25
+ return escapeHtml(JSON.stringify(s));
26
+ }
27
+ }
28
+ default:
29
+ return escapeHtml(JSON.stringify(s));
30
+ }
31
+ }
32
+ export function unescape(s) {
33
+ const unescaped = unescapeHtml(s);
34
+ const couldBeJson = unescaped[0] === "[" || unescaped === "{";
35
+ if (couldBeJson) {
36
+ try {
37
+ return JSON.parse(unescaped);
38
+ }
39
+ catch {
40
+ return unescaped;
41
+ }
42
+ }
43
+ else {
44
+ return unescaped;
45
+ }
46
+ }
47
+ const unescapeHtmlRules = [
48
+ [/"/g, '"'],
49
+ [/'/g, "'"],
50
+ [/:/g, ":"],
51
+ [/&lt;/g, "<"],
52
+ [/&gt;/g, ">"],
53
+ [/&amp;/g, "&"],
54
+ ];
55
+ const matchHtmlRegExp = /["'&<>]/;
56
+ export function escapeHtml(str) {
57
+ if (str.length === 0) {
58
+ return str;
59
+ }
60
+ const match = matchHtmlRegExp.exec(str);
61
+ if (!match) {
62
+ return str;
63
+ }
64
+ let escape;
65
+ let html = "";
66
+ let index = 0;
67
+ let lastIndex = 0;
68
+ for (index = match.index; index < str.length; index++) {
69
+ switch (str.charCodeAt(index)) {
70
+ case 34: // "
71
+ escape = "&quot;";
72
+ break;
73
+ case 38: // &
74
+ escape = "&amp;";
75
+ break;
76
+ case 39: // '
77
+ escape = "&#39;";
78
+ break;
79
+ case 60: // <
80
+ escape = "&lt;";
81
+ break;
82
+ case 62: // >
83
+ escape = "&gt;";
84
+ break;
85
+ default:
86
+ continue;
87
+ }
88
+ if (lastIndex !== index) {
89
+ html += str.substring(lastIndex, index);
90
+ }
91
+ lastIndex = index + 1;
92
+ html += escape;
93
+ }
94
+ return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
95
+ }
96
+ export function unescapeHtml(html) {
97
+ for (const [from, to] of unescapeHtmlRules) {
98
+ html = html.replace(from, to);
99
+ }
100
+ return html;
101
+ }
102
+ export function renderToString(value, delimiter = "") {
103
+ if (Array.isArray(value)) {
104
+ return value.map((v) => renderToString(v, delimiter)).join(delimiter);
105
+ }
106
+ if (isNullish(value)) {
107
+ return "";
108
+ }
109
+ if (isOption(value)) {
110
+ return match(value, {
111
+ onNone: () => "",
112
+ onSome: (v) => renderToString(v, delimiter),
113
+ });
114
+ }
115
+ if (isHtmlRenderEvent(value)) {
116
+ return value.html;
117
+ }
118
+ if (typeof value === "string") {
119
+ return value;
120
+ }
121
+ if (hasProperty(value, "toString") && typeof value.toString === "function") {
122
+ const s = value.toString();
123
+ if (s !== "[object Object]") {
124
+ return s;
125
+ }
126
+ }
127
+ if (typeof value === "object") {
128
+ return JSON.stringify(value);
129
+ }
130
+ return String(value);
131
+ }
132
+ export function renderToEscapedString(value, delimiter) {
133
+ return escape(renderToString(value, delimiter));
134
+ }
@@ -1,44 +1,47 @@
1
1
  import { type Inspectable, NodeInspectSymbol } from "effect/Inspectable";
2
+ import type { HydrateContext } from "../HydrateContext.js";
3
+ export declare function getRendered(where: HydrationNode): Node | Node[];
4
+ export declare function findHydrationTemplateByHash(hydrateCtx: HydrateContext, hash: string): HydrationTemplate | null;
2
5
  export declare function getHydrationRoot(root: HTMLElement): HydrationElement;
3
6
  export declare class HydrationElement implements Inspectable {
7
+ readonly _tag: "element";
4
8
  readonly parentNode: Element;
5
9
  readonly childNodes: Array<HydrationNode>;
6
- readonly _tag: "element";
7
10
  constructor(parentNode: Element, childNodes: Array<HydrationNode>);
8
11
  toJSON(): unknown;
9
12
  [NodeInspectSymbol](): string;
10
13
  }
11
14
  export declare class HydrationTemplate implements Inspectable {
15
+ readonly _tag: "template";
12
16
  readonly hash: string;
13
17
  readonly childNodes: Array<HydrationNode>;
14
- readonly _tag: "template";
15
18
  constructor(hash: string, childNodes: Array<HydrationNode>);
16
19
  toJSON(): unknown;
17
20
  [NodeInspectSymbol](): string;
18
21
  }
19
22
  export type HydrationNode = HydrationElement | HydrationTemplate | HydrationMany | HydrationHole | HydrationLiteral;
20
23
  export declare class HydrationMany implements Inspectable {
24
+ readonly _tag: "many";
21
25
  readonly key: string;
22
26
  readonly comment: Comment;
23
27
  readonly childNodes: Array<HydrationNode>;
24
- readonly _tag: "many";
25
28
  constructor(key: string, comment: Comment, childNodes: Array<HydrationNode>);
26
29
  toJSON(): unknown;
27
30
  [NodeInspectSymbol](): string;
28
31
  }
29
32
  export declare class HydrationHole implements Inspectable {
33
+ readonly _tag: "hole";
30
34
  readonly index: number;
31
35
  readonly startComment: Comment;
32
36
  readonly endComment: Comment;
33
37
  readonly childNodes: Array<HydrationNode>;
34
- readonly _tag: "hole";
35
38
  constructor(index: number, startComment: Comment, endComment: Comment, childNodes: Array<HydrationNode>);
36
39
  toJSON(): unknown;
37
40
  [NodeInspectSymbol](): string;
38
41
  }
39
42
  export declare class HydrationLiteral implements Inspectable {
40
- readonly node: Node;
41
43
  readonly _tag: "literal";
44
+ readonly node: Node;
42
45
  constructor(node: Node);
43
46
  toJSON(): unknown;
44
47
  [NodeInspectSymbol](): string;
@@ -50,5 +53,5 @@ export declare function findHydrationHole(nodes: Array<HydrationNode>, index: nu
50
53
  export declare function findHydrationNode(node: HydrationNode, index: number, manyKey?: string): HydrationHole | HydrationMany | null;
51
54
  export declare function getNodes(node: HydrationNode): Array<Node>;
52
55
  export declare function getNodesExcludingStartComment(node: HydrationNode): Array<Node>;
53
- export declare function getPreviousNodes(hole: HydrationHole | HydrationMany): Array<Node>;
54
- //# sourceMappingURL=hydration-template.d.ts.map
56
+ export declare const findHydratePath: (node: HydrationNode, path: ReadonlyArray<number>) => Node;
57
+ //# sourceMappingURL=hydration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/internal/hydration.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,28 @@
1
- import { isComment, isElement, toHtml } from "@typed/wire";
2
1
  import { NodeInspectSymbol } from "effect/Inspectable";
3
- import { CouldNotFindRootElement, CouldNotFindTemplateEndError } from "../errors";
4
- const TYPED_TEMPLATE_PREFIX = `typed-`;
5
- const TYPED_TEMPLATE_END_PREFIX = `/typed-`;
6
- const MANY_PREFIX = `many`;
7
- const HOLE_PREFIX = `hole`;
2
+ import { CouldNotFindRootElement, CouldNotFindTemplateEndError } from "../errors.js";
3
+ import { isComment, isElement, toHtml } from "../Wire.js";
4
+ const TYPED_TEMPLATE_PREFIX = `t_`;
5
+ const TYPED_TEMPLATE_END_PREFIX = `/t_`;
6
+ const MANY_PREFIX = `/m_`;
7
+ const HOLE_PREFIX = `n_`;
8
+ export function getRendered(where) {
9
+ const nodes = getNodes(where);
10
+ if (nodes.length === 1)
11
+ return nodes[0];
12
+ return nodes;
13
+ }
14
+ export function findHydrationTemplateByHash(hydrateCtx, hash) {
15
+ // If there is not a manyKey, we can just find the template by its hash
16
+ if (hydrateCtx.manyKey === undefined) {
17
+ return findHydrationTemplate(getChildNodes(hydrateCtx.where), hash);
18
+ }
19
+ // If there is a manyKey, we need to find the many node first
20
+ const many = findHydrationMany(getChildNodes(hydrateCtx.where), hydrateCtx.manyKey);
21
+ if (many === null)
22
+ return null;
23
+ // Then we can find the template by its hash
24
+ return findHydrationTemplate(getChildNodes(many), hash);
25
+ }
8
26
  export function getHydrationRoot(root) {
9
27
  const childNodes = Array.from(root.childNodes);
10
28
  let hydrationNodes = getHydrationNodes(childNodes);
@@ -61,7 +79,7 @@ function getTemplateEndIndex(nodes, start, hash) {
61
79
  throw new CouldNotFindTemplateEndError(hash);
62
80
  }
63
81
  function getHoleEndIndex(nodes, start, index) {
64
- const endHash = `/hole${index}`;
82
+ const endHash = `/${HOLE_PREFIX}${index}`;
65
83
  let templateDepth = 0;
66
84
  for (let i = start; i < nodes.length; ++i) {
67
85
  const node = nodes[i];
@@ -77,9 +95,9 @@ function getHoleEndIndex(nodes, start, index) {
77
95
  throw new CouldNotFindRootElement(index);
78
96
  }
79
97
  export class HydrationElement {
98
+ _tag = "element";
80
99
  parentNode;
81
100
  childNodes;
82
- _tag = "element";
83
101
  constructor(parentNode, childNodes) {
84
102
  this.parentNode = parentNode;
85
103
  this.childNodes = childNodes;
@@ -88,7 +106,7 @@ export class HydrationElement {
88
106
  return {
89
107
  _tag: this._tag,
90
108
  parentNode: toHtml(this.parentNode),
91
- childNodes: this.childNodes.map((n) => n.toJSON())
109
+ childNodes: this.childNodes.map((n) => n.toJSON()),
92
110
  };
93
111
  }
94
112
  [NodeInspectSymbol]() {
@@ -96,9 +114,9 @@ export class HydrationElement {
96
114
  }
97
115
  }
98
116
  export class HydrationTemplate {
117
+ _tag = "template";
99
118
  hash;
100
119
  childNodes;
101
- _tag = "template";
102
120
  constructor(hash, childNodes) {
103
121
  this.hash = hash;
104
122
  this.childNodes = childNodes;
@@ -107,7 +125,7 @@ export class HydrationTemplate {
107
125
  return {
108
126
  _tag: this._tag,
109
127
  hash: this.hash,
110
- childNodes: this.childNodes.map((n) => n.toJSON())
128
+ childNodes: this.childNodes.map((n) => n.toJSON()),
111
129
  };
112
130
  }
113
131
  [NodeInspectSymbol]() {
@@ -115,10 +133,10 @@ export class HydrationTemplate {
115
133
  }
116
134
  }
117
135
  export class HydrationMany {
136
+ _tag = "many";
118
137
  key;
119
138
  comment;
120
139
  childNodes;
121
- _tag = "many";
122
140
  constructor(key, comment, childNodes) {
123
141
  this.key = key;
124
142
  this.comment = comment;
@@ -128,7 +146,7 @@ export class HydrationMany {
128
146
  return {
129
147
  _tag: this._tag,
130
148
  key: this.key,
131
- childNodes: this.childNodes.map((n) => n.toJSON())
149
+ childNodes: this.childNodes.map((n) => n.toJSON()),
132
150
  };
133
151
  }
134
152
  [NodeInspectSymbol]() {
@@ -136,11 +154,11 @@ export class HydrationMany {
136
154
  }
137
155
  }
138
156
  export class HydrationHole {
157
+ _tag = "hole";
139
158
  index;
140
159
  startComment;
141
160
  endComment;
142
161
  childNodes;
143
- _tag = "hole";
144
162
  constructor(index, startComment, endComment, childNodes) {
145
163
  this.index = index;
146
164
  this.startComment = startComment;
@@ -151,7 +169,7 @@ export class HydrationHole {
151
169
  return {
152
170
  _tag: this._tag,
153
171
  index: this.index,
154
- childNodes: this.childNodes.map((n) => n.toJSON())
172
+ childNodes: this.childNodes.map((n) => n.toJSON()),
155
173
  };
156
174
  }
157
175
  [NodeInspectSymbol]() {
@@ -159,15 +177,15 @@ export class HydrationHole {
159
177
  }
160
178
  }
161
179
  export class HydrationLiteral {
162
- node;
163
180
  _tag = "literal";
181
+ node;
164
182
  constructor(node) {
165
183
  this.node = node;
166
184
  }
167
185
  toJSON() {
168
186
  return {
169
187
  _tag: this._tag,
170
- node: toHtml(this.node)
188
+ node: toHtml(this.node),
171
189
  };
172
190
  }
173
191
  [NodeInspectSymbol]() {
@@ -186,14 +204,18 @@ export function getChildNodes(node) {
186
204
  }
187
205
  }
188
206
  export function findHydrationTemplate(nodes, templateHash) {
207
+ let index = 0;
189
208
  const toProcess = [...nodes];
190
- while (toProcess.length > 0) {
191
- const node = toProcess.shift();
209
+ while (index < toProcess.length) {
210
+ const node = toProcess[index++];
192
211
  if (node._tag === "template" && node.hash === templateHash) {
193
212
  return node;
194
213
  }
195
214
  else if (node._tag === "element") {
196
- toProcess.push(...node.childNodes);
215
+ const childNodes = node.childNodes;
216
+ for (let i = 0; i < childNodes.length; i++) {
217
+ toProcess.push(childNodes[i]);
218
+ }
197
219
  }
198
220
  }
199
221
  return null;
@@ -256,10 +278,42 @@ export function getNodesExcludingStartComment(node) {
256
278
  return node.childNodes.flatMap(getNodesExcludingStartComment);
257
279
  }
258
280
  }
259
- export function getPreviousNodes(hole) {
260
- const predicate = hole._tag === "hole"
261
- ? (n) => n !== hole.startComment && n !== hole.startComment
262
- : (n) => n !== hole.comment;
263
- return hole.childNodes.flatMap(getNodes).filter(predicate);
281
+ export const findHydratePath = (node, path) => {
282
+ if (path.length === 0) {
283
+ return getNodesExcludingStartComment(node)[0];
284
+ }
285
+ // Get initial node without creating full array if possible
286
+ let current;
287
+ const firstIndex = path[0];
288
+ if (node._tag === "element") {
289
+ current = node.parentNode;
290
+ }
291
+ else if (node._tag === "literal") {
292
+ current = node.node;
293
+ }
294
+ else {
295
+ // For holes, templates, many - need to get nodes array
296
+ const nodes = getNodesExcludingStartComment(node);
297
+ current = nodes[firstIndex];
298
+ }
299
+ // Traverse remaining path indices
300
+ for (let i = 1; i < path.length; i++) {
301
+ const index = path[i];
302
+ // Use secondary index to skip start comments without creating intermediate arrays
303
+ let targetIndex = 0;
304
+ for (let j = 0; j < current.childNodes.length; j++) {
305
+ const child = current.childNodes[j];
306
+ if (isNotStartComment(child)) {
307
+ if (targetIndex === index) {
308
+ current = child;
309
+ break;
310
+ }
311
+ targetIndex++;
312
+ }
313
+ }
314
+ }
315
+ return current;
316
+ };
317
+ function isNotStartComment(node) {
318
+ return !isComment(node) || !node.data.startsWith("n_");
264
319
  }
265
- //# sourceMappingURL=hydration-template.js.map
@@ -0,0 +1,2 @@
1
+ export declare function keyToPartType(key: string): readonly ["data"] | readonly ["properties"] | readonly ["ref"] | readonly ["class"] | readonly ["boolean", string] | readonly ["property", string] | readonly ["event", string] | readonly ["attr", string];
2
+ //# sourceMappingURL=keyToPartType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyToPartType.d.ts","sourceRoot":"","sources":["../../src/internal/keyToPartType.ts"],"names":[],"mappings":"AAoEA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,+MA4CxC"}
@@ -0,0 +1,110 @@
1
+ function getCodePoints(str) {
2
+ return Array.from(str, (c) => c.codePointAt(0));
3
+ }
4
+ // Pre-computed character codes for fast comparisons
5
+ const CHAR_CODES = {
6
+ QUESTION: "?".codePointAt(0),
7
+ DOT: ".".codePointAt(0),
8
+ AT: "@".codePointAt(0),
9
+ LOWERCASE_O: "o".codePointAt(0),
10
+ LOWERCASE_N: "n".codePointAt(0),
11
+ UPPERCASE_A: "A".codePointAt(0),
12
+ UPPERCASE_Z: "Z".codePointAt(0),
13
+ CASE_OFFSET: "a".codePointAt(0) - "A".codePointAt(0),
14
+ };
15
+ // Pre-computed string patterns for exact matches
16
+ const PATTERNS = {
17
+ REF: getCodePoints("ref"),
18
+ CLASS: getCodePoints("class"),
19
+ CLASSNAME: getCodePoints("classname"),
20
+ DATA: getCodePoints(".data"),
21
+ PROPS: getCodePoints(".props"),
22
+ PROPERTIES: getCodePoints(".properties"),
23
+ };
24
+ const NAMES = {
25
+ ATTR: "attr",
26
+ BOOLEAN: "boolean",
27
+ REF: "ref",
28
+ CLASS: "class",
29
+ DATA: "data",
30
+ EVENT: "event",
31
+ PROPERTY: "property",
32
+ PROPERTIES: "properties",
33
+ };
34
+ const NAME_TUPLE = {
35
+ DATA: [NAMES.DATA],
36
+ PROPERTIES: [NAMES.PROPERTIES],
37
+ REF: [NAMES.REF],
38
+ CLASS: [NAMES.CLASS],
39
+ BOOLEAN: (key) => [NAMES.BOOLEAN, key],
40
+ PROPERTY: (key) => [NAMES.PROPERTY, key],
41
+ EVENT: (key) => [NAMES.EVENT, fastUncapitalize(key)],
42
+ ATTR: (key) => [NAMES.ATTR, key],
43
+ };
44
+ // Fast uncapitalize using pre-computed character codes
45
+ function fastUncapitalize(str) {
46
+ if (str.length === 0)
47
+ return str;
48
+ const first = str.codePointAt(0);
49
+ if (first >= CHAR_CODES.UPPERCASE_A && first <= CHAR_CODES.UPPERCASE_Z) {
50
+ return String.fromCodePoint(first + CHAR_CODES.CASE_OFFSET) + str.slice(1);
51
+ }
52
+ return str;
53
+ }
54
+ // Fast string comparison using pre-computed patterns
55
+ function matchesPattern(str, pattern) {
56
+ for (let i = 0; i < pattern.length; i++) {
57
+ if (str.codePointAt(i) !== pattern[i])
58
+ return false;
59
+ }
60
+ return true;
61
+ }
62
+ export function keyToPartType(key) {
63
+ const len = key.length;
64
+ // Check for static keys
65
+ switch (len) {
66
+ case 3: {
67
+ if (matchesPattern(key, PATTERNS.REF))
68
+ return NAME_TUPLE.REF;
69
+ break;
70
+ }
71
+ case 5: {
72
+ if (matchesPattern(key, PATTERNS.DATA))
73
+ return NAME_TUPLE.DATA;
74
+ if (matchesPattern(key, PATTERNS.CLASS))
75
+ return NAME_TUPLE.CLASS;
76
+ break;
77
+ }
78
+ case 6: {
79
+ if (matchesPattern(key, PATTERNS.PROPS))
80
+ return NAME_TUPLE.PROPERTIES;
81
+ break;
82
+ }
83
+ case 9: {
84
+ if (matchesPattern(key, PATTERNS.CLASSNAME))
85
+ return NAME_TUPLE.CLASS;
86
+ break;
87
+ }
88
+ case 11: {
89
+ if (matchesPattern(key, PATTERNS.PROPERTIES))
90
+ return NAME_TUPLE.PROPERTIES;
91
+ }
92
+ }
93
+ // Check for special prefixes
94
+ const first = key.codePointAt(0);
95
+ switch (first) {
96
+ case CHAR_CODES.QUESTION:
97
+ return NAME_TUPLE.BOOLEAN(key.slice(1));
98
+ case CHAR_CODES.DOT:
99
+ return NAME_TUPLE.PROPERTY(key.slice(1));
100
+ case CHAR_CODES.AT:
101
+ return NAME_TUPLE.EVENT(fastUncapitalize(key.slice(1)));
102
+ case CHAR_CODES.LOWERCASE_O: {
103
+ if (key.codePointAt(1) === CHAR_CODES.LOWERCASE_N)
104
+ return NAME_TUPLE.EVENT(fastUncapitalize(key.slice(2)));
105
+ return NAME_TUPLE.ATTR(key);
106
+ }
107
+ default:
108
+ return NAME_TUPLE.ATTR(key);
109
+ }
110
+ }
@@ -0,0 +1,17 @@
1
+ export declare const PART_REGEX: RegExp;
2
+ export declare const STRICT_PART_REGEX: RegExp;
3
+ export declare const PART_STRING: (i: number) => string;
4
+ export declare const TEMPLATE_START_COMMENT: (hash: string) => string;
5
+ export declare const TEMPLATE_END_COMMENT: (hash: string) => string;
6
+ export declare const TEXT_START = "<!--txt-->";
7
+ export declare const TYPED_NODE_START: (i: number) => string;
8
+ export declare const TYPED_NODE_END: (i: number) => string;
9
+ export declare const TYPED_COMMENT_PART: (i: number) => string;
10
+ export declare const isTemplateStartComment: (comment: {
11
+ nodeValue: string;
12
+ }) => boolean;
13
+ export declare const isTemplateEndComment: (comment: {
14
+ nodeValue: string;
15
+ }) => boolean;
16
+ export declare const stripTypedTemplateComments: (html: string) => string;
17
+ //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/internal/meta.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,QAAqB,CAAC;AAC7C,eAAO,MAAM,iBAAiB,QAAqB,CAAC;AACpD,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,WAAe,CAAC;AAErD,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,WAAuB,CAAC;AAC3E,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,WAAwB,CAAC;AAE1E,eAAO,MAAM,UAAU,eAAe,CAAC;AAEvC,eAAO,MAAM,gBAAgB,GAAI,GAAG,MAAM,WAAoB,CAAC;AAC/D,eAAO,MAAM,cAAc,GAAI,GAAG,MAAM,WAAqB,CAAC;AAE9D,eAAO,MAAM,kBAAkB,GAAI,GAAG,MAAM,WAAoB,CAAC;AAKjE,eAAO,MAAM,sBAAsB,GAAI,SAAS;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,YACb,CAAC;AAEzD,eAAO,MAAM,oBAAoB,GAAI,SAAS;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,YACb,CAAC;AAEvD,eAAO,MAAM,0BAA0B,GAAI,MAAM,MAAM,WACqC,CAAC"}
@@ -0,0 +1,14 @@
1
+ export const PART_REGEX = /(\{\{(\d+)\}\})/g;
2
+ export const STRICT_PART_REGEX = /^(\{\{(\d+)\}\})/;
3
+ export const PART_STRING = (i) => `{{${i}}}`;
4
+ export const TEMPLATE_START_COMMENT = (hash) => `<!--t_${hash}-->`;
5
+ export const TEMPLATE_END_COMMENT = (hash) => `<!--/t_${hash}-->`;
6
+ export const TEXT_START = "<!--txt-->";
7
+ export const TYPED_NODE_START = (i) => `<!--n_${i}-->`;
8
+ export const TYPED_NODE_END = (i) => `<!--/n_${i}-->`;
9
+ export const TYPED_COMMENT_PART = (i) => `<!--c_${i}-->`;
10
+ const typedTemplateStartCommentRegex = /<!--[t|n|txt]_(.*?)-->/g;
11
+ const typedTemplateEndCommentRegex = /<!--\/[t|n|txt]_(.*?)-->/g;
12
+ export const isTemplateStartComment = (comment) => typedTemplateStartCommentRegex.test(comment.nodeValue);
13
+ export const isTemplateEndComment = (comment) => typedTemplateEndCommentRegex.test(comment.nodeValue);
14
+ export const stripTypedTemplateComments = (html) => html.replace(typedTemplateStartCommentRegex, "").replace(typedTemplateEndCommentRegex, "");
@@ -0,0 +1,4 @@
1
+ import { Fx } from "@typed/fx";
2
+ import type { HtmlRenderEvent } from "../RenderEvent.js";
3
+ export declare function takeOneIfNotRenderEvent<A, E, R>(fx: Fx.Fx<A, E, R>): Fx.Fx<A | HtmlRenderEvent, E, R>;
4
+ //# sourceMappingURL=takeOneIfNotRenderEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"takeOneIfNotRenderEvent.d.ts","sourceRoot":"","sources":["../../src/internal/takeOneIfNotRenderEvent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAQ,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7C,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GACjB,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC,CAWlC"}
@@ -0,0 +1,10 @@
1
+ import * as Effect from "effect/Effect";
2
+ import { Fx, Sink } from "@typed/fx";
3
+ import { isHtmlRenderEvent } from "../RenderEvent.js";
4
+ export function takeOneIfNotRenderEvent(fx) {
5
+ return Fx.make((sink) => Sink.withEarlyExit(sink, (sink) => fx.run(Sink.make(sink.onFailure, (event) => {
6
+ if (isHtmlRenderEvent(event) && !event.last)
7
+ return sink.onSuccess(event);
8
+ return Effect.flatMap(sink.onSuccess(event), () => sink.earlyExit);
9
+ }))));
10
+ }
@@ -0,0 +1,2 @@
1
+ export declare function templateHash(strings: ReadonlyArray<string>): string;
2
+ //# sourceMappingURL=templateHash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateHash.d.ts","sourceRoot":"","sources":["../../src/internal/templateHash.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,UAa1D"}
@@ -0,0 +1,14 @@
1
+ const digestSize = 2;
2
+ const multiplier = 33;
3
+ const fill = 5381;
4
+ export function templateHash(strings) {
5
+ const hashes = new Uint32Array(digestSize).fill(fill);
6
+ for (let i = 0; i < strings.length; i++) {
7
+ const string = strings[i];
8
+ for (let j = 0; j < string.length; j++) {
9
+ const key = j % digestSize;
10
+ hashes[key] = hashes[key] * multiplier + string.charCodeAt(j);
11
+ }
12
+ }
13
+ return btoa(String.fromCharCode(...new Uint8Array(hashes.buffer)));
14
+ }