@askrjs/askr 0.0.52 → 0.0.53

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 (386) hide show
  1. package/README.md +5 -1
  2. package/dist/{runtime/scheduler.js → access-Bg4RJNC8.js} +182 -9
  3. package/dist/actions/index.d.ts +2 -0
  4. package/dist/actions/index.js +103 -0
  5. package/dist/{common/attr-names.js → attr-names-CjhzmHOn.js} +1 -1
  6. package/dist/benchmark.d.ts +6 -2
  7. package/dist/benchmark.js +63 -11
  8. package/dist/boot/index.d.ts +61 -2
  9. package/dist/boot/index.js +1 -203
  10. package/dist/boot-j2KoN6ss.js +647 -0
  11. package/dist/cleanup-COv77su2.js +487 -0
  12. package/dist/component-internal-B3z7GXlD.js +614 -0
  13. package/dist/component-lifecycle-CO4hXlP4.js +357 -0
  14. package/dist/{runtime/component-scope.js → component-scope-CC3cojX9.js} +8 -1
  15. package/dist/component-scope-CvPba6O6.d.ts +12 -0
  16. package/dist/components/index.d.ts +17 -2
  17. package/dist/components/index.js +39 -1
  18. package/dist/compose-ref-Cc_YkUpM.js +92 -0
  19. package/dist/{foundations/utilities/compose-ref.d.ts → compose-ref-Cizq72-x.d.ts} +1 -1
  20. package/dist/control/index.d.ts +1 -3
  21. package/dist/control/index.js +1 -3
  22. package/dist/control-BQvNVfAd.d.ts +436 -0
  23. package/dist/control-BYyLTFyw.js +165 -0
  24. package/dist/control-Bf4Wkdvv.d.ts +9 -0
  25. package/dist/{common/control.js → control-DhFRTIoE.js} +1 -1
  26. package/dist/data/index.d.ts +2 -6
  27. package/dist/data/index.js +4 -5
  28. package/dist/data-DnxnDxD-.js +559 -0
  29. package/dist/{data/data-runtime.js → data-runtime-SJ1BSUvk.js} +32 -31
  30. package/dist/deferred-lKE8uR0z.js +386 -0
  31. package/dist/{runtime/effect.js → effect-BwnIvLah.js} +4 -4
  32. package/dist/fastlane-Dw8SOBr9.js +343 -0
  33. package/dist/for-internal-BKf_Tnv1.js +1563 -0
  34. package/dist/foundations/icon/index.d.ts +68 -2
  35. package/dist/foundations/icon/index.js +85 -1
  36. package/dist/foundations/index.d.ts +2 -5
  37. package/dist/foundations/index.js +2 -5
  38. package/dist/foundations/interactions/index.d.ts +264 -6
  39. package/dist/foundations/interactions/index.js +1 -6
  40. package/dist/foundations/state/index.d.ts +32 -1
  41. package/dist/foundations/state/index.js +78 -1
  42. package/dist/foundations/structures/index.d.ts +2 -7
  43. package/dist/foundations/structures/index.js +2 -7
  44. package/dist/foundations/utilities/index.d.ts +2 -6
  45. package/dist/foundations/utilities/index.js +2 -5
  46. package/dist/fx/index.d.ts +190 -3
  47. package/dist/fx/index.js +454 -4
  48. package/dist/index-31Uoz_NS.d.ts +239 -0
  49. package/dist/index-Bki2rqcr.d.ts +233 -0
  50. package/dist/index-BnU0NPwM.d.ts +101 -0
  51. package/dist/index-D73jgYx1.d.ts +48 -0
  52. package/dist/{runtime/runtime.d.ts → index-R2JJIbM-.d.ts} +31 -8
  53. package/dist/index-SJXJkssx.d.ts +44 -0
  54. package/dist/index.d.ts +8 -13
  55. package/dist/index.js +150 -15
  56. package/dist/interactions-w7gQN4ha.js +280 -0
  57. package/dist/{data/invalidation-listeners.js → invalidation-listeners-Des3AHYs.js} +1 -1
  58. package/dist/{common/props.d.ts → jsx-CP0gmYwJ.d.ts} +17 -5
  59. package/dist/{common/jsx.js → jsx-CUpRxrLH.js} +1 -1
  60. package/dist/jsx-dev-runtime.d.ts +2 -4
  61. package/dist/jsx-dev-runtime.js +7 -5
  62. package/dist/jsx-runtime-92bV2hSa.d.ts +34 -0
  63. package/dist/jsx-runtime-BVVgDSdq.d.ts +1 -0
  64. package/dist/jsx-runtime.d.ts +2 -35
  65. package/dist/jsx-runtime.js +11 -5
  66. package/dist/{runtime/lifecycle-operations.js → lifecycle-operations-D9va7GOU.js} +4 -5
  67. package/dist/navigate-BVDCzOuB.d.ts +34 -0
  68. package/dist/navigate-CmPLSXyw.js +1449 -0
  69. package/dist/{runtime/portal.js → portal-CyU3Ucf2.js} +33 -36
  70. package/dist/query-registry-CQIT4mXr.js +73 -0
  71. package/dist/{common/render-context.js → render-context-Clw3rFiO.js} +14 -6
  72. package/dist/renderer-DzPjeLby.js +6197 -0
  73. package/dist/{runtime/resource-operation.js → resource-operation-CEzfpnDk.js} +118 -15
  74. package/dist/resources/index.d.ts +42 -3
  75. package/dist/resources/index.js +3 -4
  76. package/dist/{common/route-activity.js → route-activity-CNJfpwx-.js} +1 -1
  77. package/dist/route-matching-vJpvLVbX.js +515 -0
  78. package/dist/router/index.d.ts +166 -14
  79. package/dist/router/index.js +150 -12
  80. package/dist/{common/router.d.ts → router-CeYvjj5_.d.ts} +72 -28
  81. package/dist/{common/router-internal.js → router-internal-BC0w1_xk.js} +1 -1
  82. package/dist/{runtime/scheduler.d.ts → scheduler-CmLO4Dfm.d.ts} +1 -3
  83. package/dist/{runtime/selector.js → selector-DafVYzV4.js} +34 -11
  84. package/dist/{runtime/snapshot-source.js → snapshot-source-BB42xgwb.js} +1 -1
  85. package/dist/ssg/index.d.ts +252 -4
  86. package/dist/ssg/index.js +857 -1
  87. package/dist/ssr/index.d.ts +225 -8
  88. package/dist/ssr/index.js +3 -6
  89. package/dist/{common/ssr.js → ssr-CbQO5xd3.js} +1 -1
  90. package/dist/ssr-D3t80Rc0.js +1413 -0
  91. package/dist/{runtime/state.js → state-DPl8lffD.js} +3 -5
  92. package/dist/structures-DUB3HchX.js +221 -0
  93. package/dist/testing/index.d.ts +3 -2
  94. package/dist/testing/index.js +2 -5
  95. package/dist/{jsx/types.d.ts → types-DnQVG4ZY.d.ts} +2 -5
  96. package/dist/{foundations/utilities/use-id.js → utilities-C_CGX4Dz.js} +1 -1
  97. package/dist/{ssr/verify-hydration.js → verify-hydration-io9ahUeq.js} +2 -2
  98. package/dist/{common/vnode.js → vnode-CGMJYPMB.js} +2 -2
  99. package/package.json +12 -7
  100. package/dist/bench/components/benchmark-row.d.ts +0 -20
  101. package/dist/bench/components/benchmark-row.js +0 -40
  102. package/dist/bench/components/benchmark-table.js +0 -23
  103. package/dist/bin/askr-ssg.d.ts +0 -27
  104. package/dist/bin/askr-ssg.js +0 -186
  105. package/dist/boot/hydration.js +0 -139
  106. package/dist/boot/root-lifecycle.d.ts +0 -18
  107. package/dist/boot/root-lifecycle.js +0 -209
  108. package/dist/boot/route-startup.js +0 -54
  109. package/dist/boot/types.d.ts +0 -61
  110. package/dist/common/component.d.ts +0 -18
  111. package/dist/common/control.d.ts +0 -12
  112. package/dist/common/dom-range.d.ts +0 -13
  113. package/dist/common/env.js +0 -41
  114. package/dist/common/error-boundary.d.ts +0 -15
  115. package/dist/common/invariant.js +0 -15
  116. package/dist/common/jsx.d.ts +0 -22
  117. package/dist/common/logger.js +0 -34
  118. package/dist/common/promise.js +0 -6
  119. package/dist/common/ssr-errors.d.ts +0 -10
  120. package/dist/common/ssr-errors.js +0 -14
  121. package/dist/common/ssr.d.ts +0 -41
  122. package/dist/common/vnode.d.ts +0 -21
  123. package/dist/components/error-boundary.d.ts +0 -14
  124. package/dist/components/error-boundary.js +0 -41
  125. package/dist/components/link.d.ts +0 -68
  126. package/dist/components/link.js +0 -74
  127. package/dist/control/case.d.ts +0 -18
  128. package/dist/control/case.js +0 -68
  129. package/dist/control/for.d.ts +0 -23
  130. package/dist/control/for.js +0 -61
  131. package/dist/control/shared.d.ts +0 -8
  132. package/dist/control/shared.js +0 -18
  133. package/dist/control/show.d.ts +0 -14
  134. package/dist/control/show.js +0 -32
  135. package/dist/data/data-runtime.d.ts +0 -27
  136. package/dist/data/invalidation.d.ts +0 -8
  137. package/dist/data/invalidation.js +0 -25
  138. package/dist/data/mutation-cell.d.ts +0 -27
  139. package/dist/data/mutation-cell.js +0 -133
  140. package/dist/data/query-cell.d.ts +0 -47
  141. package/dist/data/query-cell.js +0 -324
  142. package/dist/data/query-key.js +0 -40
  143. package/dist/data/shared.js +0 -20
  144. package/dist/data/testing.js +0 -2
  145. package/dist/data/types.d.ts +0 -160
  146. package/dist/foundations/icon/icon.d.ts +0 -52
  147. package/dist/foundations/icon/icon.js +0 -86
  148. package/dist/foundations/icon/icon.types.d.ts +0 -21
  149. package/dist/foundations/interactions/dismissable.d.ts +0 -71
  150. package/dist/foundations/interactions/dismissable.js +0 -24
  151. package/dist/foundations/interactions/focusable.d.ts +0 -21
  152. package/dist/foundations/interactions/focusable.js +0 -16
  153. package/dist/foundations/interactions/hoverable.d.ts +0 -25
  154. package/dist/foundations/interactions/hoverable.js +0 -13
  155. package/dist/foundations/interactions/interaction-policy.d.ts +0 -49
  156. package/dist/foundations/interactions/interaction-policy.js +0 -120
  157. package/dist/foundations/interactions/pressable.d.ts +0 -60
  158. package/dist/foundations/interactions/pressable.js +0 -49
  159. package/dist/foundations/interactions/roving-focus.d.ts +0 -51
  160. package/dist/foundations/interactions/roving-focus.js +0 -69
  161. package/dist/foundations/state/controllable.d.ts +0 -32
  162. package/dist/foundations/state/controllable.js +0 -80
  163. package/dist/foundations/structures/collection.d.ts +0 -51
  164. package/dist/foundations/structures/collection.js +0 -49
  165. package/dist/foundations/structures/layer.d.ts +0 -80
  166. package/dist/foundations/structures/layer.js +0 -79
  167. package/dist/foundations/structures/layout.d.ts +0 -32
  168. package/dist/foundations/structures/layout.js +0 -11
  169. package/dist/foundations/structures/portal.d.ts +0 -2
  170. package/dist/foundations/structures/portal.js +0 -3
  171. package/dist/foundations/structures/presence.d.ts +0 -36
  172. package/dist/foundations/structures/presence.js +0 -37
  173. package/dist/foundations/structures/slot.d.ts +0 -34
  174. package/dist/foundations/structures/slot.js +0 -39
  175. package/dist/foundations/utilities/aria.d.ts +0 -15
  176. package/dist/foundations/utilities/aria.js +0 -15
  177. package/dist/foundations/utilities/compose-handlers.d.ts +0 -36
  178. package/dist/foundations/utilities/compose-handlers.js +0 -18
  179. package/dist/foundations/utilities/compose-ref.js +0 -16
  180. package/dist/foundations/utilities/event-types.d.ts +0 -19
  181. package/dist/foundations/utilities/merge-props.d.ts +0 -4
  182. package/dist/foundations/utilities/merge-props.js +0 -47
  183. package/dist/foundations/utilities/use-id.d.ts +0 -31
  184. package/dist/fx/fx.d.ts +0 -32
  185. package/dist/fx/fx.js +0 -211
  186. package/dist/fx/noop.js +0 -7
  187. package/dist/fx/timing.d.ts +0 -158
  188. package/dist/fx/timing.js +0 -241
  189. package/dist/jsx/index.d.ts +0 -2
  190. package/dist/jsx/index.js +0 -4
  191. package/dist/jsx/types.js +0 -2
  192. package/dist/jsx/utils.d.ts +0 -4
  193. package/dist/jsx/utils.js +0 -17
  194. package/dist/jsx-runtime2.d.ts +0 -3
  195. package/dist/jsx-runtime2.js +0 -4
  196. package/dist/renderer/attributes.js +0 -254
  197. package/dist/renderer/boundaries.js +0 -142
  198. package/dist/renderer/boundary-materialization.js +0 -72
  199. package/dist/renderer/boundary-range-adoption.js +0 -76
  200. package/dist/renderer/boundary-range-sync.js +0 -101
  201. package/dist/renderer/boundary-state.js +0 -50
  202. package/dist/renderer/child-shape.js +0 -83
  203. package/dist/renderer/children-fastpath.js +0 -149
  204. package/dist/renderer/children.js +0 -158
  205. package/dist/renderer/cleanup.js +0 -267
  206. package/dist/renderer/component-host-cleanup.js +0 -143
  207. package/dist/renderer/component-host-instances.js +0 -116
  208. package/dist/renderer/component-host-replacement.js +0 -105
  209. package/dist/renderer/component-host-results.js +0 -138
  210. package/dist/renderer/component-host.js +0 -172
  211. package/dist/renderer/dom-host.js +0 -11
  212. package/dist/renderer/dom-internal.js +0 -243
  213. package/dist/renderer/dom-range.js +0 -161
  214. package/dist/renderer/dom.js +0 -11
  215. package/dist/renderer/element-children.js +0 -359
  216. package/dist/renderer/env.js +0 -2
  217. package/dist/renderer/error-boundary-dom.js +0 -86
  218. package/dist/renderer/evaluate-dom-range.js +0 -84
  219. package/dist/renderer/evaluate-reconcile.js +0 -257
  220. package/dist/renderer/evaluate.js +0 -95
  221. package/dist/renderer/fastpath.js +0 -142
  222. package/dist/renderer/for-commit-dom-map.js +0 -71
  223. package/dist/renderer/for-commit-removal.js +0 -27
  224. package/dist/renderer/for-commit-reorder.js +0 -87
  225. package/dist/renderer/for-commit.js +0 -442
  226. package/dist/renderer/hydration-boundaries.js +0 -60
  227. package/dist/renderer/hydration-listener-transaction.js +0 -49
  228. package/dist/renderer/index.js +0 -39
  229. package/dist/renderer/intrinsic-blueprint-analysis.js +0 -202
  230. package/dist/renderer/intrinsic-blueprint-bindings.js +0 -152
  231. package/dist/renderer/intrinsic-blueprint-materialization.js +0 -100
  232. package/dist/renderer/intrinsic-blueprint.js +0 -30
  233. package/dist/renderer/intrinsic-hydration-adoption.js +0 -66
  234. package/dist/renderer/keyed-children.js +0 -26
  235. package/dist/renderer/keyed.js +0 -167
  236. package/dist/renderer/namespaces.js +0 -21
  237. package/dist/renderer/prop-bindings.js +0 -315
  238. package/dist/renderer/reactive-child-dom.js +0 -139
  239. package/dist/renderer/reactive-child-sources.js +0 -182
  240. package/dist/renderer/reactive-children.js +0 -303
  241. package/dist/renderer/reconcile-commit.js +0 -36
  242. package/dist/renderer/reconcile-fastpaths.js +0 -100
  243. package/dist/renderer/reconcile-resolution.js +0 -163
  244. package/dist/renderer/reconcile.js +0 -37
  245. package/dist/renderer/retained-element-rollback.js +0 -288
  246. package/dist/renderer/stable-patch.js +0 -80
  247. package/dist/renderer/static-reuse.js +0 -94
  248. package/dist/renderer/types.js +0 -2
  249. package/dist/renderer/utils.js +0 -265
  250. package/dist/router/access.js +0 -34
  251. package/dist/router/activity.d.ts +0 -9
  252. package/dist/router/activity.js +0 -85
  253. package/dist/router/authoring.d.ts +0 -21
  254. package/dist/router/authoring.js +0 -196
  255. package/dist/router/internal-types.d.ts +0 -30
  256. package/dist/router/lazy.d.ts +0 -18
  257. package/dist/router/lazy.js +0 -50
  258. package/dist/router/manifest.d.ts +0 -9
  259. package/dist/router/manifest.js +0 -47
  260. package/dist/router/match.js +0 -120
  261. package/dist/router/navigate.d.ts +0 -10
  262. package/dist/router/navigate.js +0 -73
  263. package/dist/router/navigation-registry.d.ts +0 -31
  264. package/dist/router/navigation-registry.js +0 -103
  265. package/dist/router/navigation-scroll.d.ts +0 -13
  266. package/dist/router/navigation-scroll.js +0 -91
  267. package/dist/router/navigation-targets.d.ts +0 -30
  268. package/dist/router/navigation-targets.js +0 -634
  269. package/dist/router/policy.d.ts +0 -27
  270. package/dist/router/policy.js +0 -130
  271. package/dist/router/rendering.d.ts +0 -9
  272. package/dist/router/rendering.js +0 -47
  273. package/dist/router/resolution.d.ts +0 -3
  274. package/dist/router/resolution.js +0 -84
  275. package/dist/router/route-context.js +0 -77
  276. package/dist/router/route-matching.d.ts +0 -19
  277. package/dist/router/route-matching.js +0 -173
  278. package/dist/router/route-query.d.ts +0 -16
  279. package/dist/router/route-query.js +0 -45
  280. package/dist/router/route.d.ts +0 -8
  281. package/dist/router/route.js +0 -10
  282. package/dist/router/store.d.ts +0 -49
  283. package/dist/router/store.js +0 -169
  284. package/dist/router/testing.js +0 -4
  285. package/dist/runtime/access.d.ts +0 -19
  286. package/dist/runtime/access.js +0 -43
  287. package/dist/runtime/child-scope.d.ts +0 -41
  288. package/dist/runtime/child-scope.js +0 -134
  289. package/dist/runtime/component-cleanup.d.ts +0 -15
  290. package/dist/runtime/component-cleanup.js +0 -68
  291. package/dist/runtime/component-commit.js +0 -167
  292. package/dist/runtime/component-facade.d.ts +0 -5
  293. package/dist/runtime/component-facade.js +0 -6
  294. package/dist/runtime/component-internal.d.ts +0 -105
  295. package/dist/runtime/component-internal.js +0 -237
  296. package/dist/runtime/component-lifecycle.d.ts +0 -10
  297. package/dist/runtime/component-lifecycle.js +0 -33
  298. package/dist/runtime/component-scope.d.ts +0 -54
  299. package/dist/runtime/component.d.ts +0 -5
  300. package/dist/runtime/component.js +0 -6
  301. package/dist/runtime/context.d.ts +0 -72
  302. package/dist/runtime/context.js +0 -236
  303. package/dist/runtime/control.d.ts +0 -62
  304. package/dist/runtime/control.js +0 -239
  305. package/dist/runtime/derive.d.ts +0 -16
  306. package/dist/runtime/derive.js +0 -140
  307. package/dist/runtime/dev-namespace.d.ts +0 -30
  308. package/dist/runtime/dev-namespace.js +0 -64
  309. package/dist/runtime/effect.d.ts +0 -35
  310. package/dist/runtime/error-boundary.d.ts +0 -4
  311. package/dist/runtime/error-boundary.js +0 -29
  312. package/dist/runtime/events.d.ts +0 -58
  313. package/dist/runtime/events.js +0 -201
  314. package/dist/runtime/execution-model.d.ts +0 -6
  315. package/dist/runtime/execution-model.js +0 -13
  316. package/dist/runtime/fastlane.d.ts +0 -33
  317. package/dist/runtime/fastlane.js +0 -173
  318. package/dist/runtime/for-bench.d.ts +0 -40
  319. package/dist/runtime/for-bench.js +0 -13
  320. package/dist/runtime/for-internal.d.ts +0 -106
  321. package/dist/runtime/for-internal.js +0 -285
  322. package/dist/runtime/for-reconcile.d.ts +0 -7
  323. package/dist/runtime/for-reconcile.js +0 -442
  324. package/dist/runtime/for-scopes.d.ts +0 -26
  325. package/dist/runtime/for-scopes.js +0 -280
  326. package/dist/runtime/for-signals.d.ts +0 -39
  327. package/dist/runtime/for-signals.js +0 -213
  328. package/dist/runtime/for-types.d.ts +0 -8
  329. package/dist/runtime/for.d.ts +0 -4
  330. package/dist/runtime/for.js +0 -5
  331. package/dist/runtime/index.d.ts +0 -24
  332. package/dist/runtime/index.js +0 -33
  333. package/dist/runtime/lifecycle-batch.d.ts +0 -59
  334. package/dist/runtime/lifecycle-batch.js +0 -178
  335. package/dist/runtime/lifecycle-operation-settlement.d.ts +0 -5
  336. package/dist/runtime/lifecycle-operation-settlement.js +0 -51
  337. package/dist/runtime/lifecycle-operations.d.ts +0 -30
  338. package/dist/runtime/operations.d.ts +0 -3
  339. package/dist/runtime/operations.js +0 -3
  340. package/dist/runtime/perf-metrics.d.ts +0 -27
  341. package/dist/runtime/perf-metrics.js +0 -6
  342. package/dist/runtime/portal.d.ts +0 -21
  343. package/dist/runtime/readable.d.ts +0 -34
  344. package/dist/runtime/readable.js +0 -183
  345. package/dist/runtime/resource-cell.js +0 -112
  346. package/dist/runtime/resource-operation.d.ts +0 -12
  347. package/dist/runtime/runtime.js +0 -57
  348. package/dist/runtime/selector-store.js +0 -22
  349. package/dist/runtime/selector.d.ts +0 -10
  350. package/dist/runtime/snapshot-source.d.ts +0 -9
  351. package/dist/runtime/state.d.ts +0 -54
  352. package/dist/ssg/batch-render.js +0 -101
  353. package/dist/ssg/create-static-gen.d.ts +0 -66
  354. package/dist/ssg/create-static-gen.js +0 -250
  355. package/dist/ssg/generate-metadata.js +0 -92
  356. package/dist/ssg/generation-plan.js +0 -68
  357. package/dist/ssg/incremental-manifest.js +0 -54
  358. package/dist/ssg/resolve-ssg-data.js +0 -103
  359. package/dist/ssg/route-utils.js +0 -22
  360. package/dist/ssg/static-routes.js +0 -100
  361. package/dist/ssg/types.d.ts +0 -188
  362. package/dist/ssg/write-static-files.js +0 -77
  363. package/dist/ssr/attrs.js +0 -92
  364. package/dist/ssr/boundaries.js +0 -124
  365. package/dist/ssr/component-runtime.js +0 -85
  366. package/dist/ssr/context.d.ts +0 -49
  367. package/dist/ssr/context.js +0 -89
  368. package/dist/ssr/errors.d.ts +0 -9
  369. package/dist/ssr/errors.js +0 -12
  370. package/dist/ssr/escape.js +0 -191
  371. package/dist/ssr/hydration-data.js +0 -8
  372. package/dist/ssr/hydration-verify.d.ts +0 -11
  373. package/dist/ssr/hydration-verify.js +0 -171
  374. package/dist/ssr/index-internal.d.ts +0 -14
  375. package/dist/ssr/index-internal.js +0 -17
  376. package/dist/ssr/render-keys.js +0 -14
  377. package/dist/ssr/render-resolved.d.ts +0 -19
  378. package/dist/ssr/render-resolved.js +0 -33
  379. package/dist/ssr/render-sync.d.ts +0 -20
  380. package/dist/ssr/render-sync.js +0 -283
  381. package/dist/ssr/route-policy-resolution.js +0 -76
  382. package/dist/ssr/route-render.d.ts +0 -76
  383. package/dist/ssr/route-render.js +0 -118
  384. package/dist/ssr/sink.d.ts +0 -25
  385. package/dist/ssr/sink.js +0 -84
  386. package/dist/ssr/types.d.ts +0 -22
