@craft-ts/core 0.7.0-beta.13

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 (682) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +58 -0
  3. package/src/index.d.ts +148 -0
  4. package/src/index.d.ts.map +1 -0
  5. package/src/index.js +150 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/after-recomputation.d.ts +327 -0
  8. package/src/lib/after-recomputation.d.ts.map +1 -0
  9. package/src/lib/after-recomputation.js +25 -0
  10. package/src/lib/after-recomputation.js.map +1 -0
  11. package/src/lib/app-checked-di.d.ts +82 -0
  12. package/src/lib/app-checked-di.d.ts.map +1 -0
  13. package/src/lib/app-checked-di.js +1 -0
  14. package/src/lib/app-checked-di.js.map +1 -0
  15. package/src/lib/async-process.d.ts +411 -0
  16. package/src/lib/async-process.d.ts.map +1 -0
  17. package/src/lib/async-process.js +702 -0
  18. package/src/lib/async-process.js.map +1 -0
  19. package/src/lib/branded-component/branded-component.d.ts +129 -0
  20. package/src/lib/branded-component/branded-component.d.ts.map +1 -0
  21. package/src/lib/branded-component/branded-component.js +7 -0
  22. package/src/lib/branded-component/branded-component.js.map +1 -0
  23. package/src/lib/browser-boundaries.d.ts +165 -0
  24. package/src/lib/browser-boundaries.d.ts.map +1 -0
  25. package/src/lib/browser-boundaries.js +550 -0
  26. package/src/lib/browser-boundaries.js.map +1 -0
  27. package/src/lib/client-di-requirement.d.ts +28 -0
  28. package/src/lib/client-di-requirement.d.ts.map +1 -0
  29. package/src/lib/client-di-requirement.js +11 -0
  30. package/src/lib/client-di-requirement.js.map +1 -0
  31. package/src/lib/client-function-middleware.d.ts +130 -0
  32. package/src/lib/client-function-middleware.d.ts.map +1 -0
  33. package/src/lib/client-function-middleware.js +144 -0
  34. package/src/lib/client-function-middleware.js.map +1 -0
  35. package/src/lib/component-monitoring.d.ts +7 -0
  36. package/src/lib/component-monitoring.d.ts.map +1 -0
  37. package/src/lib/component-monitoring.js +28 -0
  38. package/src/lib/component-monitoring.js.map +1 -0
  39. package/src/lib/component-register.d.ts +12 -0
  40. package/src/lib/component-register.d.ts.map +1 -0
  41. package/src/lib/component-register.js +13 -0
  42. package/src/lib/component-register.js.map +1 -0
  43. package/src/lib/computed-source.d.ts +303 -0
  44. package/src/lib/computed-source.d.ts.map +1 -0
  45. package/src/lib/computed-source.js +319 -0
  46. package/src/lib/computed-source.js.map +1 -0
  47. package/src/lib/correlation-id-plugin.d.ts +3 -0
  48. package/src/lib/correlation-id-plugin.d.ts.map +1 -0
  49. package/src/lib/correlation-id-plugin.js +73 -0
  50. package/src/lib/correlation-id-plugin.js.map +1 -0
  51. package/src/lib/correlation-id.d.ts +30 -0
  52. package/src/lib/correlation-id.d.ts.map +1 -0
  53. package/src/lib/correlation-id.js +86 -0
  54. package/src/lib/correlation-id.js.map +1 -0
  55. package/src/lib/craft-a11y.d.ts +22 -0
  56. package/src/lib/craft-a11y.d.ts.map +1 -0
  57. package/src/lib/craft-a11y.js +32 -0
  58. package/src/lib/craft-a11y.js.map +1 -0
  59. package/src/lib/craft-activated-route.d.ts +21 -0
  60. package/src/lib/craft-activated-route.d.ts.map +1 -0
  61. package/src/lib/craft-activated-route.js +20 -0
  62. package/src/lib/craft-activated-route.js.map +1 -0
  63. package/src/lib/craft-app-config.d.ts +91 -0
  64. package/src/lib/craft-app-config.d.ts.map +1 -0
  65. package/src/lib/craft-app-config.js +64 -0
  66. package/src/lib/craft-app-config.js.map +1 -0
  67. package/src/lib/craft-codec.d.ts +16 -0
  68. package/src/lib/craft-codec.d.ts.map +1 -0
  69. package/src/lib/craft-codec.js +1 -0
  70. package/src/lib/craft-codec.js.map +1 -0
  71. package/src/lib/craft-computed.d.ts +31 -0
  72. package/src/lib/craft-computed.d.ts.map +1 -0
  73. package/src/lib/craft-computed.js +81 -0
  74. package/src/lib/craft-computed.js.map +1 -0
  75. package/src/lib/craft-control-flow.d.ts +14 -0
  76. package/src/lib/craft-control-flow.d.ts.map +1 -0
  77. package/src/lib/craft-control-flow.js +18 -0
  78. package/src/lib/craft-control-flow.js.map +1 -0
  79. package/src/lib/craft-effect.d.ts +13 -0
  80. package/src/lib/craft-effect.d.ts.map +1 -0
  81. package/src/lib/craft-effect.js +93 -0
  82. package/src/lib/craft-effect.js.map +1 -0
  83. package/src/lib/craft-exception.d.ts +40 -0
  84. package/src/lib/craft-exception.d.ts.map +1 -0
  85. package/src/lib/craft-exception.js +16 -0
  86. package/src/lib/craft-exception.js.map +1 -0
  87. package/src/lib/craft-gen.d.ts +123 -0
  88. package/src/lib/craft-gen.d.ts.map +1 -0
  89. package/src/lib/craft-gen.js +90 -0
  90. package/src/lib/craft-gen.js.map +1 -0
  91. package/src/lib/craft-generator-runtime.d.ts +110 -0
  92. package/src/lib/craft-generator-runtime.d.ts.map +1 -0
  93. package/src/lib/craft-generator-runtime.js +191 -0
  94. package/src/lib/craft-generator-runtime.js.map +1 -0
  95. package/src/lib/craft-guard-runtime.d.ts +70 -0
  96. package/src/lib/craft-guard-runtime.d.ts.map +1 -0
  97. package/src/lib/craft-guard-runtime.js +195 -0
  98. package/src/lib/craft-guard-runtime.js.map +1 -0
  99. package/src/lib/craft-handshake.d.ts +35 -0
  100. package/src/lib/craft-handshake.d.ts.map +1 -0
  101. package/src/lib/craft-handshake.js +34 -0
  102. package/src/lib/craft-handshake.js.map +1 -0
  103. package/src/lib/craft-http-client.d.ts +236 -0
  104. package/src/lib/craft-http-client.d.ts.map +1 -0
  105. package/src/lib/craft-http-client.js +437 -0
  106. package/src/lib/craft-http-client.js.map +1 -0
  107. package/src/lib/craft-http-trace.d.ts +12 -0
  108. package/src/lib/craft-http-trace.d.ts.map +1 -0
  109. package/src/lib/craft-http-trace.js +28 -0
  110. package/src/lib/craft-http-trace.js.map +1 -0
  111. package/src/lib/craft-lazy.d.ts +42 -0
  112. package/src/lib/craft-lazy.d.ts.map +1 -0
  113. package/src/lib/craft-lazy.js +83 -0
  114. package/src/lib/craft-lazy.js.map +1 -0
  115. package/src/lib/craft-load-retry.d.ts +76 -0
  116. package/src/lib/craft-load-retry.d.ts.map +1 -0
  117. package/src/lib/craft-load-retry.js +160 -0
  118. package/src/lib/craft-load-retry.js.map +1 -0
  119. package/src/lib/craft-machine-history.d.ts +145 -0
  120. package/src/lib/craft-machine-history.d.ts.map +1 -0
  121. package/src/lib/craft-machine-history.js +276 -0
  122. package/src/lib/craft-machine-history.js.map +1 -0
  123. package/src/lib/craft-match.d.ts +49 -0
  124. package/src/lib/craft-match.d.ts.map +1 -0
  125. package/src/lib/craft-match.js +58 -0
  126. package/src/lib/craft-match.js.map +1 -0
  127. package/src/lib/craft-method.d.ts +28 -0
  128. package/src/lib/craft-method.d.ts.map +1 -0
  129. package/src/lib/craft-method.js +45 -0
  130. package/src/lib/craft-method.js.map +1 -0
  131. package/src/lib/craft-node-directive.d.ts +32 -0
  132. package/src/lib/craft-node-directive.d.ts.map +1 -0
  133. package/src/lib/craft-node-directive.js +22 -0
  134. package/src/lib/craft-node-directive.js.map +1 -0
  135. package/src/lib/craft-pending.d.ts +115 -0
  136. package/src/lib/craft-pending.d.ts.map +1 -0
  137. package/src/lib/craft-pending.js +187 -0
  138. package/src/lib/craft-pending.js.map +1 -0
  139. package/src/lib/craft-pipe.d.ts +63 -0
  140. package/src/lib/craft-pipe.d.ts.map +1 -0
  141. package/src/lib/craft-pipe.js +57 -0
  142. package/src/lib/craft-pipe.js.map +1 -0
  143. package/src/lib/craft-platform.d.ts +50 -0
  144. package/src/lib/craft-platform.d.ts.map +1 -0
  145. package/src/lib/craft-platform.js +175 -0
  146. package/src/lib/craft-platform.js.map +1 -0
  147. package/src/lib/craft-primitive-gen.d.ts +137 -0
  148. package/src/lib/craft-primitive-gen.d.ts.map +1 -0
  149. package/src/lib/craft-primitive-gen.js +76 -0
  150. package/src/lib/craft-primitive-gen.js.map +1 -0
  151. package/src/lib/craft-primitive-registry.d.ts +113 -0
  152. package/src/lib/craft-primitive-registry.d.ts.map +1 -0
  153. package/src/lib/craft-primitive-registry.js +159 -0
  154. package/src/lib/craft-primitive-registry.js.map +1 -0
  155. package/src/lib/craft-program-operators.d.ts +101 -0
  156. package/src/lib/craft-program-operators.d.ts.map +1 -0
  157. package/src/lib/craft-program-operators.js +116 -0
  158. package/src/lib/craft-program-operators.js.map +1 -0
  159. package/src/lib/craft-program-runtime.d.ts +80 -0
  160. package/src/lib/craft-program-runtime.d.ts.map +1 -0
  161. package/src/lib/craft-program-runtime.js +166 -0
  162. package/src/lib/craft-program-runtime.js.map +1 -0
  163. package/src/lib/craft-register-for-runtime.d.ts +39 -0
  164. package/src/lib/craft-register-for-runtime.d.ts.map +1 -0
  165. package/src/lib/craft-register-for-runtime.js +96 -0
  166. package/src/lib/craft-register-for-runtime.js.map +1 -0
  167. package/src/lib/craft-register-for.d.ts +57 -0
  168. package/src/lib/craft-register-for.d.ts.map +1 -0
  169. package/src/lib/craft-register-for.js +200 -0
  170. package/src/lib/craft-register-for.js.map +1 -0
  171. package/src/lib/craft-render-identity.d.ts +19 -0
  172. package/src/lib/craft-render-identity.d.ts.map +1 -0
  173. package/src/lib/craft-render-identity.js +23 -0
  174. package/src/lib/craft-render-identity.js.map +1 -0
  175. package/src/lib/craft-replay.d.ts +5 -0
  176. package/src/lib/craft-replay.d.ts.map +1 -0
  177. package/src/lib/craft-replay.js +28 -0
  178. package/src/lib/craft-replay.js.map +1 -0
  179. package/src/lib/craft-resolve.d.ts +39 -0
  180. package/src/lib/craft-resolve.d.ts.map +1 -0
  181. package/src/lib/craft-resolve.js +9 -0
  182. package/src/lib/craft-resolve.js.map +1 -0
  183. package/src/lib/craft-resource.d.ts +11 -0
  184. package/src/lib/craft-resource.d.ts.map +1 -0
  185. package/src/lib/craft-resource.js +264 -0
  186. package/src/lib/craft-resource.js.map +1 -0
  187. package/src/lib/craft-route-exceptions.d.ts +785 -0
  188. package/src/lib/craft-route-exceptions.d.ts.map +1 -0
  189. package/src/lib/craft-route-exceptions.js +86 -0
  190. package/src/lib/craft-route-exceptions.js.map +1 -0
  191. package/src/lib/craft-route-load-error.d.ts +1145 -0
  192. package/src/lib/craft-route-load-error.d.ts.map +1 -0
  193. package/src/lib/craft-route-load-error.js +173 -0
  194. package/src/lib/craft-route-load-error.js.map +1 -0
  195. package/src/lib/craft-route-meta.d.ts +52 -0
  196. package/src/lib/craft-route-meta.d.ts.map +1 -0
  197. package/src/lib/craft-route-meta.js +16 -0
  198. package/src/lib/craft-route-meta.js.map +1 -0
  199. package/src/lib/craft-route-target.d.ts +27 -0
  200. package/src/lib/craft-route-target.d.ts.map +1 -0
  201. package/src/lib/craft-route-target.js +22 -0
  202. package/src/lib/craft-route-target.js.map +1 -0
  203. package/src/lib/craft-router-outlet.d.ts +105 -0
  204. package/src/lib/craft-router-outlet.d.ts.map +1 -0
  205. package/src/lib/craft-router-outlet.js +735 -0
  206. package/src/lib/craft-router-outlet.js.map +1 -0
  207. package/src/lib/craft-router-tokens.d.ts +49 -0
  208. package/src/lib/craft-router-tokens.d.ts.map +1 -0
  209. package/src/lib/craft-router-tokens.js +15 -0
  210. package/src/lib/craft-router-tokens.js.map +1 -0
  211. package/src/lib/craft-router-trace.d.ts +18 -0
  212. package/src/lib/craft-router-trace.d.ts.map +1 -0
  213. package/src/lib/craft-router-trace.js +54 -0
  214. package/src/lib/craft-router-trace.js.map +1 -0
  215. package/src/lib/craft-router.d.ts +248 -0
  216. package/src/lib/craft-router.d.ts.map +1 -0
  217. package/src/lib/craft-router.js +559 -0
  218. package/src/lib/craft-router.js.map +1 -0
  219. package/src/lib/craft-routes.d.ts +755 -0
  220. package/src/lib/craft-routes.d.ts.map +1 -0
  221. package/src/lib/craft-routes.js +510 -0
  222. package/src/lib/craft-routes.js.map +1 -0
  223. package/src/lib/craft-service.d.ts +1034 -0
  224. package/src/lib/craft-service.d.ts.map +1 -0
  225. package/src/lib/craft-service.js +1072 -0
  226. package/src/lib/craft-service.js.map +1 -0
  227. package/src/lib/craft-service.shared.d.ts +35 -0
  228. package/src/lib/craft-service.shared.d.ts.map +1 -0
  229. package/src/lib/craft-service.shared.js +4 -0
  230. package/src/lib/craft-service.shared.js.map +1 -0
  231. package/src/lib/craft-settled.d.ts +171 -0
  232. package/src/lib/craft-settled.d.ts.map +1 -0
  233. package/src/lib/craft-settled.js +130 -0
  234. package/src/lib/craft-settled.js.map +1 -0
  235. package/src/lib/craft-ssr.d.ts +29 -0
  236. package/src/lib/craft-ssr.d.ts.map +1 -0
  237. package/src/lib/craft-ssr.js +27 -0
  238. package/src/lib/craft-ssr.js.map +1 -0
  239. package/src/lib/craft-state-machine-runtime.d.ts +88 -0
  240. package/src/lib/craft-state-machine-runtime.d.ts.map +1 -0
  241. package/src/lib/craft-state-machine-runtime.js +167 -0
  242. package/src/lib/craft-state-machine-runtime.js.map +1 -0
  243. package/src/lib/craft-state-machine.d.ts +233 -0
  244. package/src/lib/craft-state-machine.d.ts.map +1 -0
  245. package/src/lib/craft-state-machine.js +254 -0
  246. package/src/lib/craft-state-machine.js.map +1 -0
  247. package/src/lib/craft-target-runtime.d.ts +20 -0
  248. package/src/lib/craft-target-runtime.d.ts.map +1 -0
  249. package/src/lib/craft-target-runtime.js +42 -0
  250. package/src/lib/craft-target-runtime.js.map +1 -0
  251. package/src/lib/craft-transfer-snapshot.d.ts +19 -0
  252. package/src/lib/craft-transfer-snapshot.d.ts.map +1 -0
  253. package/src/lib/craft-transfer-snapshot.js +90 -0
  254. package/src/lib/craft-transfer-snapshot.js.map +1 -0
  255. package/src/lib/craft-unique.d.ts +7 -0
  256. package/src/lib/craft-unique.d.ts.map +1 -0
  257. package/src/lib/craft-unique.js +16 -0
  258. package/src/lib/craft-unique.js.map +1 -0
  259. package/src/lib/craft-until-settled.d.ts +99 -0
  260. package/src/lib/craft-until-settled.d.ts.map +1 -0
  261. package/src/lib/craft-until-settled.js +81 -0
  262. package/src/lib/craft-until-settled.js.map +1 -0
  263. package/src/lib/craft-use.d.ts +26 -0
  264. package/src/lib/craft-use.d.ts.map +1 -0
  265. package/src/lib/craft-use.js +37 -0
  266. package/src/lib/craft-use.js.map +1 -0
  267. package/src/lib/craft-view-transition.d.ts +102 -0
  268. package/src/lib/craft-view-transition.d.ts.map +1 -0
  269. package/src/lib/craft-view-transition.js +130 -0
  270. package/src/lib/craft-view-transition.js.map +1 -0
  271. package/src/lib/dom-event-hook.d.ts +30 -0
  272. package/src/lib/dom-event-hook.d.ts.map +1 -0
  273. package/src/lib/dom-event-hook.js +16 -0
  274. package/src/lib/dom-event-hook.js.map +1 -0
  275. package/src/lib/fn-wrapper.d.ts +13 -0
  276. package/src/lib/fn-wrapper.d.ts.map +1 -0
  277. package/src/lib/fn-wrapper.js +66 -0
  278. package/src/lib/fn-wrapper.js.map +1 -0
  279. package/src/lib/form/craft-field.d.ts +155 -0
  280. package/src/lib/form/craft-field.d.ts.map +1 -0
  281. package/src/lib/form/craft-field.directive.d.ts +70 -0
  282. package/src/lib/form/craft-field.directive.d.ts.map +1 -0
  283. package/src/lib/form/craft-field.directive.js +549 -0
  284. package/src/lib/form/craft-field.directive.js.map +1 -0
  285. package/src/lib/form/craft-field.js +586 -0
  286. package/src/lib/form/craft-field.js.map +1 -0
  287. package/src/lib/form/field-exception.d.ts +62 -0
  288. package/src/lib/form/field-exception.d.ts.map +1 -0
  289. package/src/lib/form/field-exception.js +37 -0
  290. package/src/lib/form/field-exception.js.map +1 -0
  291. package/src/lib/form/field-lens.d.ts +29 -0
  292. package/src/lib/form/field-lens.d.ts.map +1 -0
  293. package/src/lib/form/field-lens.js +32 -0
  294. package/src/lib/form/field-lens.js.map +1 -0
  295. package/src/lib/form/insert-form-attributes.d.ts +69 -0
  296. package/src/lib/form/insert-form-attributes.d.ts.map +1 -0
  297. package/src/lib/form/insert-form-attributes.js +163 -0
  298. package/src/lib/form/insert-form-attributes.js.map +1 -0
  299. package/src/lib/form/insert-form-internals.d.ts +110 -0
  300. package/src/lib/form/insert-form-internals.d.ts.map +1 -0
  301. package/src/lib/form/insert-form-internals.js +276 -0
  302. package/src/lib/form/insert-form-internals.js.map +1 -0
  303. package/src/lib/form/insert-form-schema.d.ts +10 -0
  304. package/src/lib/form/insert-form-schema.d.ts.map +1 -0
  305. package/src/lib/form/insert-form-schema.js +62 -0
  306. package/src/lib/form/insert-form-schema.js.map +1 -0
  307. package/src/lib/form/insert-form-submit.d.ts +79 -0
  308. package/src/lib/form/insert-form-submit.d.ts.map +1 -0
  309. package/src/lib/form/insert-form-submit.js +126 -0
  310. package/src/lib/form/insert-form-submit.js.map +1 -0
  311. package/src/lib/form/insert-form.d.ts +39 -0
  312. package/src/lib/form/insert-form.d.ts.map +1 -0
  313. package/src/lib/form/insert-form.js +255 -0
  314. package/src/lib/form/insert-form.js.map +1 -0
  315. package/src/lib/form/insert-select-form-tree.d.ts +33 -0
  316. package/src/lib/form/insert-select-form-tree.d.ts.map +1 -0
  317. package/src/lib/form/insert-select-form-tree.js +144 -0
  318. package/src/lib/form/insert-select-form-tree.js.map +1 -0
  319. package/src/lib/form/insert-sub-form-field.d.ts +17 -0
  320. package/src/lib/form/insert-sub-form-field.d.ts.map +1 -0
  321. package/src/lib/form/insert-sub-form-field.js +41 -0
  322. package/src/lib/form/insert-sub-form-field.js.map +1 -0
  323. package/src/lib/form/make-form-tree-insert.d.ts +22 -0
  324. package/src/lib/form/make-form-tree-insert.d.ts.map +1 -0
  325. package/src/lib/form/make-form-tree-insert.js +43 -0
  326. package/src/lib/form/make-form-tree-insert.js.map +1 -0
  327. package/src/lib/form/target-form-field.d.ts +11 -0
  328. package/src/lib/form/target-form-field.d.ts.map +1 -0
  329. package/src/lib/form/target-form-field.js +1 -0
  330. package/src/lib/form/target-form-field.js.map +1 -0
  331. package/src/lib/form/validator.d.ts +174 -0
  332. package/src/lib/form/validator.d.ts.map +1 -0
  333. package/src/lib/form/validator.js +465 -0
  334. package/src/lib/form/validator.js.map +1 -0
  335. package/src/lib/from-event-to-source$.d.ts +210 -0
  336. package/src/lib/from-event-to-source$.d.ts.map +1 -0
  337. package/src/lib/from-event-to-source$.js +29 -0
  338. package/src/lib/from-event-to-source$.js.map +1 -0
  339. package/src/lib/global-persister-handler.service.d.ts +10 -0
  340. package/src/lib/global-persister-handler.service.d.ts.map +1 -0
  341. package/src/lib/global-persister-handler.service.js +40 -0
  342. package/src/lib/global-persister-handler.service.js.map +1 -0
  343. package/src/lib/host/craft-compat.d.ts +242 -0
  344. package/src/lib/host/craft-compat.d.ts.map +1 -0
  345. package/src/lib/host/craft-compat.js +444 -0
  346. package/src/lib/host/craft-compat.js.map +1 -0
  347. package/src/lib/host/craft-dom.d.ts +16 -0
  348. package/src/lib/host/craft-dom.d.ts.map +1 -0
  349. package/src/lib/host/craft-dom.js +24 -0
  350. package/src/lib/host/craft-dom.js.map +1 -0
  351. package/src/lib/host/craft-http.d.ts +22 -0
  352. package/src/lib/host/craft-http.d.ts.map +1 -0
  353. package/src/lib/host/craft-http.js +80 -0
  354. package/src/lib/host/craft-http.js.map +1 -0
  355. package/src/lib/host/craft-injector-host.d.ts +3 -0
  356. package/src/lib/host/craft-injector-host.d.ts.map +1 -0
  357. package/src/lib/host/craft-injector-host.js +2 -0
  358. package/src/lib/host/craft-injector-host.js.map +1 -0
  359. package/src/lib/host/craft-injector.d.ts +40 -0
  360. package/src/lib/host/craft-injector.d.ts.map +1 -0
  361. package/src/lib/host/craft-injector.js +318 -0
  362. package/src/lib/host/craft-injector.js.map +1 -0
  363. package/src/lib/host/craft-linked-signal.d.ts +17 -0
  364. package/src/lib/host/craft-linked-signal.d.ts.map +1 -0
  365. package/src/lib/host/craft-linked-signal.js +86 -0
  366. package/src/lib/host/craft-linked-signal.js.map +1 -0
  367. package/src/lib/host/craft-router-runtime.d.ts +61 -0
  368. package/src/lib/host/craft-router-runtime.d.ts.map +1 -0
  369. package/src/lib/host/craft-router-runtime.js +456 -0
  370. package/src/lib/host/craft-router-runtime.js.map +1 -0
  371. package/src/lib/host/craft-router-types.d.ts +84 -0
  372. package/src/lib/host/craft-router-types.d.ts.map +1 -0
  373. package/src/lib/host/craft-router-types.js +35 -0
  374. package/src/lib/host/craft-router-types.js.map +1 -0
  375. package/src/lib/host/craft-signal.d.ts +45 -0
  376. package/src/lib/host/craft-signal.d.ts.map +1 -0
  377. package/src/lib/host/craft-signal.js +161 -0
  378. package/src/lib/host/craft-signal.js.map +1 -0
  379. package/src/lib/host/craft-test-bed.d.ts +63 -0
  380. package/src/lib/host/craft-test-bed.d.ts.map +1 -0
  381. package/src/lib/host/craft-test-bed.js +114 -0
  382. package/src/lib/host/craft-test-bed.js.map +1 -0
  383. package/src/lib/host-tag.d.ts +2 -0
  384. package/src/lib/host-tag.d.ts.map +1 -0
  385. package/src/lib/host-tag.js +2 -0
  386. package/src/lib/host-tag.js.map +1 -0
  387. package/src/lib/insert-entities.d.ts +131 -0
  388. package/src/lib/insert-entities.d.ts.map +1 -0
  389. package/src/lib/insert-entities.js +159 -0
  390. package/src/lib/insert-entities.js.map +1 -0
  391. package/src/lib/insert-noop-typing-anchor.d.ts +15 -0
  392. package/src/lib/insert-noop-typing-anchor.d.ts.map +1 -0
  393. package/src/lib/insert-noop-typing-anchor.js +16 -0
  394. package/src/lib/insert-noop-typing-anchor.js.map +1 -0
  395. package/src/lib/insert-pagination-placeholder-data.d.ts +122 -0
  396. package/src/lib/insert-pagination-placeholder-data.d.ts.map +1 -0
  397. package/src/lib/insert-pagination-placeholder-data.js +244 -0
  398. package/src/lib/insert-pagination-placeholder-data.js.map +1 -0
  399. package/src/lib/insert-react-on-mutation.d.ts +261 -0
  400. package/src/lib/insert-react-on-mutation.d.ts.map +1 -0
  401. package/src/lib/insert-react-on-mutation.js +227 -0
  402. package/src/lib/insert-react-on-mutation.js.map +1 -0
  403. package/src/lib/insert-select-resource.d.ts +31 -0
  404. package/src/lib/insert-select-resource.d.ts.map +1 -0
  405. package/src/lib/insert-select-resource.js +27 -0
  406. package/src/lib/insert-select-resource.js.map +1 -0
  407. package/src/lib/insert-select.d.ts +126 -0
  408. package/src/lib/insert-select.d.ts.map +1 -0
  409. package/src/lib/insert-select.js +535 -0
  410. package/src/lib/insert-select.js.map +1 -0
  411. package/src/lib/insert-storage-persister.d.ts +27 -0
  412. package/src/lib/insert-storage-persister.d.ts.map +1 -0
  413. package/src/lib/insert-storage-persister.js +65 -0
  414. package/src/lib/insert-storage-persister.js.map +1 -0
  415. package/src/lib/insert-typed-pipes.d.ts +64 -0
  416. package/src/lib/insert-typed-pipes.d.ts.map +1 -0
  417. package/src/lib/insert-typed-pipes.js +32 -0
  418. package/src/lib/insert-typed-pipes.js.map +1 -0
  419. package/src/lib/linked-source.d.ts +8 -0
  420. package/src/lib/linked-source.d.ts.map +1 -0
  421. package/src/lib/linked-source.js +24 -0
  422. package/src/lib/linked-source.js.map +1 -0
  423. package/src/lib/local-storage-persister.d.ts +4 -0
  424. package/src/lib/local-storage-persister.d.ts.map +1 -0
  425. package/src/lib/local-storage-persister.js +342 -0
  426. package/src/lib/local-storage-persister.js.map +1 -0
  427. package/src/lib/middleware-schema-shared.d.ts +67 -0
  428. package/src/lib/middleware-schema-shared.d.ts.map +1 -0
  429. package/src/lib/middleware-schema-shared.js +34 -0
  430. package/src/lib/middleware-schema-shared.js.map +1 -0
  431. package/src/lib/mock-http-request-for-route.d.ts +173 -0
  432. package/src/lib/mock-http-request-for-route.d.ts.map +1 -0
  433. package/src/lib/mock-http-request-for-route.js +127 -0
  434. package/src/lib/mock-http-request-for-route.js.map +1 -0
  435. package/src/lib/mutation.d.ts +332 -0
  436. package/src/lib/mutation.d.ts.map +1 -0
  437. package/src/lib/mutation.js +923 -0
  438. package/src/lib/mutation.js.map +1 -0
  439. package/src/lib/on$.d.ts +26 -0
  440. package/src/lib/on$.d.ts.map +1 -0
  441. package/src/lib/on$.js +19 -0
  442. package/src/lib/on$.js.map +1 -0
  443. package/src/lib/portable-server-function.d.ts +68 -0
  444. package/src/lib/portable-server-function.d.ts.map +1 -0
  445. package/src/lib/portable-server-function.js +97 -0
  446. package/src/lib/portable-server-function.js.map +1 -0
  447. package/src/lib/preserved-resource.d.ts +4 -0
  448. package/src/lib/preserved-resource.d.ts.map +1 -0
  449. package/src/lib/preserved-resource.js +60 -0
  450. package/src/lib/preserved-resource.js.map +1 -0
  451. package/src/lib/primitive-method-runtime-context.d.ts +28 -0
  452. package/src/lib/primitive-method-runtime-context.d.ts.map +1 -0
  453. package/src/lib/primitive-method-runtime-context.js +38 -0
  454. package/src/lib/primitive-method-runtime-context.js.map +1 -0
  455. package/src/lib/primitive-resource-runtime-context.d.ts +46 -0
  456. package/src/lib/primitive-resource-runtime-context.d.ts.map +1 -0
  457. package/src/lib/primitive-resource-runtime-context.js +102 -0
  458. package/src/lib/primitive-resource-runtime-context.js.map +1 -0
  459. package/src/lib/query-params.d.ts +216 -0
  460. package/src/lib/query-params.d.ts.map +1 -0
  461. package/src/lib/query-params.js +324 -0
  462. package/src/lib/query-params.js.map +1 -0
  463. package/src/lib/query.core.d.ts +214 -0
  464. package/src/lib/query.core.d.ts.map +1 -0
  465. package/src/lib/query.core.js +210 -0
  466. package/src/lib/query.core.js.map +1 -0
  467. package/src/lib/query.d.ts +324 -0
  468. package/src/lib/query.d.ts.map +1 -0
  469. package/src/lib/query.js +971 -0
  470. package/src/lib/query.js.map +1 -0
  471. package/src/lib/reactive-read.d.ts +162 -0
  472. package/src/lib/reactive-read.d.ts.map +1 -0
  473. package/src/lib/reactive-read.js +389 -0
  474. package/src/lib/reactive-read.js.map +1 -0
  475. package/src/lib/resource-by-id.d.ts +71 -0
  476. package/src/lib/resource-by-id.d.ts.map +1 -0
  477. package/src/lib/resource-by-id.js +294 -0
  478. package/src/lib/resource-by-id.js.map +1 -0
  479. package/src/lib/resource-exception.d.ts +30 -0
  480. package/src/lib/resource-exception.d.ts.map +1 -0
  481. package/src/lib/resource-exception.js +86 -0
  482. package/src/lib/resource-exception.js.map +1 -0
  483. package/src/lib/route-checked-di.d.ts +229 -0
  484. package/src/lib/route-checked-di.d.ts.map +1 -0
  485. package/src/lib/route-checked-di.js +1 -0
  486. package/src/lib/route-checked-di.js.map +1 -0
  487. package/src/lib/schema-validation.d.ts +89 -0
  488. package/src/lib/schema-validation.d.ts.map +1 -0
  489. package/src/lib/schema-validation.js +110 -0
  490. package/src/lib/schema-validation.js.map +1 -0
  491. package/src/lib/send-context-to-ai.d.ts +20 -0
  492. package/src/lib/send-context-to-ai.d.ts.map +1 -0
  493. package/src/lib/send-context-to-ai.js +18 -0
  494. package/src/lib/send-context-to-ai.js.map +1 -0
  495. package/src/lib/send-context-to-ai.tokens.d.ts +12 -0
  496. package/src/lib/send-context-to-ai.tokens.d.ts.map +1 -0
  497. package/src/lib/send-context-to-ai.tokens.js +1 -0
  498. package/src/lib/send-context-to-ai.tokens.js.map +1 -0
  499. package/src/lib/server-function-client.d.ts +102 -0
  500. package/src/lib/server-function-client.d.ts.map +1 -0
  501. package/src/lib/server-function-client.js +106 -0
  502. package/src/lib/server-function-client.js.map +1 -0
  503. package/src/lib/server-function-contract.d.ts +42 -0
  504. package/src/lib/server-function-contract.d.ts.map +1 -0
  505. package/src/lib/server-function-contract.js +23 -0
  506. package/src/lib/server-function-contract.js.map +1 -0
  507. package/src/lib/server-function-middleware.d.ts +222 -0
  508. package/src/lib/server-function-middleware.d.ts.map +1 -0
  509. package/src/lib/server-function-middleware.js +189 -0
  510. package/src/lib/server-function-middleware.js.map +1 -0
  511. package/src/lib/server-function.d.ts +114 -0
  512. package/src/lib/server-function.d.ts.map +1 -0
  513. package/src/lib/server-function.js +80 -0
  514. package/src/lib/server-function.js.map +1 -0
  515. package/src/lib/server-layer.d.ts +185 -0
  516. package/src/lib/server-layer.d.ts.map +1 -0
  517. package/src/lib/server-layer.js +121 -0
  518. package/src/lib/server-layer.js.map +1 -0
  519. package/src/lib/server.d.ts +83 -0
  520. package/src/lib/server.d.ts.map +1 -0
  521. package/src/lib/server.js +266 -0
  522. package/src/lib/server.js.map +1 -0
  523. package/src/lib/setup-craft-service-test.d.ts +90 -0
  524. package/src/lib/setup-craft-service-test.d.ts.map +1 -0
  525. package/src/lib/setup-craft-service-test.js +193 -0
  526. package/src/lib/setup-craft-service-test.js.map +1 -0
  527. package/src/lib/setup-craft-service-testing-by-register.d.ts +245 -0
  528. package/src/lib/setup-craft-service-testing-by-register.d.ts.map +1 -0
  529. package/src/lib/setup-craft-service-testing-by-register.js +316 -0
  530. package/src/lib/setup-craft-service-testing-by-register.js.map +1 -0
  531. package/src/lib/signal-proxy.d.ts +21 -0
  532. package/src/lib/signal-proxy.d.ts.map +1 -0
  533. package/src/lib/signal-proxy.js +79 -0
  534. package/src/lib/signal-proxy.js.map +1 -0
  535. package/src/lib/signal-source.d.ts +392 -0
  536. package/src/lib/signal-source.d.ts.map +1 -0
  537. package/src/lib/signal-source.js +433 -0
  538. package/src/lib/signal-source.js.map +1 -0
  539. package/src/lib/source$.d.ts +121 -0
  540. package/src/lib/source$.d.ts.map +1 -0
  541. package/src/lib/source$.js +171 -0
  542. package/src/lib/source$.js.map +1 -0
  543. package/src/lib/source-from-event.d.ts +350 -0
  544. package/src/lib/source-from-event.d.ts.map +1 -0
  545. package/src/lib/source-from-event.js +26 -0
  546. package/src/lib/source-from-event.js.map +1 -0
  547. package/src/lib/stacked-source.d.ts +6 -0
  548. package/src/lib/stacked-source.d.ts.map +1 -0
  549. package/src/lib/stacked-source.js +29 -0
  550. package/src/lib/stacked-source.js.map +1 -0
  551. package/src/lib/standard-schema.d.ts +43 -0
  552. package/src/lib/standard-schema.d.ts.map +1 -0
  553. package/src/lib/standard-schema.js +1 -0
  554. package/src/lib/standard-schema.js.map +1 -0
  555. package/src/lib/state-method-runtime-context.d.ts +13 -0
  556. package/src/lib/state-method-runtime-context.d.ts.map +1 -0
  557. package/src/lib/state-method-runtime-context.js +11 -0
  558. package/src/lib/state-method-runtime-context.js.map +1 -0
  559. package/src/lib/state.d.ts +158 -0
  560. package/src/lib/state.d.ts.map +1 -0
  561. package/src/lib/state.js +388 -0
  562. package/src/lib/state.js.map +1 -0
  563. package/src/lib/storage-persister.service.d.ts +25 -0
  564. package/src/lib/storage-persister.service.d.ts.map +1 -0
  565. package/src/lib/storage-persister.service.js +27 -0
  566. package/src/lib/storage-persister.service.js.map +1 -0
  567. package/src/lib/take-app-snapshot.d.ts +31 -0
  568. package/src/lib/take-app-snapshot.d.ts.map +1 -0
  569. package/src/lib/take-app-snapshot.js +93 -0
  570. package/src/lib/take-app-snapshot.js.map +1 -0
  571. package/src/lib/template-trace.d.ts +37 -0
  572. package/src/lib/template-trace.d.ts.map +1 -0
  573. package/src/lib/template-trace.js +37 -0
  574. package/src/lib/template-trace.js.map +1 -0
  575. package/src/lib/temporal-runtime.d.ts +146 -0
  576. package/src/lib/temporal-runtime.d.ts.map +1 -0
  577. package/src/lib/temporal-runtime.js +375 -0
  578. package/src/lib/temporal-runtime.js.map +1 -0
  579. package/src/lib/to-source.d.ts +335 -0
  580. package/src/lib/to-source.d.ts.map +1 -0
  581. package/src/lib/to-source.js +359 -0
  582. package/src/lib/to-source.js.map +1 -0
  583. package/src/lib/util/craft-resource-ref.d.ts +29 -0
  584. package/src/lib/util/craft-resource-ref.d.ts.map +1 -0
  585. package/src/lib/util/craft-resource-ref.js +1 -0
  586. package/src/lib/util/craft-resource-ref.js.map +1 -0
  587. package/src/lib/util/craft-resource-status.d.ts +17 -0
  588. package/src/lib/util/craft-resource-status.d.ts.map +1 -0
  589. package/src/lib/util/craft-resource-status.js +14 -0
  590. package/src/lib/util/craft-resource-status.js.map +1 -0
  591. package/src/lib/util/entities-util.d.ts +340 -0
  592. package/src/lib/util/entities-util.d.ts.map +1 -0
  593. package/src/lib/util/entities-util.js +136 -0
  594. package/src/lib/util/entities-util.js.map +1 -0
  595. package/src/lib/util/explicit-effect.d.ts +42 -0
  596. package/src/lib/util/explicit-effect.d.ts.map +1 -0
  597. package/src/lib/util/explicit-effect.js +37 -0
  598. package/src/lib/util/explicit-effect.js.map +1 -0
  599. package/src/lib/util/extract-signal-props-and-methods.d.ts +20 -0
  600. package/src/lib/util/extract-signal-props-and-methods.d.ts.map +1 -0
  601. package/src/lib/util/extract-signal-props-and-methods.js +1 -0
  602. package/src/lib/util/extract-signal-props-and-methods.js.map +1 -0
  603. package/src/lib/util/method-trigger-nonce.d.ts +45 -0
  604. package/src/lib/util/method-trigger-nonce.d.ts.map +1 -0
  605. package/src/lib/util/method-trigger-nonce.js +58 -0
  606. package/src/lib/util/method-trigger-nonce.js.map +1 -0
  607. package/src/lib/util/persister.type.d.ts +37 -0
  608. package/src/lib/util/persister.type.d.ts.map +1 -0
  609. package/src/lib/util/persister.type.js +1 -0
  610. package/src/lib/util/persister.type.js.map +1 -0
  611. package/src/lib/util/persister.util.d.ts +8 -0
  612. package/src/lib/util/persister.util.d.ts.map +1 -0
  613. package/src/lib/util/persister.util.js +71 -0
  614. package/src/lib/util/persister.util.js.map +1 -0
  615. package/src/lib/util/react-on-mutation-effect.d.ts +16 -0
  616. package/src/lib/util/react-on-mutation-effect.d.ts.map +1 -0
  617. package/src/lib/util/react-on-mutation-effect.js +148 -0
  618. package/src/lib/util/react-on-mutation-effect.js.map +1 -0
  619. package/src/lib/util/resource-by-id-changes-tracker.util.d.ts +27 -0
  620. package/src/lib/util/resource-by-id-changes-tracker.util.d.ts.map +1 -0
  621. package/src/lib/util/resource-by-id-changes-tracker.util.js +97 -0
  622. package/src/lib/util/resource-by-id-changes-tracker.util.js.map +1 -0
  623. package/src/lib/util/source.type.d.ts +6 -0
  624. package/src/lib/util/source.type.d.ts.map +1 -0
  625. package/src/lib/util/source.type.js +1 -0
  626. package/src/lib/util/source.type.js.map +1 -0
  627. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts +4 -0
  628. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.d.ts.map +1 -0
  629. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js +1 -0
  630. package/src/lib/util/types/access-type-object-property-by-dotted-path.type.js.map +1 -0
  631. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts +27 -0
  632. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.d.ts.map +1 -0
  633. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js +1 -0
  634. package/src/lib/util/types/boolean-or-mapper-fn-by-path-by-id.type.js.map +1 -0
  635. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts +24 -0
  636. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.d.ts.map +1 -0
  637. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js +1 -0
  638. package/src/lib/util/types/boolean-or-mapper-fn-by-path.type.js.map +1 -0
  639. package/src/lib/util/types/brand.d.ts +7 -0
  640. package/src/lib/util/types/brand.d.ts.map +1 -0
  641. package/src/lib/util/types/brand.js +9 -0
  642. package/src/lib/util/types/brand.js.map +1 -0
  643. package/src/lib/util/types/object-deep-path-mapper.type.d.ts +13 -0
  644. package/src/lib/util/types/object-deep-path-mapper.type.d.ts.map +1 -0
  645. package/src/lib/util/types/object-deep-path-mapper.type.js +1 -0
  646. package/src/lib/util/types/object-deep-path-mapper.type.js.map +1 -0
  647. package/src/lib/util/types/resource-by-id-config.type.d.ts +115 -0
  648. package/src/lib/util/types/resource-by-id-config.type.d.ts.map +1 -0
  649. package/src/lib/util/types/resource-by-id-config.type.js +1 -0
  650. package/src/lib/util/types/resource-by-id-config.type.js.map +1 -0
  651. package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts +52 -0
  652. package/src/lib/util/types/resource-with-params-or-params-fn.type.d.ts.map +1 -0
  653. package/src/lib/util/types/resource-with-params-or-params-fn.type.js +1 -0
  654. package/src/lib/util/types/resource-with-params-or-params-fn.type.js.map +1 -0
  655. package/src/lib/util/types/shared.type.d.ts +66 -0
  656. package/src/lib/util/types/shared.type.d.ts.map +1 -0
  657. package/src/lib/util/types/shared.type.js +1 -0
  658. package/src/lib/util/types/shared.type.js.map +1 -0
  659. package/src/lib/util/types/util.d.ts +16 -0
  660. package/src/lib/util/types/util.d.ts.map +1 -0
  661. package/src/lib/util/types/util.js +60 -0
  662. package/src/lib/util/types/util.js.map +1 -0
  663. package/src/lib/util/types/util.type.d.ts +67 -0
  664. package/src/lib/util/types/util.type.d.ts.map +1 -0
  665. package/src/lib/util/types/util.type.js +5 -0
  666. package/src/lib/util/types/util.type.js.map +1 -0
  667. package/src/lib/util/update-state.util.d.ts +10 -0
  668. package/src/lib/util/update-state.util.d.ts.map +1 -0
  669. package/src/lib/util/update-state.util.js +31 -0
  670. package/src/lib/util/update-state.util.js.map +1 -0
  671. package/src/lib/util/util.d.ts +19 -0
  672. package/src/lib/util/util.d.ts.map +1 -0
  673. package/src/lib/util/util.js +50 -0
  674. package/src/lib/util/util.js.map +1 -0
  675. package/src/lib/util/util.type.d.ts +107 -0
  676. package/src/lib/util/util.type.d.ts.map +1 -0
  677. package/src/lib/util/util.type.js +9 -0
  678. package/src/lib/util/util.type.js.map +1 -0
  679. package/src/lib/yieldable.d.ts +94 -0
  680. package/src/lib/yieldable.d.ts.map +1 -0
  681. package/src/lib/yieldable.js +109 -0
  682. package/src/lib/yieldable.js.map +1 -0
