@askrjs/askr 0.0.51 → 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 (651) hide show
  1. package/README.md +5 -1
  2. package/dist/{runtime/scheduler.js → access-Bg4RJNC8.js} +190 -20
  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 -3
  6. package/dist/benchmark.d.ts +7 -4
  7. package/dist/benchmark.js +63 -13
  8. package/dist/boot/index.d.ts +62 -4
  9. package/dist/boot/index.js +1 -194
  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} +35 -9
  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 -2
  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 -3
  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} +35 -36
  30. package/dist/deferred-lKE8uR0z.js +386 -0
  31. package/dist/effect-BwnIvLah.js +260 -0
  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 -9
  53. package/dist/index-SJXJkssx.d.ts +44 -0
  54. package/dist/index.d.ts +8 -13
  55. package/dist/index.js +150 -17
  56. package/dist/interactions-w7gQN4ha.js +280 -0
  57. package/dist/{data/invalidation-listeners.js → invalidation-listeners-Des3AHYs.js} +1 -3
  58. package/dist/{common/props.d.ts → jsx-CP0gmYwJ.d.ts} +17 -6
  59. package/dist/{common/jsx.js → jsx-CUpRxrLH.js} +1 -3
  60. package/dist/jsx-dev-runtime.d.ts +17 -5
  61. package/dist/jsx-dev-runtime.js +3 -10
  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 +3 -22
  65. package/dist/jsx-runtime.js +17 -20
  66. package/dist/{runtime/lifecycle-operations.js → lifecycle-operations-D9va7GOU.js} +9 -11
  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} +124 -35
  70. package/dist/query-registry-CQIT4mXr.js +73 -0
  71. package/dist/{common/render-context.js → render-context-Clw3rFiO.js} +14 -8
  72. package/dist/renderer-DzPjeLby.js +6197 -0
  73. package/dist/resource-operation-CEzfpnDk.js +276 -0
  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 -3
  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 -29
  81. package/dist/{common/router-internal.js → router-internal-BC0w1_xk.js} +1 -3
  82. package/dist/{runtime/scheduler.d.ts → scheduler-CmLO4Dfm.d.ts} +1 -4
  83. package/dist/{runtime/selector.js → selector-DafVYzV4.js} +35 -20
  84. package/dist/{runtime/snapshot-source.js → snapshot-source-BB42xgwb.js} +1 -3
  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 -3
  90. package/dist/ssr-D3t80Rc0.js +1413 -0
  91. package/dist/{runtime/state.js → state-DPl8lffD.js} +4 -8
  92. package/dist/structures-DUB3HchX.js +221 -0
  93. package/dist/testing/index.d.ts +4 -4
  94. package/dist/testing/index.js +2 -7
  95. package/dist/{jsx/types.d.ts → types-DnQVG4ZY.d.ts} +2 -6
  96. package/dist/{foundations/utilities/use-id.js → utilities-C_CGX4Dz.js} +1 -3
  97. package/dist/{ssr/verify-hydration.js → verify-hydration-io9ahUeq.js} +2 -4
  98. package/dist/{common/vnode.js → vnode-CGMJYPMB.js} +2 -4
  99. package/package.json +63 -45
  100. package/dist/bench/components/benchmark-row.d.ts +0 -20
  101. package/dist/bench/components/benchmark-row.d.ts.map +0 -1
  102. package/dist/bench/components/benchmark-row.js +0 -42
  103. package/dist/bench/components/benchmark-row.js.map +0 -1
  104. package/dist/bench/components/benchmark-table.js +0 -25
  105. package/dist/bench/components/benchmark-table.js.map +0 -1
  106. package/dist/benchmark.d.ts.map +0 -1
  107. package/dist/benchmark.js.map +0 -1
  108. package/dist/bin/askr-ssg.d.ts +0 -28
  109. package/dist/bin/askr-ssg.d.ts.map +0 -1
  110. package/dist/bin/askr-ssg.js +0 -171
  111. package/dist/bin/askr-ssg.js.map +0 -1
  112. package/dist/boot/hydration.js +0 -140
  113. package/dist/boot/hydration.js.map +0 -1
  114. package/dist/boot/index.d.ts.map +0 -1
  115. package/dist/boot/index.js.map +0 -1
  116. package/dist/boot/root-lifecycle.d.ts +0 -15
  117. package/dist/boot/root-lifecycle.d.ts.map +0 -1
  118. package/dist/boot/root-lifecycle.js +0 -205
  119. package/dist/boot/root-lifecycle.js.map +0 -1
  120. package/dist/boot/route-startup.js +0 -45
  121. package/dist/boot/route-startup.js.map +0 -1
  122. package/dist/boot/types.d.ts +0 -62
  123. package/dist/boot/types.d.ts.map +0 -1
  124. package/dist/common/attr-names.js.map +0 -1
  125. package/dist/common/component.d.ts +0 -19
  126. package/dist/common/component.d.ts.map +0 -1
  127. package/dist/common/control.d.ts +0 -13
  128. package/dist/common/control.d.ts.map +0 -1
  129. package/dist/common/control.js.map +0 -1
  130. package/dist/common/env.js +0 -47
  131. package/dist/common/env.js.map +0 -1
  132. package/dist/common/error-boundary.d.ts +0 -16
  133. package/dist/common/error-boundary.d.ts.map +0 -1
  134. package/dist/common/invariant.js +0 -17
  135. package/dist/common/invariant.js.map +0 -1
  136. package/dist/common/jsx.d.ts +0 -23
  137. package/dist/common/jsx.d.ts.map +0 -1
  138. package/dist/common/jsx.js.map +0 -1
  139. package/dist/common/logger.js +0 -36
  140. package/dist/common/logger.js.map +0 -1
  141. package/dist/common/promise.js +0 -8
  142. package/dist/common/promise.js.map +0 -1
  143. package/dist/common/props.d.ts.map +0 -1
  144. package/dist/common/render-context.js.map +0 -1
  145. package/dist/common/route-activity.js.map +0 -1
  146. package/dist/common/router-internal.js.map +0 -1
  147. package/dist/common/router.d.ts.map +0 -1
  148. package/dist/common/ssr-errors.d.ts +0 -11
  149. package/dist/common/ssr-errors.d.ts.map +0 -1
  150. package/dist/common/ssr-errors.js +0 -16
  151. package/dist/common/ssr-errors.js.map +0 -1
  152. package/dist/common/ssr.d.ts +0 -42
  153. package/dist/common/ssr.d.ts.map +0 -1
  154. package/dist/common/ssr.js.map +0 -1
  155. package/dist/common/vnode.d.ts +0 -22
  156. package/dist/common/vnode.d.ts.map +0 -1
  157. package/dist/common/vnode.js.map +0 -1
  158. package/dist/components/error-boundary.d.ts +0 -15
  159. package/dist/components/error-boundary.d.ts.map +0 -1
  160. package/dist/components/error-boundary.js +0 -43
  161. package/dist/components/error-boundary.js.map +0 -1
  162. package/dist/components/link.d.ts +0 -68
  163. package/dist/components/link.d.ts.map +0 -1
  164. package/dist/components/link.js +0 -76
  165. package/dist/components/link.js.map +0 -1
  166. package/dist/control/case.d.ts +0 -19
  167. package/dist/control/case.d.ts.map +0 -1
  168. package/dist/control/case.js +0 -70
  169. package/dist/control/case.js.map +0 -1
  170. package/dist/control/for.d.ts +0 -24
  171. package/dist/control/for.d.ts.map +0 -1
  172. package/dist/control/for.js +0 -63
  173. package/dist/control/for.js.map +0 -1
  174. package/dist/control/shared.d.ts +0 -9
  175. package/dist/control/shared.d.ts.map +0 -1
  176. package/dist/control/shared.js +0 -20
  177. package/dist/control/shared.js.map +0 -1
  178. package/dist/control/show.d.ts +0 -15
  179. package/dist/control/show.d.ts.map +0 -1
  180. package/dist/control/show.js +0 -34
  181. package/dist/control/show.js.map +0 -1
  182. package/dist/data/data-runtime.d.ts +0 -28
  183. package/dist/data/data-runtime.d.ts.map +0 -1
  184. package/dist/data/data-runtime.js.map +0 -1
  185. package/dist/data/invalidation-listeners.js.map +0 -1
  186. package/dist/data/invalidation.d.ts +0 -9
  187. package/dist/data/invalidation.d.ts.map +0 -1
  188. package/dist/data/invalidation.js +0 -27
  189. package/dist/data/invalidation.js.map +0 -1
  190. package/dist/data/mutation-cell.d.ts +0 -28
  191. package/dist/data/mutation-cell.d.ts.map +0 -1
  192. package/dist/data/mutation-cell.js +0 -132
  193. package/dist/data/mutation-cell.js.map +0 -1
  194. package/dist/data/query-cell.d.ts +0 -46
  195. package/dist/data/query-cell.d.ts.map +0 -1
  196. package/dist/data/query-cell.js +0 -290
  197. package/dist/data/query-cell.js.map +0 -1
  198. package/dist/data/query-key.js +0 -42
  199. package/dist/data/query-key.js.map +0 -1
  200. package/dist/data/shared.js +0 -21
  201. package/dist/data/shared.js.map +0 -1
  202. package/dist/data/testing.js +0 -2
  203. package/dist/data/types.d.ts +0 -161
  204. package/dist/data/types.d.ts.map +0 -1
  205. package/dist/foundations/icon/icon.d.ts +0 -53
  206. package/dist/foundations/icon/icon.d.ts.map +0 -1
  207. package/dist/foundations/icon/icon.js +0 -88
  208. package/dist/foundations/icon/icon.js.map +0 -1
  209. package/dist/foundations/icon/icon.types.d.ts +0 -22
  210. package/dist/foundations/icon/icon.types.d.ts.map +0 -1
  211. package/dist/foundations/interactions/dismissable.d.ts +0 -72
  212. package/dist/foundations/interactions/dismissable.d.ts.map +0 -1
  213. package/dist/foundations/interactions/dismissable.js +0 -26
  214. package/dist/foundations/interactions/dismissable.js.map +0 -1
  215. package/dist/foundations/interactions/focusable.d.ts +0 -22
  216. package/dist/foundations/interactions/focusable.d.ts.map +0 -1
  217. package/dist/foundations/interactions/focusable.js +0 -18
  218. package/dist/foundations/interactions/focusable.js.map +0 -1
  219. package/dist/foundations/interactions/hoverable.d.ts +0 -26
  220. package/dist/foundations/interactions/hoverable.d.ts.map +0 -1
  221. package/dist/foundations/interactions/hoverable.js +0 -15
  222. package/dist/foundations/interactions/hoverable.js.map +0 -1
  223. package/dist/foundations/interactions/interaction-policy.d.ts +0 -50
  224. package/dist/foundations/interactions/interaction-policy.d.ts.map +0 -1
  225. package/dist/foundations/interactions/interaction-policy.js +0 -122
  226. package/dist/foundations/interactions/interaction-policy.js.map +0 -1
  227. package/dist/foundations/interactions/pressable.d.ts +0 -61
  228. package/dist/foundations/interactions/pressable.d.ts.map +0 -1
  229. package/dist/foundations/interactions/pressable.js +0 -51
  230. package/dist/foundations/interactions/pressable.js.map +0 -1
  231. package/dist/foundations/interactions/roving-focus.d.ts +0 -52
  232. package/dist/foundations/interactions/roving-focus.d.ts.map +0 -1
  233. package/dist/foundations/interactions/roving-focus.js +0 -71
  234. package/dist/foundations/interactions/roving-focus.js.map +0 -1
  235. package/dist/foundations/state/controllable.d.ts +0 -33
  236. package/dist/foundations/state/controllable.d.ts.map +0 -1
  237. package/dist/foundations/state/controllable.js +0 -82
  238. package/dist/foundations/state/controllable.js.map +0 -1
  239. package/dist/foundations/structures/collection.d.ts +0 -52
  240. package/dist/foundations/structures/collection.d.ts.map +0 -1
  241. package/dist/foundations/structures/collection.js +0 -51
  242. package/dist/foundations/structures/collection.js.map +0 -1
  243. package/dist/foundations/structures/layer.d.ts +0 -81
  244. package/dist/foundations/structures/layer.d.ts.map +0 -1
  245. package/dist/foundations/structures/layer.js +0 -81
  246. package/dist/foundations/structures/layer.js.map +0 -1
  247. package/dist/foundations/structures/layout.d.ts +0 -33
  248. package/dist/foundations/structures/layout.d.ts.map +0 -1
  249. package/dist/foundations/structures/layout.js +0 -13
  250. package/dist/foundations/structures/layout.js.map +0 -1
  251. package/dist/foundations/structures/portal.d.ts +0 -2
  252. package/dist/foundations/structures/portal.js +0 -3
  253. package/dist/foundations/structures/presence.d.ts +0 -37
  254. package/dist/foundations/structures/presence.d.ts.map +0 -1
  255. package/dist/foundations/structures/presence.js +0 -39
  256. package/dist/foundations/structures/presence.js.map +0 -1
  257. package/dist/foundations/structures/slot.d.ts +0 -35
  258. package/dist/foundations/structures/slot.d.ts.map +0 -1
  259. package/dist/foundations/structures/slot.js +0 -41
  260. package/dist/foundations/structures/slot.js.map +0 -1
  261. package/dist/foundations/utilities/aria.d.ts +0 -16
  262. package/dist/foundations/utilities/aria.d.ts.map +0 -1
  263. package/dist/foundations/utilities/aria.js +0 -17
  264. package/dist/foundations/utilities/aria.js.map +0 -1
  265. package/dist/foundations/utilities/compose-handlers.d.ts +0 -37
  266. package/dist/foundations/utilities/compose-handlers.d.ts.map +0 -1
  267. package/dist/foundations/utilities/compose-handlers.js +0 -20
  268. package/dist/foundations/utilities/compose-handlers.js.map +0 -1
  269. package/dist/foundations/utilities/compose-ref.d.ts.map +0 -1
  270. package/dist/foundations/utilities/compose-ref.js +0 -18
  271. package/dist/foundations/utilities/compose-ref.js.map +0 -1
  272. package/dist/foundations/utilities/event-types.d.ts +0 -20
  273. package/dist/foundations/utilities/event-types.d.ts.map +0 -1
  274. package/dist/foundations/utilities/merge-props.d.ts +0 -5
  275. package/dist/foundations/utilities/merge-props.d.ts.map +0 -1
  276. package/dist/foundations/utilities/merge-props.js +0 -49
  277. package/dist/foundations/utilities/merge-props.js.map +0 -1
  278. package/dist/foundations/utilities/use-id.d.ts +0 -32
  279. package/dist/foundations/utilities/use-id.d.ts.map +0 -1
  280. package/dist/foundations/utilities/use-id.js.map +0 -1
  281. package/dist/fx/fx.d.ts +0 -33
  282. package/dist/fx/fx.d.ts.map +0 -1
  283. package/dist/fx/fx.js +0 -213
  284. package/dist/fx/fx.js.map +0 -1
  285. package/dist/fx/noop.js +0 -9
  286. package/dist/fx/noop.js.map +0 -1
  287. package/dist/fx/timing.d.ts +0 -159
  288. package/dist/fx/timing.d.ts.map +0 -1
  289. package/dist/fx/timing.js +0 -243
  290. package/dist/fx/timing.js.map +0 -1
  291. package/dist/index.js.map +0 -1
  292. package/dist/jsx/index.d.ts +0 -2
  293. package/dist/jsx/index.js +0 -4
  294. package/dist/jsx/types.d.ts.map +0 -1
  295. package/dist/jsx/types.js +0 -2
  296. package/dist/jsx/utils.d.ts +0 -5
  297. package/dist/jsx/utils.d.ts.map +0 -1
  298. package/dist/jsx/utils.js +0 -19
  299. package/dist/jsx/utils.js.map +0 -1
  300. package/dist/jsx-dev-runtime.d.ts.map +0 -1
  301. package/dist/jsx-dev-runtime.js.map +0 -1
  302. package/dist/jsx-runtime.d.ts.map +0 -1
  303. package/dist/jsx-runtime.js.map +0 -1
  304. package/dist/jsx-runtime2.d.ts +0 -3
  305. package/dist/jsx-runtime2.js +0 -4
  306. package/dist/renderer/attributes.js +0 -232
  307. package/dist/renderer/attributes.js.map +0 -1
  308. package/dist/renderer/boundaries.js +0 -266
  309. package/dist/renderer/boundaries.js.map +0 -1
  310. package/dist/renderer/child-shape.js +0 -85
  311. package/dist/renderer/child-shape.js.map +0 -1
  312. package/dist/renderer/children-fastpath.js +0 -149
  313. package/dist/renderer/children-fastpath.js.map +0 -1
  314. package/dist/renderer/children.js +0 -160
  315. package/dist/renderer/children.js.map +0 -1
  316. package/dist/renderer/cleanup.js +0 -210
  317. package/dist/renderer/cleanup.js.map +0 -1
  318. package/dist/renderer/component-host-cleanup.js +0 -68
  319. package/dist/renderer/component-host-cleanup.js.map +0 -1
  320. package/dist/renderer/component-host-instances.js +0 -65
  321. package/dist/renderer/component-host-instances.js.map +0 -1
  322. package/dist/renderer/component-host.js +0 -247
  323. package/dist/renderer/component-host.js.map +0 -1
  324. package/dist/renderer/dom-host.js +0 -13
  325. package/dist/renderer/dom-host.js.map +0 -1
  326. package/dist/renderer/dom-internal.js +0 -186
  327. package/dist/renderer/dom-internal.js.map +0 -1
  328. package/dist/renderer/dom.js +0 -10
  329. package/dist/renderer/element-children.js +0 -279
  330. package/dist/renderer/element-children.js.map +0 -1
  331. package/dist/renderer/env.js +0 -2
  332. package/dist/renderer/error-boundary-dom.js +0 -78
  333. package/dist/renderer/error-boundary-dom.js.map +0 -1
  334. package/dist/renderer/evaluate-dom-range.js +0 -85
  335. package/dist/renderer/evaluate-dom-range.js.map +0 -1
  336. package/dist/renderer/evaluate-reconcile.js +0 -282
  337. package/dist/renderer/evaluate-reconcile.js.map +0 -1
  338. package/dist/renderer/evaluate.js +0 -84
  339. package/dist/renderer/evaluate.js.map +0 -1
  340. package/dist/renderer/fastpath.js +0 -150
  341. package/dist/renderer/fastpath.js.map +0 -1
  342. package/dist/renderer/for-commit-dom-map.js +0 -83
  343. package/dist/renderer/for-commit-dom-map.js.map +0 -1
  344. package/dist/renderer/for-commit-removal.js +0 -36
  345. package/dist/renderer/for-commit-removal.js.map +0 -1
  346. package/dist/renderer/for-commit-reorder.js +0 -89
  347. package/dist/renderer/for-commit-reorder.js.map +0 -1
  348. package/dist/renderer/for-commit.js +0 -314
  349. package/dist/renderer/for-commit.js.map +0 -1
  350. package/dist/renderer/index.js +0 -38
  351. package/dist/renderer/index.js.map +0 -1
  352. package/dist/renderer/keyed-children.js +0 -32
  353. package/dist/renderer/keyed-children.js.map +0 -1
  354. package/dist/renderer/keyed.js +0 -167
  355. package/dist/renderer/keyed.js.map +0 -1
  356. package/dist/renderer/namespaces.js +0 -23
  357. package/dist/renderer/namespaces.js.map +0 -1
  358. package/dist/renderer/prop-bindings.js +0 -280
  359. package/dist/renderer/prop-bindings.js.map +0 -1
  360. package/dist/renderer/reactive-child-dom.js +0 -133
  361. package/dist/renderer/reactive-child-dom.js.map +0 -1
  362. package/dist/renderer/reactive-child-sources.js +0 -184
  363. package/dist/renderer/reactive-child-sources.js.map +0 -1
  364. package/dist/renderer/reactive-children.js +0 -294
  365. package/dist/renderer/reactive-children.js.map +0 -1
  366. package/dist/renderer/reconcile-commit.js +0 -38
  367. package/dist/renderer/reconcile-commit.js.map +0 -1
  368. package/dist/renderer/reconcile-fastpaths.js +0 -107
  369. package/dist/renderer/reconcile-fastpaths.js.map +0 -1
  370. package/dist/renderer/reconcile-resolution.js +0 -187
  371. package/dist/renderer/reconcile-resolution.js.map +0 -1
  372. package/dist/renderer/reconcile.js +0 -39
  373. package/dist/renderer/reconcile.js.map +0 -1
  374. package/dist/renderer/retained-element-rollback.js +0 -277
  375. package/dist/renderer/retained-element-rollback.js.map +0 -1
  376. package/dist/renderer/stable-patch.js +0 -81
  377. package/dist/renderer/stable-patch.js.map +0 -1
  378. package/dist/renderer/static-reuse.js +0 -96
  379. package/dist/renderer/static-reuse.js.map +0 -1
  380. package/dist/renderer/types.js +0 -2
  381. package/dist/renderer/utils.js +0 -256
  382. package/dist/renderer/utils.js.map +0 -1
  383. package/dist/router/access.js +0 -36
  384. package/dist/router/access.js.map +0 -1
  385. package/dist/router/activity.d.ts +0 -10
  386. package/dist/router/activity.d.ts.map +0 -1
  387. package/dist/router/activity.js +0 -87
  388. package/dist/router/activity.js.map +0 -1
  389. package/dist/router/authoring.d.ts +0 -22
  390. package/dist/router/authoring.d.ts.map +0 -1
  391. package/dist/router/authoring.js +0 -198
  392. package/dist/router/authoring.js.map +0 -1
  393. package/dist/router/internal-types.d.ts +0 -31
  394. package/dist/router/internal-types.d.ts.map +0 -1
  395. package/dist/router/lazy.d.ts +0 -19
  396. package/dist/router/lazy.d.ts.map +0 -1
  397. package/dist/router/lazy.js +0 -52
  398. package/dist/router/lazy.js.map +0 -1
  399. package/dist/router/manifest.d.ts +0 -10
  400. package/dist/router/manifest.d.ts.map +0 -1
  401. package/dist/router/manifest.js +0 -49
  402. package/dist/router/manifest.js.map +0 -1
  403. package/dist/router/match.js +0 -122
  404. package/dist/router/match.js.map +0 -1
  405. package/dist/router/navigate.d.ts +0 -11
  406. package/dist/router/navigate.d.ts.map +0 -1
  407. package/dist/router/navigate.js +0 -76
  408. package/dist/router/navigate.js.map +0 -1
  409. package/dist/router/navigation-registry.d.ts +0 -32
  410. package/dist/router/navigation-registry.d.ts.map +0 -1
  411. package/dist/router/navigation-registry.js +0 -105
  412. package/dist/router/navigation-registry.js.map +0 -1
  413. package/dist/router/navigation-scroll.d.ts +0 -14
  414. package/dist/router/navigation-scroll.d.ts.map +0 -1
  415. package/dist/router/navigation-scroll.js +0 -93
  416. package/dist/router/navigation-scroll.js.map +0 -1
  417. package/dist/router/navigation-targets.d.ts +0 -31
  418. package/dist/router/navigation-targets.d.ts.map +0 -1
  419. package/dist/router/navigation-targets.js +0 -255
  420. package/dist/router/navigation-targets.js.map +0 -1
  421. package/dist/router/policy.d.ts +0 -28
  422. package/dist/router/policy.d.ts.map +0 -1
  423. package/dist/router/policy.js +0 -132
  424. package/dist/router/policy.js.map +0 -1
  425. package/dist/router/rendering.d.ts +0 -10
  426. package/dist/router/rendering.d.ts.map +0 -1
  427. package/dist/router/rendering.js +0 -46
  428. package/dist/router/rendering.js.map +0 -1
  429. package/dist/router/resolution.d.ts +0 -4
  430. package/dist/router/resolution.d.ts.map +0 -1
  431. package/dist/router/resolution.js +0 -86
  432. package/dist/router/resolution.js.map +0 -1
  433. package/dist/router/route-context.js +0 -79
  434. package/dist/router/route-context.js.map +0 -1
  435. package/dist/router/route-matching.d.ts +0 -20
  436. package/dist/router/route-matching.d.ts.map +0 -1
  437. package/dist/router/route-matching.js +0 -175
  438. package/dist/router/route-matching.js.map +0 -1
  439. package/dist/router/route-query.d.ts +0 -17
  440. package/dist/router/route-query.d.ts.map +0 -1
  441. package/dist/router/route-query.js +0 -47
  442. package/dist/router/route-query.js.map +0 -1
  443. package/dist/router/route.d.ts +0 -8
  444. package/dist/router/route.js +0 -10
  445. package/dist/router/store.d.ts +0 -50
  446. package/dist/router/store.d.ts.map +0 -1
  447. package/dist/router/store.js +0 -171
  448. package/dist/router/store.js.map +0 -1
  449. package/dist/router/testing.js +0 -4
  450. package/dist/runtime/access.d.ts +0 -20
  451. package/dist/runtime/access.d.ts.map +0 -1
  452. package/dist/runtime/access.js +0 -45
  453. package/dist/runtime/access.js.map +0 -1
  454. package/dist/runtime/child-scope.d.ts +0 -22
  455. package/dist/runtime/child-scope.d.ts.map +0 -1
  456. package/dist/runtime/child-scope.js +0 -87
  457. package/dist/runtime/child-scope.js.map +0 -1
  458. package/dist/runtime/component-cleanup.d.ts +0 -16
  459. package/dist/runtime/component-cleanup.d.ts.map +0 -1
  460. package/dist/runtime/component-cleanup.js +0 -70
  461. package/dist/runtime/component-cleanup.js.map +0 -1
  462. package/dist/runtime/component-commit.js +0 -165
  463. package/dist/runtime/component-commit.js.map +0 -1
  464. package/dist/runtime/component-facade.d.ts +0 -5
  465. package/dist/runtime/component-facade.js +0 -4
  466. package/dist/runtime/component-internal.d.ts +0 -100
  467. package/dist/runtime/component-internal.d.ts.map +0 -1
  468. package/dist/runtime/component-internal.js +0 -219
  469. package/dist/runtime/component-internal.js.map +0 -1
  470. package/dist/runtime/component-lifecycle.d.ts +0 -49
  471. package/dist/runtime/component-lifecycle.d.ts.map +0 -1
  472. package/dist/runtime/component-lifecycle.js +0 -176
  473. package/dist/runtime/component-lifecycle.js.map +0 -1
  474. package/dist/runtime/component-scope.d.ts +0 -55
  475. package/dist/runtime/component-scope.d.ts.map +0 -1
  476. package/dist/runtime/component-scope.js.map +0 -1
  477. package/dist/runtime/component.d.ts +0 -5
  478. package/dist/runtime/component.js +0 -5
  479. package/dist/runtime/context.d.ts +0 -69
  480. package/dist/runtime/context.d.ts.map +0 -1
  481. package/dist/runtime/context.js +0 -210
  482. package/dist/runtime/context.js.map +0 -1
  483. package/dist/runtime/control.d.ts +0 -43
  484. package/dist/runtime/control.d.ts.map +0 -1
  485. package/dist/runtime/control.js +0 -126
  486. package/dist/runtime/control.js.map +0 -1
  487. package/dist/runtime/derive.d.ts +0 -17
  488. package/dist/runtime/derive.d.ts.map +0 -1
  489. package/dist/runtime/derive.js +0 -142
  490. package/dist/runtime/derive.js.map +0 -1
  491. package/dist/runtime/dev-namespace.d.ts +0 -31
  492. package/dist/runtime/dev-namespace.d.ts.map +0 -1
  493. package/dist/runtime/dev-namespace.js +0 -57
  494. package/dist/runtime/dev-namespace.js.map +0 -1
  495. package/dist/runtime/effect.d.ts +0 -32
  496. package/dist/runtime/effect.d.ts.map +0 -1
  497. package/dist/runtime/effect.js +0 -177
  498. package/dist/runtime/effect.js.map +0 -1
  499. package/dist/runtime/error-boundary.d.ts +0 -5
  500. package/dist/runtime/error-boundary.d.ts.map +0 -1
  501. package/dist/runtime/error-boundary.js +0 -31
  502. package/dist/runtime/error-boundary.js.map +0 -1
  503. package/dist/runtime/events.d.ts +0 -58
  504. package/dist/runtime/events.d.ts.map +0 -1
  505. package/dist/runtime/events.js +0 -204
  506. package/dist/runtime/events.js.map +0 -1
  507. package/dist/runtime/execution-model.d.ts +0 -7
  508. package/dist/runtime/execution-model.d.ts.map +0 -1
  509. package/dist/runtime/execution-model.js +0 -15
  510. package/dist/runtime/execution-model.js.map +0 -1
  511. package/dist/runtime/fastlane.d.ts +0 -34
  512. package/dist/runtime/fastlane.d.ts.map +0 -1
  513. package/dist/runtime/fastlane.js +0 -175
  514. package/dist/runtime/fastlane.js.map +0 -1
  515. package/dist/runtime/for-bench.d.ts +0 -41
  516. package/dist/runtime/for-bench.d.ts.map +0 -1
  517. package/dist/runtime/for-bench.js +0 -171
  518. package/dist/runtime/for-bench.js.map +0 -1
  519. package/dist/runtime/for-internal.d.ts +0 -43
  520. package/dist/runtime/for-internal.d.ts.map +0 -1
  521. package/dist/runtime/for-internal.js +0 -98
  522. package/dist/runtime/for-internal.js.map +0 -1
  523. package/dist/runtime/for-reconcile.d.ts +0 -8
  524. package/dist/runtime/for-reconcile.d.ts.map +0 -1
  525. package/dist/runtime/for-reconcile.js +0 -389
  526. package/dist/runtime/for-reconcile.js.map +0 -1
  527. package/dist/runtime/for-scopes.d.ts +0 -26
  528. package/dist/runtime/for-scopes.d.ts.map +0 -1
  529. package/dist/runtime/for-scopes.js +0 -160
  530. package/dist/runtime/for-scopes.js.map +0 -1
  531. package/dist/runtime/for-signals.d.ts +0 -30
  532. package/dist/runtime/for-signals.d.ts.map +0 -1
  533. package/dist/runtime/for-signals.js +0 -139
  534. package/dist/runtime/for-signals.js.map +0 -1
  535. package/dist/runtime/for-types.d.ts +0 -9
  536. package/dist/runtime/for-types.d.ts.map +0 -1
  537. package/dist/runtime/for.d.ts +0 -4
  538. package/dist/runtime/for.js +0 -5
  539. package/dist/runtime/index.d.ts +0 -24
  540. package/dist/runtime/index.js +0 -31
  541. package/dist/runtime/lifecycle-operations.d.ts +0 -31
  542. package/dist/runtime/lifecycle-operations.d.ts.map +0 -1
  543. package/dist/runtime/lifecycle-operations.js.map +0 -1
  544. package/dist/runtime/operations.d.ts +0 -3
  545. package/dist/runtime/operations.js +0 -3
  546. package/dist/runtime/perf-metrics.d.ts +0 -26
  547. package/dist/runtime/perf-metrics.d.ts.map +0 -1
  548. package/dist/runtime/perf-metrics.js +0 -70
  549. package/dist/runtime/perf-metrics.js.map +0 -1
  550. package/dist/runtime/portal.d.ts +0 -22
  551. package/dist/runtime/portal.d.ts.map +0 -1
  552. package/dist/runtime/portal.js.map +0 -1
  553. package/dist/runtime/readable.d.ts +0 -29
  554. package/dist/runtime/readable.d.ts.map +0 -1
  555. package/dist/runtime/readable.js +0 -159
  556. package/dist/runtime/readable.js.map +0 -1
  557. package/dist/runtime/resource-cell.js +0 -114
  558. package/dist/runtime/resource-cell.js.map +0 -1
  559. package/dist/runtime/resource-operation.d.ts +0 -13
  560. package/dist/runtime/resource-operation.d.ts.map +0 -1
  561. package/dist/runtime/resource-operation.js +0 -170
  562. package/dist/runtime/resource-operation.js.map +0 -1
  563. package/dist/runtime/runtime.d.ts.map +0 -1
  564. package/dist/runtime/runtime.js +0 -59
  565. package/dist/runtime/runtime.js.map +0 -1
  566. package/dist/runtime/scheduler.d.ts.map +0 -1
  567. package/dist/runtime/scheduler.js.map +0 -1
  568. package/dist/runtime/selector-store.js +0 -24
  569. package/dist/runtime/selector-store.js.map +0 -1
  570. package/dist/runtime/selector.d.ts +0 -11
  571. package/dist/runtime/selector.d.ts.map +0 -1
  572. package/dist/runtime/selector.js.map +0 -1
  573. package/dist/runtime/snapshot-source.d.ts +0 -10
  574. package/dist/runtime/snapshot-source.d.ts.map +0 -1
  575. package/dist/runtime/snapshot-source.js.map +0 -1
  576. package/dist/runtime/state.d.ts +0 -55
  577. package/dist/runtime/state.d.ts.map +0 -1
  578. package/dist/runtime/state.js.map +0 -1
  579. package/dist/ssg/batch-render.js +0 -103
  580. package/dist/ssg/batch-render.js.map +0 -1
  581. package/dist/ssg/create-static-gen.d.ts +0 -64
  582. package/dist/ssg/create-static-gen.d.ts.map +0 -1
  583. package/dist/ssg/create-static-gen.js +0 -199
  584. package/dist/ssg/create-static-gen.js.map +0 -1
  585. package/dist/ssg/generate-metadata.js +0 -94
  586. package/dist/ssg/generate-metadata.js.map +0 -1
  587. package/dist/ssg/generation-plan.js +0 -70
  588. package/dist/ssg/generation-plan.js.map +0 -1
  589. package/dist/ssg/incremental-manifest.js +0 -56
  590. package/dist/ssg/incremental-manifest.js.map +0 -1
  591. package/dist/ssg/resolve-ssg-data.js +0 -105
  592. package/dist/ssg/resolve-ssg-data.js.map +0 -1
  593. package/dist/ssg/route-utils.js +0 -24
  594. package/dist/ssg/route-utils.js.map +0 -1
  595. package/dist/ssg/static-routes.js +0 -102
  596. package/dist/ssg/static-routes.js.map +0 -1
  597. package/dist/ssg/types.d.ts +0 -189
  598. package/dist/ssg/types.d.ts.map +0 -1
  599. package/dist/ssg/write-static-files.js +0 -73
  600. package/dist/ssg/write-static-files.js.map +0 -1
  601. package/dist/ssr/attrs.js +0 -94
  602. package/dist/ssr/attrs.js.map +0 -1
  603. package/dist/ssr/boundaries.js +0 -113
  604. package/dist/ssr/boundaries.js.map +0 -1
  605. package/dist/ssr/component-runtime.js +0 -111
  606. package/dist/ssr/component-runtime.js.map +0 -1
  607. package/dist/ssr/context.d.ts +0 -50
  608. package/dist/ssr/context.d.ts.map +0 -1
  609. package/dist/ssr/context.js +0 -91
  610. package/dist/ssr/context.js.map +0 -1
  611. package/dist/ssr/errors.d.ts +0 -10
  612. package/dist/ssr/errors.d.ts.map +0 -1
  613. package/dist/ssr/errors.js +0 -14
  614. package/dist/ssr/errors.js.map +0 -1
  615. package/dist/ssr/escape.js +0 -193
  616. package/dist/ssr/escape.js.map +0 -1
  617. package/dist/ssr/hydration-data.js +0 -10
  618. package/dist/ssr/hydration-data.js.map +0 -1
  619. package/dist/ssr/hydration-verify.d.ts +0 -12
  620. package/dist/ssr/hydration-verify.d.ts.map +0 -1
  621. package/dist/ssr/hydration-verify.js +0 -144
  622. package/dist/ssr/hydration-verify.js.map +0 -1
  623. package/dist/ssr/index-internal.d.ts +0 -15
  624. package/dist/ssr/index-internal.d.ts.map +0 -1
  625. package/dist/ssr/index-internal.js +0 -19
  626. package/dist/ssr/index-internal.js.map +0 -1
  627. package/dist/ssr/render-keys.js +0 -16
  628. package/dist/ssr/render-keys.js.map +0 -1
  629. package/dist/ssr/render-resolved.d.ts +0 -20
  630. package/dist/ssr/render-resolved.d.ts.map +0 -1
  631. package/dist/ssr/render-resolved.js +0 -35
  632. package/dist/ssr/render-resolved.js.map +0 -1
  633. package/dist/ssr/render-sync.d.ts +0 -21
  634. package/dist/ssr/render-sync.d.ts.map +0 -1
  635. package/dist/ssr/render-sync.js +0 -275
  636. package/dist/ssr/render-sync.js.map +0 -1
  637. package/dist/ssr/route-policy-resolution.js +0 -78
  638. package/dist/ssr/route-policy-resolution.js.map +0 -1
  639. package/dist/ssr/route-render.d.ts +0 -77
  640. package/dist/ssr/route-render.d.ts.map +0 -1
  641. package/dist/ssr/route-render.js +0 -120
  642. package/dist/ssr/route-render.js.map +0 -1
  643. package/dist/ssr/sink.d.ts +0 -26
  644. package/dist/ssr/sink.d.ts.map +0 -1
  645. package/dist/ssr/sink.js +0 -86
  646. package/dist/ssr/sink.js.map +0 -1
  647. package/dist/ssr/types.d.ts +0 -23
  648. package/dist/ssr/types.d.ts.map +0 -1
  649. package/dist/ssr/verify-hydration.js.map +0 -1
  650. package/dist/testing/index.d.ts.map +0 -1
  651. package/dist/testing/index.js.map +0 -1