@@ -1,283 +0,0 @@
1
- import { __CONTROL_BOUNDARY__ } from "../common/control.js";
2
- import { __ERROR_BOUNDARY__ } from "../common/vnode.js";
3
- import { logger } from "../common/logger.js";
4
- import { Fragment } from "../common/jsx.js";
5
- import "../jsx/index.js";
6
- import { VOID_ELEMENTS, escapeText } from "./escape.js";
7
- import { createRenderContext, withRenderContext } from "./context.js";
8
- import { StringSink } from "./sink.js";
9
- import { disposeSSRTemporaryOwners, executeComponentSync, renderSyncComponentRoot } from "./component-runtime.js";
10
- import { createErrorBoundaryReset, getErrorBoundaryState, getRenderableChildren, normalizeRenderableChildren, resolveErrorBoundaryFallbackNode, withControlBoundaryChildren } from "./boundaries.js";
11
- import { renderAttrs, renderAttrsDirect } from "./attrs.js";
12
- import { serializeHydrationRenderData } from "./hydration-data.js";
13
- import { startRenderPhase, stopRenderPhase } from "./render-keys.js";
14
- const RANGE_START = "<!--askr-range-start-->";
15
- const RANGE_END = "<!--askr-range-end-->";
16
- function isMultiRangeChild(child) {
17
- if (Array.isArray(child)) return child.length !== 1;
18
- if (!child || typeof child !== "object" || !("type" in child)) return false;
19
- const vnode = child;
20
- if (vnode.type !== Fragment) return false;
21
- return (getRenderableChildren(vnode)?.length ?? 0) !== 1;
22
- }
23
- function renderControlChildrenSync(node, ctx) {
24
- const controlState = node._controlState ?? node._forState;
25
- return withControlBoundaryChildren(node, (children) => {
26
- const values = children ?? [];
27
- if (controlState?.kind === "for") return values.map((child) => {
28
- const rendered = renderChildSync(child, ctx);
29
- return isMultiRangeChild(child) ? `${RANGE_START}${rendered}${RANGE_END}` : rendered;
30
- }).join("");
31
- const rendered = renderChildrenSync(values, ctx);
32
- return values.length === 1 && isMultiRangeChild(values[0]) ? `${RANGE_START}${rendered}${RANGE_END}` : values.length !== 1 ? `${RANGE_START}${rendered}${RANGE_END}` : rendered;
33
- });
34
- }
35
- function inheritRenderableKey(source, result) {
36
- const inheritedKey = source.key;
37
- if (inheritedKey === void 0 || inheritedKey === null) return result;
38
- if (!result || typeof result !== "object" || !("type" in result)) return result;
39
- const resultVNode = result;
40
- if (resultVNode.key === void 0 || resultVNode.key === null) resultVNode.key = inheritedKey;
41
- if (typeof resultVNode.type === "string") {
42
- if (!resultVNode.props) resultVNode.props = {};
43
- if (resultVNode.props["data-key"] === void 0) resultVNode.props["data-key"] = String(inheritedKey);
44
- if (resultVNode.props["data-askr-key-kind"] === void 0) resultVNode.props["data-askr-key-kind"] = typeof inheritedKey;
45
- }
46
- return result;
47
- }
48
- function renderRenderableSync(value, ctx) {
49
- if (typeof value === "string") return escapeText(value);
50
- if (typeof value === "number") return escapeText(String(value));
51
- if (value === null || value === void 0 || value === false) return "";
52
- if (Array.isArray(value)) return renderChildrenSync(value, ctx);
53
- if (value && typeof value === "object" && "type" in value) return renderNodeSync(value, ctx);
54
- return "";
55
- }
56
- function renderChildSync(child, ctx) {
57
- return renderRenderableSync(child, ctx);
58
- }
59
- function renderRenderableSyncToSink(value, sink, ctx) {
60
- if (value === null || value === void 0 || value === false) return;
61
- if (typeof value === "string") {
62
- sink.write(escapeText(value));
63
- return;
64
- }
65
- if (typeof value === "number") {
66
- sink.write(escapeText(String(value)));
67
- return;
68
- }
69
- if (Array.isArray(value)) {
70
- renderChildrenSyncToSink(value, sink, ctx);
71
- return;
72
- }
73
- if (value && typeof value === "object" && "type" in value) renderNodeSyncToSink(value, sink, ctx);
74
- }
75
- function renderChildSyncToSink(child, sink, ctx) {
76
- renderRenderableSyncToSink(child, sink, ctx);
77
- }
78
- function renderChildrenSync(children, ctx) {
79
- if (!children || !Array.isArray(children) || children.length === 0) return "";
80
- if (children.length === 1) return renderChildSync(children[0], ctx);
81
- if (children.length <= 8) {
82
- let result = "";
83
- for (const child of children) result += renderChildSync(child, ctx);
84
- return result;
85
- }
86
- return Array.from({ length: children.length }, (_, index) => renderChildSync(children[index], ctx)).join("");
87
- }
88
- function renderErrorBoundaryFallbackValue(fallback, error, reset, ctx) {
89
- const nextValue = resolveErrorBoundaryFallbackNode(fallback, error, reset);
90
- return Array.isArray(nextValue) ? renderChildrenSync(normalizeRenderableChildren(nextValue), ctx) : renderChildSync(nextValue, ctx);
91
- }
92
- function renderErrorBoundaryFallbackValueToSink(fallback, error, reset, sink, ctx) {
93
- sink.write(renderErrorBoundaryFallbackValue(fallback, error, reset, ctx));
94
- }
95
- function renderChildrenSyncToSink(children, sink, ctx) {
96
- if (!children || !Array.isArray(children) || children.length === 0) return;
97
- if (children.length >= 32) {
98
- for (let i = 0; i < children.length; i++) renderRenderableSyncToSink(children[i], sink, ctx);
99
- return;
100
- }
101
- for (let i = 0; i < children.length; i++) renderChildSyncToSink(children[i], sink, ctx);
102
- }
103
- function sinkWrite2(sink, a, b) {
104
- if (typeof sink.write2 === "function") {
105
- sink.write2(a, b);
106
- return;
107
- }
108
- sink.write(a);
109
- sink.write(b);
110
- }
111
- function sinkWrite3(sink, a, b, c) {
112
- if (typeof sink.write3 === "function") {
113
- sink.write3(a, b, c);
114
- return;
115
- }
116
- sink.write(a);
117
- sink.write(b);
118
- sink.write(c);
119
- }
120
- function renderNodeSync(node, ctx) {
121
- const { type, props } = node;
122
- if (typeof type === "function") return renderRenderableSync(inheritRenderableKey(node, executeComponentSync(type, props, ctx)), ctx);
123
- if (typeof type === "symbol") {
124
- if (type === Fragment) return renderChildrenSync(getRenderableChildren(node), ctx);
125
- if (type === __CONTROL_BOUNDARY__) return renderControlChildrenSync(node, ctx);
126
- if (type === __ERROR_BOUNDARY__) {
127
- const boundaryState = getErrorBoundaryState(node);
128
- const fallback = props?.fallback;
129
- const reset = createErrorBoundaryReset(node);
130
- if (boundaryState?.error != null) return renderErrorBoundaryFallbackValue(fallback, boundaryState.error, reset, ctx);
131
- try {
132
- return renderChildrenSync(normalizeRenderableChildren(props?.children), ctx);
133
- } catch (error) {
134
- if (boundaryState) {
135
- boundaryState.error = error;
136
- boundaryState.notified = true;
137
- }
138
- logger.error("[Askr] ErrorBoundary caught render error:", error);
139
- return renderErrorBoundaryFallbackValue(fallback, error, reset, ctx);
140
- }
141
- }
142
- throw new Error(`renderNodeSync: unsupported VNode symbol type: ${String(type)}`);
143
- }
144
- const typeStr = type;
145
- if (VOID_ELEMENTS.has(typeStr)) return `<${typeStr}${renderAttrs(props)} />`;
146
- const maybeDangerous = props?.dangerouslySetInnerHTML;
147
- if (maybeDangerous !== void 0 && maybeDangerous !== null) {
148
- const { attrs, dangerousHtml } = renderAttrs(props, { returnDangerousHtml: true });
149
- if (dangerousHtml !== void 0) return `<${typeStr}${attrs}>${dangerousHtml}</${typeStr}>`;
150
- return `<${typeStr}${attrs}>${renderChildrenSync(getRenderableChildren(node), ctx)}</${typeStr}>`;
151
- }
152
- return `<${typeStr}${renderAttrs(props)}>${renderChildrenSync(getRenderableChildren(node), ctx)}</${typeStr}>`;
153
- }
154
- function renderNodeSyncToSink(node, sink, ctx) {
155
- const { type, props } = node;
156
- if (typeof type === "function") {
157
- renderRenderableSyncToSink(inheritRenderableKey(node, executeComponentSync(type, props, ctx)), sink, ctx);
158
- return;
159
- }
160
- if (typeof type === "symbol") {
161
- if (type === Fragment) {
162
- renderChildrenSyncToSink(getRenderableChildren(node), sink, ctx);
163
- return;
164
- }
165
- if (type === __CONTROL_BOUNDARY__) {
166
- const rendered = renderControlChildrenSync(node, ctx);
167
- sink.write(rendered);
168
- return;
169
- }
170
- if (type === __ERROR_BOUNDARY__) {
171
- const boundaryState = getErrorBoundaryState(node);
172
- const fallback = props?.fallback;
173
- const reset = createErrorBoundaryReset(node);
174
- if (boundaryState?.error != null) {
175
- renderErrorBoundaryFallbackValueToSink(fallback, boundaryState.error, reset, sink, ctx);
176
- return;
177
- }
178
- try {
179
- renderChildrenSyncToSink(normalizeRenderableChildren(props?.children), sink, ctx);
180
- } catch (error) {
181
- if (boundaryState) {
182
- boundaryState.error = error;
183
- boundaryState.notified = true;
184
- }
185
- logger.error("[Askr] ErrorBoundary caught render error:", error);
186
- renderErrorBoundaryFallbackValueToSink(fallback, error, reset, sink, ctx);
187
- }
188
- return;
189
- }
190
- throw new Error(`renderNodeSyncToSink: unsupported VNode symbol type: ${String(type)}`);
191
- }
192
- const typeStr = type;
193
- if (VOID_ELEMENTS.has(typeStr)) {
194
- sinkWrite2(sink, "<", typeStr);
195
- renderAttrsDirect(props, sink);
196
- sink.write(" />");
197
- return;
198
- }
199
- const maybeDangerous = props ? props?.dangerouslySetInnerHTML : void 0;
200
- if (maybeDangerous !== void 0 && maybeDangerous !== null) {
201
- const dangerousHtml = typeof maybeDangerous === "object" && "__html" in maybeDangerous ? String(maybeDangerous.__html) : void 0;
202
- sinkWrite2(sink, "<", typeStr);
203
- renderAttrsDirect(props, sink);
204
- sink.write(">");
205
- if (dangerousHtml !== void 0) sink.write(dangerousHtml);
206
- else renderChildrenSyncToSink(getRenderableChildren(node), sink, ctx);
207
- sinkWrite3(sink, "</", typeStr, ">");
208
- return;
209
- }
210
- const children = getRenderableChildren(node);
211
- if (!children || Array.isArray(children) && children.length === 0) {
212
- sinkWrite2(sink, "<", typeStr);
213
- renderAttrsDirect(props, sink);
214
- sink.write(">");
215
- sinkWrite3(sink, "</", typeStr, ">");
216
- return;
217
- }
218
- if (Array.isArray(children) && children.length === 1) {
219
- const only = children[0];
220
- if (typeof only === "string") {
221
- const content = escapeText(only);
222
- sinkWrite2(sink, "<", typeStr);
223
- renderAttrsDirect(props, sink);
224
- sink.write(">");
225
- sink.write(content);
226
- sinkWrite3(sink, "</", typeStr, ">");
227
- return;
228
- }
229
- if (typeof only === "number") {
230
- const content = escapeText(String(only));
231
- sinkWrite2(sink, "<", typeStr);
232
- renderAttrsDirect(props, sink);
233
- sink.write(">");
234
- sink.write(content);
235
- sinkWrite3(sink, "</", typeStr, ">");
236
- return;
237
- }
238
- }
239
- sinkWrite2(sink, "<", typeStr);
240
- renderAttrsDirect(props, sink);
241
- sink.write(">");
242
- renderChildrenSyncToSink(children, sink, ctx);
243
- sinkWrite3(sink, "</", typeStr, ">");
244
- }
245
- function renderToStringSync(component, props, options) {
246
- const ctx = createRenderContext(options?.seed ?? 12345, { data: options?.data });
247
- return withRenderContext(ctx, () => {
248
- startRenderPhase(options?.data ?? null);
249
- try {
250
- const node = renderSyncComponentRoot(component, props || {}, ctx);
251
- if (!node) throw new Error("renderToStringSync: wrapped component returned empty");
252
- const sink = new StringSink();
253
- renderNodeSyncToSink(node, sink, ctx);
254
- sink.write(serializeHydrationRenderData(options?.data));
255
- sink.end();
256
- return sink.toString();
257
- } finally {
258
- try {
259
- stopRenderPhase();
260
- } finally {
261
- disposeSSRTemporaryOwners(ctx);
262
- }
263
- }
264
- });
265
- }
266
- function renderSSRRouteAppToSink(input) {
267
- const { ctx, data, route, params, sink } = input;
268
- withRenderContext(ctx, () => {
269
- startRenderPhase(data || null);
270
- try {
271
- renderRenderableSyncToSink(executeComponentSync(route.handler, params, ctx), sink, ctx);
272
- sink.write(serializeHydrationRenderData(data));
273
- } finally {
274
- try {
275
- stopRenderPhase();
276
- } finally {
277
- disposeSSRTemporaryOwners(ctx);
278
- }
279
- }
280
- });
281
- }
282
- //#endregion
283
- export { inheritRenderableKey, renderRenderableSyncToSink, renderSSRRouteAppToSink, renderToStringSync };
@@ -1,76 +0,0 @@
1
- import { isPromiseLike } from "../common/promise.js";
2
- import { _resolveRouteMatchFromRoutes } from "../router/route-matching.js";
3
- import { resolveRouteRequest } from "../router/resolution.js";
4
- import "../router/route.js";
5
- import { throwSSRDataMissing } from "./context.js";
6
- //#region src/ssr/route-policy-resolution.ts
7
- const MAX_SSR_REDIRECTS = 20;
8
- function getRouteRequestResultSync(result) {
9
- if (isPromiseLike(result)) throwSSRDataMissing();
10
- return result;
11
- }
12
- function buildDeniedRoute(route, status) {
13
- return {
14
- ...route,
15
- handler: () => ({
16
- type: "div",
17
- props: { "data-route-denied": String(status) },
18
- children: [String(status)]
19
- })
20
- };
21
- }
22
- function routeHasSSRLoader(manifest, route) {
23
- const routeFallbackPrefix = route.fallbackPrefix;
24
- return manifest.records.some((record) => {
25
- const recordFallbackPrefix = record.fallbackPrefix;
26
- return record.path === route.path && recordFallbackPrefix === routeFallbackPrefix && typeof record.options?.loader === "function";
27
- });
28
- }
29
- function resolvePolicyAwareSSRRoute(opts, routeTable) {
30
- const manifest = opts.registry?.manifest;
31
- if (!manifest) {
32
- const matched = _resolveRouteMatchFromRoutes(new URL(opts.url, "http://localhost").pathname, routeTable);
33
- if (!matched) throw new Error(`SSR: no route found for url: ${opts.url}`);
34
- return {
35
- url: opts.url,
36
- route: matched.route,
37
- params: matched.params
38
- };
39
- }
40
- let href = opts.url;
41
- const visited = /* @__PURE__ */ new Set();
42
- for (let redirects = 0; redirects <= MAX_SSR_REDIRECTS; redirects += 1) {
43
- const matched = _resolveRouteMatchFromRoutes(new URL(href, "http://localhost").pathname, routeTable);
44
- if (!matched) throw new Error(`SSR: no route found for url: ${href}`);
45
- const resolved = getRouteRequestResultSync(resolveRouteRequest(href, {
46
- manifest,
47
- mode: "ssr"
48
- }));
49
- if (resolved === null) throw new Error(`SSR: no route found for url: ${href}`);
50
- if (resolved.kind === "redirect") {
51
- const redirectTarget = new URL(resolved.to, "http://localhost");
52
- const redirectHref = `${redirectTarget.pathname}${redirectTarget.search}${redirectTarget.hash}`;
53
- if (redirectHref === href || visited.has(redirectHref)) throw new Error(`[Askr] SSR redirect cycle detected at ${redirectHref}.`);
54
- if (redirects >= MAX_SSR_REDIRECTS) throw new Error(`[Askr] SSR redirect limit exceeded (${MAX_SSR_REDIRECTS}).`);
55
- visited.add(redirectHref);
56
- href = redirectHref;
57
- continue;
58
- }
59
- if (resolved.kind === "deny") return {
60
- url: href,
61
- route: buildDeniedRoute(matched.route, resolved.status),
62
- params: matched.params
63
- };
64
- return {
65
- url: href,
66
- route: {
67
- ...matched.route,
68
- handler: routeHasSSRLoader(manifest, matched.route) ? resolved.handler : matched.route.handler
69
- },
70
- params: matched.params
71
- };
72
- }
73
- throw new Error(`[Askr] SSR redirect limit exceeded (${MAX_SSR_REDIRECTS}).`);
74
- }
75
- //#endregion
76
- export { resolvePolicyAwareSSRRoute };
@@ -1,76 +0,0 @@
1
- import { DocumentRenderer, SSRData } from "../common/ssr.js";
2
- import { RouteAuthOptions, RouteHandler, RouteManifest, RouteRegistry, RouteRequestResult } from "../common/router.js";
3
- import { RenderContext } from "./context.js";
4
- import { RenderSink } from "./sink.js";
5
-
6
- //#region src/ssr/route-render.d.ts
7
- type SSRRoute = {
8
- path: string;
9
- handler: RouteHandler;
10
- namespace?: string;
11
- };
12
- type SSRRouteSource = {
13
- registry: RouteRegistry;
14
- routes?: readonly SSRRoute[];
15
- } | {
16
- registry?: RouteRegistry;
17
- routes: readonly SSRRoute[];
18
- };
19
- type RouteRenderOptions = SSRRouteSource & {
20
- url: string;
21
- seed?: number;
22
- data?: SSRData;
23
- document?: DocumentRenderer;
24
- };
25
- type RouteStreamOptions = RouteRenderOptions & {
26
- onChunk(html: string): void;
27
- onComplete(): void;
28
- };
29
- type RouteAppRenderInput = {
30
- route: SSRRoute;
31
- params: Record<string, string>;
32
- data?: SSRData;
33
- ctx: RenderContext;
34
- sink: RenderSink;
35
- };
36
- interface RouteRenderHost {
37
- renderAppToSink(input: RouteAppRenderInput): void;
38
- }
39
- declare function resolveRequest(opts: {
40
- url: string;
41
- registry: RouteRegistry;
42
- manifest?: RouteManifest;
43
- routes?: Array<{
44
- path: string;
45
- handler: RouteHandler;
46
- namespace?: string;
47
- }>;
48
- auth?: RouteAuthOptions;
49
- signal?: AbortSignal;
50
- } | {
51
- url: string;
52
- manifest: RouteManifest;
53
- registry?: RouteRegistry;
54
- routes?: Array<{
55
- path: string;
56
- handler: RouteHandler;
57
- namespace?: string;
58
- }>;
59
- auth?: RouteAuthOptions;
60
- signal?: AbortSignal;
61
- } | {
62
- url: string;
63
- manifest?: RouteManifest;
64
- registry?: RouteRegistry;
65
- routes: Array<{
66
- path: string;
67
- handler: RouteHandler;
68
- namespace?: string;
69
- }>;
70
- auth?: RouteAuthOptions;
71
- signal?: AbortSignal;
72
- }): Promise<RouteRequestResult>;
73
- declare function renderRouteToString(opts: RouteRenderOptions, host: RouteRenderHost): string;
74
- declare function renderRouteToStream(opts: RouteStreamOptions, host: RouteRenderHost): void;
75
- //#endregion
76
- export { RouteAppRenderInput, RouteRenderHost, RouteRenderOptions, RouteStreamOptions, SSRRoute, resolveRequest };
@@ -1,118 +0,0 @@
1
- import { resolveRouteFromRoutes } from "../router/route-matching.js";
2
- import { resolveRouteRequest } from "../router/resolution.js";
3
- import "../router/route.js";
4
- import { renderDocument } from "../common/ssr.js";
5
- import { createRenderContext } from "./context.js";
6
- import { resolvePolicyAwareSSRRoute } from "./route-policy-resolution.js";
7
- import { StreamSink, StringSink } from "./sink.js";
8
- //#region src/ssr/route-render.ts
9
- async function resolveRequest(opts) {
10
- const { url, auth, signal } = opts;
11
- const manifest = opts.manifest ?? opts.registry?.manifest;
12
- const routes = opts.routes ?? opts.registry?.routes;
13
- if (manifest) return await resolveRouteRequest(url, {
14
- manifest,
15
- mode: "ssr",
16
- auth,
17
- signal
18
- });
19
- if (!routes) throw new Error("resolveRequest requires a route manifest or route table.");
20
- const resolved = resolveRouteFromRoutes(new URL(url, "http://localhost").pathname, routes);
21
- if (!resolved) return null;
22
- return {
23
- kind: "render",
24
- handler: resolved.handler,
25
- params: resolved.params
26
- };
27
- }
28
- function resolveSSRRouteSource(source) {
29
- const routes = source.routes ?? source.registry?.routes;
30
- if (!routes || routes.length === 0) throw new Error("SSR requires a route registry or route table.");
31
- return routes.map((route) => ({
32
- ...route,
33
- path: route.path,
34
- handler: route.handler,
35
- namespace: route.namespace
36
- }));
37
- }
38
- function resolveSSRRouteRender(opts) {
39
- const { seed = 12345, data, document } = opts;
40
- const routeTable = resolveSSRRouteSource(opts);
41
- const resolvedRoute = resolvePolicyAwareSSRRoute(opts, routeTable);
42
- const requestUrl = new URL(resolvedRoute.url, "http://localhost");
43
- const ctx = createRenderContext(seed, {
44
- url: resolvedRoute.url,
45
- data,
46
- params: resolvedRoute.params,
47
- routes: routeTable
48
- });
49
- return {
50
- url: resolvedRoute.url,
51
- requestUrl,
52
- route: resolvedRoute.route,
53
- params: resolvedRoute.params,
54
- seed,
55
- data,
56
- ctx,
57
- document
58
- };
59
- }
60
- function buildDocumentRenderArgs(resolved, appHtml) {
61
- return {
62
- appHtml,
63
- context: {
64
- mode: "ssr",
65
- url: resolved.url,
66
- pathname: resolved.requestUrl.pathname,
67
- search: resolved.requestUrl.search,
68
- hash: resolved.requestUrl.hash,
69
- params: resolved.params,
70
- data: resolved.data,
71
- seed: resolved.seed,
72
- route: {
73
- path: resolved.route.path,
74
- namespace: resolved.route.namespace
75
- }
76
- }
77
- };
78
- }
79
- function renderResolvedRouteAppToSink(resolved, sink, host) {
80
- host.renderAppToSink({
81
- route: resolved.route,
82
- params: resolved.params,
83
- data: resolved.data,
84
- ctx: resolved.ctx,
85
- sink
86
- });
87
- }
88
- function renderToSinkInternal(opts, host) {
89
- const { sink, ...renderOptions } = opts;
90
- const resolved = resolveSSRRouteRender(renderOptions);
91
- if (!resolved.document) {
92
- renderResolvedRouteAppToSink(resolved, sink, host);
93
- return;
94
- }
95
- const appSink = new StringSink();
96
- renderResolvedRouteAppToSink(resolved, appSink, host);
97
- appSink.end();
98
- sink.write(renderDocument(resolved.document, buildDocumentRenderArgs(resolved, appSink.toString()), "renderToString()/renderToStream()"));
99
- }
100
- function renderRouteToString(opts, host) {
101
- const sink = new StringSink();
102
- renderToSinkInternal({
103
- ...opts,
104
- sink
105
- }, host);
106
- sink.end();
107
- return sink.toString();
108
- }
109
- function renderRouteToStream(opts, host) {
110
- const sink = new StreamSink(opts.onChunk, opts.onComplete);
111
- renderToSinkInternal({
112
- ...opts,
113
- sink
114
- }, host);
115
- sink.end();
116
- }
117
- //#endregion
118
- export { renderRouteToStream, renderRouteToString, resolveRequest };
@@ -1,25 +0,0 @@
1
- //#region src/ssr/sink.d.ts
2
- interface RenderSink {
3
- write(html: string): void;
4
- end(): void;
5
- }
6
- declare class StringSink implements RenderSink {
7
- private chunks;
8
- private bufferChunks;
9
- private bufferLen;
10
- private static readonly FLUSH_THRESHOLD;
11
- write(html: string): void;
12
- write2(a: string, b: string): void;
13
- write3(a: string, b: string, c: string): void;
14
- end(): void;
15
- toString(): string;
16
- }
17
- declare class StreamSink implements RenderSink {
18
- private readonly onChunk;
19
- private readonly onComplete;
20
- constructor(onChunk: (html: string) => void, onComplete: () => void);
21
- write(html: string): void;
22
- end(): void;
23
- }
24
- //#endregion
25
- export { RenderSink };
package/dist/ssr/sink.js DELETED
@@ -1,84 +0,0 @@
1
- //#region src/ssr/sink.ts
2
- var StringSink = class StringSink {
3
- constructor() {
4
- this.chunks = [];
5
- this.bufferChunks = [];
6
- this.bufferLen = 0;
7
- }
8
- static {
9
- this.FLUSH_THRESHOLD = 32 * 1024;
10
- }
11
- write(html) {
12
- if (!html) return;
13
- this.bufferChunks.push(html);
14
- this.bufferLen += html.length;
15
- if (this.bufferLen >= StringSink.FLUSH_THRESHOLD) {
16
- this.chunks.push(this.bufferChunks.join(""));
17
- this.bufferChunks.length = 0;
18
- this.bufferLen = 0;
19
- }
20
- }
21
- write2(a, b) {
22
- if (a) {
23
- this.bufferChunks.push(a);
24
- this.bufferLen += a.length;
25
- }
26
- if (b) {
27
- this.bufferChunks.push(b);
28
- this.bufferLen += b.length;
29
- }
30
- if (this.bufferLen >= StringSink.FLUSH_THRESHOLD) {
31
- this.chunks.push(this.bufferChunks.join(""));
32
- this.bufferChunks.length = 0;
33
- this.bufferLen = 0;
34
- }
35
- }
36
- write3(a, b, c) {
37
- if (a) {
38
- this.bufferChunks.push(a);
39
- this.bufferLen += a.length;
40
- }
41
- if (b) {
42
- this.bufferChunks.push(b);
43
- this.bufferLen += b.length;
44
- }
45
- if (c) {
46
- this.bufferChunks.push(c);
47
- this.bufferLen += c.length;
48
- }
49
- if (this.bufferLen >= StringSink.FLUSH_THRESHOLD) {
50
- this.chunks.push(this.bufferChunks.join(""));
51
- this.bufferChunks.length = 0;
52
- this.bufferLen = 0;
53
- }
54
- }
55
- end() {
56
- if (this.bufferLen) {
57
- this.chunks.push(this.bufferChunks.join(""));
58
- this.bufferChunks.length = 0;
59
- this.bufferLen = 0;
60
- }
61
- }
62
- toString() {
63
- if (this.bufferLen) {
64
- this.chunks.push(this.bufferChunks.join(""));
65
- this.bufferChunks.length = 0;
66
- this.bufferLen = 0;
67
- }
68
- return this.chunks.join("");
69
- }
70
- };
71
- var StreamSink = class {
72
- constructor(onChunk, onComplete) {
73
- this.onChunk = onChunk;
74
- this.onComplete = onComplete;
75
- }
76
- write(html) {
77
- if (html) this.onChunk(html);
78
- }
79
- end() {
80
- this.onComplete();
81
- }
82
- };
83
- //#endregion
84
- export { StreamSink, StringSink };
@@ -1,22 +0,0 @@
1
- import { Props } from "../common/props.js";
2
- import { JSXElement } from "../common/jsx.js";
3
- import { RenderContext } from "./context.js";
4
-
5
- //#region src/ssr/types.d.ts
6
- /** VNode representation for SSR rendering */
7
- type VNode = {
8
- type: string | SSRComponent | symbol;
9
- props?: Props;
10
- children?: unknown[];
11
- key?: string | number | null;
12
- };
13
- /**
14
- * Component function signature for SSR.
15
- * Components receive props and an optional context with signal and SSR context.
16
- */
17
- type SSRComponent = (props: Props, context?: {
18
- signal?: AbortSignal;
19
- ssr?: RenderContext;
20
- }) => VNode | JSXElement | string | number | boolean | null | undefined;
21
- //#endregion
22
- export { SSRComponent, VNode };