@@ -0,0 +1,175 @@
1
+ import { craftToken } from './host/craft-injector';
2
+ import { createBrowserHistory, createMemoryHistory, } from './host/craft-router-runtime';
3
+ export const CRAFT_PLATFORM = craftToken('CraftPlatform');
4
+ export function createMemoryStorage() {
5
+ const values = new Map();
6
+ return {
7
+ get length() {
8
+ return values.size;
9
+ },
10
+ clear: () => values.clear(),
11
+ getItem: (key) => values.get(key) ?? null,
12
+ key: (index) => [...values.keys()][index] ?? null,
13
+ removeItem: (key) => values.delete(key),
14
+ setItem: (key, value) => values.set(key, String(value)),
15
+ };
16
+ }
17
+ export function createBrowserPlatform(win, options = {}) {
18
+ return {
19
+ kind: 'browser',
20
+ hydrating: options.hydrating ?? false,
21
+ document: win.document,
22
+ window: win,
23
+ history: createBrowserHistory(win),
24
+ localStorage: win.localStorage,
25
+ sessionStorage: win.sessionStorage,
26
+ now: () => win.performance.now(),
27
+ randomUUID: () => win.crypto.randomUUID(),
28
+ listen: (target, event, handler) => {
29
+ target.addEventListener(event, handler);
30
+ return () => target.removeEventListener(event, handler);
31
+ },
32
+ };
33
+ }
34
+ export function createServerPlatform(options = {}) {
35
+ const localStorage = createMemoryStorage();
36
+ const sessionStorage = createMemoryStorage();
37
+ const serverResources = createServerResourceController();
38
+ const history = createMemoryHistory(options.url ?? '/');
39
+ const window = createServerWindow(history, options.document, localStorage, sessionStorage);
40
+ return {
41
+ kind: 'server',
42
+ hydrating: false,
43
+ document: options.document,
44
+ window,
45
+ history,
46
+ localStorage,
47
+ sessionStorage,
48
+ requestSignal: options.signal,
49
+ serverResources,
50
+ now: () => globalThis.performance?.now?.() ?? Date.now(),
51
+ randomUUID: () => globalThis.crypto?.randomUUID?.() ??
52
+ // Runtime correlation IDs may still need a value on older Node releases;
53
+ // hydration identities never use this API.
54
+ `server-${Date.now().toString(36)}`,
55
+ listen: () => () => undefined,
56
+ };
57
+ }
58
+ function createServerWindow(craftHistory, document, localStorage, sessionStorage) {
59
+ const currentUrl = () => {
60
+ const location = craftHistory.get();
61
+ return new URL(`${location.pathname}${location.search}${location.hash}`, 'http://localhost');
62
+ };
63
+ const location = {
64
+ get href() {
65
+ return currentUrl().href;
66
+ },
67
+ get origin() {
68
+ return currentUrl().origin;
69
+ },
70
+ get protocol() {
71
+ return currentUrl().protocol;
72
+ },
73
+ get host() {
74
+ return currentUrl().host;
75
+ },
76
+ get hostname() {
77
+ return currentUrl().hostname;
78
+ },
79
+ get port() {
80
+ return currentUrl().port;
81
+ },
82
+ get pathname() {
83
+ return currentUrl().pathname;
84
+ },
85
+ get search() {
86
+ return currentUrl().search;
87
+ },
88
+ get hash() {
89
+ return currentUrl().hash;
90
+ },
91
+ assign: (url) => craftHistory.push(String(url)),
92
+ replace: (url) => craftHistory.replace(String(url)),
93
+ reload: () => undefined,
94
+ };
95
+ const history = {
96
+ get length() {
97
+ return 1;
98
+ },
99
+ get state() {
100
+ return craftHistory.getState();
101
+ },
102
+ back: () => undefined,
103
+ forward: () => undefined,
104
+ go: () => undefined,
105
+ pushState: (data, _unused, url) => craftHistory.push(url === undefined || url === null ? location.href : String(url), data),
106
+ replaceState: (data, _unused, url) => craftHistory.replace(url === undefined || url === null ? location.href : String(url), data),
107
+ };
108
+ return {
109
+ document,
110
+ location,
111
+ history,
112
+ localStorage,
113
+ sessionStorage,
114
+ performance: globalThis.performance,
115
+ crypto: globalThis.crypto,
116
+ navigator: {
117
+ userAgent: 'CraftTS Server',
118
+ language: 'en',
119
+ languages: ['en'],
120
+ onLine: true,
121
+ cookieEnabled: false,
122
+ sendBeacon: () => false,
123
+ share: async () => undefined,
124
+ },
125
+ innerWidth: 0,
126
+ innerHeight: 0,
127
+ scrollX: 0,
128
+ scrollY: 0,
129
+ scrollTo: () => undefined,
130
+ alert: () => undefined,
131
+ confirm: () => false,
132
+ addEventListener: () => undefined,
133
+ removeEventListener: () => undefined,
134
+ };
135
+ }
136
+ function createServerResourceController() {
137
+ const deferred = new Map();
138
+ const blocking = new Set();
139
+ const scheduled = new Set();
140
+ const schedule = (start) => {
141
+ if (scheduled.has(start))
142
+ return;
143
+ scheduled.add(start);
144
+ queueMicrotask(() => {
145
+ scheduled.delete(start);
146
+ start();
147
+ });
148
+ };
149
+ return {
150
+ defer(source, start) {
151
+ if (blocking.has(source)) {
152
+ schedule(start);
153
+ return;
154
+ }
155
+ let starts = deferred.get(source);
156
+ if (!starts) {
157
+ starts = new Set();
158
+ deferred.set(source, starts);
159
+ }
160
+ starts.add(start);
161
+ },
162
+ decide(source, mode) {
163
+ if (mode !== 'block')
164
+ return;
165
+ blocking.add(source);
166
+ const starts = deferred.get(source);
167
+ if (!starts)
168
+ return;
169
+ deferred.delete(source);
170
+ for (const start of starts)
171
+ schedule(start);
172
+ },
173
+ };
174
+ }
175
+ //# sourceMappingURL=craft-platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-platform.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-platform.ts"],"names":[],"mappings":"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","sourcesContent":["import { craftToken } from './host/craft-injector';\nimport {\n createBrowserHistory,\n createMemoryHistory,\n type CraftHistory,\n} from './host/craft-router-runtime';\nimport type { SsrMode } from './craft-ssr';\n\nexport type CraftPlatformKind = 'browser' | 'server';\n\nexport type CraftStorage = Pick<\n Storage,\n 'clear' | 'getItem' | 'key' | 'removeItem' | 'setItem'\n> & { readonly length: number };\n\nexport type CraftPlatform = Readonly<{\n kind: CraftPlatformKind;\n /** True only during the first client pass over server-rendered DOM. */\n hydrating: boolean;\n document?: Document;\n window?: Window;\n history: CraftHistory;\n localStorage: CraftStorage;\n sessionStorage: CraftStorage;\n requestSignal?: AbortSignal;\n serverResources?: CraftServerResourceController;\n now(): number;\n randomUUID(): string;\n listen(\n target: EventTarget,\n event: string,\n handler: EventListener,\n ): () => void;\n}>;\n\nexport type CraftServerResourceController = Readonly<{\n defer(source: string, start: () => void): void;\n decide(source: string, mode: SsrMode): void;\n}>;\n\nexport const CRAFT_PLATFORM = craftToken<CraftPlatform>('CraftPlatform');\n\nexport function createMemoryStorage(): CraftStorage {\n const values = new Map<string, string>();\n return {\n get length() {\n return values.size;\n },\n clear: () => values.clear(),\n getItem: (key) => values.get(key) ?? null,\n key: (index) => [...values.keys()][index] ?? null,\n removeItem: (key) => values.delete(key),\n setItem: (key, value) => values.set(key, String(value)),\n };\n}\n\nexport function createBrowserPlatform(\n win: Window,\n options: Readonly<{ hydrating?: boolean }> = {},\n): CraftPlatform {\n return {\n kind: 'browser',\n hydrating: options.hydrating ?? false,\n document: win.document,\n window: win,\n history: createBrowserHistory(win),\n localStorage: win.localStorage,\n sessionStorage: win.sessionStorage,\n now: () => win.performance.now(),\n randomUUID: () => win.crypto.randomUUID(),\n listen: (target, event, handler) => {\n target.addEventListener(event, handler);\n return () => target.removeEventListener(event, handler);\n },\n };\n}\n\nexport function createServerPlatform(\n options: Readonly<{\n url?: string;\n document?: Document;\n signal?: AbortSignal;\n }> = {},\n): CraftPlatform {\n const localStorage = createMemoryStorage();\n const sessionStorage = createMemoryStorage();\n const serverResources = createServerResourceController();\n const history = createMemoryHistory(options.url ?? '/');\n const window = createServerWindow(\n history,\n options.document,\n localStorage,\n sessionStorage,\n );\n return {\n kind: 'server',\n hydrating: false,\n document: options.document,\n window,\n history,\n localStorage,\n sessionStorage,\n requestSignal: options.signal,\n serverResources,\n now: () => globalThis.performance?.now?.() ?? Date.now(),\n randomUUID: () =>\n globalThis.crypto?.randomUUID?.() ??\n // Runtime correlation IDs may still need a value on older Node releases;\n // hydration identities never use this API.\n `server-${Date.now().toString(36)}`,\n listen: () => () => undefined,\n };\n}\n\nfunction createServerWindow(\n craftHistory: CraftHistory,\n document: Document | undefined,\n localStorage: CraftStorage,\n sessionStorage: CraftStorage,\n): Window {\n const currentUrl = () => {\n const location = craftHistory.get();\n return new URL(\n `${location.pathname}${location.search}${location.hash}`,\n 'http://localhost',\n );\n };\n const location = {\n get href() {\n return currentUrl().href;\n },\n get origin() {\n return currentUrl().origin;\n },\n get protocol() {\n return currentUrl().protocol;\n },\n get host() {\n return currentUrl().host;\n },\n get hostname() {\n return currentUrl().hostname;\n },\n get port() {\n return currentUrl().port;\n },\n get pathname() {\n return currentUrl().pathname;\n },\n get search() {\n return currentUrl().search;\n },\n get hash() {\n return currentUrl().hash;\n },\n assign: (url: string | URL) => craftHistory.push(String(url)),\n replace: (url: string | URL) => craftHistory.replace(String(url)),\n reload: () => undefined,\n };\n const history = {\n get length() {\n return 1;\n },\n get state() {\n return craftHistory.getState();\n },\n back: () => undefined,\n forward: () => undefined,\n go: () => undefined,\n pushState: (data: unknown, _unused: string, url?: string | URL | null) =>\n craftHistory.push(\n url === undefined || url === null ? location.href : String(url),\n data,\n ),\n replaceState: (data: unknown, _unused: string, url?: string | URL | null) =>\n craftHistory.replace(\n url === undefined || url === null ? location.href : String(url),\n data,\n ),\n };\n return {\n document,\n location,\n history,\n localStorage,\n sessionStorage,\n performance: globalThis.performance,\n crypto: globalThis.crypto,\n navigator: {\n userAgent: 'CraftTS Server',\n language: 'en',\n languages: ['en'],\n onLine: true,\n cookieEnabled: false,\n sendBeacon: () => false,\n share: async () => undefined,\n },\n innerWidth: 0,\n innerHeight: 0,\n scrollX: 0,\n scrollY: 0,\n scrollTo: () => undefined,\n alert: () => undefined,\n confirm: () => false,\n addEventListener: () => undefined,\n removeEventListener: () => undefined,\n } as unknown as Window;\n}\n\nfunction createServerResourceController(): CraftServerResourceController {\n const deferred = new Map<string, Set<() => void>>();\n const blocking = new Set<string>();\n const scheduled = new Set<() => void>();\n\n const schedule = (start: () => void) => {\n if (scheduled.has(start)) return;\n scheduled.add(start);\n queueMicrotask(() => {\n scheduled.delete(start);\n start();\n });\n };\n\n return {\n defer(source, start) {\n if (blocking.has(source)) {\n schedule(start);\n return;\n }\n let starts = deferred.get(source);\n if (!starts) {\n starts = new Set();\n deferred.set(source, starts);\n }\n starts.add(start);\n },\n decide(source, mode) {\n if (mode !== 'block') return;\n blocking.add(source);\n const starts = deferred.get(source);\n if (!starts) return;\n deferred.delete(source);\n for (const start of starts) schedule(start);\n },\n };\n}\n"]}
@@ -0,0 +1,137 @@
1
+ import { type Injector, type Signal } from './host/craft-compat';
2
+ import { SERVICE_TRACKED_DEPS_REQUEST_MARKER } from './craft-generator-runtime';
3
+ import type { ConcreteServiceScope } from './craft-service.shared';
4
+ import type { SERVICE_HELPER_DEPENDENCIES } from './craft-service';
5
+ import type { CraftGenExceptionMarker } from './craft-gen';
6
+ import { YIELDABLE_VALUE } from './yieldable';
7
+ import { DEEP_YIELDABLE, type YieldableReactiveValue } from './reactive-read';
8
+ /**
9
+ * Dependency map carried by a primitive (`mutation`, `query`, `asyncProcess`,
10
+ * `state`, `queryParams`, …) on its phantom
11
+ * `[SERVICE_HELPER_DEPENDENCIES]` property.
12
+ */
13
+ export type HelperDependencyMap<Helper> = Helper extends {
14
+ readonly [SERVICE_HELPER_DEPENDENCIES]?: infer Map extends object;
15
+ } ? Map : {};
16
+ /**
17
+ * Request yielded by a primitive generator (see {@link CraftPrimitiveGen}).
18
+ * Type-level only: it carries the primitive's dependency map so the enclosing
19
+ * `craftService` folds it into its own dependency tree. At runtime it is a
20
+ * no-op (see `runCraftGenerator`).
21
+ */
22
+ export type ServiceTrackedDepsRequest<DepMap extends object = object> = Readonly<{
23
+ [SERVICE_TRACKED_DEPS_REQUEST_MARKER]: true;
24
+ /** Phantom carrier — never read at runtime. */
25
+ readonly depMap?: DepMap;
26
+ providedIn: ConcreteServiceScope;
27
+ resolve: (injector: Injector, hostScope: ConcreteServiceScope) => unknown;
28
+ }>;
29
+ /**
30
+ * The generator returned by the craft primitives (`state`, `query`, `mutation`,
31
+ * `asyncProcess`, `queryParams`). Consume it with `yield*` inside a generator
32
+ * host (a `craftService` factory, `craftGen`, …) or with `craftUse(...)` in a
33
+ * component field:
34
+ *
35
+ * ```ts
36
+ * // inside a craftService factory
37
+ * const users = yield* query({ ... });
38
+ *
39
+ * // in a component field
40
+ * readonly users = craftUse(query({ ... }));
41
+ * ```
42
+ *
43
+ * Yields a single {@link ServiceTrackedDepsRequest} carrying the primitive's
44
+ * dependency map (type-level only, no-op at runtime), then resolves to the
45
+ * primitive ref. Like any generator it is single-use: driving it a second time
46
+ * yields nothing and returns `undefined`.
47
+ */
48
+ type PrimitiveExceptionUnion<Ref> = Ref extends {
49
+ readonly exception: Signal<infer Exception>;
50
+ } ? Extract<Exception, {
51
+ readonly _tag: string;
52
+ }> : never;
53
+ type PrimitiveExceptionMarker<Ref> = [PrimitiveExceptionUnion<Ref>] extends [
54
+ never
55
+ ] ? never : CraftGenExceptionMarker<PrimitiveExceptionUnion<Ref>>;
56
+ /**
57
+ * A generator's `Yielded` is an INFERRED union, and TypeScript subtype-reduces
58
+ * those: `ServiceTrackedDepsRequest<{}>` is a supertype of every other tracked
59
+ * request, so a primitive with no dependency would swallow the requests of every
60
+ * primitive yielded beside it. Collapsing an empty map to `never` flips the
61
+ * relation — the dependency-free request is now the subtype, and it is the one
62
+ * that disappears.
63
+ */
64
+ type EmptyDepMapToNever<DepMap> = [keyof DepMap] extends [never] ? never : DepMap;
65
+ export type CraftPrimitiveGen<Ref, ExceptionRef = Ref> = Generator<ServiceTrackedDepsRequest<EmptyDepMapToNever<HelperDependencyMap<Ref>>> | PrimitiveExceptionMarker<ExceptionRef>, Ref, unknown>;
66
+ /**
67
+ * The value a named craft primitive resolves to: the primitive reference itself.
68
+ * The name remains available for host tagging and reactive template branding,
69
+ * but it is no longer required as an object key at the call site.
70
+ *
71
+ * ```ts
72
+ * const counter = yield* state('counter', 0);
73
+ * const userQuery = yield* query('userQuery', { ... });
74
+ * ```
75
+ *
76
+ */
77
+ export type NamedPrimitive<Name extends string, Ref> = Ref extends {
78
+ type: string;
79
+ kind: string;
80
+ } ? Ref : Ref extends {
81
+ readonly [DEEP_YIELDABLE]: true;
82
+ } ? Ref : Ref extends YieldableReactiveValue<infer State, any> ? Omit<Ref, keyof YieldableReactiveValue<State, any>> & YieldableReactiveValue<State, Name> : Ref extends Signal<any> ? Ref & {
83
+ readonly [YIELDABLE_VALUE]: Name;
84
+ } : Ref;
85
+ /**
86
+ * Return type of the named craft primitives: a {@link CraftPrimitiveGen}
87
+ * resolving to the primitive reference itself (see {@link NamedPrimitive}).
88
+ */
89
+ export type NamedCraftPrimitiveGen<Name extends string, Ref> = CraftPrimitiveGen<NamedPrimitive<Name, Ref>, Ref>;
90
+ type YieldRecordValue<Value> = Value extends Generator<any, infer Output, any> ? Output : Value;
91
+ type YieldRecordOutput<Record extends object> = {
92
+ [Key in keyof Record]: YieldRecordValue<Record[Key]>;
93
+ };
94
+ type YieldRecordYielded<Record extends object> = Record[keyof Record] extends infer Value ? Value extends Generator<infer Yielded, any, any> ? Yielded : never : never;
95
+ /**
96
+ * Resolves a record of generator-compatible values while preserving its keys.
97
+ *
98
+ * This is useful when a craft service exposes several primitives without
99
+ * writing a generator only to delegate each one:
100
+ *
101
+ * ```ts
102
+ * const { UserStore } = craftService(
103
+ * { name: 'UserStore', providedIn: 'global' },
104
+ * () =>
105
+ * craftYieldRecord({
106
+ * userQuery: query('userQuery', { ... }),
107
+ * refresh: state('refresh', 0),
108
+ * }),
109
+ * );
110
+ * ```
111
+ *
112
+ * Plain values are passed through unchanged. Generator values are consumed in
113
+ * insertion order, so their tracked dependencies are visible to the enclosing
114
+ * craft generator.
115
+ */
116
+ export declare function craftYieldRecord<Record extends object>(record: Record): Generator<YieldRecordYielded<Record>, YieldRecordOutput<Record>, unknown>;
117
+ /**
118
+ * Surfaces a primitive ref as a {@link CraftPrimitiveGen} while retaining its
119
+ * declared `name` for runtime tagging. Counterpart of
120
+ * {@link createPrimitiveGen} for the named primitives (`state`, `query`,
121
+ * `mutation`, `asyncProcess`, `queryParams`).
122
+ */
123
+ export declare function createNamedPrimitiveGen<Name extends string, Ref>(name: Name, ref: Ref): CraftPrimitiveGen<NamedPrimitive<Name, Ref>, Ref>;
124
+ /**
125
+ * Wraps an already-created primitive ref into a {@link CraftPrimitiveGen}. The
126
+ * ref is created eagerly by the primitive (injector captures included); the
127
+ * generator only surfaces the dependency map to the enclosing host and hands
128
+ * the ref back.
129
+ */
130
+ export declare function createPrimitiveGen<Ref>(ref: Ref): CraftPrimitiveGen<Ref>;
131
+ /**
132
+ * `true` for a generator produced by a craft primitive (`state(...)`,
133
+ * `query(...)`, …) that has not been consumed through `yield*` / `craftUse`.
134
+ */
135
+ export declare function isCraftPrimitiveGen(value: unknown): value is CraftPrimitiveGen<unknown>;
136
+ export {};
137
+ //# sourceMappingURL=craft-primitive-gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-primitive-gen.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-primitive-gen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import { isSignal } from './host/craft-compat';
2
+ import { isGenerator, SERVICE_TRACKED_DEPS_REQUEST_MARKER, } from './craft-generator-runtime';
3
+ import { markNamedReactiveProperties, markYieldableValue, YIELDABLE_VALUE, } from './yieldable';
4
+ import { DEEP_YIELDABLE, } from './reactive-read';
5
+ /**
6
+ * Resolves a record of generator-compatible values while preserving its keys.
7
+ *
8
+ * This is useful when a craft service exposes several primitives without
9
+ * writing a generator only to delegate each one:
10
+ *
11
+ * ```ts
12
+ * const { UserStore } = craftService(
13
+ * { name: 'UserStore', providedIn: 'global' },
14
+ * () =>
15
+ * craftYieldRecord({
16
+ * userQuery: query('userQuery', { ... }),
17
+ * refresh: state('refresh', 0),
18
+ * }),
19
+ * );
20
+ * ```
21
+ *
22
+ * Plain values are passed through unchanged. Generator values are consumed in
23
+ * insertion order, so their tracked dependencies are visible to the enclosing
24
+ * craft generator.
25
+ */
26
+ export function craftYieldRecord(record) {
27
+ return (function* () {
28
+ const output = {};
29
+ for (const key of Reflect.ownKeys(record)) {
30
+ const value = record[key];
31
+ output[key] = (isGenerator(value) ? yield* value : value);
32
+ }
33
+ return output;
34
+ })();
35
+ }
36
+ /**
37
+ * Surfaces a primitive ref as a {@link CraftPrimitiveGen} while retaining its
38
+ * declared `name` for runtime tagging. Counterpart of
39
+ * {@link createPrimitiveGen} for the named primitives (`state`, `query`,
40
+ * `mutation`, `asyncProcess`, `queryParams`).
41
+ */
42
+ export function createNamedPrimitiveGen(name, ref) {
43
+ markNamedReactiveProperties(ref);
44
+ const namedRef = isSignal(ref) ? markYieldableValue(ref, name) : ref;
45
+ return createPrimitiveGen(namedRef);
46
+ }
47
+ const CRAFT_PRIMITIVE_GEN_MARKER = Symbol('craft-primitive-gen-marker');
48
+ /**
49
+ * Wraps an already-created primitive ref into a {@link CraftPrimitiveGen}. The
50
+ * ref is created eagerly by the primitive (injector captures included); the
51
+ * generator only surfaces the dependency map to the enclosing host and hands
52
+ * the ref back.
53
+ */
54
+ export function createPrimitiveGen(ref) {
55
+ const gen = (function* () {
56
+ yield {
57
+ [SERVICE_TRACKED_DEPS_REQUEST_MARKER]: true,
58
+ providedIn: 'global',
59
+ resolve: () => undefined,
60
+ };
61
+ return ref;
62
+ })();
63
+ return Object.assign(gen, {
64
+ [CRAFT_PRIMITIVE_GEN_MARKER]: true,
65
+ });
66
+ }
67
+ /**
68
+ * `true` for a generator produced by a craft primitive (`state(...)`,
69
+ * `query(...)`, …) that has not been consumed through `yield*` / `craftUse`.
70
+ */
71
+ export function isCraftPrimitiveGen(value) {
72
+ return (typeof value === 'object' &&
73
+ value !== null &&
74
+ CRAFT_PRIMITIVE_GEN_MARKER in value);
75
+ }
76
+ //# sourceMappingURL=craft-primitive-gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-primitive-gen.js","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-primitive-gen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA8B,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,WAAW,EACX,mCAAmC,GACpC,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,cAAc,GAEf,MAAM,iBAAiB,CAAC;AA8HzB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAc;IAEd,OAAO,CAAC,QAAQ,CAAC;QACf,MAAM,MAAM,GAAG,EAA+B,CAAC;QAE/C,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAqB,EAAE,CAAC;YAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,CACZ,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CACF,CAAC;QAC5C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,EAID,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAU,EACV,GAAQ;IAER,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACrE,OAAO,kBAAkB,CAAC,QAAQ,CAGjC,CAAC;AACJ,CAAC;AAED,MAAM,0BAA0B,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAM,GAAQ;IAC9C,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC;QACpB,MAAM;YACJ,CAAC,mCAAmC,CAAC,EAAE,IAAI;YAC3C,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS;SAC8B,CAAC;QACzD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;QACxB,CAAC,0BAA0B,CAAC,EAAE,IAAI;KACnC,CAA2B,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,0BAA0B,IAAI,KAAK,CACpC,CAAC;AACJ,CAAC","sourcesContent":["import { isSignal, type Injector, type Signal } from './host/craft-compat';\nimport {\n isGenerator,\n SERVICE_TRACKED_DEPS_REQUEST_MARKER,\n} from './craft-generator-runtime';\nimport type { ConcreteServiceScope } from './craft-service.shared';\nimport type { SERVICE_HELPER_DEPENDENCIES } from './craft-service';\nimport type { CraftGenExceptionMarker } from './craft-gen';\nimport {\n markNamedReactiveProperties,\n markYieldableValue,\n YIELDABLE_VALUE,\n} from './yieldable';\nimport {\n DEEP_YIELDABLE,\n type YieldableReactiveValue,\n} from './reactive-read';\n\n/**\n * Dependency map carried by a primitive (`mutation`, `query`, `asyncProcess`,\n * `state`, `queryParams`, …) on its phantom\n * `[SERVICE_HELPER_DEPENDENCIES]` property.\n */\nexport type HelperDependencyMap<Helper> = Helper extends {\n readonly [SERVICE_HELPER_DEPENDENCIES]?: infer Map extends object;\n}\n ? Map\n : {};\n\n/**\n * Request yielded by a primitive generator (see {@link CraftPrimitiveGen}).\n * Type-level only: it carries the primitive's dependency map so the enclosing\n * `craftService` folds it into its own dependency tree. At runtime it is a\n * no-op (see `runCraftGenerator`).\n */\nexport type ServiceTrackedDepsRequest<DepMap extends object = object> =\n Readonly<{\n [SERVICE_TRACKED_DEPS_REQUEST_MARKER]: true;\n /** Phantom carrier — never read at runtime. */\n readonly depMap?: DepMap;\n providedIn: ConcreteServiceScope;\n resolve: (injector: Injector, hostScope: ConcreteServiceScope) => unknown;\n }>;\n\n/**\n * The generator returned by the craft primitives (`state`, `query`, `mutation`,\n * `asyncProcess`, `queryParams`). Consume it with `yield*` inside a generator\n * host (a `craftService` factory, `craftGen`, …) or with `craftUse(...)` in a\n * component field:\n *\n * ```ts\n * // inside a craftService factory\n * const users = yield* query({ ... });\n *\n * // in a component field\n * readonly users = craftUse(query({ ... }));\n * ```\n *\n * Yields a single {@link ServiceTrackedDepsRequest} carrying the primitive's\n * dependency map (type-level only, no-op at runtime), then resolves to the\n * primitive ref. Like any generator it is single-use: driving it a second time\n * yields nothing and returns `undefined`.\n */\ntype PrimitiveExceptionUnion<Ref> = Ref extends {\n readonly exception: Signal<infer Exception>;\n}\n ? Extract<Exception, { readonly _tag: string }>\n : never;\n\ntype PrimitiveExceptionMarker<Ref> = [PrimitiveExceptionUnion<Ref>] extends [\n never,\n]\n ? never\n : CraftGenExceptionMarker<PrimitiveExceptionUnion<Ref>>;\n\n/**\n * A generator's `Yielded` is an INFERRED union, and TypeScript subtype-reduces\n * those: `ServiceTrackedDepsRequest<{}>` is a supertype of every other tracked\n * request, so a primitive with no dependency would swallow the requests of every\n * primitive yielded beside it. Collapsing an empty map to `never` flips the\n * relation — the dependency-free request is now the subtype, and it is the one\n * that disappears.\n */\ntype EmptyDepMapToNever<DepMap> = [keyof DepMap] extends [never]\n ? never\n : DepMap;\n\nexport type CraftPrimitiveGen<Ref, ExceptionRef = Ref> = Generator<\n | ServiceTrackedDepsRequest<EmptyDepMapToNever<HelperDependencyMap<Ref>>>\n | PrimitiveExceptionMarker<ExceptionRef>,\n Ref,\n unknown\n>;\n\n/**\n * The value a named craft primitive resolves to: the primitive reference itself.\n * The name remains available for host tagging and reactive template branding,\n * but it is no longer required as an object key at the call site.\n *\n * ```ts\n * const counter = yield* state('counter', 0);\n * const userQuery = yield* query('userQuery', { ... });\n * ```\n *\n */\nexport type NamedPrimitive<Name extends string, Ref> = Ref extends {\n type: string;\n kind: string;\n}\n ? Ref\n : Ref extends { readonly [DEEP_YIELDABLE]: true }\n ? Ref\n : Ref extends YieldableReactiveValue<infer State, any>\n ? Omit<Ref, keyof YieldableReactiveValue<State, any>> &\n YieldableReactiveValue<State, Name>\n : Ref extends Signal<any>\n ? Ref & { readonly [YIELDABLE_VALUE]: Name }\n : Ref;\n\n/**\n * Return type of the named craft primitives: a {@link CraftPrimitiveGen}\n * resolving to the primitive reference itself (see {@link NamedPrimitive}).\n */\nexport type NamedCraftPrimitiveGen<\n Name extends string,\n Ref,\n> = CraftPrimitiveGen<NamedPrimitive<Name, Ref>, Ref>;\n\ntype YieldRecordValue<Value> =\n Value extends Generator<any, infer Output, any> ? Output : Value;\n\ntype YieldRecordOutput<Record extends object> = {\n [Key in keyof Record]: YieldRecordValue<Record[Key]>;\n};\n\ntype YieldRecordYielded<Record extends object> =\n Record[keyof Record] extends infer Value\n ? Value extends Generator<infer Yielded, any, any>\n ? Yielded\n : never\n : never;\n\n/**\n * Resolves a record of generator-compatible values while preserving its keys.\n *\n * This is useful when a craft service exposes several primitives without\n * writing a generator only to delegate each one:\n *\n * ```ts\n * const { UserStore } = craftService(\n * { name: 'UserStore', providedIn: 'global' },\n * () =>\n * craftYieldRecord({\n * userQuery: query('userQuery', { ... }),\n * refresh: state('refresh', 0),\n * }),\n * );\n * ```\n *\n * Plain values are passed through unchanged. Generator values are consumed in\n * insertion order, so their tracked dependencies are visible to the enclosing\n * craft generator.\n */\nexport function craftYieldRecord<Record extends object>(\n record: Record,\n): Generator<YieldRecordYielded<Record>, YieldRecordOutput<Record>, unknown> {\n return (function* () {\n const output = {} as YieldRecordOutput<Record>;\n\n for (const key of Reflect.ownKeys(record) as (keyof Record)[]) {\n const value = record[key];\n output[key] = (\n isGenerator(value) ? yield* value : value\n ) as YieldRecordValue<Record[typeof key]>;\n }\n\n return output;\n })() as Generator<\n YieldRecordYielded<Record>,\n YieldRecordOutput<Record>,\n unknown\n >;\n}\n\n/**\n * Surfaces a primitive ref as a {@link CraftPrimitiveGen} while retaining its\n * declared `name` for runtime tagging. Counterpart of\n * {@link createPrimitiveGen} for the named primitives (`state`, `query`,\n * `mutation`, `asyncProcess`, `queryParams`).\n */\nexport function createNamedPrimitiveGen<Name extends string, Ref>(\n name: Name,\n ref: Ref,\n): CraftPrimitiveGen<NamedPrimitive<Name, Ref>, Ref> {\n markNamedReactiveProperties(ref);\n const namedRef = isSignal(ref) ? markYieldableValue(ref, name) : ref;\n return createPrimitiveGen(namedRef) as CraftPrimitiveGen<\n NamedPrimitive<Name, Ref>,\n Ref\n >;\n}\n\nconst CRAFT_PRIMITIVE_GEN_MARKER = Symbol('craft-primitive-gen-marker');\n\n/**\n * Wraps an already-created primitive ref into a {@link CraftPrimitiveGen}. The\n * ref is created eagerly by the primitive (injector captures included); the\n * generator only surfaces the dependency map to the enclosing host and hands\n * the ref back.\n */\nexport function createPrimitiveGen<Ref>(ref: Ref): CraftPrimitiveGen<Ref> {\n const gen = (function* () {\n yield {\n [SERVICE_TRACKED_DEPS_REQUEST_MARKER]: true,\n providedIn: 'global',\n resolve: () => undefined,\n } as ServiceTrackedDepsRequest<HelperDependencyMap<Ref>>;\n return ref;\n })();\n\n return Object.assign(gen, {\n [CRAFT_PRIMITIVE_GEN_MARKER]: true,\n }) as CraftPrimitiveGen<Ref>;\n}\n\n/**\n * `true` for a generator produced by a craft primitive (`state(...)`,\n * `query(...)`, …) that has not been consumed through `yield*` / `craftUse`.\n */\nexport function isCraftPrimitiveGen(\n value: unknown,\n): value is CraftPrimitiveGen<unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n CRAFT_PRIMITIVE_GEN_MARKER in value\n );\n}\n"]}
@@ -0,0 +1,113 @@
1
+ import { InjectionToken, type Injector } from './host/craft-compat';
2
+ /**
3
+ * Primitives that hold a value the registry can read back and write into.
4
+ * `source$` is deliberately absent: an event stream has no state to restore.
5
+ */
6
+ export type CraftPrimitiveKind = 'state' | 'query' | 'mutation' | 'asyncProcess' | 'queryParams';
7
+ /**
8
+ * One addressable primitive instance.
9
+ *
10
+ * The address is the host-tag chain plus the primitive's own name, which is
11
+ * already unique per INSTANCE: `provideHostName` stamps a creation ordinal on
12
+ * every component tag, so two rows of the same list read as
13
+ * `component:Row#1 / …` and `component:Row#2 / …`.
14
+ *
15
+ * That ordinal is stable for the lifetime of a session but not across reloads,
16
+ * and a row destroyed and re-created takes a new one. It is enough to replay a
17
+ * machine inside one session; it is not a persistence key.
18
+ */
19
+ export type CraftPrimitiveEntry = Readonly<{
20
+ address: string;
21
+ kind: CraftPrimitiveKind;
22
+ name: string;
23
+ hostTags: readonly string[];
24
+ read(): unknown;
25
+ write(value: unknown): void;
26
+ status?(): string;
27
+ error?(): unknown;
28
+ /**
29
+ * Re-runs the primitive's loader, when it has one. A resource the snapshot
30
+ * does not cover is reloaded rather than left showing data that belongs to
31
+ * another parameter.
32
+ */
33
+ reload?(): boolean;
34
+ }>;
35
+ /** A value snapshot of part of the registry, keyed by address. */
36
+ export type CraftPrimitiveSnapshot = Readonly<Record<string, unknown>>;
37
+ export declare class CraftPrimitiveRegistry {
38
+ private readonly entries;
39
+ private readonly occurrences;
40
+ private readonly primedValues;
41
+ /** Public primitive ref → address, so a caller can name what it holds. */
42
+ private readonly addresses;
43
+ /** Associates the ref an application holds with its registered address. */
44
+ link(ref: unknown, address: string): void;
45
+ /**
46
+ * The address of a primitive from the ref an application holds — how a
47
+ * feature names a primitive declared outside the host it is scoped to.
48
+ */
49
+ addressOf(ref: unknown): string | undefined;
50
+ /**
51
+ * Registers one instance under `base`, suffixed with an occurrence number.
52
+ *
53
+ * The counter only ever grows: an address is never handed out twice, even
54
+ * after the instance holding it is destroyed. A snapshot captured against
55
+ * `…#2` can therefore never be restored into a different primitive that
56
+ * happened to take the freed slot — it simply finds nothing.
57
+ */
58
+ register(base: string, entry: Omit<CraftPrimitiveEntry, 'address'>): {
59
+ readonly address: string;
60
+ readonly release: () => void;
61
+ };
62
+ list(): readonly CraftPrimitiveEntry[];
63
+ get(address: string): CraftPrimitiveEntry | undefined;
64
+ /**
65
+ * Every entry whose host-tag chain starts with `hostTags` — the primitives a
66
+ * given host owns, transitively. An empty prefix matches the whole app.
67
+ */
68
+ under(hostTags: readonly string[]): readonly CraftPrimitiveEntry[];
69
+ /**
70
+ * Reads the current value of the given entries. A primitive that throws on
71
+ * read (a suspended resource, a computation in error) contributes nothing
72
+ * rather than failing the whole capture.
73
+ */
74
+ capture(entries?: readonly CraftPrimitiveEntry[]): CraftPrimitiveSnapshot;
75
+ /**
76
+ * Writes a captured snapshot back. Addresses the registry no longer knows
77
+ * are skipped: a row that has been destroyed since the capture has nothing
78
+ * to restore into.
79
+ */
80
+ restore(snapshot: CraftPrimitiveSnapshot): void;
81
+ /**
82
+ * Restores current entries and remembers future ones. Used by hydration,
83
+ * where primitives are constructed during the first component render.
84
+ */
85
+ prime(snapshot: CraftPrimitiveSnapshot): void;
86
+ }
87
+ export declare const CRAFT_PRIMITIVE_REGISTRY: InjectionToken<CraftPrimitiveRegistry>;
88
+ /** Builds the address of a primitive from its host chain and its own name. */
89
+ export declare function ɵcraftPrimitiveAddress(hostTags: readonly string[], kind: CraftPrimitiveKind, name: string): string;
90
+ type RegisterOptions = Readonly<{
91
+ kind: CraftPrimitiveKind;
92
+ name: string;
93
+ read(): unknown;
94
+ write(value: unknown): void;
95
+ reload?(): boolean;
96
+ status?(): string;
97
+ error?(): unknown;
98
+ /** Resolved from the ambient injection context when omitted. */
99
+ injector?: Injector;
100
+ }>;
101
+ /** What a primitive gets back from registering itself. */
102
+ export type CraftPrimitiveRegistration = Readonly<{
103
+ /** Associates the public ref with this registration. */
104
+ link(ref: unknown): void;
105
+ }>;
106
+ /**
107
+ * Registers a primitive instance so tooling can read and write it by address.
108
+ * Called by the primitives themselves at creation; a no-op when no injection
109
+ * context is available, so a primitive built outside one keeps working.
110
+ */
111
+ export declare function ɵregisterCraftPrimitive(options: RegisterOptions): CraftPrimitiveRegistration;
112
+ export {};
113
+ //# sourceMappingURL=craft-primitive-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"craft-primitive-registry.d.ts","sourceRoot":"","sources":["../../../../../libs/core/src/lib/craft-primitive-registry.ts"],"names":[],"mappings":"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"}