@@ -1,189 +0,0 @@
1
- import { DocumentRenderer } from "../common/ssr.js";
2
- import { RenderableChild } from "../common/vnode.js";
3
- import { ComponentFunction } from "../common/component.js";
4
- import { RouteAuthMode, RouteHandler, RoutePathParams, RoutePolicy, RouteRegistry } from "../common/router.js";
5
-
6
- //#region src/ssg/types.d.ts
7
- type SSGMode = 'full' | 'incremental';
8
- type RouteRenderStatus = 'success' | 'error' | 'skipped' | 'removed';
9
- type RouteRenderReason = 'full' | 'changed-key' | 'changed-route' | 'new-route' | 'no-keys' | 'unchanged' | 'deleted' | 'runtime-only';
10
- type RouteConfigParams<Path extends string> = string extends Path ? Record<string, string> : RoutePathParams<Path>;
11
- type RouteComponentProps<Path extends string> = RouteConfigParams<Path> & Record<string, unknown>;
12
- type StaticRouteComponent<Path extends string> = (props: RouteComponentProps<Path>, context?: Parameters<ComponentFunction>[1]) => RenderableChild;
13
- /**
14
- * Route config accepted by SSG.
15
- *
16
- * `handler` is preferred and matches router/SSR naming.
17
- * `component` is kept for compatibility and is normalized to `handler`.
18
- */
19
- interface RouteConfig<Path extends string = string> {
20
- /** URL path to generate (e.g., "/blog/post-1", "/") */
21
- path: Path;
22
- /** Route handler compatible with router/SSR */
23
- handler?: RouteHandler;
24
- /** Backward-compatible alias for handler */
25
- component?: StaticRouteComponent<Path>;
26
- /** Optional base props merged with route params during render */
27
- props?: Record<string, unknown>;
28
- /** Optional namespace for router compatibility */
29
- namespace?: string;
30
- /** Guest routes remain prerenderable; authenticated routes are runtime-only by default */
31
- auth?: RouteAuthMode;
32
- /** Role-gated routes are runtime-only by default */
33
- role?: string;
34
- /** Permission-gated routes are runtime-only by default */
35
- permission?: string;
36
- /** Advanced runtime access checks disable prerendering by default */
37
- policies?: readonly RoutePolicy[];
38
- /** Optional path parameter map for template paths like "/blog/{slug}" */
39
- params?: RouteConfigParams<Path>;
40
- /** Optional explicit invalidation keys for incremental generation */
41
- invalidationKeys?: string[];
42
- /**
43
- * SSG entry generator for parameterized routes.
44
- *
45
- * Return one param map per page to be generated. The path template is
46
- * expanded with each map to produce a concrete URL, e.g.:
47
- *
48
- * ```ts
49
- * route('/posts/{slug}', PostPage, {
50
- * entries: async () => getPosts().map(p => ({ slug: p.slug })),
51
- * });
52
- * ```
53
- */
54
- entries?: () => Array<RouteConfigParams<Path>> | Promise<Array<RouteConfigParams<Path>>>;
55
- }
56
- interface SSGBaseOptions {
57
- /** Output directory for generated HTML files */
58
- outputDir: string;
59
- /** Optional seed for deterministic rendering */
60
- seed?: number;
61
- /** Optional override data for resources (route-keyed) */
62
- dataOverrides?: Record<string, unknown>;
63
- /** Optional document wrapper for full HTML output */
64
- document?: DocumentRenderer;
65
- /** Optional concurrency limit for rendering (default: 10) */
66
- concurrency?: number;
67
- /** Preferred render parallelism. `'auto'` resolves from the host machine. */
68
- parallelism?: number | 'auto';
69
- }
70
- /** Options for createStaticGen */
71
- type SSGOptions<TRoutes extends readonly RouteConfig[] = RouteConfig[]> = SSGBaseOptions & ({
72
- /** Routes to generate. Prefer `registry` when routes are already defined through the router DSL. */routes: TRoutes;
73
- registry?: never;
74
- } | {
75
- /** Explicit route registry captured with `createRouteRegistry()`. */registry: RouteRegistry;
76
- routes?: never;
77
- });
78
- /** Options for a single generation run */
79
- interface SSGGenerateOptions {
80
- /** Generation mode */
81
- mode?: SSGMode;
82
- /** Changed invalidation keys for incremental runs */
83
- changedKeys?: string[];
84
- /** Changed concrete route paths for incremental runs */
85
- changedRoutes?: string[];
86
- /** Force a full rebuild even when incremental mode was requested */
87
- forceFull?: boolean;
88
- }
89
- /** Result of rendering a single route */
90
- interface RouteRenderResult {
91
- /** URL path */
92
- path: string;
93
- /** Output file path relative to outputDir */
94
- filePath: string;
95
- /** Generated HTML content */
96
- html: string;
97
- /** File size in bytes */
98
- fileSize: number;
99
- /** Render duration in milliseconds */
100
- renderDuration: number;
101
- /** Number of resources discovered and rendered */
102
- resourceCount: number;
103
- /** Render or generation status */
104
- status: RouteRenderStatus;
105
- /** Why this route was rendered, skipped, or removed */
106
- reason: RouteRenderReason;
107
- /** Whether the output file was written during this run */
108
- written: boolean;
109
- /** Error message if rendering failed */
110
- error?: string;
111
- }
112
- /** Overall result from SSG generation */
113
- interface SSGResult {
114
- /** ISO timestamp of generation */
115
- generatedAt: string;
116
- /** Total number of routes processed */
117
- totalRoutes: number;
118
- /** Number of successfully generated routes */
119
- successful: number;
120
- /** Number of failed routes */
121
- failed: number;
122
- /** Total generation duration in milliseconds */
123
- totalDuration: number;
124
- /** Effective generation mode */
125
- mode: SSGMode;
126
- /** Number of routes rendered during this run */
127
- rebuilt: number;
128
- /** Number of current routes skipped as unchanged */
129
- skipped: number;
130
- /** Number of stale routes removed from output */
131
- removed: number;
132
- /** Number of rendered routes whose HTML bytes were unchanged */
133
- cacheHits: number;
134
- /** Invalidation keys applied to this run */
135
- invalidatedKeys: string[];
136
- /** Concrete route paths applied to this run */
137
- invalidatedRoutes: string[];
138
- /** Per-route results */
139
- routes: RouteRenderResult[];
140
- }
141
- /** Metadata to write to metadata.json */
142
- interface SSGMetadata extends Record<string, unknown> {
143
- /** ISO timestamp of generation */
144
- generatedAt: string;
145
- /** Total number of routes processed */
146
- totalRoutes: number;
147
- /** Number of successfully generated routes */
148
- successful: number;
149
- /** Number of failed routes */
150
- failed: number;
151
- /** Total generation duration in milliseconds */
152
- totalDuration: number;
153
- /** Effective generation mode */
154
- mode: SSGMode;
155
- /** Number of routes rendered during this run */
156
- rebuilt: number;
157
- /** Number of current routes skipped as unchanged */
158
- skipped: number;
159
- /** Number of stale routes removed from output */
160
- removed: number;
161
- /** Number of rendered routes whose HTML bytes were unchanged */
162
- cacheHits: number;
163
- /** Invalidation keys applied to this run */
164
- invalidatedKeys: string[];
165
- /** Concrete route paths applied to this run */
166
- invalidatedRoutes: string[];
167
- /** Per-route details */
168
- routes: Array<{
169
- /** URL path */path: string; /** Output file path relative to outputDir */
170
- filePath: string; /** File size in bytes */
171
- fileSize: number; /** Render duration in milliseconds */
172
- renderDuration: number; /** Number of resources discovered and rendered */
173
- resourceCount: number; /** Render or generation status */
174
- status: RouteRenderStatus; /** Why this route was rendered, skipped, or removed */
175
- reason: RouteRenderReason; /** Whether the output file was written during this run */
176
- written: boolean; /** Error message if rendering failed */
177
- error?: string;
178
- }>;
179
- }
180
- /** Resource discovery result for a single route */
181
- interface DiscoveredResources {
182
- [key: string]: {
183
- count: number;
184
- dependencies: string[];
185
- };
186
- }
187
- //#endregion
188
- export { DiscoveredResources, RouteConfig, RouteRenderReason, RouteRenderResult, RouteRenderStatus, SSGGenerateOptions, SSGMetadata, SSGMode, SSGOptions, SSGResult };
189
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/ssg/types.ts"],"mappings":"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"}
@@ -1,73 +0,0 @@
1
- import "./route-utils.js";
2
- import * as fs from "node:fs/promises";
3
- import * as fsSync from "node:fs";
4
- import * as pathModule from "node:path";
5
- //#region src/ssg/write-static-files.ts
6
- /**
7
- * File I/O for Static Site Generation
8
- *
9
- * Uses Node.js fs/path modules to write rendered HTML files to disk.
10
- * This module is Node-only and not intended for browser builds.
11
- */
12
- /**
13
- * Write rendered routes to disk
14
- * Creates outputDir/{route-path}/index.html structure
15
- */
16
- async function writeStaticFiles(results, outputDir, options = {}) {
17
- await fs.mkdir(outputDir, { recursive: true });
18
- for (const result of results) {
19
- if (result.status !== "removed") continue;
20
- const fullPath = pathModule.join(outputDir, result.filePath);
21
- if (fsSync.existsSync(fullPath)) {
22
- await fs.rm(fullPath, { force: true });
23
- await pruneEmptyDirs(pathModule.dirname(fullPath), outputDir);
24
- }
25
- }
26
- const pendingWrites = [];
27
- for (let index = 0; index < results.length; index += 1) {
28
- const result = results[index];
29
- if (result.status === "error") {
30
- console.warn(`Skipping failed route: ${result.path} - ${result.error}`);
31
- continue;
32
- }
33
- if (result.status === "success" && result.written) pendingWrites.push(result);
34
- }
35
- const directories = [];
36
- const seenDirectories = /* @__PURE__ */ new Set();
37
- for (const result of pendingWrites) {
38
- const dir = pathModule.dirname(pathModule.join(outputDir, result.filePath));
39
- if (!seenDirectories.has(dir)) {
40
- seenDirectories.add(dir);
41
- directories.push(dir);
42
- }
43
- }
44
- for (const dir of directories) await fs.mkdir(dir, { recursive: true });
45
- const concurrency = Math.max(1, Math.min(options.concurrency ?? 8, pendingWrites.length || 1));
46
- let nextIndex = 0;
47
- const worker = async () => {
48
- while (true) {
49
- const current = nextIndex;
50
- nextIndex += 1;
51
- if (current >= pendingWrites.length) return;
52
- const result = pendingWrites[current];
53
- const fullPath = pathModule.join(outputDir, result.filePath);
54
- await fs.writeFile(fullPath, result.html, "utf8");
55
- }
56
- };
57
- await Promise.all(Array.from({ length: concurrency }, () => worker()));
58
- }
59
- async function pruneEmptyDirs(startDir, rootDir) {
60
- let current = startDir;
61
- const normalizedRoot = pathModule.resolve(rootDir);
62
- while (current.startsWith(normalizedRoot)) {
63
- if (!fsSync.existsSync(current)) break;
64
- if ((await fs.readdir(current)).length > 0) break;
65
- await fs.rmdir(current);
66
- if (pathModule.resolve(current) === normalizedRoot) break;
67
- current = pathModule.dirname(current);
68
- }
69
- }
70
- //#endregion
71
- export { writeStaticFiles };
72
-
73
- //# sourceMappingURL=write-static-files.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-static-files.js","names":[],"sources":["../../src/ssg/write-static-files.ts"],"sourcesContent":["/**\n * File I/O for Static Site Generation\n *\n * Uses Node.js fs/path modules to write rendered HTML files to disk.\n * This module is Node-only and not intended for browser builds.\n */\n\nimport * as fs from 'node:fs/promises';\nimport * as fsSync from 'node:fs';\nimport * as pathModule from 'node:path';\nimport type { RouteRenderResult } from './types';\n\ninterface WriteStaticFilesOptions {\n concurrency?: number;\n}\n\n/**\n * Write rendered routes to disk\n * Creates outputDir/{route-path}/index.html structure\n */\nexport async function writeStaticFiles(\n results: RouteRenderResult[],\n outputDir: string,\n options: WriteStaticFilesOptions = {}\n): Promise<void> {\n await fs.mkdir(outputDir, { recursive: true });\n\n for (const result of results) {\n if (result.status !== 'removed') {\n continue;\n }\n\n const fullPath = pathModule.join(outputDir, result.filePath);\n if (fsSync.existsSync(fullPath)) {\n await fs.rm(fullPath, { force: true });\n await pruneEmptyDirs(pathModule.dirname(fullPath), outputDir);\n }\n }\n\n const pendingWrites: RouteRenderResult[] = [];\n for (let index = 0; index < results.length; index += 1) {\n const result = results[index];\n if (result.status === 'error') {\n console.warn(`Skipping failed route: ${result.path} - ${result.error}`);\n continue;\n }\n if (result.status === 'success' && result.written) {\n pendingWrites.push(result);\n }\n }\n\n const directories: string[] = [];\n const seenDirectories = new Set<string>();\n for (const result of pendingWrites) {\n const dir = pathModule.dirname(pathModule.join(outputDir, result.filePath));\n if (!seenDirectories.has(dir)) {\n seenDirectories.add(dir);\n directories.push(dir);\n }\n }\n\n for (const dir of directories) {\n await fs.mkdir(dir, { recursive: true });\n }\n\n const concurrency = Math.max(\n 1,\n Math.min(options.concurrency ?? 8, pendingWrites.length || 1)\n );\n let nextIndex = 0;\n\n const worker = async () => {\n while (true) {\n const current = nextIndex;\n nextIndex += 1;\n if (current >= pendingWrites.length) {\n return;\n }\n\n const result = pendingWrites[current];\n const fullPath = pathModule.join(outputDir, result.filePath);\n await fs.writeFile(fullPath, result.html, 'utf8');\n }\n };\n\n await Promise.all(Array.from({ length: concurrency }, () => worker()));\n}\n\n/**\n * Get the output file path for a route\n * E.g., \"/blog/post\" -> \"blog/post\" or \"/\" -> \"\"\n */\nexport { getOutputFilePath } from './route-utils';\n\nasync function pruneEmptyDirs(\n startDir: string,\n rootDir: string\n): Promise<void> {\n let current = startDir;\n const normalizedRoot = pathModule.resolve(rootDir);\n\n while (current.startsWith(normalizedRoot)) {\n if (!fsSync.existsSync(current)) {\n break;\n }\n\n if ((await fs.readdir(current)).length > 0) {\n break;\n }\n\n await fs.rmdir(current);\n if (pathModule.resolve(current) === normalizedRoot) {\n break;\n }\n current = pathModule.dirname(current);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAoBA,eAAsB,iBACpB,SACA,WACA,UAAmC,CAAC,GACrB;CACf,MAAM,GAAG,MAAM,WAAW,EAAE,WAAW,KAAK,CAAC;CAE7C,KAAK,MAAM,UAAU,SAAS;EAC5B,IAAI,OAAO,WAAW,WACpB;EAGF,MAAM,WAAW,WAAW,KAAK,WAAW,OAAO,QAAQ;EAC3D,IAAI,OAAO,WAAW,QAAQ,GAAG;GAC/B,MAAM,GAAG,GAAG,UAAU,EAAE,OAAO,KAAK,CAAC;GACrC,MAAM,eAAe,WAAW,QAAQ,QAAQ,GAAG,SAAS;EAC9D;CACF;CAEA,MAAM,gBAAqC,CAAC;CAC5C,KAAK,IAAI,QAAQ,GAAG,QAAQ,QAAQ,QAAQ,SAAS,GAAG;EACtD,MAAM,SAAS,QAAQ;EACvB,IAAI,OAAO,WAAW,SAAS;GAC7B,QAAQ,KAAK,0BAA0B,OAAO,KAAK,KAAK,OAAO,OAAO;GACtE;EACF;EACA,IAAI,OAAO,WAAW,aAAa,OAAO,SACxC,cAAc,KAAK,MAAM;CAE7B;CAEA,MAAM,cAAwB,CAAC;CAC/B,MAAM,kCAAkB,IAAI,IAAY;CACxC,KAAK,MAAM,UAAU,eAAe;EAClC,MAAM,MAAM,WAAW,QAAQ,WAAW,KAAK,WAAW,OAAO,QAAQ,CAAC;EAC1E,IAAI,CAAC,gBAAgB,IAAI,GAAG,GAAG;GAC7B,gBAAgB,IAAI,GAAG;GACvB,YAAY,KAAK,GAAG;EACtB;CACF;CAEA,KAAK,MAAM,OAAO,aAChB,MAAM,GAAG,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;CAGzC,MAAM,cAAc,KAAK,IACvB,GACA,KAAK,IAAI,QAAQ,eAAe,GAAG,cAAc,UAAU,CAAC,CAC9D;CACA,IAAI,YAAY;CAEhB,MAAM,SAAS,YAAY;EACzB,OAAO,MAAM;GACX,MAAM,UAAU;GAChB,aAAa;GACb,IAAI,WAAW,cAAc,QAC3B;GAGF,MAAM,SAAS,cAAc;GAC7B,MAAM,WAAW,WAAW,KAAK,WAAW,OAAO,QAAQ;GAC3D,MAAM,GAAG,UAAU,UAAU,OAAO,MAAM,MAAM;EAClD;CACF;CAEA,MAAM,QAAQ,IAAI,MAAM,KAAK,EAAE,QAAQ,YAAY,SAAS,OAAO,CAAC,CAAC;AACvE;AAQA,eAAe,eACb,UACA,SACe;CACf,IAAI,UAAU;CACd,MAAM,iBAAiB,WAAW,QAAQ,OAAO;CAEjD,OAAO,QAAQ,WAAW,cAAc,GAAG;EACzC,IAAI,CAAC,OAAO,WAAW,OAAO,GAC5B;EAGF,KAAK,MAAM,GAAG,QAAQ,OAAO,EAAA,CAAG,SAAS,GACvC;EAGF,MAAM,GAAG,MAAM,OAAO;EACtB,IAAI,WAAW,QAAQ,OAAO,MAAM,gBAClC;EAEF,UAAU,WAAW,QAAQ,OAAO;CACtC;AACF"}
package/dist/ssr/attrs.js DELETED
@@ -1,94 +0,0 @@
1
- import { getPublicAttributeName } from "../common/attr-names.js";
2
- import { escapeAttr, needsEscapeAttr, styleObjToCss } from "./escape.js";
3
- //#region src/ssr/attrs.ts
4
- const ESCAPED_ATTR_VALUE_CACHE_LIMIT = 512;
5
- const escapedAttrValueCache = /* @__PURE__ */ new Map();
6
- function isEventHandler(key) {
7
- return key.length >= 3 && key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && key.charCodeAt(2) >= 65 && key.charCodeAt(2) <= 90;
8
- }
9
- function getEscapedAttrValue(value) {
10
- if (value.length > 64) return escapeAttr(value);
11
- const cached = escapedAttrValueCache.get(value);
12
- if (cached !== void 0) return cached;
13
- const escaped = escapeAttr(value);
14
- if (escaped === value) return value;
15
- if (escapedAttrValueCache.size >= ESCAPED_ATTR_VALUE_CACHE_LIMIT) escapedAttrValueCache.clear();
16
- escapedAttrValueCache.set(value, escaped);
17
- return escaped;
18
- }
19
- /**
20
- * Render attributes directly to a sink without intermediate string allocations.
21
- * This is the hot path for streaming SSR.
22
- */
23
- function renderAttrsDirect(props, sink) {
24
- if (!props || typeof props !== "object") return;
25
- const propsObj = props;
26
- for (const key in propsObj) {
27
- const value = propsObj[key];
28
- if (key === "children" || key === "key" || key === "ref" || key === "dangerouslySetInnerHTML") continue;
29
- if (isEventHandler(key)) continue;
30
- if (key.charCodeAt(0) === 95) continue;
31
- const attrName = getPublicAttributeName(key);
32
- if (attrName === "style") {
33
- const css = typeof value === "string" ? value : styleObjToCss(value);
34
- if (!css) continue;
35
- sink.write(" style=\"");
36
- if (needsEscapeAttr(css)) sink.write(getEscapedAttrValue(css));
37
- else sink.write(css);
38
- sink.write("\"");
39
- continue;
40
- }
41
- if (value === true) {
42
- sink.write(" ");
43
- sink.write(attrName);
44
- continue;
45
- }
46
- if (value === false || value === null || value === void 0) continue;
47
- const strValue = String(value);
48
- sink.write(" ");
49
- sink.write(attrName);
50
- sink.write("=\"");
51
- sink.write(getEscapedAttrValue(strValue));
52
- sink.write("\"");
53
- }
54
- }
55
- function renderAttrs(props, opts) {
56
- if (!props || typeof props !== "object") return opts?.returnDangerousHtml ? { attrs: "" } : "";
57
- const attrParts = [];
58
- let dangerousHtml;
59
- const propsObj = props;
60
- for (const key in propsObj) {
61
- const value = propsObj[key];
62
- if (key === "children") continue;
63
- if (key === "key" || key === "ref") continue;
64
- if (key === "dangerouslySetInnerHTML") {
65
- if (value && typeof value === "object" && "__html" in value) dangerousHtml = String(value.__html);
66
- continue;
67
- }
68
- if (isEventHandler(key)) continue;
69
- if (key.charCodeAt(0) === 95) continue;
70
- const attrName = key === "class" ? "class" : getPublicAttributeName(key);
71
- if (attrName === "style") {
72
- const css = typeof value === "string" ? value : styleObjToCss(value);
73
- if (css === null || css === "") continue;
74
- attrParts.push(` style="${getEscapedAttrValue(css)}"`);
75
- continue;
76
- }
77
- if (value === true) attrParts.push(` ${attrName}`);
78
- else if (value === false || value === null || value === void 0) continue;
79
- else {
80
- const strValue = String(value);
81
- attrParts.push(` ${attrName}="${getEscapedAttrValue(strValue)}"`);
82
- }
83
- }
84
- const result = attrParts.join("");
85
- if (opts?.returnDangerousHtml) return {
86
- attrs: result,
87
- dangerousHtml
88
- };
89
- return result;
90
- }
91
- //#endregion
92
- export { renderAttrs, renderAttrsDirect };
93
-
94
- //# sourceMappingURL=attrs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"attrs.js","names":[],"sources":["../../src/ssr/attrs.ts"],"sourcesContent":["/**\n * HTML attribute rendering for SSR\n */\n\nimport type { Props } from '../common/props';\nimport { getPublicAttributeName } from '../common/attr-names';\nimport type { RenderSink } from './sink';\nimport { escapeAttr, needsEscapeAttr, styleObjToCss } from './escape';\n\n/** Result of renderAttrs including any raw HTML from dangerouslySetInnerHTML */\nexport type AttrsResult = {\n attrs: string;\n dangerousHtml?: string;\n};\n\nconst ESCAPED_ATTR_VALUE_CACHE_LIMIT = 512;\nconst escapedAttrValueCache = new Map<string, string>();\n\n// Fast check for event handler pattern (on + uppercase letter)\nfunction isEventHandler(key: string): boolean {\n return (\n key.length >= 3 &&\n key.charCodeAt(0) === 111 && // 'o'\n key.charCodeAt(1) === 110 && // 'n'\n key.charCodeAt(2) >= 65 &&\n key.charCodeAt(2) <= 90 // 'A'-'Z'\n );\n}\n\nfunction getEscapedAttrValue(value: string): string {\n if (value.length > 64) {\n return escapeAttr(value);\n }\n\n const cached = escapedAttrValueCache.get(value);\n if (cached !== undefined) {\n return cached;\n }\n\n const escaped = escapeAttr(value);\n // Skip caching strings that required no escaping — same reference returned,\n // no point occupying cache slots with identity entries.\n if (escaped === value) return value;\n if (escapedAttrValueCache.size >= ESCAPED_ATTR_VALUE_CACHE_LIMIT) {\n escapedAttrValueCache.clear();\n }\n escapedAttrValueCache.set(value, escaped);\n return escaped;\n}\n\n/**\n * Render attributes directly to a sink without intermediate string allocations.\n * This is the hot path for streaming SSR.\n */\nexport function renderAttrsDirect(\n props: Props | undefined,\n sink: Pick<RenderSink, 'write'>\n): void {\n if (!props || typeof props !== 'object') return;\n\n const propsObj = props as Record<string, unknown>;\n for (const key in propsObj) {\n const value = propsObj[key];\n\n // Skip special props\n if (\n key === 'children' ||\n key === 'key' ||\n key === 'ref' ||\n key === 'dangerouslySetInnerHTML'\n )\n continue;\n\n // Skip event handlers\n if (isEventHandler(key)) continue;\n\n // Skip internal props\n if (key.charCodeAt(0) === 95) continue; // '_'\n\n // Normalize public JSX prop names to their rendered HTML attribute names.\n const attrName = getPublicAttributeName(key);\n\n // Handle style objects\n if (attrName === 'style') {\n const css = typeof value === 'string' ? value : styleObjToCss(value);\n if (!css) continue;\n sink.write(' style=\"');\n // Escape inline - most style values don't need escaping\n if (needsEscapeAttr(css)) {\n sink.write(getEscapedAttrValue(css));\n } else {\n sink.write(css);\n }\n sink.write('\"');\n continue;\n }\n\n // Boolean attributes\n if (value === true) {\n sink.write(' ');\n sink.write(attrName);\n continue;\n }\n\n if (value === false || value === null || value === undefined) continue;\n\n // Regular attributes\n const strValue = String(value);\n sink.write(' ');\n sink.write(attrName);\n sink.write('=\"');\n // escapeAttr returns the original string when nothing needs escaping,\n // so no separate needsEscapeAttr pre-scan is required.\n sink.write(getEscapedAttrValue(strValue));\n sink.write('\"');\n }\n}\n\n/**\n * Render attributes to HTML string, excluding event handlers\n * Optimized for minimal allocations using push-based approach\n *\n * Returns both the attribute string and any dangerouslySetInnerHTML content.\n */\nexport function renderAttrs(props?: Props): string;\nexport function renderAttrs(\n props: Props | undefined,\n opts: { returnDangerousHtml: true }\n): AttrsResult;\nexport function renderAttrs(\n props?: Props,\n opts?: { returnDangerousHtml?: boolean }\n): string | AttrsResult {\n if (!props || typeof props !== 'object') {\n return opts?.returnDangerousHtml ? { attrs: '' } : '';\n }\n\n const attrParts: string[] = [];\n let dangerousHtml: string | undefined;\n\n const propsObj = props as Record<string, unknown>;\n for (const key in propsObj) {\n const value = propsObj[key];\n\n // Skip children in attrs\n if (key === 'children') continue;\n\n // Skip internal identity refs (framework-only)\n if (key === 'key' || key === 'ref') continue;\n\n // Handle dangerouslySetInnerHTML\n if (key === 'dangerouslySetInnerHTML') {\n if (value && typeof value === 'object' && '__html' in (value as object)) {\n dangerousHtml = String((value as { __html: unknown }).__html);\n }\n continue;\n }\n\n // Skip event handlers\n if (isEventHandler(key)) continue;\n\n // Skip internal props\n if (key.charCodeAt(0) === 95) continue; // '_'\n\n // Normalize public JSX prop names to their rendered HTML attribute names.\n const attrName = key === 'class' ? 'class' : getPublicAttributeName(key);\n\n // Handle style objects\n if (attrName === 'style') {\n const css = typeof value === 'string' ? value : styleObjToCss(value);\n if (css === null || css === '') continue;\n attrParts.push(` style=\"${getEscapedAttrValue(css)}\"`);\n continue;\n }\n\n // Boolean attributes\n if (value === true) {\n attrParts.push(` ${attrName}`);\n } else if (value === false || value === null || value === undefined) {\n continue;\n } else {\n const strValue = String(value);\n attrParts.push(` ${attrName}=\"${getEscapedAttrValue(strValue)}\"`);\n }\n }\n\n const result = attrParts.join('');\n\n if (opts?.returnDangerousHtml) {\n return { attrs: result, dangerousHtml };\n }\n return result;\n}\n"],"mappings":"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"}
@@ -1,113 +0,0 @@
1
- import { __CONTROL_BOUNDARY__ } from "../common/control.js";
2
- import { ELEMENT_TYPE } from "../common/jsx.js";
3
- import { evaluateCaseState, evaluateShowState } from "../runtime/control.js";
4
- import { evaluateForState } from "../runtime/for-internal.js";
5
- import "../runtime/index.js";
6
- import "../jsx/index.js";
7
- //#region src/ssr/boundaries.ts
8
- function normalizeRenderableChildren(value) {
9
- if (value === null || value === void 0 || value === false) return [];
10
- return Array.isArray(value) ? value : [value];
11
- }
12
- function getRenderableChildren(node) {
13
- if (Array.isArray(node.children)) return node.children;
14
- if (Array.isArray(node.props?.children)) return node.props.children;
15
- if (node.props?.children !== void 0 && node.props.children !== null && node.props.children !== false) return [node.props.children];
16
- }
17
- function getErrorBoundaryState(node) {
18
- return node.__instance?.errorBoundaryState ?? null;
19
- }
20
- function resetErrorBoundaryState(node) {
21
- const state = node.__instance?.errorBoundaryState;
22
- if (state) {
23
- state.error = null;
24
- state.notified = false;
25
- }
26
- }
27
- function createErrorBoundaryReset(node) {
28
- return () => resetErrorBoundaryState(node);
29
- }
30
- function createDefaultErrorBoundaryFallbackVNode(error) {
31
- const message = error instanceof Error ? error.stack || error.message || error.name : typeof error === "string" ? error : (() => {
32
- try {
33
- return JSON.stringify(error);
34
- } catch {
35
- return String(error);
36
- }
37
- })();
38
- return {
39
- $$typeof: ELEMENT_TYPE,
40
- type: "div",
41
- props: {
42
- role: "alert",
43
- "data-askr-error-boundary": "true",
44
- style: {
45
- boxSizing: "border-box",
46
- padding: "1rem",
47
- border: "1px solid currentColor",
48
- borderRadius: "0.75rem",
49
- display: "grid",
50
- gap: "0.75rem",
51
- maxWidth: "100%"
52
- },
53
- children: [
54
- {
55
- $$typeof: ELEMENT_TYPE,
56
- type: "strong",
57
- props: { children: ["Something went wrong while rendering this view."] }
58
- },
59
- {
60
- $$typeof: ELEMENT_TYPE,
61
- type: "p",
62
- props: {
63
- style: { margin: "0" },
64
- children: ["The app recovered into a visible fallback so the error is not hidden in the console."]
65
- }
66
- },
67
- {
68
- $$typeof: ELEMENT_TYPE,
69
- type: "details",
70
- props: {
71
- open: true,
72
- children: [{
73
- $$typeof: ELEMENT_TYPE,
74
- type: "summary",
75
- props: { children: ["Error details"] }
76
- }, {
77
- $$typeof: ELEMENT_TYPE,
78
- type: "pre",
79
- props: {
80
- style: {
81
- margin: "0",
82
- whiteSpace: "pre-wrap",
83
- wordBreak: "break-word"
84
- },
85
- children: [message]
86
- }
87
- }]
88
- }
89
- }
90
- ]
91
- },
92
- key: null
93
- };
94
- }
95
- function resolveErrorBoundaryFallbackNode(fallback, error, reset) {
96
- return typeof fallback === "function" ? fallback(error, reset) : fallback !== void 0 ? fallback : createDefaultErrorBoundaryFallbackVNode(error);
97
- }
98
- function getControlBoundaryState(node) {
99
- const boundaryNode = node;
100
- return boundaryNode._controlState ?? boundaryNode._forState ?? null;
101
- }
102
- function evaluateControlBoundaryChildren(node) {
103
- if (node.type !== __CONTROL_BOUNDARY__) return;
104
- const controlState = getControlBoundaryState(node);
105
- if (!controlState) return [];
106
- if (controlState.kind === "for") return evaluateForState(controlState);
107
- if (controlState.kind === "show") return evaluateShowState(controlState);
108
- return evaluateCaseState(controlState);
109
- }
110
- //#endregion
111
- export { createErrorBoundaryReset, evaluateControlBoundaryChildren, getControlBoundaryState, getErrorBoundaryState, getRenderableChildren, normalizeRenderableChildren, resetErrorBoundaryState, resolveErrorBoundaryFallbackNode };
112
-
113
- //# sourceMappingURL=boundaries.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boundaries.js","names":[],"sources":["../../src/ssr/boundaries.ts"],"sourcesContent":["/**\n * Shared SSR boundary state and renderable child helpers.\n */\n\nimport type { JSXElement } from '../common/jsx';\nimport { __CONTROL_BOUNDARY__ } from '../common/control';\nimport type { DOMElement } from '../common/vnode';\nimport { ELEMENT_TYPE } from '../jsx';\nimport type { ComponentInstance } from '../runtime';\nimport {\n type ControlBoundaryState,\n evaluateCaseState,\n evaluateShowState,\n} from '../runtime';\nimport { evaluateForState } from '../runtime';\nimport type { VNode } from './types';\n\ntype ErrorBoundaryState = NonNullable<ComponentInstance['errorBoundaryState']>;\n\nexport function normalizeRenderableChildren(value: unknown): unknown[] {\n if (value === null || value === undefined || value === false) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n}\n\nexport function getRenderableChildren(\n node: VNode | JSXElement\n): unknown[] | undefined {\n if (Array.isArray((node as VNode).children)) {\n return (node as VNode).children;\n }\n if (Array.isArray(node.props?.children)) {\n return node.props.children as unknown[];\n }\n if (\n node.props?.children !== undefined &&\n node.props.children !== null &&\n node.props.children !== false\n ) {\n return [node.props.children];\n }\n return undefined;\n}\n\nexport function getErrorBoundaryState(\n node: VNode | JSXElement\n): ErrorBoundaryState | null {\n return (\n (node as DOMElement & { __instance?: ComponentInstance }).__instance\n ?.errorBoundaryState ?? null\n );\n}\n\nexport function resetErrorBoundaryState(node: VNode | JSXElement): void {\n const instance = (node as DOMElement & { __instance?: ComponentInstance })\n .__instance;\n const state = instance?.errorBoundaryState;\n if (state) {\n state.error = null;\n state.notified = false;\n }\n}\n\nexport function createErrorBoundaryReset(node: VNode | JSXElement): () => void {\n return () => resetErrorBoundaryState(node);\n}\n\nfunction createDefaultErrorBoundaryFallbackVNode(error: unknown): JSXElement {\n const message =\n error instanceof Error\n ? error.stack || error.message || error.name\n : typeof error === 'string'\n ? error\n : (() => {\n try {\n return JSON.stringify(error);\n } catch {\n return String(error);\n }\n })();\n\n return {\n $$typeof: ELEMENT_TYPE,\n type: 'div',\n props: {\n role: 'alert',\n 'data-askr-error-boundary': 'true',\n style: {\n boxSizing: 'border-box',\n padding: '1rem',\n border: '1px solid currentColor',\n borderRadius: '0.75rem',\n display: 'grid',\n gap: '0.75rem',\n maxWidth: '100%',\n },\n children: [\n {\n $$typeof: ELEMENT_TYPE,\n type: 'strong',\n props: {\n children: ['Something went wrong while rendering this view.'],\n },\n },\n {\n $$typeof: ELEMENT_TYPE,\n type: 'p',\n props: {\n style: { margin: '0' },\n children: [\n 'The app recovered into a visible fallback so the error is not hidden in the console.',\n ],\n },\n },\n {\n $$typeof: ELEMENT_TYPE,\n type: 'details',\n props: {\n open: process.env.NODE_ENV !== 'production',\n children: [\n {\n $$typeof: ELEMENT_TYPE,\n type: 'summary',\n props: {\n children: ['Error details'],\n },\n },\n {\n $$typeof: ELEMENT_TYPE,\n type: 'pre',\n props: {\n style: {\n margin: '0',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n },\n children: [message],\n },\n },\n ],\n },\n },\n ],\n },\n key: null,\n } as JSXElement;\n}\n\nexport function resolveErrorBoundaryFallbackNode(\n fallback: unknown,\n error: unknown,\n reset: () => void\n): unknown {\n return typeof fallback === 'function'\n ? (fallback as (error: unknown, reset: () => void) => unknown)(error, reset)\n : fallback !== undefined\n ? fallback\n : createDefaultErrorBoundaryFallbackVNode(error);\n}\n\nexport function getControlBoundaryState(\n node: VNode | JSXElement\n): ControlBoundaryState | null {\n const boundaryNode = node as DOMElement;\n\n return (\n boundaryNode._controlState ??\n (boundaryNode._forState as ControlBoundaryState | undefined) ??\n null\n );\n}\n\nexport function evaluateControlBoundaryChildren(\n node: VNode | JSXElement\n): unknown[] | undefined {\n if (node.type !== __CONTROL_BOUNDARY__) {\n return undefined;\n }\n\n const controlState = getControlBoundaryState(node);\n if (!controlState) {\n return [];\n }\n\n if (controlState.kind === 'for') {\n return evaluateForState(controlState);\n }\n if (controlState.kind === 'show') {\n return evaluateShowState(controlState);\n }\n return evaluateCaseState(controlState);\n}\n"],"mappings":";;;;;;;AAmBA,SAAgB,4BAA4B,OAA2B;CACrE,IAAI,UAAU,QAAQ,UAAU,UAAa,UAAU,OACrD,OAAO,CAAC;CAGV,OAAO,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAC9C;AAEA,SAAgB,sBACd,MACuB;CACvB,IAAI,MAAM,QAAS,KAAe,QAAQ,GACxC,OAAQ,KAAe;CAEzB,IAAI,MAAM,QAAQ,KAAK,OAAO,QAAQ,GACpC,OAAO,KAAK,MAAM;CAEpB,IACE,KAAK,OAAO,aAAa,UACzB,KAAK,MAAM,aAAa,QACxB,KAAK,MAAM,aAAa,OAExB,OAAO,CAAC,KAAK,MAAM,QAAQ;AAG/B;AAEA,SAAgB,sBACd,MAC2B;CAC3B,OACG,KAAyD,YACtD,sBAAsB;AAE9B;AAEA,SAAgB,wBAAwB,MAAgC;CAGtE,MAAM,QAFY,KACf,YACqB;CACxB,IAAI,OAAO;EACT,MAAM,QAAQ;EACd,MAAM,WAAW;CACnB;AACF;AAEA,SAAgB,yBAAyB,MAAsC;CAC7E,aAAa,wBAAwB,IAAI;AAC3C;AAEA,SAAS,wCAAwC,OAA4B;CAC3E,MAAM,UACJ,iBAAiB,QACb,MAAM,SAAS,MAAM,WAAW,MAAM,OACtC,OAAO,UAAU,WACf,eACO;EACL,IAAI;GACF,OAAO,KAAK,UAAU,KAAK;EAC7B,QAAQ;GACN,OAAO,OAAO,KAAK;EACrB;CACF,EAAA,CAAG;CAEX,OAAO;EACL,UAAU;EACV,MAAM;EACN,OAAO;GACL,MAAM;GACN,4BAA4B;GAC5B,OAAO;IACL,WAAW;IACX,SAAS;IACT,QAAQ;IACR,cAAc;IACd,SAAS;IACT,KAAK;IACL,UAAU;GACZ;GACA,UAAU;IACR;KACE,UAAU;KACV,MAAM;KACN,OAAO,EACL,UAAU,CAAC,iDAAiD,EAC9D;IACF;IACA;KACE,UAAU;KACV,MAAM;KACN,OAAO;MACL,OAAO,EAAE,QAAQ,IAAI;MACrB,UAAU,CACR,sFACF;KACF;IACF;IACA;KACE,UAAU;KACV,MAAM;KACN,OAAO;MACL,MAAA;MACA,UAAU,CACR;OACE,UAAU;OACV,MAAM;OACN,OAAO,EACL,UAAU,CAAC,eAAe,EAC5B;MACF,GACA;OACE,UAAU;OACV,MAAM;OACN,OAAO;QACL,OAAO;SACL,QAAQ;SACR,YAAY;SACZ,WAAW;QACb;QACA,UAAU,CAAC,OAAO;OACpB;MACF,CACF;KACF;IACF;GACF;EACF;EACA,KAAK;CACP;AACF;AAEA,SAAgB,iCACd,UACA,OACA,OACS;CACT,OAAO,OAAO,aAAa,aACtB,SAA4D,OAAO,KAAK,IACzE,aAAa,SACX,WACA,wCAAwC,KAAK;AACrD;AAEA,SAAgB,wBACd,MAC6B;CAC7B,MAAM,eAAe;CAErB,OACE,aAAa,iBACZ,aAAa,aACd;AAEJ;AAEA,SAAgB,gCACd,MACuB;CACvB,IAAI,KAAK,SAAS,sBAChB;CAGF,MAAM,eAAe,wBAAwB,IAAI;CACjD,IAAI,CAAC,cACH,OAAO,CAAC;CAGV,IAAI,aAAa,SAAS,OACxB,OAAO,iBAAiB,YAAY;CAEtC,IAAI,aAAa,SAAS,QACxB,OAAO,kBAAkB,YAAY;CAEvC,OAAO,kBAAkB,YAAY;AACvC"}
@@ -1,111 +0,0 @@
1
- import { ELEMENT_TYPE, Fragment } from "../common/jsx.js";
2
- import { getCurrentComponentInstance, setCurrentComponentInstance } from "../runtime/component-scope.js";
3
- import { cleanupComponent } from "../runtime/component-cleanup.js";
4
- import { isPromiseLike } from "../common/promise.js";
5
- import { createComponentInstance } from "../runtime/component-internal.js";
6
- import { DefaultPortal, disposeDefaultPortalScope } from "../runtime/portal.js";
7
- import "../runtime/index.js";
8
- import "../jsx/index.js";
9
- import { throwSSRDataMissing } from "./context.js";
10
- //#region src/ssr/component-runtime.ts
11
- const __ssrGuardStack = [];
12
- function pushSSRStrictPurityGuard() {
13
- __ssrGuardStack.push({
14
- random: Reflect.get(Math, "random"),
15
- now: Reflect.get(Date, "now")
16
- });
17
- Reflect.set(Math, "random", () => {
18
- throw new Error("SSR Strict Purity: Math.random is not allowed during synchronous SSR. Use the provided `ssr` context RNG instead.");
19
- });
20
- Reflect.set(Date, "now", () => {
21
- throw new Error("SSR Strict Purity: Date.now is not allowed during synchronous SSR. Pass timestamps explicitly or use deterministic helpers.");
22
- });
23
- }
24
- function popSSRStrictPurityGuard() {
25
- const prev = __ssrGuardStack.pop();
26
- if (prev) {
27
- Reflect.set(Math, "random", prev.random);
28
- Reflect.set(Date, "now", prev.now);
29
- }
30
- }
31
- function executeComponentSync(component, props, ctx) {
32
- try {
33
- pushSSRStrictPurityGuard();
34
- const prev = getCurrentComponentInstance();
35
- const temp = createComponentInstance("ssr-temp", component, props || {}, null);
36
- temp.ssr = true;
37
- temp.portalScope = temp;
38
- ctx.ssrCleanupFns.push(() => {
39
- let cleanupError = null;
40
- try {
41
- cleanupComponent(temp);
42
- } catch (error) {
43
- cleanupError = error;
44
- }
45
- try {
46
- disposeDefaultPortalScope(temp);
47
- } catch (error) {
48
- if (cleanupError) throw new AggregateError([cleanupError, error], "SSR temporary owner cleanup failed");
49
- throw error;
50
- }
51
- if (cleanupError) throw cleanupError;
52
- });
53
- setCurrentComponentInstance(temp);
54
- try {
55
- const result = component(props || {}, { ssr: ctx });
56
- if (isPromiseLike(result)) throwSSRDataMissing();
57
- if (typeof result === "string" || typeof result === "number" || typeof result === "boolean" || result === null || result === void 0) {
58
- const inner = result === null || result === void 0 || result === false ? "" : String(result);
59
- return {
60
- $$typeof: ELEMENT_TYPE,
61
- type: Fragment,
62
- props: { children: inner ? [inner] : [] }
63
- };
64
- }
65
- return result;
66
- } finally {
67
- setCurrentComponentInstance(prev);
68
- }
69
- } finally {
70
- popSSRStrictPurityGuard();
71
- }
72
- }
73
- function disposeSSRTemporaryOwners(ctx) {
74
- const cleanupFns = ctx.ssrCleanupFns;
75
- ctx.ssrCleanupFns = [];
76
- const cleanupErrors = [];
77
- for (let index = cleanupFns.length - 1; index >= 0; index -= 1) try {
78
- cleanupFns[index]();
79
- } catch (error) {
80
- cleanupErrors.push(error);
81
- }
82
- if (cleanupErrors.length === 1) throw cleanupErrors[0];
83
- if (cleanupErrors.length > 1) throw new AggregateError(cleanupErrors, "SSR temporary owner cleanup failed");
84
- }
85
- function wrapWithDefaultPortal(out) {
86
- if (isPromiseLike(out)) throwSSRDataMissing();
87
- const portalVNode = {
88
- $$typeof: ELEMENT_TYPE,
89
- type: DefaultPortal,
90
- props: { __askrAutoDefaultPortal: true },
91
- key: "__default_portal"
92
- };
93
- if (out == null) return {
94
- $$typeof: ELEMENT_TYPE,
95
- type: Fragment,
96
- props: { children: [portalVNode] }
97
- };
98
- return {
99
- $$typeof: ELEMENT_TYPE,
100
- type: Fragment,
101
- props: { children: [out, portalVNode] }
102
- };
103
- }
104
- function renderSyncComponentRoot(component, props, ctx) {
105
- const wrapped = (p, c) => wrapWithDefaultPortal(component(p ?? {}, c));
106
- return executeComponentSync(wrapped, props || {}, ctx);
107
- }
108
- //#endregion
109
- export { disposeSSRTemporaryOwners, executeComponentSync, renderSyncComponentRoot };
110
-
111
- //# sourceMappingURL=component-runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"component-runtime.js","names":[],"sources":["../../src/ssr/component-runtime.ts"],"sourcesContent":["/**\n * SSR component execution and temporary owner lifecycle.\n */\n\nimport type { JSXElement } from '../common/jsx';\nimport type { Props } from '../common/props';\nimport type { ComponentFunction } from '../common/component';\nimport { isPromiseLike } from '../common/promise';\nimport { Fragment, ELEMENT_TYPE } from '../jsx';\nimport {\n cleanupComponent,\n createComponentInstance,\n DefaultPortal,\n disposeDefaultPortalScope,\n getCurrentComponentInstance,\n setCurrentComponentInstance,\n} from '../runtime';\nimport { throwSSRDataMissing, type RenderContext } from './context';\nimport type { SSRComponent, VNode } from './types';\n\nexport type Component = SSRComponent;\n\nconst __ssrGuardStack: Array<{ random: () => number; now: () => number }> = [];\n\nfunction pushSSRStrictPurityGuard() {\n /* istanbul ignore if - dev-only guard */\n if (process.env.NODE_ENV === 'production') return;\n __ssrGuardStack.push({\n random: Reflect.get(Math, 'random') as () => number,\n now: Reflect.get(Date, 'now') as () => number,\n });\n Reflect.set(Math, 'random', () => {\n throw new Error(\n 'SSR Strict Purity: Math.random is not allowed during synchronous SSR. Use the provided `ssr` context RNG instead.'\n );\n });\n Reflect.set(Date, 'now', () => {\n throw new Error(\n 'SSR Strict Purity: Date.now is not allowed during synchronous SSR. Pass timestamps explicitly or use deterministic helpers.'\n );\n });\n}\n\nfunction popSSRStrictPurityGuard() {\n /* istanbul ignore if - dev-only guard */\n if (process.env.NODE_ENV === 'production') return;\n const prev = __ssrGuardStack.pop();\n if (prev) {\n Reflect.set(Math, 'random', prev.random);\n Reflect.set(Date, 'now', prev.now);\n }\n}\n\nexport function executeComponentSync(\n component: Component,\n props: Record<string, unknown> | undefined,\n ctx: RenderContext\n): VNode | JSXElement {\n try {\n if (process.env.NODE_ENV !== 'production') {\n pushSSRStrictPurityGuard();\n }\n const prev = getCurrentComponentInstance();\n const temp = createComponentInstance(\n 'ssr-temp',\n component as ComponentFunction,\n (props || {}) as Props,\n null\n );\n temp.ssr = true;\n temp.portalScope = temp;\n ctx.ssrCleanupFns.push(() => {\n let cleanupError: unknown = null;\n\n try {\n cleanupComponent(temp);\n } catch (error) {\n cleanupError = error;\n }\n\n try {\n disposeDefaultPortalScope(temp);\n } catch (error) {\n if (cleanupError) {\n throw new AggregateError(\n [cleanupError, error],\n 'SSR temporary owner cleanup failed'\n );\n }\n throw error;\n }\n\n if (cleanupError) {\n throw cleanupError;\n }\n });\n setCurrentComponentInstance(temp);\n try {\n const result = component((props || {}) as Props, { ssr: ctx });\n if (isPromiseLike(result)) {\n throwSSRDataMissing();\n }\n if (\n typeof result === 'string' ||\n typeof result === 'number' ||\n typeof result === 'boolean' ||\n result === null ||\n result === undefined\n ) {\n const inner =\n result === null || result === undefined || result === false\n ? ''\n : String(result);\n return {\n $$typeof: ELEMENT_TYPE,\n type: Fragment,\n props: { children: inner ? [inner] : [] },\n } as unknown as VNode | JSXElement;\n }\n return result as VNode | JSXElement;\n } finally {\n setCurrentComponentInstance(prev);\n }\n } finally {\n if (process.env.NODE_ENV !== 'production') popSSRStrictPurityGuard();\n }\n}\n\nexport function disposeSSRTemporaryOwners(ctx: RenderContext): void {\n const cleanupFns = ctx.ssrCleanupFns;\n ctx.ssrCleanupFns = [];\n const cleanupErrors: unknown[] = [];\n\n for (let index = cleanupFns.length - 1; index >= 0; index -= 1) {\n try {\n cleanupFns[index]();\n } catch (error) {\n cleanupErrors.push(error);\n }\n }\n\n if (cleanupErrors.length === 1) {\n throw cleanupErrors[0];\n }\n\n if (cleanupErrors.length > 1) {\n throw new AggregateError(\n cleanupErrors,\n 'SSR temporary owner cleanup failed'\n );\n }\n}\n\nfunction wrapWithDefaultPortal(out: unknown): VNode | JSXElement {\n if (isPromiseLike(out)) {\n throwSSRDataMissing();\n }\n\n const portalVNode = {\n $$typeof: ELEMENT_TYPE,\n type: DefaultPortal,\n props: { __askrAutoDefaultPortal: true },\n key: '__default_portal',\n } as unknown;\n\n if (out == null) {\n return {\n $$typeof: ELEMENT_TYPE,\n type: Fragment,\n props: { children: [portalVNode] },\n } as unknown as VNode | JSXElement;\n }\n\n return {\n $$typeof: ELEMENT_TYPE,\n type: Fragment,\n props: { children: [out as unknown, portalVNode] },\n } as unknown as VNode | JSXElement;\n}\n\nexport function renderSyncComponentRoot(\n component: Component,\n props: Record<string, unknown> | undefined,\n ctx: RenderContext\n): VNode | JSXElement {\n const wrapped: Component = (\n p?: Record<string, unknown>,\n c?: { signal?: AbortSignal; ssr?: RenderContext }\n ) => wrapWithDefaultPortal(component(p ?? {}, c));\n\n return executeComponentSync(wrapped, props || {}, ctx);\n}\n"],"mappings":"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"}